Version in base suite: 6.4.21+dfsg-2+deb13u1 Base version: symfony_6.4.21+dfsg-2+deb13u1 Target version: symfony_6.4.41+dfsg-0+deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/s/symfony/symfony_6.4.21+dfsg-2+deb13u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/s/symfony/symfony_6.4.41+dfsg-0+deb13u1.dsc /srv/release.debian.org/tmp/YQJI90WdF6/symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Lokalise/Tests/Fixtures/Symfony-locale.zip |binary symfony-6.4.41+dfsg/.agents/skills/symfony-merge-up/SKILL.md | 207 symfony-6.4.41+dfsg/.git-blame-ignore-revs | 1 symfony-6.4.41+dfsg/.github/PULL_REQUEST_TEMPLATE.md | 31 symfony-6.4.41+dfsg/.github/build-packages.php | 20 symfony-6.4.41+dfsg/.github/expected-missing-return-types.diff | 646 symfony-6.4.41+dfsg/.github/patch-types.php | 1 symfony-6.4.41+dfsg/.github/psalm/.gitignore | 4 symfony-6.4.41+dfsg/.github/psalm/psalm.baseline.xml | 3 symfony-6.4.41+dfsg/.github/sa-tools/.gitignore | 6 symfony-6.4.41+dfsg/.github/sa-tools/phpstan.baseline.neon | 2 symfony-6.4.41+dfsg/.github/sa-tools/psalm.baseline.xml | 3 symfony-6.4.41+dfsg/.github/workflows/fabbot.yml | 15 symfony-6.4.41+dfsg/.github/workflows/integration-tests.yml | 17 symfony-6.4.41+dfsg/.github/workflows/intl-data-tests.yml | 3 symfony-6.4.41+dfsg/.github/workflows/phpunit-bridge.yml | 1 symfony-6.4.41+dfsg/.github/workflows/psalm.yml | 62 symfony-6.4.41+dfsg/.github/workflows/scorecards.yml | 2 symfony-6.4.41+dfsg/.github/workflows/static-analysis.yml | 94 symfony-6.4.41+dfsg/.github/workflows/unit-tests.yml | 16 symfony-6.4.41+dfsg/.github/workflows/windows.yml | 19 symfony-6.4.41+dfsg/.php-cs-fixer.dist.php | 66 symfony-6.4.41+dfsg/CHANGELOG-6.4.md | 570 symfony-6.4.41+dfsg/CONTRIBUTORS.md | 7342 +++++----- symfony-6.4.41+dfsg/UPGRADE-6.4.md | 3 symfony-6.4.41+dfsg/composer.json | 6 symfony-6.4.41+dfsg/debian/changelog | 51 symfony-6.4.41+dfsg/debian/licensing/image-checksums.dcf | 10 symfony-6.4.41+dfsg/debian/patches/Adapt-conflict-to-Debian-expectations.patch | 62 symfony-6.4.41+dfsg/debian/patches/Add-more-tests-to-group-tty.patch | 2 symfony-6.4.41+dfsg/debian/patches/Assume-php-async-aws-sqs-2.patch | 4 symfony-6.4.41+dfsg/debian/patches/Cache-Disable-Test-failing-tests-Error-Class-not-found.patch | 50 symfony-6.4.41+dfsg/debian/patches/Config-Partially-revert-4c2c5c9ba76ba8db9e88748ae519605c0.patch | 4 symfony-6.4.41+dfsg/debian/patches/Config-Skip-tests-currently-failing.patch | 6 symfony-6.4.41+dfsg/debian/patches/Console-Skip-currently-failing-assertion.patch | 2 symfony-6.4.41+dfsg/debian/patches/Declare-composer-group-for-tests-failing-outside-a-Compos.patch | 4 symfony-6.4.41+dfsg/debian/patches/DependencyInjection-Drop-parts-of-expectated-output.patch | 16 symfony-6.4.41+dfsg/debian/patches/Drop-composer-runtime-api-that-confuses-phpabtpl.patch | 4 symfony-6.4.41+dfsg/debian/patches/Drop-listeners-from-phpunit.xml.patch | 4 symfony-6.4.41+dfsg/debian/patches/Drop-test-failing-outside-Composer-environment.patch | 9 symfony-6.4.41+dfsg/debian/patches/Drop-tests-data-throwing-a-RuntimeException-outside-a-Com.patch | 4 symfony-6.4.41+dfsg/debian/patches/ErrorHandler-Skip-tests-currently-failing.patch | 8 symfony-6.4.41+dfsg/debian/patches/Filesystem-Drop-currently-failing-tests.patch | 62 symfony-6.4.41+dfsg/debian/patches/Finder-Drop-data-from-testsuite.patch | 22 symfony-6.4.41+dfsg/debian/patches/Form-Skip-test-currently-failing.patch | 2 symfony-6.4.41+dfsg/debian/patches/Group-jwt-for-tests-depending-on-it.patch | 6 symfony-6.4.41+dfsg/debian/patches/Group-nophpunit11-for-tests-failing-with-PHPUnit-11.patch | 176 symfony-6.4.41+dfsg/debian/patches/HttpClient-Skip-tests-relying-on-amphp-http-client.patch | 4 symfony-6.4.41+dfsg/debian/patches/HttpFoundation-Fix-parsing-pathinfo-with-no-leading-slash.patch | 49 symfony-6.4.41+dfsg/debian/patches/HttpFoundation-Skip-tests-currently-failing.patch | 12 symfony-6.4.41+dfsg/debian/patches/Increasing-timeout-in-test-AbstractProcessTest-testS.patch | 4 symfony-6.4.41+dfsg/debian/patches/Lock-Drop-test-currently-failing-on-buildd.patch | 4 symfony-6.4.41+dfsg/debian/patches/PhpUnit-Skip-tests-currently-failing.patch | 2 symfony-6.4.41+dfsg/debian/patches/PhpUnit-Use-phpunit-directly.patch | 24 symfony-6.4.41+dfsg/debian/patches/Remove-calls-to-getExpectedException.patch | 12 symfony-6.4.41+dfsg/debian/patches/Revert-ErrorHandler-Skip-same-vendor-method-deprecations-.patch | 10 symfony-6.4.41+dfsg/debian/patches/Scheduler-Adapt-filler-in-tests.patch | 24 symfony-6.4.41+dfsg/debian/patches/Skip-test-relying-on-broken-timezone-during-build.patch | 67 symfony-6.4.41+dfsg/debian/patches/Skip-tests-failing-with-PHPUnit-11.5.17-1.patch | 2 symfony-6.4.41+dfsg/debian/patches/Use-installed-files-for-CI.patch | 4 symfony-6.4.41+dfsg/debian/patches/Validator-Skip-failing-test-on-i386.patch | 24 symfony-6.4.41+dfsg/debian/patches/VarDumper-Fix-expected-order-in-test.patch | 2 symfony-6.4.41+dfsg/debian/patches/VarDumper-Fix-expected-output-for-arm-and-32-bit-arch.patch | 236 symfony-6.4.41+dfsg/debian/patches/Workaround-dh_phpcomposer-limitations.patch | 2 symfony-6.4.41+dfsg/debian/patches/Yaml-Drop-data-set-currently-failing-on-i386.patch | 6 symfony-6.4.41+dfsg/debian/patches/group-network-for-test-failing-without-network.patch | 10 symfony-6.4.41+dfsg/debian/patches/series | 6 symfony-6.4.41+dfsg/link | 6 symfony-6.4.41+dfsg/phpstan.dist.neon | 19 symfony-6.4.41+dfsg/phpunit.xml.dist | 4 symfony-6.4.41+dfsg/psalm.xml | 26 symfony-6.4.41+dfsg/splitsh.json | 180 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/ArgumentResolver/EntityValueResolver.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/CacheWarmer/ProxyCacheWarmer.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/DataCollector/DoctrineDataCollector.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php | 24 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/RegisterEventListenersAndSubscribersPass.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/RegisterMappingsPass.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Form/ChoiceList/DoctrineChoiceLoader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Form/ChoiceList/IdReader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Form/DoctrineOrmTypeGuesser.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Form/Type/EntityType.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/IdGenerator/UlidGenerator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/ManagerRegistry.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Middleware/Debug/Driver.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/PropertyInfo/DoctrineExtractor.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/SchemaListener/AbstractSchemaListener.php | 37 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/SchemaListener/DoctrineDbalCacheAdapterSchemaListener.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/SchemaListener/LockStoreSchemaListener.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/SchemaListener/MessengerTransportDoctrineSchemaListener.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/SchemaListener/PdoSessionHandlerSchemaListener.php | 7 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/SchemaListener/RememberMeTokenProviderDoctrineSchemaListener.php | 7 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Security/RememberMe/DoctrineTokenProvider.php | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php | 19 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/ArgumentResolver/EntityValueResolverTest.php | 25 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/DataCollector/DoctrineDataCollectorTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/DataCollector/DoctrineDataCollectorWithDebugStackTest.php | 29 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/DependencyInjection/DoctrineExtensionTest.php | 47 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/DoctrineTestHelper.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Fixtures/CompositeObjectNoToStringIdEntity.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Fixtures/CustomUuidId.php | 18 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Fixtures/CustomUuidIdEntity.php | 26 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Fixtures/CustomUuidIdType.php | 27 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Fixtures/SingleAssociationToIntIdEntity.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/DoctrineChoiceLoaderTest.php | 49 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/ORMQueryBuilderLoaderTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Form/EventListener/MergeDoctrineCollectionListenerTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypePerformanceTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypeTest.php | 49 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/IdGenerator/UlidGeneratorTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/IdGenerator/UuidGeneratorTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineClearEntityManagerWorkerSubscriberTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineCloseConnectionMiddlewareTest.php | 11 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineOpenTransactionLoggerMiddlewareTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrinePingConnectionMiddlewareTest.php | 35 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineTransactionMiddlewareTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Middleware/Debug/MiddlewareTest.php | 34 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/DoctrineExtractorTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineFooType.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/SchemaListener/DoctrineDbalCacheAdapterSchemaListenerTest.php | 33 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/SchemaListener/LockStoreSchemaListenerTest.php | 33 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/SchemaListener/MessengerTransportDoctrineSchemaListenerTest.php | 95 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/SchemaListener/PdoSessionHandlerSchemaListenerTest.php | 33 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/SchemaListener/RememberMeTokenProviderDoctrineSchemaListenerTest.php | 87 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Security/RememberMe/DoctrineTokenProviderPostgresTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Security/RememberMe/DoctrineTokenProviderTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php | 29 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Types/UlidTypeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Types/UuidTypeTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Tests/Validator/DoctrineLoaderTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntity.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php | 19 symfony-6.4.41+dfsg/src/Symfony/Bridge/Doctrine/composer.json | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Command/ServerLogCommand.php | 31 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Formatter/ConsoleFormatter.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Handler/ElasticsearchLogstashHandler.php | 19 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Handler/FingersCrossed/HttpCodeActivationStrategy.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Handler/FingersCrossed/NotFoundActivationStrategy.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Handler/MailerHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Handler/ServerLogHandler.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Processor/AbstractTokenProcessor.php | 27 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Formatter/ConsoleFormatterTest.php | 30 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Handler/ChromePhpHandlerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Handler/ConsoleHandlerTest.php | 49 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Handler/ElasticsearchLogstashHandlerTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Handler/FingersCrossed/HttpCodeActivationStrategyTest.php | 21 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Handler/FirePHPHandlerTest.php | 15 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Handler/MailerHandlerTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Handler/ServerLogHandlerTest.php | 13 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Processor/ConsoleCommandProcessorTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Processor/RouteProcessorTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Processor/SwitchUserTokenProcessorTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Processor/TokenProcessorTest.php | 32 symfony-6.4.41+dfsg/src/Symfony/Bridge/Monolog/Tests/Processor/WebProcessorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/CoverageListener.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php | 25 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler/Configuration.php | 14 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler/Deprecation.php | 12 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Legacy/SymfonyTestsListenerTrait.php | 25 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/ConfigurationTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/DeprecationGroupTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/DeprecationNoticeTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/DeprecationTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/baseline.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/baseline2.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/baseline3.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/debug_class_loader_autoload.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/debug_class_loader_deprecation.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/default.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/deprecated_regexp.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/deprecation/deprecation.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/disabled.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/disabled_1.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/eval_not_self.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_app/AppService.php | 13 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_app/BarService.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_app/ExtendsDeprecatedFromVendor.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_app_fallback/App/Services/FallbackDirService.php | 20 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor/acme/lib/ExtendsDeprecatedClassFromOtherVendor.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor/acme/lib/PhpDeprecation.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor/acme/lib/SomeService.php | 13 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor/acme/lib/deprecation_riddled.php | 3 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor/autoload.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor/bar/lib/AnotherService.php | 13 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor/composer/autoload_real.php | 19 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor/fcy/lib/DeprecatedClass.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor_bis/autoload.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor_bis/composer/autoload_real.php | 19 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor_bis/foo/lib/SomeOtherService.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor_fallback_psr0/autoload.php | 14 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor_fallback_psr0/composer/autoload_real.php | 60 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor_fallback_psr0/composer/installed.json | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor_fallback_psr4/autoload.php | 14 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor_fallback_psr4/composer/autoload_real.php | 60 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fake_vendor_fallback_psr4/composer/installed.json | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fallback_psr0_dir_as_self.phpt | 44 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/fallback_psr4_dir_as_self.phpt | 42 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/generate_baseline.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/generate_phar.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/ignore.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/lagging_vendor.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/log_file.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/multiple_autoloads.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/partially_quiet.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/partially_quiet2.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/php_deprecation_from_vendor_class.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/quiet.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/quiet_but_failing.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/self_on_non_vendor.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/shutdown_deprecations.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/trigger_deprecation_types.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/trigger_error_types.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak_vendors_on_eval_d_deprecation.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak_vendors_on_non_vendor.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak_vendors_on_phar_deprecation.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak_vendors_on_vendor.phpt | 1 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/expectdeprecationfail.phpt | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/expectnotrisky.phpt | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/Tests/expectrisky.phpt | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit.php | 19 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/bootstrap.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/PhpUnit/composer.json | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/ProxyManager/Internal/ProxyGenerator.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bridge/ProxyManager/LazyProxy/PhpDumper/ProxyDumper.php | 26 symfony-6.4.41+dfsg/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/ContainerBuilderTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/Dumper/PhpDumperTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/Instantiator/RuntimeInstantiatorTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/Fixtures/proxy-implem.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/ProxyDumperTest.php | 39 symfony-6.4.41+dfsg/src/Symfony/Bridge/PsrHttpMessage/Factory/HttpFoundationFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/PsrHttpMessage/Factory/PsrHttpFactory.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/PsrHttpMessage/Factory/UploadedFile.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/PsrHttpMessage/Tests/ArgumentValueResolver/PsrServerRequestResolverTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Bridge/PsrHttpMessage/Tests/EventListener/PsrResponseListenerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/PsrHttpMessage/Tests/Factory/PsrHttpFactoryTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Bridge/PsrHttpMessage/Tests/Functional/CovertTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Command/DebugCommand.php | 58 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Command/LintCommand.php | 44 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/ErrorRenderer/TwigErrorRenderer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Extension/CodeExtension.php | 124 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Extension/FormExtension.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Extension/HttpKernelRuntime.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Extension/WebLinkExtension.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Form/TwigRendererEngine.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Mime/NotificationEmail.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Mime/WrappedTemplatedEmail.php | 5 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Node/DumpNode.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Node/StopwatchNode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/NodeVisitor/TranslationDefaultDomainNodeVisitor.php | 21 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_4_horizontal_layout.html.twig | 5 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_4_layout.html.twig | 7 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Test/FormLayoutTestCase.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Test/Traits/RuntimeLoaderProvider.php | 11 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/AppVariableTest.php | 63 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Command/DebugCommandTest.php | 168 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Command/LintCommandTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/ErrorRenderer/TwigErrorRendererTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/EventListener/TemplateAttributeListenerTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/AbstractBootstrap3HorizontalLayoutTestCase.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/AbstractBootstrap3LayoutTestCase.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/AbstractBootstrap4HorizontalLayoutTestCase.php | 287 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/AbstractBootstrap4LayoutTestCase.php | 22 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/AbstractDivLayoutTestCase.php | 16 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/AbstractLayoutTestCase.php | 22 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/AbstractTableLayoutTestCase.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/CodeExtensionTest.php | 192 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/DumpExtensionTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/Fixtures/StubTranslator.php | 7 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3LayoutTest.php | 15 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4LayoutTest.php | 15 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap5LayoutTest.php | 11 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionDivLayoutTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionFieldHelpersTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/HtmlSanitizerExtensionTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/HttpKernelExtensionTest.php | 27 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/ImportMapExtensionTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/RoutingExtensionTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/SerializerExtensionTest.php | 15 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/StopwatchExtensionTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Extension/WorkflowExtensionTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Fixtures/hello_world.json | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Fixtures/hello_world.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Fixtures/xss.html | 2 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Form/TwigRendererEngineTest.php | 110 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Mime/BodyRendererTest.php | 30 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Mime/TemplatedEmailTest.php | 64 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Node/DumpNodeTest.php | 80 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Node/FormThemeTest.php | 32 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Node/SearchAndRenderBlockNodeTest.php | 44 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Node/TransNodeTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/NodeVisitor/TranslationDefaultDomainNodeVisitorTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/NodeVisitor/TranslationNodeVisitorTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/TokenParser/FormThemeTokenParserTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/Tests/Translation/TwigExtractorTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/UndefinedCallableHandler.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bridge/Twig/composer.json | 8 symfony-6.4.41+dfsg/src/Symfony/Bundle/DebugBundle/DebugBundle.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/DebugBundle/DependencyInjection/Compiler/DumpDataCollectorPass.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/DebugBundle/Resources/config/services.php | 1 symfony-6.4.41+dfsg/src/Symfony/Bundle/DebugBundle/Tests/DependencyInjection/Compiler/DumpDataCollectorPassTest.php | 41 symfony-6.4.41+dfsg/src/Symfony/Bundle/DebugBundle/Tests/DependencyInjection/DebugExtensionTest.php | 31 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md | 1 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/CacheWarmer/AbstractPhpFileCacheWarmer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/CacheWarmer/AnnotationsCacheWarmer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/CacheWarmer/ConfigBuilderCacheWarmer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/CacheWarmer/RouterCacheWarmer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/CacheWarmer/ValidatorCacheWarmer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/AboutCommand.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/AbstractConfigCommand.php | 14 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/AssetsInstallCommand.php | 36 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php | 18 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/CachePoolClearCommand.php | 16 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/CachePoolDeleteCommand.php | 12 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/CachePoolInvalidateTagsCommand.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/CachePoolListCommand.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/CachePoolPruneCommand.php | 21 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/CacheWarmupCommand.php | 15 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/ConfigDebugCommand.php | 48 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/ConfigDumpReferenceCommand.php | 38 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php | 64 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/ContainerLintCommand.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/DebugAutowiringCommand.php | 24 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/EventDispatcherDebugCommand.php | 16 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/RouterDebugCommand.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/RouterMatchCommand.php | 18 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/SecretsDecryptToLocalCommand.php | 16 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/SecretsEncryptFromLocalCommand.php | 17 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/SecretsGenerateKeysCommand.php | 16 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/SecretsListCommand.php | 14 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/SecretsRemoveCommand.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/SecretsSetCommand.php | 28 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php | 46 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php | 58 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/WorkflowDumpCommand.php | 18 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/XliffLintCommand.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Command/YamlLintCommand.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Console/Application.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/Descriptor.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/JsonDescriptor.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/MarkdownDescriptor.php | 66 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php | 72 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/XmlDescriptor.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Controller/AbstractController.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerResolver.php | 5 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Controller/RedirectController.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/LoggingTranslatorPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ProfilerPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TestServiceContainerWeakRefPass.php | 5 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/WorkflowGuardListenerPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php | 297 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php | 199 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/EventListener/ConsoleProfilerListener.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/EventListener/SuggestMissingPackageSubscriber.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Kernel/MicroKernelTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/KernelBrowser.php | 30 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Resources/config/cache.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Resources/config/console.php | 3 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.php | 1 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php | 1 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd | 5 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.php | 3 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.php | 7 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Secrets/AbstractVault.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Secrets/DotenvVault.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Secrets/SodiumVault.php | 30 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Test/BrowserKitAssertionsTrait.php | 24 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Test/DomCrawlerAssertionsTrait.php | 28 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Test/HttpClientAssertionsTrait.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php | 53 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Test/TestContainer.php | 12 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Test/WebTestCase.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/AnnotationsCacheWarmerTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/ConfigBuilderCacheWarmerTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/RouterCacheWarmerTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/SerializerCacheWarmerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/ValidatorCacheWarmerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/AboutCommand/AboutCommandTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/CacheClearCommand/CacheClearCommandTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/CachePoolClearCommandTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/CachePoolDeleteCommandTest.php | 36 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/CachePoolInvalidateTagsCommandTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/CachePruneCommandTest.php | 41 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/EventDispatcherDebugCommandTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/RouterMatchCommandTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/SecretsDecryptToLocalCommandTest.php | 95 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/SecretsEncryptFromLocalCommandTest.php | 112 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/SecretsGenerateKeysCommandTest.php | 90 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/SecretsListCommandTest.php | 29 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/SecretsRemoveCommandTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/SecretsSetCommandTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/TranslationDebugCommandTest.php | 30 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/TranslationUpdateCommandCompletionTest.php | 28 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/TranslationUpdateCommandTest.php | 34 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/XliffLintCommandTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Command/YamlLintCommandTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Console/ApplicationTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/AbstractDescriptorTestCase.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/ObjectsProvider.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/TextDescriptorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Controller/AbstractControllerTest.php | 61 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Controller/ControllerResolverTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Controller/TestAbstractController.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DataCollector/RouterDataCollectorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/ProfilerPassTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/UnusedTagsPassTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_bus_name_stamp.php | 24 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/serializer_attributes_enabled_annotations_enabled_globally.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/translator_providers.php | 19 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_base_config.php | 36 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_override_config.php | 35 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_complex_place_follow_by_simplistic_place_config.php | 55 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_simplistic_place_follow_by_complex_place_config.php | 55 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_bus_name_stamp.xml | 20 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/serializer_attributes_enabled_annotations_enabled_globally.xml | 10 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/translator_providers.xml | 24 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_base_config.xml | 27 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_override_config.xml | 18 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_complex_place_follow_by_simplistic_place_config.xml | 49 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_simplistic_place_follow_by_complex_place_config.xml | 49 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/messenger_bus_name_stamp.yml | 17 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/serializer_attributes_enabled_annotations_enabled_globally.yml | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/translator_providers.yml | 13 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_base_config.yml | 26 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_override_config.yml | 13 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_complex_place_follow_by_simplistic_place_config.yml | 37 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_complex_place_follow_by_simplistic_place_config_with_alternative_syntax.yml | 37 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_simplistic_place_follow_by_complex_place_config.yml | 37 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_simplistic_place_follow_by_complex_place_config_with_alternative_syntax.yml | 37 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php | 161 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php | 102 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/YamlFrameworkExtensionTest.php | 15 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/ApiAttributesTest.php | 261 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Controller/HttpClientMockingController.php | 25 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Controller/SessionController.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/EnvVarLoader/StatefulEnvVarLoader.php | 40 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/EnvVarLoader/VaultEnvVarPrimer.php | 25 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/MimeType/CustomMimeTypeGuesser.php | 29 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/TestBundle.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/CacheAttributeListenerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/ConfigDebugCommandTest.php | 43 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/ConfigDumpReferenceCommandTest.php | 13 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/ContainerDebugCommandTest.php | 47 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/ContainerLintCommandTest.php | 55 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/FragmentTest.php | 19 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/HttpClientTest.php | 15 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/KernelTestCaseFreshCacheTest.php | 82 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/MimeTypeGuesserBootTest.php | 47 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/TestServiceContainerTest.php | 1 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/AppKernel.php | 21 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ConfigDump/config.yml | 14 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ContainerDebug/no_dump.yml | 5 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/HttpClient/services.yml | 3 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/MimeType/bundles.php | 18 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/MimeType/config.yml | 3 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/MimeType/services.yml | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/ConcreteMicroKernel.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/flex-style/src/FlexStyleMicroKernel.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/KernelBrowserTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Routing/RedirectableCompiledUrlMatcherTest.php | 32 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Routing/RouterTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Test/KernelTestCaseHttpCacheTest.php | 145 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Tests/Test/WebTestCaseTest.php | 18 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/Translation/Translator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/FrameworkBundle/composer.json | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Command/DebugFirewallCommand.php | 52 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DataCollector/SecurityDataCollector.php | 12 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Debug/TraceableFirewallListener.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSecurityVotersPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSessionDomainConstraintPass.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/RegisterEntryPointPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/RegisterLdapLocatorPass.php | 5 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/ReplaceDecoratedRememberMeHandlerPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/SortFirewallListenersPass.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php | 60 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/AccessToken/OidcUserInfoTokenHandlerFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/AccessTokenFactory.php | 22 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/CustomAuthenticatorFactory.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/LoginLinkFactory.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/LoginThrottlingFactory.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RememberMeFactory.php | 8 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/SignatureAlgorithmFactory.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/UserProvider/InMemoryFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/UserProvider/LdapFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php | 41 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Resources/config/security.php | 1 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Resources/config/security_authenticator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Security.php | 73 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Security/FirewallAwareTrait.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Security/FirewallConfig.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Security/FirewallContext.php | 5 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Security/LazyFirewallContext.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/CacheWarmer/ExpressionCacheWarmerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Command/DebugFirewallCommandTest.php | 185 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DataCollector/SecurityDataCollectorTest.php | 64 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Debug/TraceableFirewallListenerTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Compiler/RegisterGlobalSecurityEventListenersPassTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/CompleteConfigurationTestCase.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/UserProvider/CustomProvider.php | 28 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/UserProvider/DummyProvider.php | 21 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/UserProviderFactory/CustomProviderFactory.php | 34 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/UserProviderFactory/DummyProviderFactory.php | 26 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/argon2i_hasher.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/bcrypt_hasher.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/merge.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/migrating_hasher.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/sodium_hasher.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php | 106 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/XmlCustomProviderTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/EventListener/VoteListenerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Fixtures/Descriptor/firewall_main_output.txt | 30 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Fixtures/Descriptor/firewall_main_with_events_output.txt | 39 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Fixtures/Descriptor/firewall_main_with_switch_user.txt | 36 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Fixtures/DummyAuthenticator.php | 50 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/AccessTokenTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/AccessTokenBundle/Controller/FooController.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/AccessTokenBundle/Security/Handler/AccessTokenHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/AccessTokenBundle/Security/Http/JsonAuthenticationSuccessHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/AuthenticatorBundle/ApiAuthenticator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/CsrfFormLoginBundle/Form/UserLoginType.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/JsonLoginBundle/Controller/TestController.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/JsonLoginBundle/Security/Http/JsonAuthenticationSuccessHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/LoginLink/TestCustomLoginLinkSuccessHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/RememberMeBundle/Security/UserChangingUserProvider.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/SecuredPageBundle/Security/Core/User/ArrayUserProvider.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/CsrfFormLoginTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/EventAliasTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/LogoutTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/RememberMeCookieTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/SecurityTest.php | 24 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Functional/app/AppKernel.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/LoginLink/FirewallAwareLoginLinkHandlerTest.php | 33 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Security/FirewallContextTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Security/FirewallMapTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/Security/LazyFirewallContextTest.php | 49 symfony-6.4.41+dfsg/src/Symfony/Bundle/SecurityBundle/Tests/SecurityTest.php | 136 symfony-6.4.41+dfsg/src/Symfony/Bundle/TwigBundle/Command/LintCommand.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/TwigBundle/DependencyInjection/Configuration.php | 22 symfony-6.4.41+dfsg/src/Symfony/Bundle/TwigBundle/DependencyInjection/Configurator/EnvironmentConfigurator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/TwigBundle/Resources/config/twig.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/TwigBundle/TemplateIterator.php | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/TwigBundle/Tests/Functional/NoTemplatingEntryTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/TwigBundle/Tests/TemplateIteratorTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Controller/ProfilerController.php | 14 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Csp/ContentSecurityPolicyHandler.php | 12 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php | 2 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Profiler/TemplateManager.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/logger.html.twig | 6 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/mailer.html.twig | 44 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/toolbar_js.html.twig | 1128 - symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php | 67 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/RouterControllerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Tests/Csp/ContentSecurityPolicyHandlerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Tests/DependencyInjection/WebProfilerExtensionTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php | 40 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Tests/Profiler/TemplateManagerTest.php | 11 symfony-6.4.41+dfsg/src/Symfony/Bundle/WebProfilerBundle/Tests/Resources/IconTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Asset/Packages.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Asset/Tests/Context/RequestStackContextTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Asset/Tests/PackagesTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Asset/Tests/PathPackageTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Asset/Tests/UrlPackageTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Asset/Tests/VersionStrategy/JsonManifestVersionStrategyTest.php | 25 symfony-6.4.41+dfsg/src/Symfony/Component/Asset/Tests/VersionStrategy/StaticVersionStrategyTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Asset/UrlPackage.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Asset/VersionStrategy/JsonManifestVersionStrategy.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Asset/VersionStrategy/StaticVersionStrategy.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/AssetMapper.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/AssetMapperDevServerSubscriber.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/AssetMapperRepository.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Command/AssetMapperCompileCommand.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Command/DebugAssetMapperCommand.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Command/ImportMapAuditCommand.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Command/ImportMapInstallCommand.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Command/ImportMapOutdatedCommand.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Command/ImportMapRemoveCommand.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Command/ImportMapRequireCommand.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Command/ImportMapUpdateCommand.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Command/VersionProblemCommandTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/CompiledAssetMapperConfigReader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Compiler/CssAssetUrlCompiler.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Compiler/JavaScriptImportPathCompiler.php | 38 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Compiler/SourceMappingUrlsCompiler.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Factory/CachedMappedAssetFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Factory/MappedAssetFactory.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/BatchHttpClient.php | 57 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/ImportMapAuditor.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/ImportMapConfigReader.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/ImportMapEntries.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/ImportMapGenerator.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/ImportMapManager.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/ImportMapRenderer.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/ImportMapUpdateChecker.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/ImportMapVersionChecker.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/PackageVersionProblem.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/RemotePackageDownloader.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/RemotePackageStorage.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/ImportMap/Resolver/JsDelivrEsmResolver.php | 39 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/AssetMapperCompilerTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/AssetMapperDevServerSubscriberFunctionalTest.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/AssetMapperRepositoryTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/AssetMapperTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/Command/AssetMapperCompileCommandTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/Compiler/CssAssetUrlCompilerTest.php | 118 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/Compiler/JavaScriptImportPathCompilerTest.php | 288 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/Compiler/SourceMappingUrlsCompilerTest.php | 50 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/Factory/MappedAssetFactoryTest.php | 25 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapAuditorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapConfigReaderTest.php | 56 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapGeneratorTest.php | 39 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapManagerTest.php | 113 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapRendererTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapUpdateCheckerTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapVersionCheckerTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/ImportMap/RemotePackageDownloaderTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/ImportMap/RemotePackageStorageTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/ImportMap/Resolver/JsDelivrEsmResolverTest.php | 31 symfony-6.4.41+dfsg/src/Symfony/Component/AssetMapper/Tests/MapperAwareAssetPackageTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/AbstractBrowser.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/Cookie.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/HttpBrowser.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/Response.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/Test/Constraint/BrowserCookieValueSame.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/Test/Constraint/BrowserHasCookie.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/Tests/AbstractBrowserTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/Tests/CookieJarTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/Tests/HttpBrowserTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/Tests/Test/Constraint/BrowserCookieValueSameTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/Tests/Test/Constraint/BrowserHasCookieTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/Tests/TestClient.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/BrowserKit/Tests/TestHttpClient.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/AbstractAdapter.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/AbstractTagAwareAdapter.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/ApcuAdapter.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/ArrayAdapter.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/ChainAdapter.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/DoctrineDbalAdapter.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/MemcachedAdapter.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/ParameterNormalizer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/PdoAdapter.php | 25 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/PhpArrayAdapter.php | 55 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/PhpFilesAdapter.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/ProxyAdapter.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/RedisTagAwareAdapter.php | 98 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/TagAwareAdapter.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Adapter/TraceableAdapter.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/CacheItem.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/DependencyInjection/CachePoolPass.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/DependencyInjection/CachePoolPrunerPass.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/LockRegistry.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Messenger/EarlyExpirationDispatcher.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Messenger/EarlyExpirationHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Messenger/EarlyExpirationMessage.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Psr16Cache.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php | 65 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/ApcuAdapterTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/ArrayAdapterTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/ChainAdapterTest.php | 93 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/CouchbaseBucketAdapterTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/CouchbaseCollectionAdapterTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/DoctrineDbalAdapterTest.php | 64 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/FilesystemTagAwareAdapterTest.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/MaxIdLengthAdapterTest.php | 77 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/NullAdapterTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/PdoAdapterTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/PhpArrayAdapterTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/PredisAdapterTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/PredisReplicationAdapterTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/PredisTagAwareReplicationAdapterTest.php | 37 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/ProxyAdapterAndRedisAdapterTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/ProxyAdapterTest.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/Psr16AdapterTest.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Adapter/TagAwareAdapterTest.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/DataCollector/CacheDataCollectorTest.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/DependencyInjection/CachePoolPassTest.php | 92 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/DependencyInjection/CachePoolPrunerPassTest.php | 67 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Fixtures/FailingTagFilesystemAdapter.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Marshaller/DefaultMarshallerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Messenger/EarlyExpirationDispatcherTest.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Messenger/EarlyExpirationHandlerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Messenger/EarlyExpirationMessageTest.php | 56 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Psr16CacheTest.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Traits/RedisProxiesTest.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Tests/Traits/RedisTraitTest.php | 45 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/AbstractAdapterTrait.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/CachedValueInterface.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/ContractsTrait.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/FilesystemCommonTrait.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/FilesystemTrait.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Redis61ProxyTrait.php | 81 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Redis62ProxyTrait.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Redis63ProxyTrait.php | 162 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Redis6Proxy.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Redis6ProxyTrait.php | 81 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/RedisCluster61ProxyTrait.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/RedisCluster62ProxyTrait.php | 47 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/RedisCluster63ProxyTrait.php | 162 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/RedisCluster6Proxy.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/RedisCluster6ProxyTrait.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/RedisTrait.php | 106 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Relay/BgsaveTrait.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Relay/FtTrait.php | 132 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Relay/GetWithMetaTrait.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Relay/IsTrackedTrait.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Relay/MoveTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Relay/Relay11Trait.php | 132 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Relay/Relay121Trait.php | 51 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Relay/Relay12Trait.php | 107 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Relay/Relay20Trait.php | 47 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Relay/Relay21Trait.php | 37 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Relay/Relay22Trait.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/Relay/SwapdbTrait.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/RelayProxy.php | 37 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/RelayProxyTrait.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Cache/Traits/ValueWrapper.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Clock/DatePoint.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Clock/MockClock.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Clock/Tests/ClockTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Clock/Tests/MockClockTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Builder/ClassBuilder.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Builder/ConfigBuilderGenerator.php | 72 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/ArrayNode.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/BaseNode.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/BooleanNode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/Builder/ArrayNodeDefinition.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/Builder/ExprBuilder.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/Builder/NodeBuilder.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/Builder/NumericNodeDefinition.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/Dumper/XmlReferenceDumper.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/Dumper/YamlReferenceDumper.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/EnumNode.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/FloatNode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/IntegerNode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/Loader/DefinitionFileLoader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/NumericNode.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/PrototypedArrayNode.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/ScalarNode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Definition/VariableNode.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Exception/FileLoaderImportCircularReferenceException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Exception/LoaderLoadException.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/Config/FileLocator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Config/FileLocatorInterface.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Loader/FileLoader.php | 45 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Resource/ClassExistenceResource.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Resource/DirectoryResource.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Resource/FileResource.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Resource/GlobResource.php | 35 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Resource/ReflectionClassResource.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Config/ResourceCheckerConfigCache.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Builder/Fixtures/ArrayValues.config.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Builder/Fixtures/ArrayValues.output.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Builder/Fixtures/ArrayValues.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Builder/Fixtures/ArrayValues/Symfony/Config/ArrayValues/ErrorPagesConfig.php | 75 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Builder/Fixtures/ArrayValues/Symfony/Config/ArrayValues/TransportsConfig.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Builder/Fixtures/ArrayValues/Symfony/Config/ArrayValuesConfig.php | 96 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Builder/Fixtures/NodeInitialValues.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Builder/Fixtures/NodeInitialValues/Symfony/Config/NodeInitialValues/Messenger/TransportsConfig.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Builder/Fixtures/ScalarNormalizedTypes/Symfony/Config/ScalarNormalizedTypes/NestedConfig.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Builder/Fixtures/ScalarNormalizedTypes/Symfony/Config/ScalarNormalizedTypesConfig.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Builder/GeneratedConfigTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Definition/ArrayNodeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Definition/BaseNodeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Definition/BooleanNodeTest.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Definition/Builder/ArrayNodeDefinitionTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Definition/Builder/ExprBuilderTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Definition/Dumper/XmlReferenceDumperTest.php | 148 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Definition/Dumper/YamlReferenceDumperTest.php | 182 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Definition/FloatNodeTest.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Definition/IntegerNodeTest.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Definition/NormalizationTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Definition/PrototypedArrayNodeTest.php | 84 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Definition/ScalarNodeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php | 41 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Loader/LoaderResolverTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Loader/LoaderTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Resource/ClassExistenceResourceTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Resource/DirectoryResourceTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Resource/FileResourceTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Resource/GlobResourceTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Resource/ReflectionClassResourceTest.php | 84 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/ResourceCheckerConfigCacheTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Tests/Util/XmlUtilsTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Config/Util/XmlUtils.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Application.php | 109 symfony-6.4.41+dfsg/src/Symfony/Component/Console/CI/GithubActionReporter.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Color.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Command/Command.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Command/CompleteCommand.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Command/DumpCompletionCommand.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Command/HelpCommand.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Command/ListCommand.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Command/SignalableCommandInterface.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Command/TraceableCommand.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Console/CommandLoader/ContainerCommandLoader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/CommandLoader/FactoryCommandLoader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Completion/Suggestion.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Cursor.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Console/DataCollector/CommandDataCollector.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Console/DependencyInjection/AddConsoleCommandPass.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Descriptor/ApplicationDescription.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Descriptor/Descriptor.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Descriptor/JsonDescriptor.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Descriptor/MarkdownDescriptor.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Descriptor/ReStructuredTextDescriptor.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Descriptor/TextDescriptor.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Exception/RunCommandFailedException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Formatter/OutputFormatter.php | 43 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/DebugFormatterHelper.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/DescriptorHelper.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/Dumper.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/FormatterHelper.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/Helper.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/HelperSet.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/OutputWrapper.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/ProcessHelper.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/ProgressBar.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/ProgressIndicator.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/QuestionHelper.php | 87 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/SymfonyQuestionHelper.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/Table.php | 81 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/TableCell.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/TableCellStyle.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/TableStyle.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Helper/TerminalInputHelper.php | 156 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Input/ArgvInput.php | 25 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Input/ArrayInput.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Input/Input.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Input/InputArgument.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Input/InputDefinition.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Input/InputOption.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Input/StringInput.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Logger/ConsoleLogger.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Messenger/RunCommandMessageHandler.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Output/AnsiColorMode.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Output/ConsoleOutput.php | 38 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Output/ConsoleSectionOutput.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Output/TrimmedBufferOutput.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Question/ChoiceQuestion.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Question/ConfirmationQuestion.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Question/Question.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Resources/completion.bash | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Resources/completion.fish | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Resources/completion.zsh | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/SignalRegistry/SignalMap.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/SignalRegistry/SignalRegistry.php | 80 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Style/SymfonyStyle.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Terminal.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tester/ApplicationTester.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tester/Constraint/CommandIsSuccessful.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tester/TesterTrait.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/ApplicationTest.php | 432 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Command/CommandTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Command/CompleteCommandTest.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Command/ListCommandTest.php | 58 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Command/SingleCommandApplicationTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Command/TraceableCommandTest.php | 67 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/CommandLoader/ContainerCommandLoaderTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/CommandLoader/FactoryCommandLoaderTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/CursorTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Descriptor/AbstractDescriptorTestCase.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Descriptor/JsonDescriptorTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/EventListener/ErrorListenerTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Exception/RunCommandFailedExceptionTest.php | 49 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Fixtures/AbstractLoopCommand.php | 41 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Fixtures/LoopExampleCommand.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Fixtures/ManyAliasesCommand.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Fixtures/application_2.json | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Fixtures/application_signalable.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Fixtures/application_sttyhelper.php | 37 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Fixtures/application_test_sigint.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Fixtures/binary_output.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Formatter/OutputFormatterTest.php | 118 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Helper/AbstractQuestionHelperTestCase.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Helper/DumperNativeFallbackTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Helper/DumperTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Helper/HelperSetTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Helper/OutputWrapperTest.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Helper/ProcessHelperTest.php | 135 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Helper/ProgressBarTest.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Helper/ProgressIndicatorTest.php | 56 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Helper/QuestionHelperTest.php | 100 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Helper/SymfonyQuestionHelperTest.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Helper/TableTest.php | 1339 - symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Input/InputArgumentTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Input/InputDefinitionTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Input/InputOptionTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Logger/ConsoleLoggerTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Messenger/RunCommandMessageHandlerTest.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Output/ConsoleSectionOutputTest.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Output/StreamOutputTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Question/ConfirmationQuestionTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Question/QuestionTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/SignalRegistry/SignalMapTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/SignalRegistry/SignalRegistryTest.php | 151 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Style/SymfonyStyleTest.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Tester/ApplicationTesterTest.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Console/Tests/Tester/CommandTesterTest.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/CssSelectorConverter.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Exception/SyntaxErrorException.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Node/AttributeNode.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Node/ClassNode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Node/CombinedSelectorNode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Node/ElementNode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Node/FunctionNode.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Node/HashNode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Node/NegationNode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Node/PseudoNode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Node/SelectorNode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Parser/Handler/StringHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Parser/Parser.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Parser/Token.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Parser/Tokenizer/TokenizerEscaping.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Parser/Tokenizer/TokenizerPatterns.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Tests/CssSelectorConverterTest.php | 31 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Tests/Parser/ParserTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/Tests/XPath/TranslatorTest.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/XPath/Extension/AttributeMatchingExtension.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/XPath/Extension/FunctionExtension.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/XPath/Extension/HtmlExtension.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/XPath/Extension/NodeExtension.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/XPath/Extension/PseudoClassExtension.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/XPath/Translator.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/CssSelector/XPath/XPathExpr.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Argument/LazyClosure.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Argument/ReferenceSetArgumentTrait.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Argument/ServiceLocator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Attribute/Autowire.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Attribute/AutowireDecorated.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Attribute/AutowireLocator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Attribute/Target.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/AbstractRecursivePass.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/AliasDeprecatedPublicServicesPass.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/AttributeAutoconfigurationPass.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/AutoAliasServicePass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/AutowireRequiredPropertiesPass.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/CheckArgumentsValidityPass.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/CheckDefinitionValidityPass.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/CheckFactoryBuilderCircularReferencePass.php | 130 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/CheckReferenceValidityPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/CheckTypeDeclarationsPass.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/DefinitionErrorExceptionPass.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/PriorityTaggedServiceTrait.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/RegisterEnvVarProcessorsPass.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/RegisterServiceSubscribersPass.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/RemoveAbstractDefinitionsPass.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/RemoveBuildParametersPass.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/RemovePrivateAliasesPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/RemoveUnusedDefinitionsPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ResolveBindingsPass.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ResolveChildDefinitionsPass.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ResolveClassPass.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ResolveDecoratorStackPass.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ResolveFactoryClassPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ResolveHotPathPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ResolveInstanceofConditionalsPass.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ResolveNamedArgumentsPass.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ResolveReferencesToAliasesPass.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ServiceLocatorTagPass.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraph.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Container.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/ContainerBuilder.php | 81 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Definition.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Dumper/GraphvizDumper.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php | 709 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Dumper/Preloader.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php | 68 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Exception/EnvParameterException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Exception/InvalidParameterTypeException.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Exception/ParameterCircularReferenceException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Exception/ParameterNotFoundException.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Exception/ServiceCircularReferenceException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Exception/ServiceNotFoundException.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/ExpressionLanguageProvider.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Extension/Extension.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/LazyProxy/Instantiator/LazyServiceInstantiator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/LazyProxy/PhpDumper/LazyServiceDumper.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/LazyProxy/ProxyHelper.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/Configurator/AbstractConfigurator.php | 38 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/Configurator/DefaultsConfigurator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/Configurator/ParametersConfigurator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/Configurator/ServicesConfigurator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/Configurator/Traits/FactoryTrait.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/Configurator/Traits/FromCallableTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/Configurator/Traits/ParentTrait.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/Configurator/Traits/TagTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/IniFileLoader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/PhpFileLoader.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php | 106 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php | 134 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/ParameterBag/EnvPlaceholderParameterBag.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/ReverseContainer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/ServiceLocator.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Argument/LazyClosureTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Argument/RewindableGeneratorTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Attribute/AutowireTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/AbstractRecursivePassTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/AliasDeprecatedPublicServicesPassTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/AnalyzeServiceReferencesPassTest.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/AutowirePassTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/AutowireRequiredPropertiesPassTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/CheckDefinitionValidityPassTest.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/CheckFactoryBuilderCircularReferencePassTest.php | 197 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/CheckTypeDeclarationsPassTest.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/CustomExpressionLanguageFunctionTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/DefinitionErrorExceptionPassTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/InlineServiceDefinitionsPassTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/MergeExtensionConfigurationPassTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/PassConfigTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/PriorityTaggedServiceTraitTest.php | 72 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/RegisterServiceSubscribersPassTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/RemoveBuildParametersPassTest.php | 35 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/RemoveUnusedDefinitionsPassTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/ReplaceAliasByActualDefinitionPassTest.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveBindingsPassTest.php | 71 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveClassPassTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveReferencesToAliasesPassTest.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/ServiceLocatorTagPassTest.php | 66 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Compiler/ValidateEnvPlaceholdersPassTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Config/ContainerParametersResourceCheckerTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/ContainerTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php | 413 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Dumper/YamlDumperTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php | 100 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Exception/AutowiringFailedExceptionTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Extension/AbstractExtensionTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/Container/ContainerWithTypedParameterBag.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/StaticConstructorAutoconfigure.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/UntypedWithTarget.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/instanceof_import_child.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/instanceof_import_parent.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/includes/autowiring_classes.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/includes/autowiring_classes_80.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/custom_container_class_constructor_without_arguments.php | 53 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/custom_container_class_with_optional_constructor_arguments.php | 53 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/lazy_autowire_attribute.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/lazy_autowire_attribute_with_intersection.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/legacy_lazy_autowire_attribute.php | 98 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/legacy_lazy_autowire_attribute_with_intersection.php | 107 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/legacy_services_dedup_lazy.php | 126 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/legacy_services_wither_lazy.php | 86 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/legacy_services_wither_lazy_non_shared.php | 88 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services10.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services12.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services19.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services26.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services8.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_as_files.txt | 29 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_compiled.php | 25 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_inlined_factories.txt | 29 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_lazy_inlined_factories.txt | 13 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_adawson.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_almost_circular_private.php | 188 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_almost_circular_public.php | 280 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_array_params.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_base64_env.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_csv_env.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_dedup_lazy.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_deep_graph.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_default_env.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_deprecated_parameters.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_deprecated_parameters_as_files.txt | 13 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_env_in_id.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_errored_definition.php | 25 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_json_env.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_query_string_env.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_rot13_env.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_unsupported_characters.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_url_env.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_wither_lazy.php | 39 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_wither_lazy_non_shared.php | 39 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services31.xml | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/container_with_env_placeholders.yml | 19 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/LazyProxy/Instantiator/RealServiceInstantiatorTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/LazyProxy/PhpDumper/NullDumperTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Loader/ClosureLoaderTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Loader/Configurator/AbstractConfiguratorTest.php | 59 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Loader/FileLoaderTest.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Loader/IniFileLoaderTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php | 60 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/EnvPlaceholderParameterBagTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/ParameterBagTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DependencyInjection/Tests/ServiceLocatorTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/AbstractUriElement.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Crawler.php | 31 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Field/FileFormField.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Field/FormField.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Field/InputFormField.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Field/TextareaFormField.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Form.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/FormFieldRegistry.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Image.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Link.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Test/Constraint/CrawlerAnySelectorTextContains.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Test/Constraint/CrawlerAnySelectorTextSame.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Test/Constraint/CrawlerSelectorAttributeValueSame.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Test/Constraint/CrawlerSelectorCount.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Test/Constraint/CrawlerSelectorExists.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Test/Constraint/CrawlerSelectorTextContains.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Test/Constraint/CrawlerSelectorTextSame.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Tests/AbstractCrawlerTestCase.php | 234 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Tests/Field/ChoiceFormFieldTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Tests/FormTest.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Tests/ImageTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Tests/LinkTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/DomCrawler/Tests/NativeParserCrawlerTest.php | 45 symfony-6.4.41+dfsg/src/Symfony/Component/Dotenv/Command/DebugCommand.php | 38 symfony-6.4.41+dfsg/src/Symfony/Component/Dotenv/Command/DotenvDumpCommand.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/Dotenv/Dotenv.php | 354 symfony-6.4.41+dfsg/src/Symfony/Component/Dotenv/Exception/FormatException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Dotenv/Exception/PathException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Dotenv/Exception/VariableCircularReferenceException.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/Dotenv/Tests/Command/DebugCommandTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Dotenv/Tests/Command/DotenvDumpCommandTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Dotenv/Tests/DotenvTest.php | 446 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/BufferingLogger.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/Debug.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/DebugClassLoader.php | 94 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/ErrorEnhancer/UndefinedFunctionErrorEnhancer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/ErrorEnhancer/UndefinedMethodErrorEnhancer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/ErrorHandler.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/ErrorRenderer/CliErrorRenderer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/ErrorRenderer/FileLinkFormatter.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/ErrorRenderer/HtmlErrorRenderer.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/Exception/FlattenException.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/Resources/bin/extract-tentative-return-types.php | 50 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/Tests/DebugClassLoaderTest.php | 161 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/Tests/ErrorEnhancer/ClassNotFoundErrorEnhancerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/Tests/ErrorHandlerTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/Tests/ErrorRenderer/FileLinkFormatterTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/Tests/ErrorRenderer/HtmlErrorRendererTest.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/Tests/ErrorRenderer/SerializerErrorRendererTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/Tests/Exception/FlattenExceptionTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/Tests/Fixtures/VirtualInterface.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/ErrorHandler/Tests/Fixtures/VirtualInterfaceWithCall.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcher.php | 74 symfony-6.4.41+dfsg/src/Symfony/Component/EventDispatcher/DependencyInjection/RegisterListenersPass.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/EventDispatcher/GenericEvent.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/EventDispatcher/Tests/Debug/TraceableEventDispatcherTest.php | 186 symfony-6.4.41+dfsg/src/Symfony/Component/EventDispatcher/Tests/Debug/WrappedListenerTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/EventDispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/EventDispatcher/Tests/EventDispatcherTest.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/EventDispatcher/Tests/ImmutableEventDispatcherTest.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/Compiler.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/ExpressionFunction.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/ExpressionLanguage.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/Lexer.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/Node/BinaryNode.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/Node/Node.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/Parser.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/SyntaxError.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/Tests/ExpressionLanguageTest.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/Tests/Node/ConstantNodeTest.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/Tests/Node/FunctionNodeTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/Tests/Node/GetAttrNodeTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/Tests/Node/NodeTest.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/Token.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/ExpressionLanguage/TokenStream.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Filesystem/Exception/FileNotFoundException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Filesystem/Filesystem.php | 89 symfony-6.4.41+dfsg/src/Symfony/Component/Filesystem/Path.php | 84 symfony-6.4.41+dfsg/src/Symfony/Component/Filesystem/Tests/FilesystemTest.php | 88 symfony-6.4.41+dfsg/src/Symfony/Component/Filesystem/Tests/FilesystemTestCase.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Filesystem/Tests/PathTest.php | 789 - symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Comparator/Comparator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Comparator/DateComparator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Comparator/NumberComparator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Finder.php | 97 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Gitignore.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Glob.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Iterator/SortableIterator.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/SplFileInfo.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/FinderTest.php | 239 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/GitignoreTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/GlobTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/Iterator/CustomFilterIteratorTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/Iterator/FilecontentFilterIteratorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/Iterator/IteratorTestCase.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/Iterator/LazyIteratorTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/Iterator/MockFileListIterator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/Iterator/MockSplFileInfo.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/Iterator/RealIteratorTestCase.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/Iterator/SortableIteratorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Finder/Tests/Iterator/VfsIteratorTestTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/AbstractExtension.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/AbstractRendererEngine.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Button.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/ChoiceList/ArrayChoiceList.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/ChoiceList/Loader/AbstractChoiceLoader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Command/DebugCommand.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Console/Descriptor/Descriptor.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Console/Descriptor/TextDescriptor.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Form/DependencyInjection/FormPass.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Exception/UnexpectedTypeException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/ArrayToPartsTransformer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/BaseDateTimeTransformer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/ChoiceToValueTransformer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/DateIntervalToArrayTransformer.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/DateIntervalToStringTransformer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToArrayTransformer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToHtml5LocalDateTimeTransformer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformer.php | 64 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToRfc3339Transformer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/IntegerToLocalizedStringTransformer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/IntlTimeZoneToStringTransformer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/PercentToLocalizedStringTransformer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/UlidToStringTransformer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/UuidToStringTransformer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/ValueToDuplicatesTransformer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/DataTransformer/WeekToArrayTransformer.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/BaseType.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/CountryType.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/CurrencyType.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/DateType.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/EnumType.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/LanguageType.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/LocaleType.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/MoneyType.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/TextareaType.php | 35 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/TimezoneType.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Core/Type/WeekType.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/DataCollector/FormDataCollector.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/DependencyInjection/DependencyInjectionExtension.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/PasswordHasher/EventListener/PasswordHasherListener.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Validator/ValidatorTypeGuesser.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Validator/ViolationMapper/MappingRule.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Validator/ViolationMapper/ViolationMapper.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Extension/Validator/ViolationMapper/ViolationPath.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Form.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Form/FormBuilder.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/FormConfigBuilder.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/FormErrorIterator.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Form/FormRegistry.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Form/FormRenderer.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Guess/Guess.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/NativeRequestHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/PreloadedExtension.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/ResolvedFormType.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Resources/translations/validators.ca.xlf | 62 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Resources/translations/validators.nb.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Resources/translations/validators.no.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Test/FormPerformanceTestCase.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Test/Traits/ValidatorExtensionTrait.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Test/TypeTestCase.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/AbstractRequestHandlerTestCase.php | 53 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/CallbackTransformerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/ChoiceList/ArrayChoiceListTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/ChoiceList/Factory/CachingFactoryDecoratorTest.php | 100 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/ChoiceList/Factory/DefaultChoiceListFactoryTest.php | 62 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/ChoiceList/LazyChoiceListTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/ChoiceList/Loader/CallbackChoiceLoaderTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/ChoiceList/Loader/FilterChoiceLoaderDecoratorTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/ChoiceList/Loader/IntlCallbackChoiceLoaderTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Command/DebugCommandTest.php | 108 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/CompoundFormTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Console/Descriptor/AbstractDescriptorTestCase.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/DependencyInjection/FormPassTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/DataMapper/DataMapperTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformerTest.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/IntegerToLocalizedStringTransformerTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformerTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/NumberToLocalizedStringTransformerTest.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/PercentToLocalizedStringTransformerTest.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/EventListener/ResizeFormListenerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/BaseTypeTestCase.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/CheckboxTypeTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/ChoiceTypePerformanceTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/ChoiceTypeTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/ChoiceTypeTranslationTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/CollectionTypeTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/CountryTypeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/CurrencyTypeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/EnumTypeTest.php | 148 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/FormTypeTest.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/IntegerTypeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/LanguageTypeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/LocaleTypeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/MoneyTypeTest.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/NumberTypeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/PercentTypeTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/RepeatedTypeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/TextareaTypeTest.php | 119 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Core/Type/TimezoneTypeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Csrf/Type/FormTypeCsrfExtensionTest.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/DataCollector/FormDataCollectorTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/DataCollector/FormDataExtractorTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/DependencyInjection/DependencyInjectionExtensionTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/HtmlSanitizer/Type/TextTypeHtmlSanitizerExtensionTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/HttpFoundation/HttpFoundationRequestHandlerTest.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/PasswordHasher/Type/PasswordTypePasswordHasherExtensionTest.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/FormValidatorFunctionalTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/FormValidatorTest.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/BaseValidatorExtensionTestCase.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/BirthdayTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/CheckboxTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/ChoiceTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/CollectionTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/ColorTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/CountryTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/CurrencyTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/DateIntervalTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/DateTimeTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/DateTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/EmailTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FileTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/HiddenTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/IntegerTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/LanguageTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/LocaleTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/MoneyTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/NumberTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/PasswordTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/PercentTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/RadioTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/RangeTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/RepeatedTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/SearchTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/SubmitTypeValidatorExtensionTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/TelTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/TimeTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/TimezoneTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/UploadValidatorExtensionTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/Type/UrlTypeValidatorExtensionTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php | 41 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorTypeGuesserTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Extension/Validator/ViolationMapper/ViolationMapperTest.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Fixtures/Descriptor/required_option_with_allowed_values.txt | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Fixtures/FixedDataTransformer.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Fixtures/FixedFilterListener.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Fixtures/TestExtension.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/FormFactoryTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/NativeRequestHandlerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/ResolvedFormTypeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Resources/TranslationFilesTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/SimpleFormTest.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Util/OrderedHashMapTest.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/Util/StringUtilTest.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Tests/VersionAwareTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Util/FormUtil.php | 82 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Util/OrderedHashMap.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Util/OrderedHashMapIterator.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Form/Util/StringUtil.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/HtmlSanitizer.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/HtmlSanitizerConfig.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Reference/W3CReference.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/Fixtures/baseline-attribute-allow-list.json | 1 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerAllTest.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerConfigTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerCustomTest.php | 224 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php | 81 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php | 61 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/MetaRefreshAttributeSanitizer.php | 56 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/UrlAttributeSanitizer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/DomVisitor.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/Node/Node.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/AmpHttpClient.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/CachingHttpClient.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Chunk/ErrorChunk.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Chunk/ServerSentEvent.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/CurlHttpClient.php | 91 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/DataCollector/HttpClientDataCollector.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/EventSourceHttpClient.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Exception/HttpExceptionTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/HttpClientTrait.php | 68 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/HttplugClient.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Internal/AmpBody.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Internal/AmpClientState.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Internal/AmpListener.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Internal/CurlClientState.php | 120 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/MockHttpClient.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/NativeHttpClient.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/NoPrivateNetworkHttpClient.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Psr18Client.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/AmpResponse.php | 25 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/AsyncContext.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/AsyncResponse.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/CommonResponseTrait.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/CurlResponse.php | 58 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/MockResponse.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/StreamWrapper.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/TraceableResponse.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/TransportResponseTrait.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Retry/GenericRetryStrategy.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/RetryableHttpClient.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/ScopingHttpClient.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Test/HarFileResponseFactory.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/AmpHttpClientTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/AsyncDecoratorTraitTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/CachingHttpClientTest.php | 61 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Chunk/ServerSentEventTest.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php | 131 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/DataCollector/HttpClientDataCollectorTest.php | 181 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/EventSourceHttpClientTest.php | 118 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Exception/HttpExceptionTraitTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php | 66 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/HttplugClientTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Internal/CurlClientStateTest.php | 43 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/NoPrivateNetworkHttpClientTest.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Response/HttplugPromiseTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Response/MockResponseTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/RetryableHttpClientTest.php | 181 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/ScopingHttpClientTest.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Test/HarFileResponseFactoryTest.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/TraceableHttpClientTest.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/TraceableHttpClient.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/composer.json | 1 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/AcceptHeader.php | 204 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/BinaryFileResponse.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Cookie.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/File.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/UploadedFile.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/HeaderBag.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/HeaderUtils.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/InputBag.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/IpUtils.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/JsonResponse.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/ParameterBag.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/RedirectResponse.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Request.php | 92 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Response.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/ResponseHeaderBag.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/SessionUtils.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/AbstractSessionHandler.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/IdentityMarshaller.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/MemcachedSessionHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php | 37 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/RedisSessionHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/SessionHandlerFactory.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/StrictSessionHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MetadataBag.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MockArraySessionStorage.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MockFileSessionStorage.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/StreamedJsonResponse.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/RequestAttributeValueSame.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseCookieValueSame.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHasCookie.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHasHeader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHeaderLocationSame.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHeaderSame.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/AcceptHeaderTest.php | 49 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/BinaryFileResponseTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/File/UploadedFileTest.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/FileBagTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Fixtures/response-functional/invalid_cookie_name.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/InputBagTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/IpUtilsTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestMatcher/AttributesRequestMatcherTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestMatcherTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php | 362 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/ResponseFunctionalTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/AutoExpireFlashBagTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/FlashBagTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/AbstractRedisSessionHandlerTestCase.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/AbstractSessionHandlerTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/common.inc | 3 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.expected | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/invalid_regenerate.expected | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/storage.expected | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/IdentityMarshallerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MarshallingSessionHandlerTest.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php | 79 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MigratingSessionHandlerTest.php | 99 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/PdoSessionHandlerTest.php | 62 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/PredisSessionHandlerTest.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/SessionHandlerFactoryTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/MetadataBagTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/NativeSessionStorageTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Proxy/AbstractProxyTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Proxy/SessionHandlerProxyTest.php | 130 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/StreamedJsonResponseTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/StreamedResponseTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Test/Constraint/ResponseFormatSameTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Attribute/WithLogLevel.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Bundle/Bundle.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/CacheClearer/Psr6CacheClearer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerAggregate.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/BackedEnumValueResolver.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/DateTimeValueResolver.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/QueryParameterValueResolver.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php | 49 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/RequestValueResolver.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/ServiceValueResolver.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/SessionValueResolver.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/UidValueResolver.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/VariadicValueResolver.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ContainerControllerResolver.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Controller/ControllerResolver.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/ControllerMetadata/ArgumentMetadata.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/DataCollector/DataCollector.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/DataCollector/ExceptionDataCollector.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/DataCollector/LoggerDataCollector.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/DataCollector/RouterDataCollector.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/DependencyInjection/FragmentRendererPass.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/DependencyInjection/ResettableServicePass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/EventListener/CacheAttributeListener.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/EventListener/ErrorListener.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/EventListener/LocaleListener.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Exception/ResolverNotFoundException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Fragment/FragmentHandler.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Fragment/FragmentUriGenerator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Fragment/HIncludeFragmentRenderer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/HttpCache/AbstractSurrogate.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/HttpCache/CacheWasLockedException.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/HttpCache/Esi.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/HttpCache/ResponseCacheStrategy.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/HttpCache/Ssi.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/HttpCache/Store.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/HttpCache/SubRequestHandler.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/HttpClientKernel.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/HttpKernel.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/HttpKernelBrowser.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Kernel.php | 65 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Log/Logger.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Profiler/Profile.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Profiler/Profiler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/NotTaggedControllerValueResolverTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/QueryParameterValueResolverTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/RequestPayloadValueResolverTest.php | 281 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/RequestValueResolverTest.php | 70 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/ServiceValueResolverTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/SessionValueResolverTest.php | 70 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolverTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Controller/ControllerResolverTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Controller/ErrorControllerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Controller/TraceableArgumentResolverTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Controller/TraceableControllerResolverTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/DataCollector/ConfigDataCollectorTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/DataCollector/DumpDataCollectorTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/DataCollector/ExceptionDataCollectorTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/DataCollector/LoggerDataCollectorTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/DataCollector/RequestDataCollectorTest.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/DataCollector/RouterDataCollectorTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Debug/ErrorHandlerConfiguratorTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Debug/TraceableEventDispatcherTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/LazyLoadingFragmentHandlerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php | 76 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/ServicesResetterTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Event/ControllerArgumentsEventTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/AddRequestFormatsListenerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/CacheAttributeListenerTest.php | 103 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/DebugHandlersListenerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/DisallowRobotsIndexingListenerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/ErrorListenerTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/FragmentListenerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/LocaleAwareListenerTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/LocaleListenerTest.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/ProfilerListenerTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/ResponseListenerTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/RouterListenerTest.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php | 66 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/SurrogateListenerTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/EventListener/ValidateRequestListenerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Fixtures/KernelForTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Fragment/EsiFragmentRendererTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Fragment/SsiFragmentRendererTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/HttpCache/EsiTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php | 148 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTestCase.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/HttpCache/ResponseCacheStrategyTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/HttpCache/SsiTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/HttpCache/StoreTest.php | 121 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/HttpKernelBrowserTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/HttpKernelTest.php | 58 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/KernelTest.php | 290 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Log/LoggerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Profiler/FileProfilerStorageTest.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/Tests/Profiler/ProfilerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/HttpKernel/composer.json | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Currencies.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Bundle/Compiler/BundleCompilerInterface.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Bundle/Compiler/GenrbCompiler.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Bundle/Reader/BufferedBundleReader.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Bundle/Reader/BundleEntryReader.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Bundle/Reader/IntlBundleReader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Bundle/Reader/JsonBundleReader.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Bundle/Reader/PhpBundleReader.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Bundle/Writer/BundleWriterInterface.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Bundle/Writer/JsonBundleWriter.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Bundle/Writer/PhpBundleWriter.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Generator/AbstractDataGenerator.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Generator/CurrencyDataGenerator.php | 100 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Generator/GeneratorConfig.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Generator/LocaleDataGenerator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Generator/RegionDataGenerator.php | 59 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Generator/TimezoneDataGenerator.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Util/ArrayAccessibleResourceBundle.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Util/LocaleScanner.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Util/RecursiveArrayAccess.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Data/Util/RingBuffer.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Exception/UnexpectedTypeException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Intl.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Locale.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/bin/common.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/bin/compile | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/bin/update-data.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/af.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ak.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/am.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ar.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/as.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/az.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ba.php | 1182 + symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/be.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/bg.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/bn.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/bs.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ca.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/cs.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/cv.php | 680 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/cy.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/da.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/de.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/el.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/en.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/en_CA.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/en_GE.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/en_IN.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/en_NO.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/eo.php | 642 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/es.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/es_US.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/et.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/eu.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/fa.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/fi.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/fo.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/fr.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ga.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/gd.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/gl.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/gu.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ha.php | 130 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/he.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/hi.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/hr.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/hu.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/hy.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ia.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/id.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ig.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/in.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/is.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/it.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/iw.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ja.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/jv.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ka.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/kk.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/kk_Arab.php | 642 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/km.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/kn.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ko.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ku.php | 560 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ky.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/lo.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/lt.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/lv.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/meta.php | 2257 +++ symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/mi.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/mk.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ml.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/mn.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/mo.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/mr.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ms.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/my.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ne.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/nl.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/no.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/no_NO.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/or.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/pa.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/pl.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ps.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/pt.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/pt_PT.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/qu.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/rm.php | 70 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ro.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ru.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/sc.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/sd.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/sh.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/si.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/sk.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/sl.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/so.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/sq.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/sr.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/sr_Latn.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/sv.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/sw.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ta.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/te.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/tg.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/th.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ti.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/tk.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/tl.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/tr.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/tt.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/uk.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/ur.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/uz.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/vi.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/wo.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/xh.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/yo.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/yo_BJ.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/zh.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/zh_HK.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/zh_Hans_MY.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/zh_Hant.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/zh_Hant_HK.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/currencies/zu.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/git-info.txt | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/af.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ak.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/am.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ar.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/as.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/az.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ba.php | 355 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/be.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/bn.php | 58 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/br.php | 80 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/cs.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/cv.php | 383 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/el.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/en.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/en_IN.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/eo.php | 318 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_419.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_AR.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_BO.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_CL.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_CO.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_CR.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_DO.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_EC.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_GT.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_HN.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_MX.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_NI.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_PA.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_PE.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_PY.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/es_VE.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/et.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/eu.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/fi.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ga.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/gd.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/gl.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ha.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/hi.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/hi_Latn.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/hy.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ia.php | 25 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ie.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ig.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ii.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ja.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/jv.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/kk.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/kk_Arab.php | 340 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/km.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ko.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ku.php | 59 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ky.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/meta.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/mi.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/mn.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/mr.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ms.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/my.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/nl.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/nn.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/no.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/no_NO.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/pa.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/pt.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/pt_PT.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/qu.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/rm.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/sc.php | 38 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/sd.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/sh.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/si.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/so.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/sq.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/sr.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/sr_Latn.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/st.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/sw.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ta.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/te.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ti.php | 57 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ti_ER.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/tk.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/tl.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/tt.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/uk.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/ur.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/uz.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/vi.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/wo.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/xh.php | 75 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/yo.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/yo_BJ.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/zh.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/zh_Hant.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/languages/zu.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/af.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ak.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/am.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ar.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/as.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/az.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/az_Cyrl.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ba.php | 684 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/be.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/bg.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/bm.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/bn.php | 217 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/bo.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/br.php | 348 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/bs.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/bs_Cyrl.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ca.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ce.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/cs.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/cv.php | 980 - symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/cy.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/da.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/de.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/dz.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ee.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/el.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/en.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/en_AU.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/en_IN.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/eo.php | 219 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/es.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/es_419.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/et.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/eu.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/fa.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/fa_AF.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ff.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ff_Adlm.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/fi.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/fo.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/fr.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/fy.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ga.php | 107 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/gd.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/gl.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/gu.php | 39 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ha.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/he.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/hi.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/hi_Latn.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/hr.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/hu.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/hy.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ia.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/id.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ie.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ig.php | 85 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ii.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/is.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/it.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ja.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/jv.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ka.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ki.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/kk.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/kk_Arab.php | 685 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/km.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/kn.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ko.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ks.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ks_Deva.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ku.php | 134 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ky.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/lb.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/lg.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ln.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/lo.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/lt.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/lu.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/lv.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/meta.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/mg.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/mi.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/mk.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ml.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/mn.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/mr.php | 31 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ms.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/mt.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/my.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/nd.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ne.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/nl.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/nn.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/no.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/om.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/or.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/os.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/pa.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/pa_Arab.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/pl.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ps.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/pt.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/pt_PT.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/qu.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/rm.php | 189 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/rn.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ro.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ru.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/rw.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sa.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sc.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sd.php | 55 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sd_Deva.php | 41 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/se.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/se_FI.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sg.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/si.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sk.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sl.php | 59 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sn.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/so.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sq.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sr.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/st.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/su.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sv.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sw.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sw_CD.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/sw_KE.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ta.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/te.php | 125 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/tg.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/th.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ti.php | 39 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ti_ER.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/tk.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/to.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/tr.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/tt.php | 113 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ug.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/uk.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ur.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/ur_IN.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/uz.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/uz_Arab.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/uz_Cyrl.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/vi.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/wo.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/xh.php | 222 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/yi.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/yo.php | 31 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/yo_BJ.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/zh.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/zh_Hant.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/zh_Hant_HK.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/locales/zu.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/af.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ak.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/am.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ar.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ar_LY.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ar_SA.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/as.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/az.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/az_Cyrl.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ba.php | 258 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/be.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/bg.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/bm.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/bn.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/bn_IN.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/bo.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/bo_IN.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/br.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/bs.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/bs_Cyrl.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ca.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ce.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/cs.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/cv.php | 92 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/cy.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/da.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/de.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/de_AT.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/de_CH.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/dz.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ee.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/el.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/en.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/en_001.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/en_AU.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/en_CA.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/eo.php | 49 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_419.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_AR.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_BO.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_CL.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_CO.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_CR.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_DO.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_EC.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_GT.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_HN.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_MX.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_NI.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_PA.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_PE.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_PR.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_PY.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_SV.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_US.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/es_VE.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/et.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/eu.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/fa.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/fa_AF.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ff.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ff_Adlm.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/fi.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/fo.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/fr.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/fr_BE.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/fr_CA.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/fy.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ga.php | 35 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/gd.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/gl.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/gu.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/gv.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ha.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/he.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/hi.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/hi_Latn.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/hr.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/hu.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/hy.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ia.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/id.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ie.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ig.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ii.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/in.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/is.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/it.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/iw.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ja.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/jv.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ka.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ki.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/kk.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/kk_Arab.php | 258 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/kl.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/km.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/kn.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ko.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ko_KP.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ks.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ks_Deva.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ku.php | 31 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/kw.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ky.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/lb.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/lg.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ln.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/lo.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/lt.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/lu.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/lv.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/meta.php | 87 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/mg.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/mi.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/mk.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ml.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/mn.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/mo.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/mr.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ms.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/mt.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/my.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/nd.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ne.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/nl.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/nn.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/no.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/no_NO.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/oc.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/om.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/or.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/os.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/pa.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/pa_Arab.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/pl.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ps.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ps_PK.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/pt.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/pt_PT.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/qu.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/rm.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/rn.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ro.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ro_MD.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ru.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ru_UA.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/rw.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sa.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sc.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sd.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sd_Deva.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/se.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/se_FI.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sg.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sh.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sh_BA.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/si.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sk.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sl.php | 35 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sn.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/so.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sq.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sr.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sr_BA.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sr_Cyrl_BA.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sr_Cyrl_ME.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sr_Cyrl_XK.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sr_Latn.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sr_Latn_BA.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sr_Latn_ME.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sr_Latn_XK.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sr_ME.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sr_XK.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/st.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/su.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sv.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sw.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sw_CD.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/sw_KE.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ta.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/te.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/tg.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/th.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ti.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/tk.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/tl.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/tn.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/to.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/tr.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/tt.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ug.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/uk.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ur.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/ur_IN.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/uz.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/uz_Arab.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/uz_Cyrl.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/vi.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/wo.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/xh.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/yi.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/yo.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/yo_BJ.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/za.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/zh.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/zh_HK.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/zh_Hant.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/zh_Hant_HK.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/regions/zu.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/af.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/ba.php | 199 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/bn.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/br.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/cv.php | 201 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/en.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/en_GB.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/en_IN.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/eo.php | 55 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/et.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/fi.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/ga.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/gd.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/hi.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/hi_Latn.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/ie.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/kk_Arab.php | 199 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/ku.php | 150 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/meta.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/my.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/nl.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/rm.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/sq.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/scripts/sw.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/af.php | 120 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ak.php | 110 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/am.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ar.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/as.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/az.php | 166 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ba.php | 446 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/be.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/bg.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/bn.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/bo.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/br.php | 164 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/bs.php | 94 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/bs_Cyrl.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ca.php | 62 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ce.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/cs.php | 70 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/cv.php | 478 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/cy.php | 84 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/da.php | 92 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/de.php | 80 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/de_CH.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/dz.php | 94 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ee.php | 142 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/el.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/en.php | 134 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/en_001.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/en_AU.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/en_CA.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/en_GB.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/en_IN.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/eo.php | 823 - symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/es.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/es_419.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/es_MX.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/es_US.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/et.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/eu.php | 60 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/fa.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ff_Adlm.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/fi.php | 58 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/fo.php | 100 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/fr.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/fr_CA.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/fy.php | 66 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ga.php | 132 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/gd.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/gl.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/gu.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ha.php | 100 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/he.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/hi.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/hi_Latn.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/hr.php | 92 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/hu.php | 134 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/hy.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ia.php | 126 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/id.php | 98 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ie.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ig.php | 98 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ii.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/is.php | 96 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/it.php | 76 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ja.php | 172 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/jv.php | 104 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ka.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/kk.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/kk_Arab.php | 446 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/km.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/kn.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ko.php | 72 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ks.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ks_Deva.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ku.php | 166 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ky.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/lb.php | 88 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ln.php | 77 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/lo.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/lt.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/lv.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/meta.php | 60 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/mi.php | 92 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/mk.php | 50 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ml.php | 158 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/mn.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/mr.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ms.php | 100 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/mt.php | 78 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/my.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ne.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/nl.php | 78 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/nn.php | 80 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/no.php | 56 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/oc.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/om.php | 100 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/or.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/os.php | 43 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/pa.php | 84 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/pl.php | 66 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ps.php | 60 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ps_PK.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/pt.php | 62 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/pt_PT.php | 108 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/qu.php | 94 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/rm.php | 857 - symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ro.php | 136 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ru.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/rw.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sa.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sc.php | 106 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sd.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sd_Deva.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/se.php | 88 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/se_FI.php | 71 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/si.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sk.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sl.php | 98 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/so.php | 94 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sq.php | 66 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sr.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sr_Cyrl_BA.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sr_Latn.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sr_Latn_BA.php | 35 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/st.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/su.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sv.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sw.php | 98 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/sw_KE.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ta.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/te.php | 66 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/tg.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/th.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ti.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/tk.php | 56 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/tn.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/to.php | 98 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/tr.php | 84 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/tt.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ug.php | 102 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/uk.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ur.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/ur_IN.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/uz.php | 56 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/uz_Cyrl.php | 56 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/vi.php | 102 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/wo.php | 96 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/xh.php | 98 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/yi.php | 74 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/yo.php | 94 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/yo_BJ.php | 37 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/za.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/zh.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/zh_Hans_SG.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/zh_Hant.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/zh_Hant_HK.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/timezones/zu.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-af.php | 410 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ak.php | 2222 ++- symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-am.php | 192 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ar.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ar_sa.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-as.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-az.php | 412 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ba.php | 3915 +++++ symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-be.php | 416 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bew.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bg.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-blo.php | 107 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bn.php | 414 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-br.php | 74 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bs.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ca.php | 445 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ca_es.php | 445 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ca_es_valencia.php | 445 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ccp.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-chr.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-cs.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-cv.php | 509 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-cy.php | 410 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-da.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-de.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-de_ch.php | 584 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-dsb.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-el.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_001.php | 425 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_au.php | 433 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_ca.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_gb.php | 455 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_in.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-es.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-es_419.php | 934 - symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-es_mx.php | 430 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-es_us.php | 422 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-et.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-eu.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fa.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fi.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fil.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fo.php | 394 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fr.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fr_ca.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-frr.php | 406 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ga.php | 500 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-gd.php | 406 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-gl.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-gu.php | 436 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ha.php | 217 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ha_ne.php | 217 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-he.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hi.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hi_latn.php | 409 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hr.php | 410 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hsb.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hu.php | 409 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hy.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ia.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-id.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ig.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-is.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-it.php | 418 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ja.php | 410 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-jv.php | 422 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ka.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kab.php | 35 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kk.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kk_arab.php | 443 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kl.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-km.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kn.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ko.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kok.php | 724 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ku.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ky.php | 410 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lb.php | 158 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lij.php | 64 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lo.php | 411 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lt.php | 410 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lv.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mi.php | 161 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mk.php | 424 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ml.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mn.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mr.php | 467 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ms.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mt.php | 158 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-my.php | 412 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ne.php | 192 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-nl.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-nn.php | 382 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-no.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-nso.php | 158 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-om.php | 3535 ++++ symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-or.php | 192 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pa.php | 422 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pa_arab.php | 420 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pcm.php | 300 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pl.php | 410 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ps.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pt.php | 458 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pt_pt.php | 420 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-qu.php | 269 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-quc.php | 158 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-rhg.php | 126 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-rm.php | 3862 +++++ symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ro.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-root.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ru.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-rw.php | 158 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sat.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sc.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sd.php | 430 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-shn.php | 3904 +++++ symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-si.php | 420 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sk.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sl.php | 441 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-slack.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-so.php | 410 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sq.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr_cyrl.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr_cyrl_ba.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr_latn.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr_latn_ba.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-strip.php | 187 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sv.php | 432 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sv_fi.php | 3941 +++++ symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sw.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sw_ke.php | 406 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-syr.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ta.php | 414 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-te.php | 424 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-tg.php | 158 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-th.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ti.php | 407 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-tk.php | 412 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-tn.php | 158 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-to.php | 405 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-tr.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ug.php | 158 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-uk.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ur.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-uz.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-vi.php | 422 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-wo.php | 158 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-xh.php | 160 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-yo.php | 412 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-yo_bj.php | 412 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-yue.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-yue_hans.php | 498 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-zh.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-zh_hant.php | 408 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-zh_hant_hk.php | 438 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-zu.php | 192 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/slack-emoji.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/data/version.txt | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/emoji/build.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Resources/emoji/composer.json | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/CountriesTest.php | 51 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/CurrenciesTest.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/Data/Bundle/Reader/BundleEntryReaderTest.php | 125 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/Data/Bundle/Writer/JsonBundleWriterTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/Data/Bundle/Writer/PhpBundleWriterTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/Data/Bundle/Writer/TextBundleWriterTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/Data/Util/LocaleScannerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/LanguagesTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/ResourceBundleTestCase.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/ScriptsTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/TimezonesTest.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/Transliterator/EmojiTransliteratorTest.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Tests/Util/GitRepositoryTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Timezones.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Transliterator/EmojiTransliterator.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Util/GitRepository.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Util/GzipStreamWrapper.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Intl/Util/Version.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Adapter/AbstractConnection.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Adapter/AbstractQuery.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Adapter/ExtLdap/Adapter.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Adapter/ExtLdap/Collection.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Adapter/ExtLdap/ConnectionOptions.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Adapter/ExtLdap/EntryManager.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Adapter/ExtLdap/Query.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Adapter/ExtLdap/UpdateOperation.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Ldap.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Security/CheckLdapCredentialsListener.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Security/LdapAuthenticator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Security/LdapUserProvider.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/AdapterTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/EntryManagerTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Tests/LdapTest.php | 77 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Tests/Security/CheckLdapCredentialsListenerTest.php | 57 symfony-6.4.41+dfsg/src/Symfony/Component/Ldap/Tests/Security/LdapUserProviderTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Key.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Lock.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Store/CombinedStore.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Store/DatabaseTableTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Store/DoctrineDbalPostgreSqlStore.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Store/DoctrineDbalStore.php | 71 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Store/ExpiringStoreTrait.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Store/FlockStore.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Store/MemcachedStore.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Store/MongoDbStore.php | 43 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Store/PdoStore.php | 87 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Store/PostgreSqlStore.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Store/RedisStore.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Store/StoreFactory.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Tests/LockFactoryTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Tests/LockTest.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Tests/Store/AbstractRedisStoreTestCase.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Tests/Store/CombinedStoreTest.php | 180 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Tests/Store/DoctrineDbalStoreTest.php | 123 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Tests/Store/FlockStoreTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Tests/Store/PdoStoreTest.php | 79 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Tests/Store/RedisProxyStoreFactoryTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Lock/Tests/Store/ZookeeperStoreFactoryTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Amazon/Tests/Transport/SesApiAsyncAwsTransportTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Amazon/Tests/Transport/SesHttpAsyncAwsTransportTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Amazon/Transport/SesApiAsyncAwsTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Amazon/Transport/SesHttpAsyncAwsTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Amazon/Transport/SesSmtpTransport.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Brevo/RemoteEvent/BrevoPayloadConverter.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Brevo/Tests/Webhook/BrevoRequestParserTest.php | 77 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Brevo/Transport/BrevoApiTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Brevo/Webhook/BrevoRequestParser.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Infobip/Tests/Transport/InfobipApiTransportTest.php | 124 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Infobip/Transport/InfobipApiTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/MailPace/Tests/Transport/MailPaceApiTransportTest.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/MailPace/Transport/MailPaceApiTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillApiTransportTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillHttpTransportTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillApiTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailchimp/Transport/MandrillHttpTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/MailerSend/Tests/Transport/MailerSendApiTransportTest.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/MailerSend/Transport/MailerSendApiTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/MailerSend/Transport/MailerSendSmtpTransport.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/MailerSend/Transport/MailerSendTransportFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailgun/RemoteEvent/MailgunPayloadConverter.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunApiTransportTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunApiTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunHttpTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailgun/Transport/MailgunSmtpTransport.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailjet/RemoteEvent/MailjetPayloadConverter.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailjet/Tests/Transport/MailjetApiTransportTest.php | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailjet/Tests/Webhook/MailjetRequestParserTest.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailjet/Transport/MailjetApiTransport.php | 58 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailjet/Webhook/MailjetRequestParser.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Mailjet/composer.json | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/OhMySmtp/README.md | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/OhMySmtp/Transport/OhMySmtpApiTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Postmark/RemoteEvent/PostmarkPayloadConverter.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Postmark/Tests/Webhook/PostmarkRequestParserTest.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Postmark/Transport/PostmarkApiTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Postmark/Webhook/PostmarkRequestParser.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Scaleway/Tests/Transport/ScalewayApiTransportTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Scaleway/Transport/ScalewayApiTransport.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Sendgrid/RemoteEvent/SendgridPayloadConverter.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/RemoteEvent/SendgridPayloadConverterTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Sendinblue/README.md | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Bridge/Sendinblue/Transport/SendinblueApiTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Command/MailerTestCommand.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Envelope.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Event/MessageEvent.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/EventListener/MessageListener.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Exception/UnsupportedSchemeException.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/SentMessage.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Test/Constraint/EmailCount.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Test/TransportFactoryTestCase.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Tests/EventListener/MessengerTransportListenerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Tests/Exception/UnsupportedSchemeExceptionTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Tests/MailerTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Tests/Transport/AbstractTransportTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Tests/Transport/FailoverTransportTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Tests/Transport/NativeTransportFactoryTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Tests/Transport/RoundRobinTransportTest.php | 25 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Tests/Transport/Smtp/SmtpTransportTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Tests/Transport/TransportsTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Tests/TransportTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/AbstractApiTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/AbstractHttpTransport.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/AbstractTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/NativeTransportFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/RoundRobinTransport.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/SendmailTransport.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/Smtp/Auth/CramMd5Authenticator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/Smtp/Auth/LoginAuthenticator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/Smtp/Auth/PlainAuthenticator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransport.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/Smtp/SmtpTransport.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/Smtp/Stream/AbstractStream.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/Smtp/Stream/SocketStream.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mailer/Transport/Transports.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/AmazonSqsReceiverTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/AmazonSqsSenderTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/AmazonSqsTransportTest.php | 84 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/ConnectionTest.php | 177 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsSender.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Amqp/CHANGELOG.md | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/AmqpExtIntegrationTest.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/AmqpReceivedStampTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/AmqpReceiverTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/AmqpSenderTest.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/AmqpStampTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/AmqpTransportFactoryTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/AmqpTransportTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php | 324 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/AmqpSender.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php | 61 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdSenderTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdTransportFactoryTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdTransportTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/ConnectionTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/Connection.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/ConnectionTest.php | 134 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineReceiverTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineSenderTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineTransportFactoryTest.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineTransportTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/PostgreSqlConnectionTest.php | 62 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php | 64 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/DoctrineReceiver.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/PostgreSqlConnection.php | 86 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php | 288 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisExtIntegrationTest.php | 59 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisReceiverTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisSenderTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisTransportTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Bridge/Redis/Transport/Connection.php | 185 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Command/AbstractFailedMessagesCommand.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php | 78 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Command/DebugCommand.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Command/FailedMessagesRemoveCommand.php | 46 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Command/FailedMessagesRetryCommand.php | 68 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Command/FailedMessagesShowCommand.php | 51 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Command/SetupTransportsCommand.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Command/StatsCommand.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Command/StopWorkersCommand.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/DataCollector/MessengerDataCollector.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/EventListener/SendFailedMessageForRetryListener.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/EventListener/SendFailedMessageToFailureTransportListener.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Exception/DelayedMessageHandlingException.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Exception/HandlerFailedException.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Exception/ValidationFailedException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/HandleTrait.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Handler/Acknowledger.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Handler/BatchHandlerInterface.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Message/RedispatchMessage.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Middleware/HandleMessageMiddleware.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Middleware/RouterContextMiddleware.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Middleware/SendMessageMiddleware.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Middleware/StackMiddleware.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Middleware/TraceableMiddleware.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Retry/MultiplierRetryStrategy.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/RoutableMessageBus.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Stamp/ErrorDetailsStamp.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Test/Middleware/MiddlewareTestCase.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Command/ConsumeMessagesCommandTest.php | 130 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Command/DebugCommandTest.php | 118 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Command/FailedMessagesRemoveCommandTest.php | 145 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Command/FailedMessagesRetryCommandTest.php | 165 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Command/FailedMessagesShowCommandTest.php | 302 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Command/SetupTransportsCommandTest.php | 61 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Command/StatsCommandTest.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Command/StopWorkersCommandTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/DataCollector/MessengerDataCollectorTest.php | 87 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/EventListener/ResetServicesListenerTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/EventListener/SendFailedMessageForRetryListenerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/EventListener/SendFailedMessageToFailureTransportListenerTest.php | 96 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/EventListener/StopWorkerOnCustomStopExceptionListenerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/EventListener/StopWorkerOnFailureLimitListenerTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/EventListener/StopWorkerOnMemoryLimitListenerTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/EventListener/StopWorkerOnMessageLimitListenerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Exception/HandlerFailedExceptionTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/FailureIntegrationTest.php | 38 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Fixtures/DummyReceiver.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Handler/AcknowledgerTest.php | 51 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Handler/HandleDescriptorTest.php | 63 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Handler/HandlerDescriptorTest.php | 65 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Handler/HandlersLocatorTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/MessageBusTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Middleware/DispatchAfterCurrentBusMiddlewareTest.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Middleware/HandleMessageMiddlewareTest.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Middleware/SendMessageMiddlewareTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Middleware/StackMiddlewareTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Middleware/TraceableMiddlewareTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Middleware/ValidationMiddlewareTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Stamp/ErrorDetailsStampTest.php | 51 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Transport/InMemory/InMemoryTransportFactoryTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Transport/InMemory/InMemoryTransportTest.php | 50 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Transport/Receiver/SingleMessageReceiverTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Transport/Sender/SendersLocatorTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Transport/Serialization/Normalizer/FlattenExceptionNormalizerTest.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Transport/Serialization/SerializerTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/Transport/Sync/SyncTransportFactoryTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Tests/WorkerTest.php | 348 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Transport/InMemory/InMemoryTransport.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Transport/Sender/SendersLocator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Transport/Serialization/Normalizer/FlattenExceptionNormalizer.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Transport/Serialization/Serializer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Transport/TransportFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Messenger/Worker.php | 63 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Address.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Crypto/DkimSigner.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Crypto/SMime.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Crypto/SMimeEncrypter.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Crypto/SMimeSigner.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/DependencyInjection/AddMimeTypeGuesserPass.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Email.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Encoder/Base64ContentEncoder.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Encoder/IdnAddressEncoder.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Encoder/QpContentEncoder.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Encoder/QpEncoder.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/FileBinaryMimeTypeGuesser.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/FileinfoMimeTypeGuesser.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Header/Headers.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Header/ParameterizedHeader.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/MessageConverter.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/MimeTypes.php | 426 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Part/DataPart.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Part/MessagePart.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Part/Multipart/FormDataPart.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Part/TextPart.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Resources/bin/update_mime_types.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Test/Constraint/EmailAddressContains.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Test/Constraint/EmailAttachmentCount.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Test/Constraint/EmailHasHeader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Test/Constraint/EmailHeaderSame.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Test/Constraint/EmailHtmlBodyContains.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Test/Constraint/EmailSubjectContains.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Test/Constraint/EmailTextBodyContains.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/AbstractMimeTypeGuesserTestCase.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/AddressTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/Crypto/DkimSignerTest.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/Crypto/SMimeEncrypterTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/Crypto/SMimeSignerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/Crypto/SMimeTestCase.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/DependencyInjection/AddMimeTypeGuesserPassTest.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/EmailTest.php | 139 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/Encoder/QpContentEncoderTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/Encoder/QpEncoderTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/Encoder/QpMimeHeaderEncoderTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/Header/UnstructuredHeaderTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/MessageTest.php | 174 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/MimeTypesTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/Part/DataPartTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Mime/Tests/RawMessageTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/AllMySms/AllMySmsTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/AmazonSns/AmazonSnsTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Bandwidth/BandwidthTransport.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Bandwidth/Tests/BandwidthTransportTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Brevo/BrevoTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Brevo/Tests/BrevoTransportTest.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Chatwork/ChatworkMessageBodyBuilder.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Chatwork/ChatworkTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Chatwork/Tests/ChatworkMessageBodyBuilderTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Chatwork/Tests/ChatworkTransportTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/ClickSend/ClickSendTransport.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/ClickSend/Tests/ClickSendTransportTest.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Clickatell/ClickatellTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Clickatell/Tests/ClickatellTransportTest.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/ContactEveryone/ContactEveryoneTransport.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/ContactEveryone/Tests/ContactEveryoneTransportTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Discord/DiscordOptions.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransport.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordAuthorEmbedObject.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordEmbed.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordFieldEmbedObject.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordFooterEmbedObject.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Discord/Tests/DiscordTransportTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Engagespot/EngagespotOptions.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Engagespot/EngagespotTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Esendex/EsendexTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Esendex/Tests/EsendexTransportTest.php | 41 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Expo/ExpoTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeChat/FakeChatEmailTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeChat/FakeChatLoggerTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeChat/FakeChatTransportFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeChat/Tests/FakeChatEmailTransportTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeChat/Tests/FakeChatLoggerTransportTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeChat/Tests/FakeChatTransportFactoryTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsEmailTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsLoggerTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsTransportFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeSms/Mailer/DummyMailer.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsEmailTransportTest.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsLoggerTransportTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsTransportFactoryTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Firebase/FirebaseTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Firebase/FirebaseTransportFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FortySixElks/FortySixElksTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FortySixElks/Tests/FortySixElksTransportTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/FreeMobile/FreeMobileTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/GatewayApi/GatewayApiTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/GatewayApi/Tests/GatewayApiTransportTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Gitter/GitterTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/GoIp/GoIpTransport.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/GoIp/GoIpTransportFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/GoIp/Tests/GoIpTransportTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/GoogleChat/GoogleChatTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/GoogleChat/Tests/GoogleChatTransportTest.php | 65 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Infobip/InfobipTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Iqsms/IqsmsTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Isendpro/IsendproTransport.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Isendpro/Tests/IsendproTransportTest.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/KazInfoTeh/KazInfoTehTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/LightSms/LightSmsTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/LineNotify/LineNotifyTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/LineNotify/Tests/LineNotifyTransportTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/LinkedIn/LinkedInTransport.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/LinkedIn/Share/LifecycleStateShare.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/LinkedIn/Share/ShareContentShare.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/LinkedIn/Share/ShareMediaShare.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/LinkedIn/Share/VisibilityShare.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/LinkedIn/Tests/LinkedInTransportTest.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Mailjet/MailjetTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Mastodon/MastodonTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Mattermost/MattermostTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Mercure/MercureTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Mercure/MercureTransportFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Mercure/Tests/MercureTransportFactoryTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Mercure/Tests/MercureTransportTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/MessageBird/MessageBirdTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/MessageMedia/MessageMediaTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/MessageMedia/Tests/MessageMediaTransportTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/Action/Input/MultiChoiceInput.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/Action/OpenUriAction.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/MicrosoftTeamsOptions.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/MicrosoftTeamsTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/Tests/MicrosoftTeamsOptionsTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/Tests/MicrosoftTeamsTransportTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Mobyt/MobytOptions.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Mobyt/MobytTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Novu/NovuTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Novu/Tests/NovuTransportTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Ntfy/NtfyTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Ntfy/Tests/NtfyTransportTest.php | 43 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Octopush/OctopushTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/OneSignal/OneSignalTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/OneSignal/Tests/OneSignalTransportTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/OrangeSms/OrangeSmsTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/OvhCloud/OvhCloudTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/PagerDuty/PagerDutyTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Plivo/PlivoTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Plivo/Tests/PlivoTransportTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Pushover/PushoverOptions.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Pushover/PushoverTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Pushover/Tests/PushoverTransportTest.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Redlink/RedlinkOptions.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Redlink/RedlinkTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/RingCentral/RingCentralTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/RingCentral/Tests/RingCentralTransportTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/RocketChat/RocketChatTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Sendberry/SendberryTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransport.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Sendinblue/Tests/SendinblueTransportTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/SimpleTextin/SimpleTextinTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/SimpleTextin/Tests/SimpleTextinTransportTest.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Sinch/SinchTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Slack/Block/SlackContextBlock.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Slack/Block/SlackHeaderBlock.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Slack/SlackOptions.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php | 128 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Sms77/Sms77Transport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/SmsBiuras/SmsBiurasTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/SmsBiuras/Tests/SmsBiurasTransportTest.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/SmsFactor/SmsFactorTransport.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Smsapi/SmsapiTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Smsc/SmscTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Smsmode/SmsmodeTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Smsmode/Tests/SmsmodeTransportTest.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/SpotHit/SpotHitTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/SpotHit/Tests/SpotHitTransportTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransportFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Telegram/Tests/TelegramTransportTest.php | 43 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Telnyx/TelnyxTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Termii/TermiiTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Termii/Tests/TermiiTransportTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/TurboSms/Tests/TurboSmsTransportTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/TurboSms/TurboSmsTransport.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Twilio/Tests/TwilioTransportTest.php | 25 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Twilio/Tests/Webhook/TwilioRequestParserTest.php | 83 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Twilio/TwilioTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Twilio/Webhook/TwilioRequestParser.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Twitter/TwitterTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Vonage/VonageTransport.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Vonage/Webhook/VonageRequestParser.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Yunpian/YunpianTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Zendesk/ZendeskTransport.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Bridge/Zulip/ZulipTransport.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Channel/AbstractChannel.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Channel/ChannelPolicy.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Channel/EmailChannel.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/EventListener/SendFailedMessageToNotifierListener.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Exception/FlashMessageImportanceMapperException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Exception/IncompleteDsnException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Exception/MissingRequiredOptionException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Exception/MultipleExclusiveOptionsUsedException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Exception/UnsupportedMessageTypeException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Exception/UnsupportedSchemeException.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Message/EmailMessage.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Message/SmsMessage.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Notification/Notification.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Notifier.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Recipient/Recipient.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Test/Constraint/NotificationCount.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Test/Constraint/NotificationSubjectContains.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Test/Constraint/NotificationTransportIsEqual.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Test/TransportTestCase.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Tests/Channel/BrowserChannelTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Tests/ChatterTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Tests/Event/FailedMessageEventTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Tests/Exception/UnsupportedSchemeExceptionTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Tests/TexterTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Tests/Transport/DsnTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Tests/Transport/FailoverTransportTest.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Tests/Transport/NullTransportFactoryTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Tests/Transport/TransportsTest.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Transport/AbstractTransport.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Transport/RoundRobinTransport.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/Transport/Transports.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Notifier/composer.json | 2 symfony-6.4.41+dfsg/src/Symfony/Component/OptionsResolver/Debug/OptionsResolverIntrospector.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/OptionsResolver/OptionsResolver.php | 67 symfony-6.4.41+dfsg/src/Symfony/Component/OptionsResolver/Tests/Debug/OptionsResolverIntrospectorTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/OptionsResolver/Tests/OptionsResolverTest.php | 391 symfony-6.4.41+dfsg/src/Symfony/Component/PasswordHasher/Command/UserPasswordHashCommand.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/PasswordHasher/Hasher/MessageDigestPasswordHasher.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/PasswordHasher/Hasher/PasswordHasherFactory.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/PasswordHasher/Hasher/Pbkdf2PasswordHasher.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/PasswordHasher/Tests/Command/UserPasswordHashCommandTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/PasswordHasher/Tests/Hasher/MigratingPasswordHasherTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/PasswordHasher/Tests/Hasher/NativePasswordHasherTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/PasswordHasher/Tests/Hasher/PasswordHasherFactoryTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/PasswordHasher/Tests/Hasher/UserPasswordHasherTest.php | 63 symfony-6.4.41+dfsg/src/Symfony/Component/Process/Exception/ProcessFailedException.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Process/Exception/ProcessSignaledException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Process/Exception/ProcessTimedOutException.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Process/ExecutableFinder.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Process/InputStream.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Process/PhpProcess.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Process/PhpSubprocess.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Process/Pipes/AbstractPipes.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Process/Pipes/UnixPipes.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Process/Pipes/WindowsPipes.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Process/Process.php | 76 symfony-6.4.41+dfsg/src/Symfony/Component/Process/ProcessUtils.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Process/Tests/ExecutableFinderTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Process/Tests/PhpProcessTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Process/Tests/PipeStdinInStdoutStdErrStreamSelect.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Process/Tests/ProcessTest.php | 151 symfony-6.4.41+dfsg/src/Symfony/Component/Process/Tests/SignalListener.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyAccess/Exception/UnexpectedTypeException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyAccess/PropertyAccessor.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyAccess/PropertyAccessorBuilder.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyAccess/PropertyPath.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyAccess/PropertyPathBuilder.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyAccess/Tests/Fixtures/TestIgnoreVoidAccessor.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorBuilderTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorCollectionTestCase.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php | 79 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyAccess/composer.json | 2 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Extractor/PhpDocExtractor.php | 88 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Extractor/PhpStanExtractor.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Extractor/ReflectionExtractor.php | 96 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/PhpStan/NameScope.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/PhpStan/NameScopeFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Extractor/PhpDocExtractorTest.php | 114 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Extractor/PhpStanExtractorTest.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php | 101 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Extractor/SerializerExtractorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Fixtures/ConstructorDummyWithVarTagsDocBlock.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Fixtures/Dummy.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Fixtures/DummyWithHasser.php | 38 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Fixtures/Extractor/ParentWithPromotedPropertyDocBlock.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Fixtures/Extractor/ParentWithSelfDocBlock.php | 109 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Fixtures/PseudoTypeDummy.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Fixtures/PseudoTypesDummy.php | 33 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Fixtures/UnderscoreDummy.php | 31 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Tests/Fixtures/VoidNeverReturnTypeDummy.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Type.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Util/PhpDocTypeHelper.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/Util/PhpStanTypeHelper.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/PropertyInfo/composer.json | 2 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/CompoundLimiter.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Exception/ReserveNotSupportedException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Policy/FixedWindowLimiter.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Policy/SlidingWindow.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Policy/SlidingWindowLimiter.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Policy/TokenBucket.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Policy/TokenBucketLimiter.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Policy/Window.php | 39 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/RateLimiterFactory.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Tests/LimiterTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Tests/Policy/FixedWindowLimiterTest.php | 165 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Tests/Policy/SlidingWindowLimiterTest.php | 31 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Tests/Policy/SlidingWindowTest.php | 37 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Tests/Policy/TokenBucketLimiterTest.php | 61 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Tests/Policy/TokenBucketTest.php | 55 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Tests/Policy/WindowTest.php | 55 symfony-6.4.41+dfsg/src/Symfony/Component/RateLimiter/Tests/Storage/CacheStorageTest.php | 67 symfony-6.4.41+dfsg/src/Symfony/Component/RemoteEvent/Messenger/ConsumeRemoteEventHandler.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Attribute/Route.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/CompiledRoute.php | 25 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Exception/MissingMandatoryParametersException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Exception/RouteCircularReferenceException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Generator/CompiledUrlGenerator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Generator/Dumper/CompiledUrlGeneratorDumper.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Generator/UrlGenerator.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Loader/AttributeClassLoader.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Loader/AttributeDirectoryLoader.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Loader/AttributeFileLoader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Loader/Configurator/CollectionConfigurator.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Loader/Configurator/ImportConfigurator.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Loader/Configurator/Traits/HostTrait.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Loader/Configurator/Traits/LocalizedRouteTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Loader/Configurator/Traits/PrefixTrait.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Loader/ObjectLoader.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Loader/Psr4DirectoryLoader.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Loader/XmlFileLoader.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Loader/YamlFileLoader.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php | 43 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherTrait.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Matcher/ExpressionLanguageProvider.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Matcher/RedirectableUrlMatcher.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Matcher/TraceableUrlMatcher.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Matcher/UrlMatcher.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Requirement/EnumRequirement.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Route.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/RouteCollection.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/RouteCompiler.php | 56 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Router.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/CompiledRouteTest.php | 51 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Generator/UrlGeneratorTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Loader/AttributeClassLoaderTestCase.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Loader/ClosureLoaderTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Loader/Configurator/Traits/PrefixTraitTest.php | 53 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Loader/ObjectLoaderTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Loader/PhpFileLoaderTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Loader/Psr4DirectoryLoaderTest.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Loader/XmlFileLoaderTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Loader/YamlFileLoaderTest.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Matcher/CompiledRedirectableUrlMatcherTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Matcher/CompiledUrlMatcherTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Matcher/Dumper/StaticPrefixCollectionTest.php | 110 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Matcher/ExpressionLanguageProviderTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Matcher/RedirectableUrlMatcherTest.php | 41 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/Matcher/UrlMatcherTest.php | 63 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/RouteCompilerTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/RouteTest.php | 69 symfony-6.4.41+dfsg/src/Symfony/Component/Routing/Tests/RouterTest.php | 94 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/GenericRuntime.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Internal/BasicErrorHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Internal/ComposerPlugin.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Internal/SymfonyErrorHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Resolver/DebugClosureResolver.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Runner/ClosureRunner.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/SymfonyRuntime.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/application.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/autoload.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/command.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/command2.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/command_list.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_debug_exists_0_to_1.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_debug_exists_1_to_0.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_env_exists.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_no_debug.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/generic-request.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/hello.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/kernel.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/kernel_register_argc_argv.phpt | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/request.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Runtime/Tests/phpt/runtime-options.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Command/DebugCommand.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/DependencyInjection/AddScheduleMessengerPass.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Generator/Checkpoint.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Generator/MessageGenerator.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Messenger/SchedulerTransport.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Messenger/SchedulerTransportFactory.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Schedule.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Tests/Command/DebugCommandTest.php | 72 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Tests/DependencyInjection/AddScheduleMessengerPassTest.php | 105 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Tests/EventListener/DispatchSchedulerEventListenerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Tests/Generator/CheckpointTest.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Tests/Generator/MessageGeneratorTest.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Tests/Messenger/SchedulerTransportFactoryTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Tests/Messenger/SchedulerTransportTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Tests/Trigger/AbstractDecoratedTriggerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Tests/Trigger/CallbackMessageProviderTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Tests/Trigger/CallbackTriggerTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Tests/Trigger/ExcludeTimeTriggerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Tests/Trigger/JitterTriggerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Trigger/CronExpressionTrigger.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Trigger/JitterTrigger.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Trigger/PeriodicalTrigger.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/Trigger/TriggerInterface.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Scheduler/composer.json | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Authentication/Token/AbstractToken.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Authentication/Token/PreAuthenticatedToken.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Authentication/Token/RememberMeToken.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Authentication/Token/SwitchUserToken.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Authentication/Token/UsernamePasswordToken.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Authorization/AccessDecisionManager.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Authorization/AuthorizationChecker.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Authorization/ExpressionLanguage.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Authorization/ExpressionLanguageProvider.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Exception/AccountStatusException.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Exception/CustomUserMessageAuthenticationException.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Exception/TooManyLoginAttemptsAuthenticationException.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Exception/UserNotFoundException.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.af.xlf | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.az.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.da.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.es.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.et.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.fi.xlf | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.gl.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.hy.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.lb.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.lt.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.nb.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.no.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.sv.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Resources/translations/security.uz.xlf | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Signature/SignatureHasher.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Test/AccessDecisionStrategyTestCase.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/Authentication/Token/RememberMeTokenTest.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/Authentication/Token/Storage/UsageTrackingTokenStorageTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/Authorization/AccessDecisionManagerTest.php | 21 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/Authorization/TraceableAccessDecisionManagerTest.php | 37 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/Authorization/Voter/AuthenticatedVoterTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/Authorization/Voter/ExpressionVoterTest.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/Authorization/Voter/VoterTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/Resources/TranslationFilesTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/Role/LegacyRoleTest.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/User/ChainUserCheckerTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php | 49 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/User/InMemoryUserCheckerTest.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/User/InMemoryUserTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/User/OidcUserTest.php | 98 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Tests/Validator/Constraints/UserPasswordTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/User/ChainUserProvider.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/User/InMemoryUserProvider.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/User/MissingUserProvider.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/User/OidcUser.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/User/UserInterface.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Core/Validator/Constraints/UserPasswordValidator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Csrf/CsrfTokenManager.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Csrf/Tests/CsrfTokenManagerTest.php | 323 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/AccessToken/FormEncodedBodyExtractor.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/AccessToken/HeaderAccessTokenExtractor.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/AccessToken/Oidc/OidcTokenHandler.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/AccessToken/Oidc/OidcUserInfoTokenHandler.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authentication/AuthenticatorManager.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authentication/DefaultAuthenticationFailureHandler.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authentication/DefaultAuthenticationSuccessHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authenticator/AbstractLoginFormAuthenticator.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authenticator/AccessTokenAuthenticator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authenticator/Debug/TraceableAuthenticator.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authenticator/FormLoginAuthenticator.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authenticator/HttpBasicAuthenticator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authenticator/JsonLoginAuthenticator.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authenticator/Passport/Badge/UserBadge.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authenticator/Passport/Passport.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authenticator/RemoteUserAuthenticator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Authenticator/X509Authenticator.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Controller/UserValueResolver.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/EventListener/CheckCredentialsListener.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/EventListener/ClearSiteDataLogoutListener.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/EventListener/IsGrantedAttributeListener.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/EventListener/SessionStrategyListener.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Firewall.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Firewall/AccessListener.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Firewall/ContextListener.php | 37 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Firewall/ExceptionListener.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Firewall/SwitchUserListener.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/FirewallMap.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/FirewallMapInterface.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/HttpUtils.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/LoginLink/LoginLinkHandler.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/LoginLink/LoginLinkNotification.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Logout/LogoutUrlGenerator.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/RememberMe/AbstractRememberMeHandler.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/RememberMe/PersistentRememberMeHandler.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Session/SessionAuthenticationStrategy.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/AccessMapTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/AccessToken/Oidc/OidcTokenHandlerTest.php | 47 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/AccessToken/Oidc/OidcUserInfoTokenHandlerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authentication/AuthenticatorManagerTest.php | 152 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authentication/DefaultAuthenticationFailureHandlerTest.php | 191 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authentication/DefaultAuthenticationSuccessHandlerTest.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authenticator/AbstractAuthenticatorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authenticator/AccessTokenAuthenticatorTest.php | 59 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authenticator/Debug/TraceableAuthenticatorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authenticator/FormLoginAuthenticatorTest.php | 43 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authenticator/HttpBasicAuthenticatorTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authenticator/JsonLoginAuthenticatorTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authenticator/LoginLinkAuthenticatorTest.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authenticator/Passport/Badge/UserBadgeTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authenticator/RememberMeAuthenticatorTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Authenticator/X509AuthenticatorTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Controller/UserValueResolverTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/EventListener/CheckCredentialsListenerTest.php | 68 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/EventListener/CheckRememberMeConditionsListenerTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/EventListener/CsrfProtectionListenerTest.php | 35 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/EventListener/IsGrantedAttributeListenerTest.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/EventListener/LoginThrottlingListenerTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/EventListener/PasswordMigratingListenerTest.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/EventListener/RememberMeListenerTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/EventListener/SessionLogoutListenerTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/EventListener/SessionStrategyListenerTest.php | 43 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/EventListener/UserCheckerListenerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/EventListener/UserProviderListenerTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Firewall/AccessListenerTest.php | 37 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Firewall/ChannelListenerTest.php | 99 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Firewall/ContextListenerTest.php | 117 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Firewall/ExceptionListenerTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Firewall/LogoutListenerTest.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Firewall/SwitchUserListenerTest.php | 110 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/FirewallMapTest.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/FirewallTest.php | 83 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Fixtures/CustomUser.php | 59 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Fixtures/LazyDoctrinePersistenceUser.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Fixtures/LazyProxyManagerUser.php | 53 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Fixtures/LazyVarExporterUser.php | 53 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/HttpUtilsTest.php | 128 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/LoginLink/LoginLinkHandlerTest.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/RememberMe/PersistentRememberMeHandlerTest.php | 108 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/RememberMe/ResponseListenerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Security/Http/Tests/Session/SessionAuthenticationStrategyTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Semaphore/Exception/SemaphoreAcquiringException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Semaphore/Exception/SemaphoreExpiredException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Semaphore/Exception/SemaphoreReleasingException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Semaphore/Semaphore.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Semaphore/Store/RedisStore.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Semaphore/Store/StoreFactory.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Semaphore/Tests/SemaphoreFactoryTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Semaphore/Tests/SemaphoreTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Semaphore/Tests/Store/RelayStoreTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Attribute/Context.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Attribute/DiscriminatorMap.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Attribute/Groups.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Attribute/MaxDepth.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Attribute/SerializedName.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Attribute/SerializedPath.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Command/DebugCommand.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Context/Encoder/CsvEncoderContextBuilder.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Context/Encoder/JsonEncoderContextBuilder.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Context/Encoder/XmlEncoderContextBuilder.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Context/Normalizer/AbstractNormalizerContextBuilder.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Context/Normalizer/AbstractObjectNormalizerContextBuilder.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Context/Normalizer/DateTimeNormalizerContextBuilder.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Context/Normalizer/UidNormalizerContextBuilder.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Context/Normalizer/UnwrappingDenormalizerContextBuilder.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/DataCollector/SerializerDataCollector.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Debug/TraceableEncoder.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Debug/TraceableNormalizer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Debug/TraceableSerializer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Encoder/ChainDecoder.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Encoder/ChainEncoder.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Encoder/JsonDecode.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Exception/ExtraAttributesException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Mapping/Factory/ClassMetadataFactoryCompiler.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Mapping/Factory/ClassResolverTrait.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Mapping/Factory/CompiledClassMetadataFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Mapping/Loader/AccessorCollisionResolverTrait.php | 101 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Mapping/Loader/AttributeLoader.php | 45 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Mapping/Loader/FileLoader.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Mapping/Loader/LoaderChain.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Mapping/Loader/XmlFileLoader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Mapping/Loader/YamlFileLoader.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/NameConverter/MetadataAwareNameConverter.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php | 72 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php | 141 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/ArrayDenormalizer.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/BackedEnumNormalizer.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/ConstraintViolationListNormalizer.php | 52 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/DataUriNormalizer.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/DateIntervalNormalizer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/DateTimeNormalizer.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php | 50 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/JsonSerializableNormalizer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/MimeMessageNormalizer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php | 106 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/ProblemNormalizer.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/PropertyNormalizer.php | 33 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/TranslatableNormalizer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Normalizer/UidNormalizer.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Serializer.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/SerializerInterface.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Annotation/ContextTest.php | 112 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/CacheWarmer/CompiledClassMetadataCacheWarmerTest.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Command/DebugCommandTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Context/ContextBuilderTraitTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Context/Normalizer/AbstractNormalizerContextBuilderTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Context/Normalizer/AbstractObjectNormalizerContextBuilderTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Debug/TraceableEncoderTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Debug/TraceableNormalizerTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Debug/TraceableSerializerTest.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/DeserializeNestedArrayOfObjectsTest.php | 86 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Dummy/DummyClassTwo.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Encoder/ChainDecoderTest.php | 111 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Encoder/ChainEncoderTest.php | 123 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php | 506 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php | 322 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Encoder/YamlEncoderTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/AsymmetricVisibilityDummy.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/Attributes/AccessorishGetters.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/Attributes/GroupDummyWithIsPrefixedProperty.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/BookDummy.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/ChildClassDummy.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/DummyMessageInterface.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/DummyMessageNumberFour.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/DummyWithObjectConstructor.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/DummyWithUnion.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/MagicSetDummy.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/ParentClassDummy.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/ScalarNormalizer.php | 42 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/SpecialBookDummy.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/StdClassNormalizer.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Fixtures/VoidNeverReturnTypeDummy.php | 45 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Mapping/Factory/CacheMetadataFactoryTest.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Mapping/Factory/CompiledClassMetadataFactoryTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Mapping/Loader/AttributeLoaderTestCase.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Mapping/Loader/AttributeLoaderWithAttributesTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/NameConverter/MetadataAwareNameConverterTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractNormalizerTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php | 118 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/ArrayDenormalizerTest.php | 37 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/BackedEnumNormalizerTest.php | 29 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/ConstraintViolationListNormalizerTest.php | 96 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/DateTimeNormalizerTest.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/Features/CallbacksTestTrait.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/Features/CircularReferenceTestTrait.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/Features/ConstructorArgumentsTestTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/Features/SkipUninitializedValuesTestTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/FormErrorNormalizerTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php | 176 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/JsonSerializableNormalizerTest.php | 47 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/MapDenormalizationTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php | 872 + symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/PropertyNormalizerTest.php | 150 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/TranslatableNormalizerTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/UidNormalizerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/UnwrappinDenormalizerTest.php | 84 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/Normalizer/UnwrappingDenormalizerTest.php | 82 symfony-6.4.41+dfsg/src/Symfony/Component/Serializer/Tests/SerializerTest.php | 285 symfony-6.4.41+dfsg/src/Symfony/Component/Stopwatch/Section.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Stopwatch/Stopwatch.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Stopwatch/StopwatchEvent.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Stopwatch/StopwatchPeriod.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/String/AbstractString.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/String/AbstractUnicodeString.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/String/ByteString.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/String/Inflector/EnglishInflector.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/String/LazyString.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/String/Resources/WcswidthDataGenerator.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/String/Resources/bin/update-data.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/String/Slugger/AsciiSlugger.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/String/Tests/AbstractAsciiTestCase.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/String/Tests/AbstractUnicodeTestCase.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/String/Tests/Inflector/EnglishInflectorTest.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/String/Tests/LazyStringTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/String/Tests/Slugger/AsciiSluggerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/String/Tests/UnicodeStringTest.php | 50 symfony-6.4.41+dfsg/src/Symfony/Component/String/UnicodeString.php | 38 symfony-6.4.41+dfsg/src/Symfony/Component/String/composer.json | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Templating/DelegatingEngine.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Templating/Helper/SlotsHelper.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Templating/Loader/CacheLoader.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Templating/PhpEngine.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Templating/TemplateReference.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Templating/Tests/Loader/CacheLoaderTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Templating/Tests/PhpEngineTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Crowdin/CrowdinProvider.php | 54 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Crowdin/CrowdinProviderFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Crowdin/Tests/CrowdinProviderFactoryTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Crowdin/Tests/CrowdinProviderTest.php | 628 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Loco/LocoProvider.php | 56 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Loco/Tests/LocoProviderFactoryTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Loco/Tests/LocoProviderFactoryWithoutTranslatorBagTest.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Loco/Tests/LocoProviderTest.php | 330 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Loco/Tests/LocoProviderWithoutTranslatorBagTest.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Lokalise/LokaliseProvider.php | 156 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Lokalise/Tests/LokaliseProviderFactoryTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Lokalise/Tests/LokaliseProviderTest.php | 378 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Phrase/PhraseProvider.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Phrase/Tests/PhraseProviderFactoryTest.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Phrase/Tests/PhraseProviderTest.php | 183 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Phrase/composer.json | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Bridge/Phrase/phpunit.xml.dist | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Catalogue/AbstractOperation.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Command/TranslationPullCommand.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Command/TranslationPushCommand.php | 40 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Command/XliffLintCommand.php | 50 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/DataCollectorTranslator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/DependencyInjection/LoggingTranslatorPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/DependencyInjection/TranslationExtractorPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/DependencyInjection/TranslatorPathsPass.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Dumper/FileDumper.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Dumper/PoFileDumper.php | 47 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Dumper/XliffFileDumper.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Exception/IncompleteDsnException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Exception/MissingRequiredOptionException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Exception/UnsupportedSchemeException.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Extractor/AbstractFileExtractor.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Extractor/PhpAstExtractor.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Extractor/PhpExtractor.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Extractor/PhpStringTokenParser.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Extractor/Visitor/ConstraintVisitor.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Formatter/IntlFormatter.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Loader/CsvFileLoader.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Loader/FileLoader.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Loader/IcuDatFileLoader.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Loader/IcuResFileLoader.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Loader/QtFileLoader.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Loader/XliffFileLoader.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Loader/YamlFileLoader.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/LoggingTranslator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/MessageCatalogue.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Provider/TranslationProviderCollection.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/PseudoLocalizationTranslator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Resources/bin/translation-status.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Resources/data/parents.json | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Test/ProviderTestCase.php | 11 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Catalogue/MessageCatalogueTest.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Command/TranslationProviderTestCase.php | 60 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Command/TranslationPullCommandTest.php | 700 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Command/TranslationPushCommandTest.php | 50 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Command/XliffLintCommandTest.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/DataCollector/TranslationDataCollectorTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Exception/ProviderExceptionTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Exception/UnsupportedSchemeExceptionTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Extractor/PhpAstExtractorTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Extractor/PhpExtractorTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Fixtures/resources.csv | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Formatter/IntlFormatterTest.php | 34 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Loader/QtFileLoaderTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Loader/XliffFileLoaderTest.php | 66 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/MessageCatalogueTest.php | 28 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Provider/DsnTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Provider/TranslationProviderCollectionTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/PseudoLocalizationTranslatorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/TranslatorBagTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/TranslatorCacheTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/TranslatorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Util/XliffUtilsTest.php | 123 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Tests/Writer/TranslationWriterTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/TranslatableMessage.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Translator.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Util/XliffUtils.php | 68 symfony-6.4.41+dfsg/src/Symfony/Component/Translation/Writer/TranslationWriter.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/AbstractUid.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/BinaryUtil.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/Command/GenerateUlidCommand.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/Command/GenerateUuidCommand.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/Command/InspectUlidCommand.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/Command/InspectUuidCommand.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/Factory/UuidFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/Tests/Command/InspectUlidCommandTest.php | 27 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/Tests/Command/InspectUuidCommandTest.php | 302 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/Tests/UlidTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/Tests/UuidTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/Ulid.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/Uuid.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/UuidV1.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/UuidV6.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Uid/UuidV7.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Command/DebugCommand.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraint.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/ConstraintValidator.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/ConstraintViolationList.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/AbstractComparison.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/AbstractComparisonValidator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Bic.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/BicValidator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/CallbackValidator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/CardScheme.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Cascade.php | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/ChoiceValidator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Cidr.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Collection.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/CollectionValidator.php | 1 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Composite.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Compound.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Count.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Country.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/CssColor.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/DateTimeValidator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/DisableAutoMapping.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/DivisibleByValidator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Email.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/EmailValidator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/EnableAutoMapping.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Expression.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/ExpressionLanguageProvider.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/ExpressionLanguageSyntaxValidator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/File.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Hostname.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Image.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/ImageValidator.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Ip.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Isbn.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Issn.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Language.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Length.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Locale.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/LocaleValidator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Luhn.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/NoSuspiciousCharacters.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/NotBlank.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/NotCompromisedPassword.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/NotCompromisedPasswordValidator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/PasswordStrength.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Range.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/RangeValidator.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Regex.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/RegexValidator.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Timezone.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Traverse.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Ulid.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Unique.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/UniqueValidator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Url.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/UrlValidator.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/Uuid.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/When.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/WhenValidator.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Constraints/ZeroComparisonConstraintTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/ContainerConstraintValidatorFactory.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/DataCollector/ValidatorDataCollector.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/DependencyInjection/AddAutoMappingConfigurationPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Exception/UnexpectedTypeException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Mapping/ClassMetadata.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Mapping/Factory/LazyLoadingMetadataFactory.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Mapping/GenericMetadata.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Mapping/GetterMetadata.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Mapping/Loader/AbstractLoader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Mapping/Loader/AnnotationLoader.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Mapping/Loader/FileLoader.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Mapping/Loader/LoaderChain.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Mapping/Loader/StaticMethodLoader.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Mapping/Loader/YamlFileLoader.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Mapping/MemberMetadata.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Mapping/PropertyMetadata.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/bin/sync-iban-formats.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.af.xlf | 138 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.ar.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.az.xlf | 116 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.be.xlf | 172 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.bg.xlf | 102 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.bs.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.ca.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.cs.xlf | 104 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.cy.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.da.xlf | 116 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.de.xlf | 88 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.el.xlf | 192 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.en.xlf | 88 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.es.xlf | 94 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.et.xlf | 104 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.eu.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.fa.xlf | 92 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.fi.xlf | 114 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.fr.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.gl.xlf | 130 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.he.xlf | 104 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.hr.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.hu.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.hy.xlf | 138 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.id.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.it.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.ja.xlf | 234 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.lb.xlf | 114 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.lt.xlf | 98 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.lv.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.mk.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.mn.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.my.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.nb.xlf | 132 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.nl.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.nn.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.no.xlf | 132 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.pl.xlf | 92 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.pt.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.pt_BR.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.ro.xlf | 162 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.ru.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.sk.xlf | 92 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.sl.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.sq.xlf | 126 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.sr_Cyrl.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.sr_Latn.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.sv.xlf | 104 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.th.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.tl.xlf | 92 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.tr.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.uk.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.ur.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.uz.xlf | 118 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.vi.xlf | 90 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.zh_CN.xlf | 214 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Resources/translations/validators.zh_TW.xlf | 112 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php | 81 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Command/DebugCommandTest.php | 263 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/ConstraintViolationListTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/ConstraintViolationTest.php | 30 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/AbstractComparisonValidatorTestCase.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/AllTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/AtLeastOneOfTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/AtLeastOneOfValidatorTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/BicValidatorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/CallbackValidatorTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/CardSchemeTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/CascadeTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/ChoiceValidatorTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/CidrTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/CollectionTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/CountryValidatorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/CssColorTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/CurrencyValidatorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/DisableAutoMappingTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/DivisibleByValidatorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/EmailValidatorTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/EnableAutoMappingTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/ExpressionTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/ExpressionValidatorTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/HostnameValidatorTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/ImageValidatorTest.php | 77 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/IpValidatorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/IsbnValidatorTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/LanguageValidatorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/LengthTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/LessThanOrEqualValidatorTest.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/LocaleValidatorTest.php | 15 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/NotCompromisedPasswordValidatorTest.php | 50 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/RegexTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/RegexValidatorTest.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/SequentiallyTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/TimezoneValidatorTest.php | 13 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/TypeTest.php | 9 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/UniqueValidatorTest.php | 26 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/UrlValidatorTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/ValidTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Constraints/WhenTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/DataCollector/ValidatorDataCollectorTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Fixtures/EntityWithHook.php | 31 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Mapping/Factory/LazyLoadingMetadataFactoryTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Mapping/Loader/FilesLoaderTest.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Mapping/Loader/LoaderChainTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Mapping/Loader/PropertyInfoLoaderTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Mapping/PropertyMetadataTest.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Resources/TranslationFilesTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Validator/RecursiveValidatorTest.php | 176 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/Validator/TraceableValidatorTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Tests/ValidatorBuilderTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/Validator/ValidatorInterface.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Validator/ValidatorBuilder.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Caster/ClassStub.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Caster/DateCaster.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Caster/ExceptionCaster.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Caster/FFICaster.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Caster/PgSqlCaster.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Caster/SplCaster.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Caster/SymfonyCaster.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Cloner/Data.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Cloner/Internal/NoDefault.php | 25 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Cloner/Stub.php | 41 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Command/Descriptor/CliDescriptor.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Command/Descriptor/HtmlDescriptor.php | 56 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Command/ServerDumpCommand.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Dumper/AbstractDumper.php | 45 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Dumper/CliDumper.php | 10 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Dumper/ContextProvider/CliContextProvider.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Dumper/ContextProvider/RequestContextProvider.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Dumper/ContextProvider/SourceContextProvider.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Dumper/HtmlDumper.php | 1160 - symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Resources/functions/dump.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Server/DumpServer.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/CasterTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/DateCasterTest.php | 238 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/DoctrineCasterTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/ExceptionCasterTest.php | 354 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/FFICasterTest.php | 470 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/FiberCasterTest.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/GmpCasterTest.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/IntlCasterTest.php | 242 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/MemcachedCasterTest.php | 72 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/MysqliCasterTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/PdoCasterTest.php | 70 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/RdKafkaCasterTest.php | 190 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/RedisCasterTest.php | 50 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/ReflectionCasterTest.php | 856 - symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php | 208 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/StubCasterTest.php | 126 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/SymfonyCasterTest.php | 64 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Caster/XmlReaderCasterTest.php | 316 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Cloner/VarClonerTest.php | 1020 - symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Command/Descriptor/CliDescriptorTest.php | 69 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Command/Descriptor/HtmlDescriptorTest.php | 164 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Command/ServerDumpCommandTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Dumper/CliDumperTest.php | 350 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Dumper/ContextualizedDumperTest.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Dumper/FunctionsTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Dumper/HtmlDumperTest.php | 133 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Dumper/ServerDumperTest.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Server/ConnectionTest.php | 23 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/Tests/Test/VarDumperTestTraitTest.php | 35 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/VarDumper.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarDumper/composer.json | 1 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Exception/ClassNotFoundException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Exception/NotInstantiableTypeException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Internal/Exporter.php | 63 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Internal/Hydrator.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Internal/LazyObjectState.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/LazyGhostTrait.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/LazyProxyTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/ProxyHelper.php | 108 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/Fixtures/GoodNight.php | 33 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/Fixtures/LazyProxy/HookedWithDefaultValue.php | 16 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/Fixtures/MyWakeup.php | 33 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/Fixtures/Php74Serializable.php | 47 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/Fixtures/SleepUninitialized.php | 31 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/Fixtures/__serialize-but-no-__unserialize.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/Fixtures/php74-serializable.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/Fixtures/var-on-sleep.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/Fixtures/wakeup-refl.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/Fixtures/wakeup.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/HydratorTest.php | 58 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/LazyGhostTraitTest.php | 90 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/LazyProxyTraitTest.php | 78 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/ProxyHelperTest.php | 204 symfony-6.4.41+dfsg/src/Symfony/Component/VarExporter/Tests/VarExporterTest.php | 164 symfony-6.4.41+dfsg/src/Symfony/Component/WebLink/HttpHeaderSerializer.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/WebLink/Link.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/WebLink/Tests/EventListener/AddLinkHeaderListenerTest.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Webhook/Client/RequestParser.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Webhook/Test/AbstractRequestParserTestCase.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Attribute/BuildEventNameTrait.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/DataCollector/WorkflowDataCollector.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Debug/TraceableWorkflow.php | 5 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Definition.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/DependencyInjection/WorkflowDebugPass.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/DependencyInjection/WorkflowGuardListenerPass.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Dumper/GraphvizDumper.php | 48 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Dumper/MermaidDumper.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Dumper/PlantUmlDumper.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Dumper/StateMachineGraphvizDumper.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/EventListener/AuditTrailListener.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/EventListener/ExpressionLanguage.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Exception/NotEnabledTransitionException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Exception/UndefinedTransitionException.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/MarkingStore/MethodMarkingStore.php | 7 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Registry.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/Attribute/AsListenerTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/DataCollector/WorkflowDataCollectorTest.php | 20 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/Debug/TraceableWorkflowTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/Dumper/GraphvizDumperTest.php | 36 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/Dumper/MermaidDumperTest.php | 12 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/Dumper/StateMachineGraphvizDumperTest.php | 64 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/EventListener/GuardListenerTest.php | 49 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/MarkingStore/MethodMarkingStoreTest.php | 19 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/RegistryTest.php | 17 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/StateMachineTest.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/SupportStrategy/InstanceOfSupportStrategyTest.php | 14 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/WorkflowBuilderTrait.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Tests/WorkflowTest.php | 22 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Validator/StateMachineValidator.php | 8 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Validator/WorkflowValidator.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Workflow/Workflow.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/CHANGELOG.md | 3 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Command/LintCommand.php | 44 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Dumper.php | 18 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Escaper.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Exception/ParseException.php | 6 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Inline.php | 469 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Parser.php | 107 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/ParserState.php | 69 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Tests/Command/LintCommandTest.php | 24 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Tests/DumperTest.php | 368 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Tests/InlineTest.php | 67 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Tests/ParserTest.php | 2223 +-- symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Tests/YamlTest.php | 32 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Unescaper.php | 2 symfony-6.4.41+dfsg/src/Symfony/Component/Yaml/Yaml.php | 21 symfony-6.4.41+dfsg/src/Symfony/Contracts/Cache/CacheTrait.php | 4 symfony-6.4.41+dfsg/src/Symfony/Contracts/HttpClient/Test/Fixtures/web/index.php | 1 symfony-6.4.41+dfsg/src/Symfony/Contracts/HttpClient/Test/HttpClientTestCase.php | 30 symfony-6.4.41+dfsg/src/Symfony/Contracts/Service/ServiceLocatorTrait.php | 10 symfony-6.4.41+dfsg/src/Symfony/Contracts/Service/ServiceSubscriberTrait.php | 6 symfony-6.4.41+dfsg/src/Symfony/Contracts/Service/Test/ServiceLocatorTestCase.php | 20 symfony-6.4.41+dfsg/src/Symfony/Contracts/Tests/Cache/CacheTraitTest.php | 16 symfony-6.4.41+dfsg/src/Symfony/Contracts/Tests/Service/ServiceSubscriberTraitTest.php | 4 symfony-6.4.41+dfsg/src/Symfony/Contracts/Translation/Test/TranslatorTest.php | 15 symfony-6.4.41+dfsg/src/Symfony/Contracts/Translation/TranslatorTrait.php | 40 symfony-6.4.41+dfsg/src/Symfony/Contracts/splitsh.json | 13 3951 files changed, 146072 insertions(+), 54079 deletions(-) dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpjxlc870f/symfony_6.4.21+dfsg-2+deb13u1.dsc: no acceptable signature found dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpjxlc870f/symfony_6.4.41+dfsg-0+deb13u1.dsc: no acceptable signature found diff -Nru symfony-6.4.21+dfsg/.agents/skills/symfony-merge-up/SKILL.md symfony-6.4.41+dfsg/.agents/skills/symfony-merge-up/SKILL.md --- symfony-6.4.21+dfsg/.agents/skills/symfony-merge-up/SKILL.md 1970-01-01 00:00:00.000000000 +0000 +++ symfony-6.4.41+dfsg/.agents/skills/symfony-merge-up/SKILL.md 2026-05-27 08:23:35.000000000 +0000 @@ -0,0 +1,207 @@ +--- +name: symfony-merge-up +description: > + Cascade-merge maintained Symfony branches from oldest to newest (e.g. + 6.4 → 7.4 → 8.0 → 8.1). Use when the user says "merge branches", + "merge up", "cascade merge", "sync branches", or "update branches". +--- + +# Symfony Branch Cascade Merge + +Merges each maintained branch into the next one, from oldest to newest. + +## Progress checklist + +- [ ] Step 0: Pre-flight checks +- [ ] Step 1: Fetch maintained branches and pull them +- [ ] Step 2: Cascade merge loop + +--- + +## Confirmation rule + +Whenever the skill says **"Wait for confirmation"**, treat anything other than an +explicit affirmative as **no**: stop and ask the user how they want to proceed. + +--- + +## Step 0 — Pre-flight checks + +```bash +git status --porcelain --untracked-files=no +``` + +If any output, **stop**: +> "The working tree is not clean. Please commit or stash your changes first." + +--- + +## Step 1 — Fetch maintained branches and pull them + +### 1a. Get the branch list + +```bash +curl -s https://symfony.com/releases.json +``` + +Read `maintained_versions`. It is already sorted oldest → newest (e.g. +`["6.4", "7.4", "8.0", "8.1"]`). Store as `BRANCHES`. + +### 1b. Pull every branch + +For each branch in `BRANCHES`: + +```bash +git checkout +git pull --ff-only origin +``` + +Using `--ff-only` ensures local branches haven't diverged from origin. If the +pull fails, **stop** and report the error. + +--- + +## Step 2 — Cascade merge loop + +For each consecutive pair `(SOURCE, TARGET)` in `BRANCHES`: + +### 2a. Merge + +```bash +git checkout +composer up +git merge +``` + +Three outcomes are possible: + +- **Already up-to-date:** print "✓ `` already up-to-date with ``" + and skip to the next pair. +- **Clean merge (no conflicts):** git creates the merge commit automatically. + Proceed directly to step 2c. +- **Conflicts:** proceed to step 2b. + +### 2b. Resolve conflicts (only when git reports conflicts) + +List conflicts: + +```bash +git diff --name-only --diff-filter=U +``` + +Read each conflicted file, resolve it, then `git add` it. When all are resolved: + +```bash +git commit --no-edit +``` + +#### Conflict resolution rules + +| File pattern | Strategy | +|---|---| +| `CHANGELOG*.md` | Keep entries from both sides; newer branch entries on top | +| Version constants, `composer.json` branch aliases | Keep the TARGET branch value | +| Code files | Merge logically based on context; when unsure, ask the user | + +#### Legacy tests across major versions + +When merging from one major version to the next (e.g. 6.4 → 7.0), remove test +methods marked with `@group legacy` or `#[Group('legacy')]`. The deprecations +they cover have been removed in the new major version, so the tests are no +longer relevant. + +After resolving, show `git diff HEAD~1` (first parent of the merge commit, i.e. +the previous TARGET state) and wait for the user to confirm the resolution looks +correct before proceeding. + +### 2c. Run tests for affected components + +Extract component, bridge, and bundle names from changed files: + +```bash +git diff --name-only HEAD~1..HEAD +``` + +Paths look like `src/Symfony/{Component,Bridge,Bundle}//...`. Deduplicate, +then run tests for each: + +```bash +./phpunit src/Symfony/Component/ +./phpunit src/Symfony/Bridge/ +./phpunit src/Symfony/Bundle/ +``` + +For files under `src/Symfony/Contracts/`, run the single shared test suite: + +```bash +./phpunit src/Symfony/Contracts +``` + +Ignore files outside these directories (root configs, `.github/`, etc.): they +don't have component-level test suites. + +If tests fail or report PHPUnit deprecations (the PHPUnit version may differ +between branches), first check whether the failure is pre-existing: run the same +test on the TARGET branch before the merge (`git stash && git checkout HEAD~1` +or check CI). Only fix failures introduced by the merge: +1. Analyze and fix the code, including any PHPUnit deprecation notices. +2. Commit the fix: `[] Fix merge conflict resolution`. +3. Re-run failing tests until green and deprecation-free. + +Report any pre-existing failures to the user without attempting to fix them. + +### 2d. Ask for confirmation before pushing + +Show: + +``` +Merge: +Affected: +Tests: all passing + +Commits since origin/: +git log --oneline origin/.. + +Ready to push? (yes / no) +``` + +**Wait for confirmation.** The user may make changes themselves before confirming. + +### 2e. Push and continue + +```bash +git push origin +``` + +If the push fails, **stop** and report the error. + +Print "✓ `` → `` done." and continue to the next pair. + +--- + +## Final summary + +``` +All merges complete: + 6.4 → 7.4 ✓ + 7.4 → 8.0 ✓ + 8.0 → 8.1 ✓ +``` + +--- + +## Gotchas + +- `CHANGELOG.md` conflicts are the most common; entries must be kept from both + sides, never dropped. +- A merge can introduce test failures even without conflicts, because behavior + from the older branch may be incompatible with newer code. Always run tests. +- Some components have slow test suites. Only run tests for components with + changed files, not the entire project. + +## Error handling + +- **Never** force-push or rewrite history. +- **Never** use `--no-verify` on commits. +- **Never** auto-recover from a failed `git push` or `git pull`. Stop and hand + control back to the user. diff -Nru symfony-6.4.21+dfsg/.git-blame-ignore-revs symfony-6.4.41+dfsg/.git-blame-ignore-revs --- symfony-6.4.21+dfsg/.git-blame-ignore-revs 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.git-blame-ignore-revs 2026-05-27 08:23:35.000000000 +0000 @@ -2,3 +2,4 @@ f4118e110a46de3ffb799e7d79bf15128d1646ea 9519b54417c09c49496a4a6be238e63be9a73465 ae0a783425b80b78376488619bf9106e69193fa4 +77bd236b8da064c90b19b84a35becfb3e43348db diff -Nru symfony-6.4.21+dfsg/.github/PULL_REQUEST_TEMPLATE.md symfony-6.4.41+dfsg/.github/PULL_REQUEST_TEMPLATE.md --- symfony-6.4.21+dfsg/.github/PULL_REQUEST_TEMPLATE.md 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/PULL_REQUEST_TEMPLATE.md 2026-05-27 08:23:35.000000000 +0000 @@ -1,22 +1,25 @@ | Q | A | ------------- | --- -| Branch? | 7.3 for features / 6.4, and 7.2 for bug fixes +| Branch? | 8.2 for features / 6.4, 7.4, 8.0, 8.1 for bug fixes | Bug fix? | yes/no -| New feature? | yes/no -| Deprecations? | yes/no -| Issues | Fix #... +| New feature? | yes/no +| Deprecations? | yes/no +| Issues | Fix #... | License | MIT diff -Nru symfony-6.4.21+dfsg/.github/build-packages.php symfony-6.4.41+dfsg/.github/build-packages.php --- symfony-6.4.21+dfsg/.github/build-packages.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/build-packages.php 2026-05-27 08:23:35.000000000 +0000 @@ -1,5 +1,15 @@ '__unset' !== $v); + }, []); + + return $expandedVersions ?? []; +} + if (3 > $_SERVER['argc']) { echo "Usage: branch version dir1 dir2 ... dirN\n"; exit(1); @@ -52,11 +62,13 @@ $packages[$package->name][$package->version] = $package; - $versions = @file_get_contents('https://repo.packagist.org/p/'.$package->name.'.json') ?: sprintf('{"packages":{"%s":{"%s":%s}}}', $package->name, $package->version, file_get_contents($dir.'/composer.json')); - $versions = json_decode($versions)->packages->{$package->name}; + foreach (['.json', '~dev.json'] as $ext) { + $versions = @file_get_contents('https://repo.packagist.org/p2/'.$package->name.$ext) ?: '[]'; + $versions = json_decode($versions, true)['packages'][$package->name] ?? []; - foreach ($versions as $v => $package) { - $packages[$package->name] += [$v => $package]; + foreach (expandComposerMetadata($versions) as $p) { + $packages[$package->name] += [$p['version'] => $p]; + } } } diff -Nru symfony-6.4.21+dfsg/.github/expected-missing-return-types.diff symfony-6.4.41+dfsg/.github/expected-missing-return-types.diff --- symfony-6.4.21+dfsg/.github/expected-missing-return-types.diff 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/expected-missing-return-types.diff 2026-05-27 08:23:35.000000000 +0000 @@ -215,14 +215,14 @@ diff --git a/src/Symfony/Bridge/Doctrine/Security/RememberMe/DoctrineTokenProvider.php b/src/Symfony/Bridge/Doctrine/Security/RememberMe/DoctrineTokenProvider.php --- a/src/Symfony/Bridge/Doctrine/Security/RememberMe/DoctrineTokenProvider.php +++ b/src/Symfony/Bridge/Doctrine/Security/RememberMe/DoctrineTokenProvider.php -@@ -72,5 +72,5 @@ class DoctrineTokenProvider implements TokenProviderInterface, TokenVerifierInte +@@ -73,5 +73,5 @@ class DoctrineTokenProvider implements TokenProviderInterface, TokenVerifierInte * @return void */ - public function deleteTokenBySeries(string $series) + public function deleteTokenBySeries(string $series): void { $sql = 'DELETE FROM rememberme_token WHERE series=:series'; -@@ -102,5 +102,5 @@ class DoctrineTokenProvider implements TokenProviderInterface, TokenVerifierInte +@@ -103,5 +103,5 @@ class DoctrineTokenProvider implements TokenProviderInterface, TokenVerifierInte * @return void */ - public function createNewToken(PersistentTokenInterface $token) @@ -262,37 +262,27 @@ diff --git a/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php b/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php --- a/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php +++ b/src/Symfony/Bridge/Monolog/Handler/ConsoleHandler.php -@@ -133,5 +133,5 @@ class ConsoleHandler extends AbstractProcessingHandler implements EventSubscribe +@@ -134,5 +134,5 @@ class ConsoleHandler extends AbstractProcessingHandler implements EventSubscribe * @return void */ - public function setOutput(OutputInterface $output) + public function setOutput(OutputInterface $output): void { $this->output = $output; -@@ -154,5 +154,5 @@ class ConsoleHandler extends AbstractProcessingHandler implements EventSubscribe +@@ -156,5 +156,5 @@ class ConsoleHandler extends AbstractProcessingHandler implements EventSubscribe * @return void */ - public function onCommand(ConsoleCommandEvent $event) + public function onCommand(ConsoleCommandEvent $event): void { - $output = $event->getOutput(); -@@ -169,5 +169,5 @@ class ConsoleHandler extends AbstractProcessingHandler implements EventSubscribe + if (1 !== ++$this->nestedCommandDepth) { +@@ -175,5 +175,5 @@ class ConsoleHandler extends AbstractProcessingHandler implements EventSubscribe * @return void */ - public function onTerminate(ConsoleTerminateEvent $event) + public function onTerminate(ConsoleTerminateEvent $event): void { - $this->close(); -diff --git a/src/Symfony/Bridge/Monolog/Handler/ElasticsearchLogstashHandler.php b/src/Symfony/Bridge/Monolog/Handler/ElasticsearchLogstashHandler.php ---- a/src/Symfony/Bridge/Monolog/Handler/ElasticsearchLogstashHandler.php -+++ b/src/Symfony/Bridge/Monolog/Handler/ElasticsearchLogstashHandler.php -@@ -158,5 +158,5 @@ class ElasticsearchLogstashHandler extends AbstractHandler - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); + if ($this->nestedCommandDepth && !--$this->nestedCommandDepth) { diff --git a/src/Symfony/Bridge/Monolog/Handler/MailerHandler.php b/src/Symfony/Bridge/Monolog/Handler/MailerHandler.php --- a/src/Symfony/Bridge/Monolog/Handler/MailerHandler.php +++ b/src/Symfony/Bridge/Monolog/Handler/MailerHandler.php @@ -404,7 +394,7 @@ diff --git a/src/Symfony/Bridge/Twig/Form/TwigRendererEngine.php b/src/Symfony/Bridge/Twig/Form/TwigRendererEngine.php --- a/src/Symfony/Bridge/Twig/Form/TwigRendererEngine.php +++ b/src/Symfony/Bridge/Twig/Form/TwigRendererEngine.php -@@ -136,5 +136,5 @@ class TwigRendererEngine extends AbstractRendererEngine +@@ -139,5 +139,5 @@ class TwigRendererEngine extends AbstractRendererEngine * @return void */ - protected function loadResourcesFromTheme(string $cacheKey, mixed &$theme) @@ -636,14 +626,14 @@ diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php -@@ -213,5 +213,5 @@ class FrameworkExtension extends Extension +@@ -216,5 +216,5 @@ class FrameworkExtension extends Extension * @throws LogicException */ - public function load(array $configs, ContainerBuilder $container) + public function load(array $configs, ContainerBuilder $container): void { $loader = new PhpFileLoader($container, new FileLocator(\dirname(__DIR__).'/Resources/config')); -@@ -3007,5 +3007,5 @@ class FrameworkExtension extends Extension +@@ -3024,5 +3024,5 @@ class FrameworkExtension extends Extension * @return void */ - public static function registerRateLimiter(ContainerBuilder $container, string $name, array $limiterConfig) @@ -653,14 +643,14 @@ diff --git a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php --- a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php +++ b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php -@@ -97,5 +97,5 @@ class FrameworkBundle extends Bundle +@@ -98,5 +98,5 @@ class FrameworkBundle extends Bundle * @return void */ - public function boot() + public function boot(): void { $_ENV['DOCTRINE_DEPRECATIONS'] = $_SERVER['DOCTRINE_DEPRECATIONS'] ??= 'trigger'; -@@ -128,5 +128,5 @@ class FrameworkBundle extends Bundle +@@ -129,5 +129,5 @@ class FrameworkBundle extends Bundle * @return void */ - public function build(ContainerBuilder $container) @@ -724,7 +714,7 @@ diff --git a/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php b/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php --- a/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php +++ b/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php -@@ -88,5 +88,5 @@ abstract class KernelTestCase extends TestCase +@@ -114,5 +114,5 @@ abstract class KernelTestCase extends TestCase * @return Container */ - protected static function getContainer(): ContainerInterface @@ -965,21 +955,21 @@ diff --git a/src/Symfony/Bundle/SecurityBundle/Security/FirewallContext.php b/src/Symfony/Bundle/SecurityBundle/Security/FirewallContext.php --- a/src/Symfony/Bundle/SecurityBundle/Security/FirewallContext.php +++ b/src/Symfony/Bundle/SecurityBundle/Security/FirewallContext.php -@@ -42,5 +42,5 @@ class FirewallContext +@@ -43,5 +43,5 @@ class FirewallContext * @return FirewallConfig|null */ - public function getConfig() + public function getConfig(): ?FirewallConfig { return $this->config; -@@ -58,5 +58,5 @@ class FirewallContext +@@ -59,5 +59,5 @@ class FirewallContext * @return ExceptionListener|null */ - public function getExceptionListener() + public function getExceptionListener(): ?ExceptionListener { return $this->exceptionListener; -@@ -66,5 +66,5 @@ class FirewallContext +@@ -67,5 +67,5 @@ class FirewallContext * @return LogoutListener|null */ - public function getLogoutListener() @@ -1272,7 +1262,7 @@ diff --git a/src/Symfony/Component/Cache/Adapter/ArrayAdapter.php b/src/Symfony/Component/Cache/Adapter/ArrayAdapter.php --- a/src/Symfony/Component/Cache/Adapter/ArrayAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/ArrayAdapter.php -@@ -264,5 +264,5 @@ class ArrayAdapter implements AdapterInterface, CacheInterface, LoggerAwareInter +@@ -274,5 +274,5 @@ class ArrayAdapter implements AdapterInterface, CacheInterface, LoggerAwareInter * @return void */ - public function reset() @@ -1282,7 +1272,7 @@ diff --git a/src/Symfony/Component/Cache/Adapter/ChainAdapter.php b/src/Symfony/Component/Cache/Adapter/ChainAdapter.php --- a/src/Symfony/Component/Cache/Adapter/ChainAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/ChainAdapter.php -@@ -284,5 +284,5 @@ class ChainAdapter implements AdapterInterface, CacheInterface, PruneableInterfa +@@ -285,5 +285,5 @@ class ChainAdapter implements AdapterInterface, CacheInterface, PruneableInterfa * @return void */ - public function reset() @@ -1312,14 +1302,14 @@ diff --git a/src/Symfony/Component/Cache/Adapter/PhpFilesAdapter.php b/src/Symfony/Component/Cache/Adapter/PhpFilesAdapter.php --- a/src/Symfony/Component/Cache/Adapter/PhpFilesAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/PhpFilesAdapter.php -@@ -58,5 +58,5 @@ class PhpFilesAdapter extends AbstractAdapter implements PruneableInterface +@@ -59,5 +59,5 @@ class PhpFilesAdapter extends AbstractAdapter implements PruneableInterface * @return bool */ - public static function isSupported() + public static function isSupported(): bool { self::$startTime ??= $_SERVER['REQUEST_TIME'] ?? time(); -@@ -281,5 +281,5 @@ class PhpFilesAdapter extends AbstractAdapter implements PruneableInterface +@@ -284,5 +284,5 @@ class PhpFilesAdapter extends AbstractAdapter implements PruneableInterface * @return bool */ - protected function doUnlink(string $file) @@ -1336,13 +1326,6 @@ + public function reset(): void { $this->commit(); -@@ -303,5 +303,5 @@ class TagAwareAdapter implements TagAwareAdapterInterface, TagAwareCacheInterfac - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); diff --git a/src/Symfony/Component/Cache/Adapter/TraceableAdapter.php b/src/Symfony/Component/Cache/Adapter/TraceableAdapter.php --- a/src/Symfony/Component/Cache/Adapter/TraceableAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/TraceableAdapter.php @@ -1397,7 +1380,7 @@ diff --git a/src/Symfony/Component/Cache/DependencyInjection/CachePoolPass.php b/src/Symfony/Component/Cache/DependencyInjection/CachePoolPass.php --- a/src/Symfony/Component/Cache/DependencyInjection/CachePoolPass.php +++ b/src/Symfony/Component/Cache/DependencyInjection/CachePoolPass.php -@@ -33,5 +33,5 @@ class CachePoolPass implements CompilerPassInterface +@@ -35,5 +35,5 @@ class CachePoolPass implements CompilerPassInterface * @return void */ - public function process(ContainerBuilder $container) @@ -1407,7 +1390,7 @@ diff --git a/src/Symfony/Component/Cache/DependencyInjection/CachePoolPrunerPass.php b/src/Symfony/Component/Cache/DependencyInjection/CachePoolPrunerPass.php --- a/src/Symfony/Component/Cache/DependencyInjection/CachePoolPrunerPass.php +++ b/src/Symfony/Component/Cache/DependencyInjection/CachePoolPrunerPass.php -@@ -27,5 +27,5 @@ class CachePoolPrunerPass implements CompilerPassInterface +@@ -26,5 +26,5 @@ class CachePoolPrunerPass implements CompilerPassInterface * @return void */ - public function process(ContainerBuilder $container) @@ -1420,8 +1403,8 @@ @@ -38,5 +38,5 @@ class EarlyExpirationDispatcher * @return mixed */ -- public function __invoke(callable $callback, CacheItem $item, bool &$save, AdapterInterface $pool, \Closure $setMetadata, ?LoggerInterface $logger = null) -+ public function __invoke(callable $callback, CacheItem $item, bool &$save, AdapterInterface $pool, \Closure $setMetadata, ?LoggerInterface $logger = null): mixed +- public function __invoke(callable $callback, CacheItem $item, bool &$save, AdapterInterface $pool, \Closure $setMetadata, ?LoggerInterface $logger = null, ?float $beta = null) ++ public function __invoke(callable $callback, CacheItem $item, bool &$save, AdapterInterface $pool, \Closure $setMetadata, ?LoggerInterface $logger = null, ?float $beta = null): mixed { if (!$item->isHit() || null === $message = EarlyExpirationMessage::create($this->reverseContainer, $callback, $item, $pool)) { diff --git a/src/Symfony/Component/Cache/Messenger/EarlyExpirationHandler.php b/src/Symfony/Component/Cache/Messenger/EarlyExpirationHandler.php @@ -1434,16 +1417,6 @@ + public function __invoke(EarlyExpirationMessage $message): void { $item = $message->getItem(); -diff --git a/src/Symfony/Component/Cache/Traits/AbstractAdapterTrait.php b/src/Symfony/Component/Cache/Traits/AbstractAdapterTrait.php ---- a/src/Symfony/Component/Cache/Traits/AbstractAdapterTrait.php -+++ b/src/Symfony/Component/Cache/Traits/AbstractAdapterTrait.php -@@ -285,5 +285,5 @@ trait AbstractAdapterTrait - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); diff --git a/src/Symfony/Component/Cache/Traits/FilesystemCommonTrait.php b/src/Symfony/Component/Cache/Traits/FilesystemCommonTrait.php --- a/src/Symfony/Component/Cache/Traits/FilesystemCommonTrait.php +++ b/src/Symfony/Component/Cache/Traits/FilesystemCommonTrait.php @@ -1454,13 +1427,6 @@ + protected function doUnlink(string $file): bool { return @unlink($file); -@@ -181,5 +181,5 @@ trait FilesystemCommonTrait - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); diff --git a/src/Symfony/Component/Clock/ClockAwareTrait.php b/src/Symfony/Component/Clock/ClockAwareTrait.php --- a/src/Symfony/Component/Clock/ClockAwareTrait.php +++ b/src/Symfony/Component/Clock/ClockAwareTrait.php @@ -1943,7 +1909,7 @@ --- a/src/Symfony/Component/Config/FileLocatorInterface.php +++ b/src/Symfony/Component/Config/FileLocatorInterface.php @@ -33,4 +33,4 @@ interface FileLocatorInterface - * @psalm-return ($first is true ? string : string[]) + * @throws FileLocatorFileNotFoundException If a file is not found */ - public function locate(string $name, ?string $currentPath = null, bool $first = true); + public function locate(string $name, ?string $currentPath = null, bool $first = true): string|array; @@ -1964,7 +1930,7 @@ - public function import(mixed $resource, ?string $type = null, bool $ignoreErrors = false, ?string $sourceResource = null, string|array|null $exclude = null) + public function import(mixed $resource, ?string $type = null, bool $ignoreErrors = false, ?string $sourceResource = null, string|array|null $exclude = null): mixed { - if (\is_string($resource) && \strlen($resource) !== ($i = strcspn($resource, '*?{[')) && !str_contains($resource, "\n")) { + $excluded = []; diff --git a/src/Symfony/Component/Config/Loader/Loader.php b/src/Symfony/Component/Config/Loader/Loader.php --- a/src/Symfony/Component/Config/Loader/Loader.php +++ b/src/Symfony/Component/Config/Loader/Loader.php @@ -2031,7 +1997,7 @@ - public function write(string $content, ?array $metadata = null) + public function write(string $content, ?array $metadata = null): void { - $mode = 0666; + $mode = 0o666; diff --git a/src/Symfony/Component/Config/ResourceCheckerInterface.php b/src/Symfony/Component/Config/ResourceCheckerInterface.php --- a/src/Symfony/Component/Config/ResourceCheckerInterface.php +++ b/src/Symfony/Component/Config/ResourceCheckerInterface.php @@ -2103,84 +2069,84 @@ + public function setDefinition(InputDefinition $definition): void { $this->definition = $definition; -@@ -427,5 +427,5 @@ class Application implements ResetInterface +@@ -436,5 +436,5 @@ class Application implements ResetInterface * @return void */ - public function setCatchExceptions(bool $boolean) + public function setCatchExceptions(bool $boolean): void { $this->catchExceptions = $boolean; -@@ -453,5 +453,5 @@ class Application implements ResetInterface +@@ -462,5 +462,5 @@ class Application implements ResetInterface * @return void */ - public function setAutoExit(bool $boolean) + public function setAutoExit(bool $boolean): void { $this->autoExit = $boolean; -@@ -471,5 +471,5 @@ class Application implements ResetInterface +@@ -480,5 +480,5 @@ class Application implements ResetInterface * @return void */ - public function setName(string $name) + public function setName(string $name): void { $this->name = $name; -@@ -489,5 +489,5 @@ class Application implements ResetInterface +@@ -498,5 +498,5 @@ class Application implements ResetInterface * @return void */ - public function setVersion(string $version) + public function setVersion(string $version): void { $this->version = $version; -@@ -499,5 +499,5 @@ class Application implements ResetInterface +@@ -508,5 +508,5 @@ class Application implements ResetInterface * @return string */ - public function getLongVersion() + public function getLongVersion(): string { if ('UNKNOWN' !== $this->getName()) { -@@ -529,5 +529,5 @@ class Application implements ResetInterface +@@ -538,5 +538,5 @@ class Application implements ResetInterface * @return void */ - public function addCommands(array $commands) + public function addCommands(array $commands): void { foreach ($commands as $command) { -@@ -544,5 +544,5 @@ class Application implements ResetInterface +@@ -553,5 +553,5 @@ class Application implements ResetInterface * @return Command|null */ - public function add(Command $command) + public function add(Command $command): ?Command { $this->init(); -@@ -581,5 +581,5 @@ class Application implements ResetInterface +@@ -590,5 +590,5 @@ class Application implements ResetInterface * @throws CommandNotFoundException When given command name does not exist */ - public function get(string $name) + public function get(string $name): Command { $this->init(); -@@ -688,5 +688,5 @@ class Application implements ResetInterface +@@ -697,5 +697,5 @@ class Application implements ResetInterface * @throws CommandNotFoundException When command name is incorrect or ambiguous */ - public function find(string $name) + public function find(string $name): Command { $this->init(); -@@ -796,5 +796,5 @@ class Application implements ResetInterface +@@ -819,5 +819,5 @@ class Application implements ResetInterface * @return Command[] */ - public function all(?string $namespace = null) + public function all(?string $namespace = null): array { $this->init(); -@@ -940,5 +940,5 @@ class Application implements ResetInterface +@@ -963,5 +963,5 @@ class Application implements ResetInterface * @return void */ - protected function configureIO(InputInterface $input, OutputInterface $output) + protected function configureIO(InputInterface $input, OutputInterface $output): void { if (true === $input->hasParameterOption(['--ansi'], true)) { -@@ -1005,5 +1005,5 @@ class Application implements ResetInterface +@@ -1028,5 +1028,5 @@ class Application implements ResetInterface * @return int 0 if everything went fine, or an error code */ - protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output) @@ -2263,7 +2229,7 @@ + protected function configure(): void { $this->ignoreValidationErrors(); -@@ -61,5 +61,5 @@ EOF +@@ -61,5 +61,5 @@ class HelpCommand extends Command * @return void */ - public function setCommand(Command $command) @@ -2286,8 +2252,8 @@ @@ -31,4 +31,4 @@ interface SignalableCommandInterface * @return int|false The exit code to return or false to continue the normal execution */ -- public function handleSignal(int $signal, /* int|false $previousExitCode = 0 */); -+ public function handleSignal(int $signal, /* int|false $previousExitCode = 0 */): int|false; +- public function handleSignal(int $signal/* , int|false $previousExitCode = 0 */); ++ public function handleSignal(int $signal/* , int|false $previousExitCode = 0 */): int|false; } diff --git a/src/Symfony/Component/Console/DependencyInjection/AddConsoleCommandPass.php b/src/Symfony/Component/Console/DependencyInjection/AddConsoleCommandPass.php --- a/src/Symfony/Component/Console/DependencyInjection/AddConsoleCommandPass.php @@ -2328,21 +2294,21 @@ diff --git a/src/Symfony/Component/Console/Formatter/OutputFormatter.php b/src/Symfony/Component/Console/Formatter/OutputFormatter.php --- a/src/Symfony/Component/Console/Formatter/OutputFormatter.php +++ b/src/Symfony/Component/Console/Formatter/OutputFormatter.php -@@ -87,5 +87,5 @@ class OutputFormatter implements WrappableOutputFormatterInterface +@@ -88,5 +88,5 @@ class OutputFormatter implements WrappableOutputFormatterInterface * @return void */ - public function setDecorated(bool $decorated) + public function setDecorated(bool $decorated): void { $this->decorated = $decorated; -@@ -100,5 +100,5 @@ class OutputFormatter implements WrappableOutputFormatterInterface +@@ -101,5 +101,5 @@ class OutputFormatter implements WrappableOutputFormatterInterface * @return void */ - public function setStyle(string $name, OutputFormatterStyleInterface $style) + public function setStyle(string $name, OutputFormatterStyleInterface $style): void { $this->styles[strtolower($name)] = $style; -@@ -127,5 +127,5 @@ class OutputFormatter implements WrappableOutputFormatterInterface +@@ -128,5 +128,5 @@ class OutputFormatter implements WrappableOutputFormatterInterface * @return string */ - public function formatAndWrap(?string $message, int $width) @@ -2488,21 +2454,21 @@ + public function setHelperSet(?HelperSet $helperSet = null): void { if (1 > \func_num_args()) { -@@ -95,5 +95,5 @@ abstract class Helper implements HelperInterface +@@ -101,5 +101,5 @@ abstract class Helper implements HelperInterface * @return string */ - public static function formatTime(int|float $secs, int $precision = 1) + public static function formatTime(int|float $secs, int $precision = 1): string { $secs = (int) floor($secs); -@@ -138,5 +138,5 @@ abstract class Helper implements HelperInterface +@@ -144,5 +144,5 @@ abstract class Helper implements HelperInterface * @return string */ - public static function formatMemory(int $memory) + public static function formatMemory(int $memory): string { if ($memory >= 1024 * 1024 * 1024) { -@@ -158,5 +158,5 @@ abstract class Helper implements HelperInterface +@@ -164,5 +164,5 @@ abstract class Helper implements HelperInterface * @return string */ - public static function removeDecoration(OutputFormatterInterface $formatter, ?string $string) @@ -2548,35 +2514,35 @@ diff --git a/src/Symfony/Component/Console/Helper/ProgressIndicator.php b/src/Symfony/Component/Console/Helper/ProgressIndicator.php --- a/src/Symfony/Component/Console/Helper/ProgressIndicator.php +++ b/src/Symfony/Component/Console/Helper/ProgressIndicator.php -@@ -74,5 +74,5 @@ class ProgressIndicator +@@ -75,5 +75,5 @@ class ProgressIndicator * @return void */ - public function setMessage(?string $message) + public function setMessage(?string $message): void { $this->message = $message; -@@ -86,5 +86,5 @@ class ProgressIndicator +@@ -87,5 +87,5 @@ class ProgressIndicator * @return void */ - public function start(string $message) + public function start(string $message): void { if ($this->started) { -@@ -106,5 +106,5 @@ class ProgressIndicator +@@ -107,5 +107,5 @@ class ProgressIndicator * @return void */ - public function advance() + public function advance(): void { if (!$this->started) { -@@ -133,5 +133,5 @@ class ProgressIndicator +@@ -134,5 +134,5 @@ class ProgressIndicator * @return void */ - public function finish(string $message) + public function finish(string $message): void { if (!$this->started) { -@@ -160,5 +160,5 @@ class ProgressIndicator +@@ -163,5 +163,5 @@ class ProgressIndicator * @return void */ - public static function setPlaceholderFormatterDefinition(string $name, callable $callable) @@ -3488,7 +3454,7 @@ diff --git a/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php b/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php --- a/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php -@@ -60,5 +60,5 @@ class AnalyzeServiceReferencesPass extends AbstractRecursivePass +@@ -61,5 +61,5 @@ class AnalyzeServiceReferencesPass extends AbstractRecursivePass * @return void */ - public function process(ContainerBuilder $container) @@ -3518,7 +3484,7 @@ diff --git a/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php b/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php --- a/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php -@@ -35,5 +35,5 @@ class CheckCircularReferencesPass implements CompilerPassInterface +@@ -36,5 +36,5 @@ class CheckCircularReferencesPass implements CompilerPassInterface * @return void */ - public function process(ContainerBuilder $container) @@ -3634,59 +3600,59 @@ - public function registerExtension(ExtensionInterface $extension) + public function registerExtension(ExtensionInterface $extension): void { - throw new LogicException(sprintf('You cannot register extension "%s" from "%s". Extensions must be registered before the container is compiled.', get_debug_type($extension), $this->extensionClass)); + throw new LogicException(\sprintf('You cannot register extension "%s" from "%s". Extensions must be registered before the container is compiled.', get_debug_type($extension), $this->extensionClass)); } - public function compile(bool $resolveEnvPlaceholders = false) + public function compile(bool $resolveEnvPlaceholders = false): void { - throw new LogicException(sprintf('Cannot compile the container in extension "%s".', $this->extensionClass)); + throw new LogicException(\sprintf('Cannot compile the container in extension "%s".', $this->extensionClass)); diff --git a/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php b/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php --- a/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php -@@ -126,5 +126,5 @@ class PassConfig +@@ -127,5 +127,5 @@ class PassConfig * @throws InvalidArgumentException when a pass type doesn't exist */ - public function addPass(CompilerPassInterface $pass, string $type = self::TYPE_BEFORE_OPTIMIZATION, int $priority = 0) + public function addPass(CompilerPassInterface $pass, string $type = self::TYPE_BEFORE_OPTIMIZATION, int $priority = 0): void { $property = $type.'Passes'; -@@ -202,5 +202,5 @@ class PassConfig +@@ -203,5 +203,5 @@ class PassConfig * @return void */ - public function setMergePass(CompilerPassInterface $pass) + public function setMergePass(CompilerPassInterface $pass): void { $this->mergePass = $pass; -@@ -214,5 +214,5 @@ class PassConfig +@@ -215,5 +215,5 @@ class PassConfig * @return void */ - public function setAfterRemovingPasses(array $passes) + public function setAfterRemovingPasses(array $passes): void { $this->afterRemovingPasses = [$passes]; -@@ -226,5 +226,5 @@ class PassConfig +@@ -227,5 +227,5 @@ class PassConfig * @return void */ - public function setBeforeOptimizationPasses(array $passes) + public function setBeforeOptimizationPasses(array $passes): void { $this->beforeOptimizationPasses = [$passes]; -@@ -238,5 +238,5 @@ class PassConfig +@@ -239,5 +239,5 @@ class PassConfig * @return void */ - public function setBeforeRemovingPasses(array $passes) + public function setBeforeRemovingPasses(array $passes): void { $this->beforeRemovingPasses = [$passes]; -@@ -250,5 +250,5 @@ class PassConfig +@@ -251,5 +251,5 @@ class PassConfig * @return void */ - public function setOptimizationPasses(array $passes) + public function setOptimizationPasses(array $passes): void { $this->optimizationPasses = [$passes]; -@@ -262,5 +262,5 @@ class PassConfig +@@ -263,5 +263,5 @@ class PassConfig * @return void */ - public function setRemovingPasses(array $passes) @@ -3726,7 +3692,7 @@ diff --git a/src/Symfony/Component/DependencyInjection/Compiler/RemoveBuildParametersPass.php b/src/Symfony/Component/DependencyInjection/Compiler/RemoveBuildParametersPass.php --- a/src/Symfony/Component/DependencyInjection/Compiler/RemoveBuildParametersPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/RemoveBuildParametersPass.php -@@ -24,5 +24,5 @@ class RemoveBuildParametersPass implements CompilerPassInterface +@@ -29,5 +29,5 @@ class RemoveBuildParametersPass implements CompilerPassInterface * @return void */ - public function process(ContainerBuilder $container) @@ -4003,49 +3969,49 @@ + public function prependExtensionConfig(string $name, array $config): void { if (!isset($this->extensionConfigs[$name])) { -@@ -750,5 +750,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface +@@ -751,5 +751,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @return void */ - public function compile(bool $resolveEnvPlaceholders = false) + public function compile(bool $resolveEnvPlaceholders = false): void { $compiler = $this->getCompiler(); -@@ -814,5 +814,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface +@@ -815,5 +815,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @return void */ - public function addAliases(array $aliases) + public function addAliases(array $aliases): void { foreach ($aliases as $alias => $id) { -@@ -828,5 +828,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface +@@ -829,5 +829,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @return void */ - public function setAliases(array $aliases) + public function setAliases(array $aliases): void { $this->aliasDefinitions = []; -@@ -862,5 +862,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface +@@ -863,5 +863,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @return void */ - public function removeAlias(string $alias) + public function removeAlias(string $alias): void { if (isset($this->aliasDefinitions[$alias])) { -@@ -924,5 +924,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface +@@ -925,5 +925,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @return void */ - public function addDefinitions(array $definitions) + public function addDefinitions(array $definitions): void { foreach ($definitions as $id => $definition) { -@@ -938,5 +938,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface +@@ -939,5 +939,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @return void */ - public function setDefinitions(array $definitions) + public function setDefinitions(array $definitions): void { $this->definitions = []; -@@ -1330,5 +1330,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface +@@ -1332,5 +1332,5 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @return void */ - public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) @@ -4272,13 +4238,6 @@ + public function __call(string $method, array $args): mixed { if (method_exists($this, 'set'.$method)) { -@@ -55,5 +55,5 @@ abstract class AbstractConfigurator - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); diff --git a/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php b/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php --- a/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php +++ b/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php @@ -4591,35 +4550,35 @@ diff --git a/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php b/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php --- a/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php +++ b/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php -@@ -64,5 +64,5 @@ class ChoiceFormField extends FormField +@@ -68,5 +68,5 @@ class ChoiceFormField extends FormField * @return void */ - public function select(string|array|bool $value) + public function select(string|array|bool $value): void { $this->setValue($value); -@@ -76,5 +76,5 @@ class ChoiceFormField extends FormField +@@ -80,5 +80,5 @@ class ChoiceFormField extends FormField * @throws \LogicException When the type provided is not correct */ - public function tick() + public function tick(): void { if ('checkbox' !== $this->type) { -@@ -92,5 +92,5 @@ class ChoiceFormField extends FormField +@@ -96,5 +96,5 @@ class ChoiceFormField extends FormField * @throws \LogicException When the type provided is not correct */ - public function untick() + public function untick(): void { if ('checkbox' !== $this->type) { -@@ -108,5 +108,5 @@ class ChoiceFormField extends FormField +@@ -112,5 +112,5 @@ class ChoiceFormField extends FormField * @throws \InvalidArgumentException When value type provided is not correct */ - public function setValue(string|array|bool|null $value) + public function setValue(string|array|bool|null $value): void { if ('checkbox' === $this->type && false === $value) { -@@ -187,5 +187,5 @@ class ChoiceFormField extends FormField +@@ -191,5 +191,5 @@ class ChoiceFormField extends FormField * @throws \LogicException When node type is incorrect */ - protected function initialize() @@ -4744,16 +4703,6 @@ + protected function setNode(\DOMElement $node): void { if ('a' !== $node->nodeName && 'area' !== $node->nodeName && 'link' !== $node->nodeName) { -diff --git a/src/Symfony/Component/ErrorHandler/BufferingLogger.php b/src/Symfony/Component/ErrorHandler/BufferingLogger.php ---- a/src/Symfony/Component/ErrorHandler/BufferingLogger.php -+++ b/src/Symfony/Component/ErrorHandler/BufferingLogger.php -@@ -44,5 +44,5 @@ class BufferingLogger extends AbstractLogger - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); diff --git a/src/Symfony/Component/ErrorHandler/ErrorRenderer/FileLinkFormatter.php b/src/Symfony/Component/ErrorHandler/ErrorRenderer/FileLinkFormatter.php --- a/src/Symfony/Component/ErrorHandler/ErrorRenderer/FileLinkFormatter.php +++ b/src/Symfony/Component/ErrorHandler/ErrorRenderer/FileLinkFormatter.php @@ -4767,49 +4716,49 @@ diff --git a/src/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcher.php b/src/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcher.php --- a/src/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcher.php +++ b/src/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcher.php -@@ -55,5 +55,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa +@@ -58,5 +58,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa * @return void */ - public function addListener(string $eventName, callable|array $listener, int $priority = 0) + public function addListener(string $eventName, callable|array $listener, int $priority = 0): void { $this->dispatcher->addListener($eventName, $listener, $priority); -@@ -63,5 +63,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa +@@ -66,5 +66,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa * @return void */ - public function addSubscriber(EventSubscriberInterface $subscriber) + public function addSubscriber(EventSubscriberInterface $subscriber): void { $this->dispatcher->addSubscriber($subscriber); -@@ -71,5 +71,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa +@@ -74,5 +74,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa * @return void */ - public function removeListener(string $eventName, callable|array $listener) + public function removeListener(string $eventName, callable|array $listener): void { if (isset($this->wrappedListeners[$eventName])) { -@@ -89,5 +89,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa +@@ -92,5 +92,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa * @return void */ - public function removeSubscriber(EventSubscriberInterface $subscriber) + public function removeSubscriber(EventSubscriberInterface $subscriber): void { $this->dispatcher->removeSubscriber($subscriber); -@@ -230,5 +230,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa +@@ -231,5 +231,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa * @return void */ - public function reset() + public function reset(): void { $this->callStack = null; -@@ -253,5 +253,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa +@@ -257,5 +257,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa * @return void */ - protected function beforeDispatch(string $eventName, object $event) + protected function beforeDispatch(string $eventName, object $event): void { } -@@ -262,5 +262,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa +@@ -266,5 +266,5 @@ class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterfa * @return void */ - protected function afterDispatch(string $eventName, object $event) @@ -5024,7 +4973,7 @@ - public function toArray() + public function toArray(): array { - throw new \BadMethodCallException(sprintf('Dumping a "%s" instance is not supported yet.', static::class)); + throw new \BadMethodCallException(\sprintf('Dumping a "%s" instance is not supported yet.', static::class)); @@ -94,5 +94,5 @@ class Node * @return string */ @@ -5038,7 +4987,7 @@ - protected function dumpString(string $value) + protected function dumpString(string $value): string { - return sprintf('"%s"', addcslashes($value, "\0\t\"\\")); + return \sprintf('"%s"', addcslashes($value, "\0\t\"\\")); @@ -116,5 +116,5 @@ class Node * @return bool */ @@ -5155,8 +5104,8 @@ @@ -92,5 +92,5 @@ class Filesystem * @throws IOException On any directory creation failure */ -- public function mkdir(string|iterable $dirs, int $mode = 0777) -+ public function mkdir(string|iterable $dirs, int $mode = 0777): void +- public function mkdir(string|iterable $dirs, int $mode = 0o777) ++ public function mkdir(string|iterable $dirs, int $mode = 0o777): void { foreach ($this->toIterable($dirs) as $dir) { @@ -135,5 +135,5 @@ class Filesystem @@ -5176,8 +5125,8 @@ @@ -219,5 +219,5 @@ class Filesystem * @throws IOException When the change fails */ -- public function chmod(string|iterable $files, int $mode, int $umask = 0000, bool $recursive = false) -+ public function chmod(string|iterable $files, int $mode, int $umask = 0000, bool $recursive = false): void +- public function chmod(string|iterable $files, int $mode, int $umask = 0o000, bool $recursive = false) ++ public function chmod(string|iterable $files, int $mode, int $umask = 0o000, bool $recursive = false): void { foreach ($this->toIterable($files) as $file) { @@ -245,5 +245,5 @@ class Filesystem @@ -5215,21 +5164,21 @@ + public function hardlink(string $originFile, string|iterable $targetFiles): void { self::assertFunctionExists('link'); -@@ -542,5 +542,5 @@ class Filesystem +@@ -549,5 +549,5 @@ class Filesystem * @throws IOException When file type is unknown */ - public function mirror(string $originDir, string $targetDir, ?\Traversable $iterator = null, array $options = []) + public function mirror(string $originDir, string $targetDir, ?\Traversable $iterator = null, array $options = []): void { $targetDir = rtrim($targetDir, '/\\'); -@@ -668,5 +668,5 @@ class Filesystem +@@ -675,5 +675,5 @@ class Filesystem * @throws IOException if the file cannot be written to */ - public function dumpFile(string $filename, $content) + public function dumpFile(string $filename, $content): void { if (\is_array($content)) { -@@ -719,5 +719,5 @@ class Filesystem +@@ -726,5 +726,5 @@ class Filesystem * @throws IOException If the file is not writable */ - public function appendToFile(string $filename, $content/* , bool $lock = false */) @@ -5239,7 +5188,7 @@ diff --git a/src/Symfony/Component/Finder/Finder.php b/src/Symfony/Component/Finder/Finder.php --- a/src/Symfony/Component/Finder/Finder.php +++ b/src/Symfony/Component/Finder/Finder.php -@@ -401,5 +401,5 @@ class Finder implements \IteratorAggregate, \Countable +@@ -403,5 +403,5 @@ class Finder implements \IteratorAggregate, \Countable * @return void */ - public static function addVCSPattern(string|array $pattern) @@ -5266,14 +5215,14 @@ diff --git a/src/Symfony/Component/Form/AbstractRendererEngine.php b/src/Symfony/Component/Form/AbstractRendererEngine.php --- a/src/Symfony/Component/Form/AbstractRendererEngine.php +++ b/src/Symfony/Component/Form/AbstractRendererEngine.php -@@ -65,5 +65,5 @@ abstract class AbstractRendererEngine implements FormRendererEngineInterface, Re +@@ -70,5 +70,5 @@ abstract class AbstractRendererEngine implements FormRendererEngineInterface, Re * @return void */ - public function setTheme(FormView $view, mixed $themes, bool $useDefaultThemes = true) + public function setTheme(FormView $view, mixed $themes, bool $useDefaultThemes = true): void { $cacheKey = $view->vars[self::CACHE_KEY_VAR]; -@@ -128,5 +128,5 @@ abstract class AbstractRendererEngine implements FormRendererEngineInterface, Re +@@ -143,5 +143,5 @@ abstract class AbstractRendererEngine implements FormRendererEngineInterface, Re * @return bool */ - abstract protected function loadResourceForBlockName(string $cacheKey, FormView $view, string $blockName); @@ -5821,21 +5770,21 @@ + public function buildForm(FormBuilderInterface $builder, array $options): void { $unknownValues = []; -@@ -223,5 +223,5 @@ class ChoiceType extends AbstractType +@@ -222,5 +222,5 @@ class ChoiceType extends AbstractType * @return void */ - public function buildView(FormView $view, FormInterface $form, array $options) + public function buildView(FormView $view, FormInterface $form, array $options): void { $choiceTranslationDomain = $options['choice_translation_domain']; -@@ -280,5 +280,5 @@ class ChoiceType extends AbstractType +@@ -279,5 +279,5 @@ class ChoiceType extends AbstractType * @return void */ - public function finishView(FormView $view, FormInterface $form, array $options) + public function finishView(FormView $view, FormInterface $form, array $options): void { - if ($options['expanded']) { -@@ -300,5 +300,5 @@ class ChoiceType extends AbstractType + $view->vars['duplicate_preferred_choices'] = $options['duplicate_preferred_choices']; +@@ -301,5 +301,5 @@ class ChoiceType extends AbstractType * @return void */ - public function configureOptions(OptionsResolver $resolver) @@ -6125,14 +6074,14 @@ + public function buildView(FormView $view, FormInterface $form, array $options): void { $view->vars['money_pattern'] = self::getPattern($options['currency']); -@@ -58,5 +58,5 @@ class MoneyType extends AbstractType +@@ -64,5 +64,5 @@ class MoneyType extends AbstractType * @return void */ - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ -@@ -107,5 +107,5 @@ class MoneyType extends AbstractType +@@ -113,5 +113,5 @@ class MoneyType extends AbstractType * @return string */ - protected static function getPattern(?string $currency) @@ -6298,7 +6247,14 @@ diff --git a/src/Symfony/Component/Form/Extension/Core/Type/TextareaType.php b/src/Symfony/Component/Form/Extension/Core/Type/TextareaType.php --- a/src/Symfony/Component/Form/Extension/Core/Type/TextareaType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/TextareaType.php -@@ -21,5 +21,5 @@ class TextareaType extends AbstractType +@@ -24,5 +24,5 @@ class TextareaType extends AbstractType implements DataTransformerInterface + * @return void + */ +- public function buildForm(FormBuilderInterface $builder, array $options) ++ public function buildForm(FormBuilderInterface $builder, array $options): void + { + $builder->addViewTransformer($this); +@@ -32,5 +32,5 @@ class TextareaType extends AbstractType implements DataTransformerInterface * @return void */ - public function buildView(FormView $view, FormInterface $form, array $options) @@ -6424,14 +6380,14 @@ + public function buildForm(FormBuilderInterface $builder, array $options): void { if ('string' === $options['input']) { -@@ -87,5 +87,5 @@ class WeekType extends AbstractType +@@ -86,5 +86,5 @@ class WeekType extends AbstractType * @return void */ - public function buildView(FormView $view, FormInterface $form, array $options) + public function buildView(FormView $view, FormInterface $form, array $options): void { $view->vars['widget'] = $options['widget']; -@@ -99,5 +99,5 @@ class WeekType extends AbstractType +@@ -98,5 +98,5 @@ class WeekType extends AbstractType * @return void */ - public function configureOptions(OptionsResolver $resolver) @@ -6946,7 +6902,7 @@ --- a/src/Symfony/Component/Form/NativeRequestHandler.php +++ b/src/Symfony/Component/Form/NativeRequestHandler.php @@ -46,5 +46,5 @@ class NativeRequestHandler implements RequestHandlerInterface - * @throws Exception\UnexpectedTypeException If the $request is not null + * @throws UnexpectedTypeException If the $request is not null */ - public function handleRequest(FormInterface $form, mixed $request = null) + public function handleRequest(FormInterface $form, mixed $request = null): void @@ -7010,36 +6966,16 @@ + public function finishView(FormView $view, FormInterface $form, array $options): void; /** -diff --git a/src/Symfony/Component/Form/Util/OrderedHashMapIterator.php b/src/Symfony/Component/Form/Util/OrderedHashMapIterator.php ---- a/src/Symfony/Component/Form/Util/OrderedHashMapIterator.php -+++ b/src/Symfony/Component/Form/Util/OrderedHashMapIterator.php -@@ -66,5 +66,5 @@ class OrderedHashMapIterator implements \Iterator - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); diff --git a/src/Symfony/Component/HttpClient/CachingHttpClient.php b/src/Symfony/Component/HttpClient/CachingHttpClient.php --- a/src/Symfony/Component/HttpClient/CachingHttpClient.php +++ b/src/Symfony/Component/HttpClient/CachingHttpClient.php -@@ -140,5 +140,5 @@ class CachingHttpClient implements HttpClientInterface, ResetInterface +@@ -144,5 +144,5 @@ class CachingHttpClient implements HttpClientInterface, ResetInterface * @return void */ - public function reset() + public function reset(): void { if ($this->client instanceof ResetInterface) { -diff --git a/src/Symfony/Component/HttpClient/Chunk/ErrorChunk.php b/src/Symfony/Component/HttpClient/Chunk/ErrorChunk.php ---- a/src/Symfony/Component/HttpClient/Chunk/ErrorChunk.php -+++ b/src/Symfony/Component/HttpClient/Chunk/ErrorChunk.php -@@ -102,5 +102,5 @@ class ErrorChunk implements ChunkInterface - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); diff --git a/src/Symfony/Component/HttpClient/DecoratorTrait.php b/src/Symfony/Component/HttpClient/DecoratorTrait.php --- a/src/Symfony/Component/HttpClient/DecoratorTrait.php +++ b/src/Symfony/Component/HttpClient/DecoratorTrait.php @@ -7053,7 +6989,7 @@ diff --git a/src/Symfony/Component/HttpClient/HttpClientTrait.php b/src/Symfony/Component/HttpClient/HttpClientTrait.php --- a/src/Symfony/Component/HttpClient/HttpClientTrait.php +++ b/src/Symfony/Component/HttpClient/HttpClientTrait.php -@@ -708,5 +708,5 @@ trait HttpClientTrait +@@ -712,5 +712,5 @@ trait HttpClientTrait * @return string */ - private static function removeDotSegments(string $path) @@ -7070,20 +7006,10 @@ + public function reset(): void { $this->requestsCount = 0; -diff --git a/src/Symfony/Component/HttpClient/Response/CommonResponseTrait.php b/src/Symfony/Component/HttpClient/Response/CommonResponseTrait.php ---- a/src/Symfony/Component/HttpClient/Response/CommonResponseTrait.php -+++ b/src/Symfony/Component/HttpClient/Response/CommonResponseTrait.php -@@ -128,5 +128,5 @@ trait CommonResponseTrait - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); diff --git a/src/Symfony/Component/HttpClient/ScopingHttpClient.php b/src/Symfony/Component/HttpClient/ScopingHttpClient.php --- a/src/Symfony/Component/HttpClient/ScopingHttpClient.php +++ b/src/Symfony/Component/HttpClient/ScopingHttpClient.php -@@ -97,5 +97,5 @@ class ScopingHttpClient implements HttpClientInterface, ResetInterface, LoggerAw +@@ -104,5 +104,5 @@ class ScopingHttpClient implements HttpClientInterface, ResetInterface, LoggerAw * @return void */ - public function reset() @@ -7234,91 +7160,91 @@ + public function initialize(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null): void { $this->request = new InputBag($request); -@@ -446,5 +446,5 @@ class Request +@@ -465,5 +465,5 @@ class Request * @return void */ - public static function setFactory(?callable $callable) + public static function setFactory(?callable $callable): void { self::$requestFactory = $callable; -@@ -552,5 +552,5 @@ class Request +@@ -571,5 +571,5 @@ class Request * @return void */ - public function overrideGlobals() + public function overrideGlobals(): void { $this->server->set('QUERY_STRING', static::normalizeQueryString(http_build_query($this->query->all(), '', '&'))); -@@ -594,5 +594,5 @@ class Request +@@ -613,5 +613,5 @@ class Request * @return void */ - public static function setTrustedProxies(array $proxies, int $trustedHeaderSet) + public static function setTrustedProxies(array $proxies, int $trustedHeaderSet): void { - self::$trustedProxies = array_reduce($proxies, function ($proxies, $proxy) { -@@ -637,5 +637,5 @@ class Request + self::$trustedProxies = array_reduce($proxies, static function ($proxies, $proxy) { +@@ -656,5 +656,5 @@ class Request * @return void */ - public static function setTrustedHosts(array $hostPatterns) + public static function setTrustedHosts(array $hostPatterns): void { - self::$trustedHostPatterns = array_map(fn ($hostPattern) => sprintf('{%s}i', $hostPattern), $hostPatterns); -@@ -685,5 +685,5 @@ class Request + self::$trustedHostPatterns = array_map(static fn ($hostPattern) => \sprintf('{%s}i', $hostPattern), $hostPatterns); +@@ -704,5 +704,5 @@ class Request * @return void */ - public static function enableHttpMethodParameterOverride() + public static function enableHttpMethodParameterOverride(): void { self::$httpMethodParameterOverride = true; -@@ -772,5 +772,5 @@ class Request +@@ -791,5 +791,5 @@ class Request * @return void */ - public function setSession(SessionInterface $session) + public function setSession(SessionInterface $session): void { $this->session = $session; -@@ -1195,5 +1195,5 @@ class Request +@@ -1212,5 +1212,5 @@ class Request * @return void */ - public function setMethod(string $method) + public function setMethod(string $method): void { $this->method = null; -@@ -1318,5 +1318,5 @@ class Request +@@ -1342,5 +1342,5 @@ class Request * @return void */ - public function setFormat(?string $format, string|array $mimeTypes) + public function setFormat(?string $format, string|array $mimeTypes): void { if (null === static::$formats) { -@@ -1350,5 +1350,5 @@ class Request +@@ -1374,5 +1374,5 @@ class Request * @return void */ - public function setRequestFormat(?string $format) + public function setRequestFormat(?string $format): void { $this->format = $format; -@@ -1382,5 +1382,5 @@ class Request +@@ -1406,5 +1406,5 @@ class Request * @return void */ - public function setDefaultLocale(string $locale) + public function setDefaultLocale(string $locale): void { $this->defaultLocale = $locale; -@@ -1404,5 +1404,5 @@ class Request +@@ -1428,5 +1428,5 @@ class Request * @return void */ - public function setLocale(string $locale) + public function setLocale(string $locale): void { $this->setPhpDefaultLocale($this->locale = $locale); -@@ -1761,5 +1761,5 @@ class Request +@@ -1785,5 +1785,5 @@ class Request * @return string */ - protected function prepareRequestUri() + protected function prepareRequestUri(): string { $requestUri = ''; -@@ -1931,5 +1931,5 @@ class Request +@@ -1954,5 +1954,5 @@ class Request * @return void */ - protected static function initializeFormats() @@ -7431,7 +7357,7 @@ - public function setCookie(Cookie $cookie) + public function setCookie(Cookie $cookie): void { - $this->cookies[$cookie->getDomain()][$cookie->getPath()][$cookie->getName()] = $cookie; + $this->cookies[$cookie->getDomain() ?? ''][$cookie->getPath()][$cookie->getName()] = $cookie; @@ -184,5 +184,5 @@ class ResponseHeaderBag extends HeaderBag * @return void */ @@ -7445,7 +7371,7 @@ - public function clearCookie(string $name, ?string $path = '/', ?string $domain = null, bool $secure = false, bool $httpOnly = true, ?string $sameSite = null /* , bool $partitioned = false */) + public function clearCookie(string $name, ?string $path = '/', ?string $domain = null, bool $secure = false, bool $httpOnly = true, ?string $sameSite = null /* , bool $partitioned = false */): void { - $partitioned = 6 < \func_num_args() ? \func_get_arg(6) : false; + $partitioned = 6 < \func_num_args() ? func_get_arg(6) : false; @@ -251,5 +251,5 @@ class ResponseHeaderBag extends HeaderBag * @return string */ @@ -7718,7 +7644,7 @@ diff --git a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php --- a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php +++ b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php -@@ -242,5 +242,5 @@ class PdoSessionHandler extends AbstractSessionHandler +@@ -241,5 +241,5 @@ class PdoSessionHandler extends AbstractSessionHandler * @throws \DomainException When an unsupported PDO driver is used */ - public function createTable() @@ -7728,21 +7654,21 @@ diff --git a/src/Symfony/Component/HttpFoundation/Session/Storage/MetadataBag.php b/src/Symfony/Component/HttpFoundation/Session/Storage/MetadataBag.php --- a/src/Symfony/Component/HttpFoundation/Session/Storage/MetadataBag.php +++ b/src/Symfony/Component/HttpFoundation/Session/Storage/MetadataBag.php -@@ -55,5 +55,5 @@ class MetadataBag implements SessionBagInterface +@@ -59,5 +59,5 @@ class MetadataBag implements SessionBagInterface * @return void */ - public function initialize(array &$array) + public function initialize(array &$array): void { $this->meta = &$array; -@@ -89,5 +89,5 @@ class MetadataBag implements SessionBagInterface +@@ -93,5 +93,5 @@ class MetadataBag implements SessionBagInterface * @return void */ - public function stampNew(?int $lifetime = null) + public function stampNew(?int $lifetime = null): void { $this->stampCreated($lifetime); -@@ -135,5 +135,5 @@ class MetadataBag implements SessionBagInterface +@@ -139,5 +139,5 @@ class MetadataBag implements SessionBagInterface * @return void */ - public function setName(string $name) @@ -8275,7 +8201,7 @@ - public function process(ContainerBuilder $container) + public function process(ContainerBuilder $container): void { - $container->setAlias(LoggerInterface::class, 'logger'); + if (!$container->has(LoggerInterface::class)) { diff --git a/src/Symfony/Component/HttpKernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php b/src/Symfony/Component/HttpKernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php --- a/src/Symfony/Component/HttpKernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php +++ b/src/Symfony/Component/HttpKernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php @@ -8329,14 +8255,14 @@ diff --git a/src/Symfony/Component/HttpKernel/EventListener/CacheAttributeListener.php b/src/Symfony/Component/HttpKernel/EventListener/CacheAttributeListener.php --- a/src/Symfony/Component/HttpKernel/EventListener/CacheAttributeListener.php +++ b/src/Symfony/Component/HttpKernel/EventListener/CacheAttributeListener.php -@@ -50,5 +50,5 @@ class CacheAttributeListener implements EventSubscriberInterface +@@ -51,5 +51,5 @@ class CacheAttributeListener implements EventSubscriberInterface * @return void */ - public function onKernelControllerArguments(ControllerArgumentsEvent $event) + public function onKernelControllerArguments(ControllerArgumentsEvent $event): void { $request = $event->getRequest(); -@@ -96,5 +96,5 @@ class CacheAttributeListener implements EventSubscriberInterface +@@ -97,5 +97,5 @@ class CacheAttributeListener implements EventSubscriberInterface * @return void */ - public function onKernelResponse(ResponseEvent $event) @@ -8447,28 +8373,28 @@ diff --git a/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php b/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php --- a/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php +++ b/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php -@@ -249,5 +249,5 @@ class HttpCache implements HttpKernelInterface, TerminableInterface +@@ -255,5 +255,5 @@ class HttpCache implements HttpKernelInterface, TerminableInterface * @return void */ - public function terminate(Request $request, Response $response) + public function terminate(Request $request, Response $response): void { // Do not call any listeners in case of a cache hit. -@@ -469,5 +469,5 @@ class HttpCache implements HttpKernelInterface, TerminableInterface +@@ -475,5 +475,5 @@ class HttpCache implements HttpKernelInterface, TerminableInterface * @return Response */ - protected function forward(Request $request, bool $catch = false, ?Response $entry = null) + protected function forward(Request $request, bool $catch = false, ?Response $entry = null): Response { $this->surrogate?->addSurrogateCapability($request); -@@ -603,5 +603,5 @@ class HttpCache implements HttpKernelInterface, TerminableInterface +@@ -600,5 +600,5 @@ class HttpCache implements HttpKernelInterface, TerminableInterface * @throws \Exception */ - protected function store(Request $request, Response $response) + protected function store(Request $request, Response $response): void { try { -@@ -681,5 +681,5 @@ class HttpCache implements HttpKernelInterface, TerminableInterface +@@ -678,5 +678,5 @@ class HttpCache implements HttpKernelInterface, TerminableInterface * @return void */ - protected function processResponseBody(Request $request, Response $response) @@ -8528,14 +8454,14 @@ + public function cleanup(): void { // unlock everything -@@ -254,5 +254,5 @@ class Store implements StoreInterface +@@ -250,5 +250,5 @@ class Store implements StoreInterface * @throws \RuntimeException */ - public function invalidate(Request $request) + public function invalidate(Request $request): void { $modified = false; -@@ -421,5 +421,5 @@ class Store implements StoreInterface +@@ -417,5 +417,5 @@ class Store implements StoreInterface * @return string */ - public function getPath(string $key) @@ -8609,7 +8535,7 @@ + protected function getScript(object $request): string { $kernel = var_export(serialize($this->kernel), true); -@@ -116,5 +116,5 @@ EOF; +@@ -116,5 +116,5 @@ class HttpKernelBrowser extends AbstractBrowser * @return string */ - protected function getHandleScript() @@ -8619,70 +8545,70 @@ diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php -@@ -107,5 +107,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl +@@ -109,5 +109,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl * @return void */ - public function boot() + public function boot(): void { - if (true === $this->booted) { -@@ -138,5 +138,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl + if ($this->booted) { +@@ -140,5 +140,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl * @return void */ - public function reboot(?string $warmupDir) + public function reboot(?string $warmupDir): void { $this->shutdown(); -@@ -148,5 +148,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl +@@ -150,5 +150,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl * @return void */ - public function terminate(Request $request, Response $response) + public function terminate(Request $request, Response $response): void { - if (false === $this->booted) { -@@ -162,5 +162,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl + if (!$this->booted) { +@@ -164,5 +164,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl * @return void */ - public function shutdown() + public function shutdown(): void { - if (false === $this->booted) { -@@ -340,5 +340,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl + if (!$this->booted) { +@@ -351,5 +351,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl * @throws \LogicException if two bundles share a common name */ - protected function initializeBundles() + protected function initializeBundles(): void { // init bundles -@@ -360,5 +360,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl +@@ -371,5 +371,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl * @return void */ - protected function build(ContainerBuilder $container) + protected function build(ContainerBuilder $container): void { } -@@ -400,5 +400,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl +@@ -411,5 +411,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl * @return void */ - protected function initializeContainer() + protected function initializeContainer(): void { $class = $this->getContainerClass(); -@@ -626,5 +626,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl +@@ -638,5 +638,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl * @return void */ - protected function prepareContainer(ContainerBuilder $container) + protected function prepareContainer(ContainerBuilder $container): void { $extensions = []; -@@ -679,5 +679,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl +@@ -691,5 +691,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl * @return void */ - protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, string $class, string $baseClass) + protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, string $class, string $baseClass): void { // cache the container -@@ -857,5 +857,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl +@@ -869,5 +869,5 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl * @return void */ - public function __wakeup() @@ -8905,24 +8831,23 @@ - public function terminate(Request $request, Response $response); + public function terminate(Request $request, Response $response): void; } -diff --git a/src/Symfony/Component/Intl/Data/Bundle/Compiler/BundleCompilerInterface.php b/src/Symfony/Component/Intl/Data/Bundle/Compiler/BundleCompilerInterface.php ---- a/src/Symfony/Component/Intl/Data/Bundle/Compiler/BundleCompilerInterface.php -+++ b/src/Symfony/Component/Intl/Data/Bundle/Compiler/BundleCompilerInterface.php -@@ -27,4 +27,4 @@ interface BundleCompilerInterface - * @return void - */ -- public function compile(string $sourcePath, string $targetDir); -+ public function compile(string $sourcePath, string $targetDir): void; - } -diff --git a/src/Symfony/Component/Intl/Data/Bundle/Writer/BundleWriterInterface.php b/src/Symfony/Component/Intl/Data/Bundle/Writer/BundleWriterInterface.php ---- a/src/Symfony/Component/Intl/Data/Bundle/Writer/BundleWriterInterface.php -+++ b/src/Symfony/Component/Intl/Data/Bundle/Writer/BundleWriterInterface.php -@@ -24,4 +24,4 @@ interface BundleWriterInterface - * @return void - */ -- public function write(string $path, string $locale, mixed $data); -+ public function write(string $path, string $locale, mixed $data): void; - } +diff --git a/src/Symfony/Component/Intl/Transliterator/EmojiTransliterator.php b/src/Symfony/Component/Intl/Transliterator/EmojiTransliterator.php +--- a/src/Symfony/Component/Intl/Transliterator/EmojiTransliterator.php ++++ b/src/Symfony/Component/Intl/Transliterator/EmojiTransliterator.php +@@ -75,5 +75,5 @@ if (!class_exists(\Transliterator::class)) { + */ + #[\ReturnTypeWillChange] +- public function getErrorCode(): int|false ++ public function getErrorCode(): int + { + return isset($this->transliterator) ? $this->transliterator->getErrorCode() : 0; +@@ -84,5 +84,5 @@ if (!class_exists(\Transliterator::class)) { + */ + #[\ReturnTypeWillChange] +- public function getErrorMessage(): string|false ++ public function getErrorMessage(): string + { + return isset($this->transliterator) ? $this->transliterator->getErrorMessage() : ''; diff --git a/src/Symfony/Component/Intl/Util/IntlTestHelper.php b/src/Symfony/Component/Intl/Util/IntlTestHelper.php --- a/src/Symfony/Component/Intl/Util/IntlTestHelper.php +++ b/src/Symfony/Component/Intl/Util/IntlTestHelper.php @@ -9013,35 +8938,28 @@ diff --git a/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php b/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php --- a/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php +++ b/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php -@@ -48,5 +48,5 @@ class Connection extends AbstractConnection - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); -@@ -68,5 +68,5 @@ class Connection extends AbstractConnection +@@ -65,5 +65,5 @@ class Connection extends AbstractConnection * @return void */ - public function bind(?string $dn = null, #[\SensitiveParameter] ?string $password = null) + public function bind(?string $dn = null, #[\SensitiveParameter] ?string $password = null): void { if (!$this->connection) { -@@ -101,5 +101,5 @@ class Connection extends AbstractConnection +@@ -98,5 +98,5 @@ class Connection extends AbstractConnection * @return void */ - public function setOption(string $name, array|string|int|bool $value) + public function setOption(string $name, array|string|int|bool $value): void { if (!@ldap_set_option($this->connection, ConnectionOptions::getOption($name), $value)) { -@@ -111,5 +111,5 @@ class Connection extends AbstractConnection +@@ -108,5 +108,5 @@ class Connection extends AbstractConnection * @return array|string|int|null */ - public function getOption(string $name) + public function getOption(string $name): array|string|int|null { if (!@ldap_get_option($this->connection, ConnectionOptions::getOption($name), $ret)) { -@@ -123,5 +123,5 @@ class Connection extends AbstractConnection +@@ -120,5 +120,5 @@ class Connection extends AbstractConnection * @return void */ - protected function configureOptions(OptionsResolver $resolver) @@ -9107,16 +9025,6 @@ + public function applyOperations(string $dn, iterable $operations): static { $operationsMapped = []; -diff --git a/src/Symfony/Component/Ldap/Adapter/ExtLdap/Query.php b/src/Symfony/Component/Ldap/Adapter/ExtLdap/Query.php ---- a/src/Symfony/Component/Ldap/Adapter/ExtLdap/Query.php -+++ b/src/Symfony/Component/Ldap/Adapter/ExtLdap/Query.php -@@ -39,5 +39,5 @@ class Query extends AbstractQuery - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); diff --git a/src/Symfony/Component/Ldap/Entry.php b/src/Symfony/Component/Ldap/Entry.php --- a/src/Symfony/Component/Ldap/Entry.php +++ b/src/Symfony/Component/Ldap/Entry.php @@ -9448,28 +9356,28 @@ diff --git a/src/Symfony/Component/Lock/Store/MongoDbStore.php b/src/Symfony/Component/Lock/Store/MongoDbStore.php --- a/src/Symfony/Component/Lock/Store/MongoDbStore.php +++ b/src/Symfony/Component/Lock/Store/MongoDbStore.php -@@ -209,5 +209,5 @@ class MongoDbStore implements PersistingStoreInterface +@@ -212,5 +212,5 @@ class MongoDbStore implements PersistingStoreInterface * @throws DriverRuntimeException for other driver errors (e.g. connection errors) */ - public function createTtlIndex(int $expireAfterSeconds = 0) + public function createTtlIndex(int $expireAfterSeconds = 0): void { $server = $this->getManager()->selectServer(); -@@ -231,5 +231,5 @@ class MongoDbStore implements PersistingStoreInterface +@@ -234,5 +234,5 @@ class MongoDbStore implements PersistingStoreInterface * @throws LockExpiredException when save is called on an expired lock */ - public function save(Key $key) + public function save(Key $key): void { $key->reduceLifetime($this->initialTtl); -@@ -257,5 +257,5 @@ class MongoDbStore implements PersistingStoreInterface +@@ -260,5 +260,5 @@ class MongoDbStore implements PersistingStoreInterface * @throws LockExpiredException */ - public function putOffExpiration(Key $key, float $ttl) + public function putOffExpiration(Key $key, float $ttl): void { $key->reduceLifetime($ttl); -@@ -276,5 +276,5 @@ class MongoDbStore implements PersistingStoreInterface +@@ -279,5 +279,5 @@ class MongoDbStore implements PersistingStoreInterface * @return void */ - public function delete(Key $key) @@ -9641,16 +9549,6 @@ + public function reset(): void { $this->events = new MessageEvents(); -diff --git a/src/Symfony/Component/Mailer/Transport/Smtp/SmtpTransport.php b/src/Symfony/Component/Mailer/Transport/Smtp/SmtpTransport.php ---- a/src/Symfony/Component/Mailer/Transport/Smtp/SmtpTransport.php -+++ b/src/Symfony/Component/Mailer/Transport/Smtp/SmtpTransport.php -@@ -381,5 +381,5 @@ class SmtpTransport extends AbstractTransport - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); diff --git a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsTransport.php b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsTransport.php --- a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsTransport.php +++ b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsTransport.php @@ -9668,36 +9566,16 @@ + private function getReceiver(): MessageCountAwareInterface&ReceiverInterface { return $this->receiver ??= new AmazonSqsReceiver($this->connection, $this->serializer); -diff --git a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php ---- a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php -+++ b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php -@@ -74,5 +74,5 @@ class Connection - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); -diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/PostgreSqlConnection.php b/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/PostgreSqlConnection.php ---- a/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/PostgreSqlConnection.php -+++ b/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/PostgreSqlConnection.php -@@ -42,5 +42,5 @@ final class PostgreSqlConnection extends Connection - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); diff --git a/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php b/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php --- a/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php +++ b/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php -@@ -132,5 +132,5 @@ EOF +@@ -132,5 +132,5 @@ class ConsumeMessagesCommand extends Command implements SignalableCommandInterfa * @return void */ - protected function interact(InputInterface $input, OutputInterface $output) + protected function interact(InputInterface $input, OutputInterface $output): void { - $io = new SymfonyStyle($input, $output instanceof ConsoleOutputInterface ? $output->getErrorOutput() : $output); + $io = new SymfonyStyle($input, $output); diff --git a/src/Symfony/Component/Messenger/Command/DebugCommand.php b/src/Symfony/Component/Messenger/Command/DebugCommand.php --- a/src/Symfony/Component/Messenger/Command/DebugCommand.php +++ b/src/Symfony/Component/Messenger/Command/DebugCommand.php @@ -9721,7 +9599,7 @@ diff --git a/src/Symfony/Component/Messenger/Command/StatsCommand.php b/src/Symfony/Component/Messenger/Command/StatsCommand.php --- a/src/Symfony/Component/Messenger/Command/StatsCommand.php +++ b/src/Symfony/Component/Messenger/Command/StatsCommand.php -@@ -42,5 +42,5 @@ class StatsCommand extends Command +@@ -41,5 +41,5 @@ class StatsCommand extends Command * @return void */ - protected function configure() @@ -9751,7 +9629,7 @@ diff --git a/src/Symfony/Component/Messenger/EventListener/SendFailedMessageToFailureTransportListener.php b/src/Symfony/Component/Messenger/EventListener/SendFailedMessageToFailureTransportListener.php --- a/src/Symfony/Component/Messenger/EventListener/SendFailedMessageToFailureTransportListener.php +++ b/src/Symfony/Component/Messenger/EventListener/SendFailedMessageToFailureTransportListener.php -@@ -39,5 +39,5 @@ class SendFailedMessageToFailureTransportListener implements EventSubscriberInte +@@ -37,5 +37,5 @@ class SendFailedMessageToFailureTransportListener implements EventSubscriberInte * @return void */ - public function onMessageFailed(WorkerMessageFailedEvent $event) @@ -10093,35 +9971,28 @@ diff --git a/src/Symfony/Component/Process/Process.php b/src/Symfony/Component/Process/Process.php --- a/src/Symfony/Component/Process/Process.php +++ b/src/Symfony/Component/Process/Process.php -@@ -204,5 +204,5 @@ class Process implements \IteratorAggregate - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); -@@ -295,5 +295,5 @@ class Process implements \IteratorAggregate +@@ -296,5 +296,5 @@ class Process implements \IteratorAggregate * @throws LogicException In case a callback is provided and output has been disabled */ - public function start(?callable $callback = null, array $env = []) + public function start(?callable $callback = null, array $env = []): void { if ($this->isRunning()) { -@@ -1146,5 +1146,5 @@ class Process implements \IteratorAggregate +@@ -1147,5 +1147,5 @@ class Process implements \IteratorAggregate * @throws ProcessTimedOutException In case the timeout was reached */ - public function checkTimeout() + public function checkTimeout(): void { if (self::STATUS_STARTED !== $this->status) { -@@ -1187,5 +1187,5 @@ class Process implements \IteratorAggregate +@@ -1188,5 +1188,5 @@ class Process implements \IteratorAggregate * @return void */ - public function setOptions(array $options) + public function setOptions(array $options): void { if ($this->isRunning()) { -@@ -1284,5 +1284,5 @@ class Process implements \IteratorAggregate +@@ -1285,5 +1285,5 @@ class Process implements \IteratorAggregate * @return void */ - protected function updateStatus(bool $blocking) @@ -10506,26 +10377,6 @@ + abstract protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, object $annot): void; /** -diff --git a/src/Symfony/Component/Routing/Loader/Configurator/CollectionConfigurator.php b/src/Symfony/Component/Routing/Loader/Configurator/CollectionConfigurator.php ---- a/src/Symfony/Component/Routing/Loader/Configurator/CollectionConfigurator.php -+++ b/src/Symfony/Component/Routing/Loader/Configurator/CollectionConfigurator.php -@@ -47,5 +47,5 @@ class CollectionConfigurator - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); -diff --git a/src/Symfony/Component/Routing/Loader/Configurator/ImportConfigurator.php b/src/Symfony/Component/Routing/Loader/Configurator/ImportConfigurator.php ---- a/src/Symfony/Component/Routing/Loader/Configurator/ImportConfigurator.php -+++ b/src/Symfony/Component/Routing/Loader/Configurator/ImportConfigurator.php -@@ -39,5 +39,5 @@ class ImportConfigurator - * @return void - */ -- public function __wakeup() -+ public function __wakeup(): void - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); diff --git a/src/Symfony/Component/Routing/Loader/XmlFileLoader.php b/src/Symfony/Component/Routing/Loader/XmlFileLoader.php --- a/src/Symfony/Component/Routing/Loader/XmlFileLoader.php +++ b/src/Symfony/Component/Routing/Loader/XmlFileLoader.php @@ -10543,7 +10394,7 @@ + protected function parseRoute(RouteCollection $collection, \DOMElement $node, string $path): void { if ('' === $id = $node->getAttribute('id')) { -@@ -156,5 +156,5 @@ class XmlFileLoader extends FileLoader +@@ -158,5 +158,5 @@ class XmlFileLoader extends FileLoader * @throws \InvalidArgumentException When the XML is invalid */ - protected function parseImport(RouteCollection $collection, \DOMElement $node, string $path, string $file) @@ -10560,14 +10411,14 @@ + protected function parseRoute(RouteCollection $collection, string $name, array $config, string $path): void { if (isset($config['alias'])) { -@@ -176,5 +176,5 @@ class YamlFileLoader extends FileLoader +@@ -178,5 +178,5 @@ class YamlFileLoader extends FileLoader * @return void */ - protected function parseImport(RouteCollection $collection, array $config, string $path, string $file) + protected function parseImport(RouteCollection $collection, array $config, string $path, string $file): void { $type = $config['type'] ?? null; -@@ -248,5 +248,5 @@ class YamlFileLoader extends FileLoader +@@ -250,5 +250,5 @@ class YamlFileLoader extends FileLoader * something is missing or the combination is nonsense */ - protected function validate(mixed $config, string $name, string $path) @@ -10577,7 +10428,7 @@ diff --git a/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php b/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php --- a/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php +++ b/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php -@@ -54,5 +54,5 @@ EOF; +@@ -54,5 +54,5 @@ class CompiledUrlMatcherDumper extends MatcherDumper * @return void */ - public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) @@ -10611,14 +10462,14 @@ + public function setContext(RequestContext $context): void { $this->context = $context; -@@ -105,5 +105,5 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface +@@ -106,5 +106,5 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface * @return void */ - public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) + public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider): void { $this->expressionLanguageProviders[] = $provider; -@@ -259,5 +259,5 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface +@@ -260,5 +260,5 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface * @return ExpressionLanguage */ - protected function getExpressionLanguage() @@ -10673,56 +10524,56 @@ + public function addNamePrefix(string $prefix): void { $prefixedRoutes = []; -@@ -253,5 +253,5 @@ class RouteCollection implements \IteratorAggregate, \Countable +@@ -259,5 +259,5 @@ class RouteCollection implements \IteratorAggregate, \Countable * @return void */ - public function setHost(?string $pattern, array $defaults = [], array $requirements = []) + public function setHost(?string $pattern, array $defaults = [], array $requirements = []): void { foreach ($this->routes as $route) { -@@ -269,5 +269,5 @@ class RouteCollection implements \IteratorAggregate, \Countable +@@ -275,5 +275,5 @@ class RouteCollection implements \IteratorAggregate, \Countable * @return void */ - public function setCondition(?string $condition) + public function setCondition(?string $condition): void { foreach ($this->routes as $route) { -@@ -283,5 +283,5 @@ class RouteCollection implements \IteratorAggregate, \Countable +@@ -289,5 +289,5 @@ class RouteCollection implements \IteratorAggregate, \Countable * @return void */ - public function addDefaults(array $defaults) + public function addDefaults(array $defaults): void { if ($defaults) { -@@ -299,5 +299,5 @@ class RouteCollection implements \IteratorAggregate, \Countable +@@ -305,5 +305,5 @@ class RouteCollection implements \IteratorAggregate, \Countable * @return void */ - public function addRequirements(array $requirements) + public function addRequirements(array $requirements): void { if ($requirements) { -@@ -315,5 +315,5 @@ class RouteCollection implements \IteratorAggregate, \Countable +@@ -321,5 +321,5 @@ class RouteCollection implements \IteratorAggregate, \Countable * @return void */ - public function addOptions(array $options) + public function addOptions(array $options): void { if ($options) { -@@ -331,5 +331,5 @@ class RouteCollection implements \IteratorAggregate, \Countable +@@ -337,5 +337,5 @@ class RouteCollection implements \IteratorAggregate, \Countable * @return void */ - public function setSchemes(string|array $schemes) + public function setSchemes(string|array $schemes): void { foreach ($this->routes as $route) { -@@ -345,5 +345,5 @@ class RouteCollection implements \IteratorAggregate, \Countable +@@ -351,5 +351,5 @@ class RouteCollection implements \IteratorAggregate, \Countable * @return void */ - public function setMethods(string|array $methods) + public function setMethods(string|array $methods): void { foreach ($this->routes as $route) { -@@ -368,5 +368,5 @@ class RouteCollection implements \IteratorAggregate, \Countable +@@ -374,5 +374,5 @@ class RouteCollection implements \IteratorAggregate, \Countable * @return void */ - public function addResource(ResourceInterface $resource) @@ -11122,7 +10973,7 @@ diff --git a/src/Symfony/Component/Security/Core/User/UserInterface.php b/src/Symfony/Component/Security/Core/User/UserInterface.php --- a/src/Symfony/Component/Security/Core/User/UserInterface.php +++ b/src/Symfony/Component/Security/Core/User/UserInterface.php -@@ -55,5 +55,5 @@ interface UserInterface +@@ -53,5 +53,5 @@ interface UserInterface * @return void */ - public function eraseCredentials(); @@ -11322,7 +11173,7 @@ diff --git a/src/Symfony/Component/Security/Http/FirewallMap.php b/src/Symfony/Component/Security/Http/FirewallMap.php --- a/src/Symfony/Component/Security/Http/FirewallMap.php +++ b/src/Symfony/Component/Security/Http/FirewallMap.php -@@ -35,5 +35,5 @@ class FirewallMap implements FirewallMapInterface +@@ -36,5 +36,5 @@ class FirewallMap implements FirewallMapInterface * @return void */ - public function add(?RequestMatcherInterface $requestMatcher = null, array $listeners = [], ?ExceptionListener $exceptionListener = null, ?LogoutListener $logoutListener = null) @@ -11332,8 +11183,8 @@ diff --git a/src/Symfony/Component/Security/Http/FirewallMapInterface.php b/src/Symfony/Component/Security/Http/FirewallMapInterface.php --- a/src/Symfony/Component/Security/Http/FirewallMapInterface.php +++ b/src/Symfony/Component/Security/Http/FirewallMapInterface.php -@@ -38,4 +38,4 @@ interface FirewallMapInterface - * @return array{iterable, ExceptionListener, LogoutListener} +@@ -39,4 +39,4 @@ interface FirewallMapInterface + * @return array{iterable, ExceptionListener, LogoutListener} */ - public function getListeners(Request $request); + public function getListeners(Request $request): array; @@ -11504,14 +11355,14 @@ + protected function getAllowedAttributes(string|object $classOrObject, array $context, bool $attributesAsString = false): array|bool { $allowExtraAttributes = $context[self::ALLOW_EXTRA_ATTRIBUTES] ?? $this->defaultContext[self::ALLOW_EXTRA_ATTRIBUTES]; -@@ -271,5 +271,5 @@ abstract class AbstractNormalizer implements NormalizerInterface, DenormalizerIn +@@ -276,5 +276,5 @@ abstract class AbstractNormalizer implements NormalizerInterface, DenormalizerIn * @return bool */ - protected function isAllowedAttribute(object|string $classOrObject, string $attribute, ?string $format = null, array $context = []) + protected function isAllowedAttribute(object|string $classOrObject, string $attribute, ?string $format = null, array $context = []): bool { $ignoredAttributes = $context[self::IGNORED_ATTRIBUTES] ?? $this->defaultContext[self::IGNORED_ATTRIBUTES]; -@@ -322,5 +322,5 @@ abstract class AbstractNormalizer implements NormalizerInterface, DenormalizerIn +@@ -327,5 +327,5 @@ abstract class AbstractNormalizer implements NormalizerInterface, DenormalizerIn * @throws MissingConstructorArgumentsException */ - protected function instantiateObject(array &$data, string $class, array &$context, \ReflectionClass $reflectionClass, array|bool $allowedAttributes, ?string $format = null) @@ -11521,62 +11372,69 @@ diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php --- a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php -@@ -144,5 +144,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer +@@ -146,5 +146,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer * @return bool */ - public function supportsNormalization(mixed $data, ?string $format = null /* , array $context = [] */) + public function supportsNormalization(mixed $data, ?string $format = null /* , array $context = [] */): bool { return \is_object($data) && !$data instanceof \Traversable; -@@ -152,5 +152,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer +@@ -154,5 +154,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer * @return array|string|int|float|bool|\ArrayObject|null */ - public function normalize(mixed $object, ?string $format = null, array $context = []) + public function normalize(mixed $object, ?string $format = null, array $context = []): array|string|int|float|bool|\ArrayObject|null { $context['_read_attributes'] = true; -@@ -235,5 +235,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer +@@ -236,5 +236,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer * @return object */ - protected function instantiateObject(array &$data, string $class, array &$context, \ReflectionClass $reflectionClass, array|bool $allowedAttributes, ?string $format = null) + protected function instantiateObject(array &$data, string $class, array &$context, \ReflectionClass $reflectionClass, array|bool $allowedAttributes, ?string $format = null): object { if ($class !== $mappedClass = $this->getMappedClass($data, $class, $context)) { -@@ -286,5 +286,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer +@@ -287,5 +287,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer * @return string[] */ - abstract protected function extractAttributes(object $object, ?string $format = null, array $context = []); + abstract protected function extractAttributes(object $object, ?string $format = null, array $context = []): array; /** -@@ -293,5 +293,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer +@@ -294,5 +294,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer * @return mixed */ - abstract protected function getAttributeValue(object $object, string $attribute, ?string $format = null, array $context = []); + abstract protected function getAttributeValue(object $object, string $attribute, ?string $format = null, array $context = []): mixed; /** -@@ -300,5 +300,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer +@@ -301,5 +301,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer * @return bool */ - public function supportsDenormalization(mixed $data, string $type, ?string $format = null /* , array $context = [] */) + public function supportsDenormalization(mixed $data, string $type, ?string $format = null /* , array $context = [] */): bool { return class_exists($type) || (interface_exists($type, false) && null !== $this->classDiscriminatorResolver?->getMappingForClass($type)); -@@ -308,5 +308,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer +@@ -309,5 +309,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer * @return mixed */ - public function denormalize(mixed $data, string $type, ?string $format = null, array $context = []) + public function denormalize(mixed $data, string $type, ?string $format = null, array $context = []): mixed { $context['_read_attributes'] = false; -@@ -430,5 +430,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer +@@ -442,5 +442,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer * @return void */ - abstract protected function setAttributeValue(object $object, string $attribute, mixed $value, ?string $format = null, array $context = []); + abstract protected function setAttributeValue(object $object, string $attribute, mixed $value, ?string $format = null, array $context = []): void; /** +@@ -786,5 +786,5 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer + } + +- protected function getAllowedAttributes(string|object $classOrObject, array $context, bool $attributesAsString = false) ++ protected function getAllowedAttributes(string|object $classOrObject, array $context, bool $attributesAsString = false): array|bool + { + if (false === $allowedAttributes = parent::getAllowedAttributes($classOrObject, $context, $attributesAsString)) { diff --git a/src/Symfony/Component/Serializer/Normalizer/DenormalizableInterface.php b/src/Symfony/Component/Serializer/Normalizer/DenormalizableInterface.php --- a/src/Symfony/Component/Serializer/Normalizer/DenormalizableInterface.php +++ b/src/Symfony/Component/Serializer/Normalizer/DenormalizableInterface.php @@ -11615,14 +11473,14 @@ diff --git a/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php --- a/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php -@@ -168,5 +168,5 @@ class GetSetMethodNormalizer extends AbstractObjectNormalizer +@@ -175,5 +175,5 @@ class GetSetMethodNormalizer extends AbstractObjectNormalizer * @return void */ - protected function setAttributeValue(object $object, string $attribute, mixed $value, ?string $format = null, array $context = []) + protected function setAttributeValue(object $object, string $attribute, mixed $value, ?string $format = null, array $context = []): void { $setter = 'set'.$attribute; -@@ -182,5 +182,5 @@ class GetSetMethodNormalizer extends AbstractObjectNormalizer +@@ -189,5 +189,5 @@ class GetSetMethodNormalizer extends AbstractObjectNormalizer } - protected function isAllowedAttribute($classOrObject, string $attribute, ?string $format = null, array $context = []) @@ -11668,14 +11526,14 @@ diff --git a/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php --- a/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php -@@ -156,5 +156,5 @@ class ObjectNormalizer extends AbstractObjectNormalizer +@@ -131,5 +131,5 @@ class ObjectNormalizer extends AbstractObjectNormalizer * @return void */ - protected function setAttributeValue(object $object, string $attribute, mixed $value, ?string $format = null, array $context = []) + protected function setAttributeValue(object $object, string $attribute, mixed $value, ?string $format = null, array $context = []): void { try { -@@ -189,5 +189,5 @@ class ObjectNormalizer extends AbstractObjectNormalizer +@@ -140,5 +140,5 @@ class ObjectNormalizer extends AbstractObjectNormalizer } - protected function isAllowedAttribute($classOrObject, string $attribute, ?string $format = null, array $context = []) @@ -11685,7 +11543,7 @@ diff --git a/src/Symfony/Component/Serializer/Normalizer/PropertyNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/PropertyNormalizer.php --- a/src/Symfony/Component/Serializer/Normalizer/PropertyNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/PropertyNormalizer.php -@@ -191,5 +191,5 @@ class PropertyNormalizer extends AbstractObjectNormalizer +@@ -196,5 +196,5 @@ class PropertyNormalizer extends AbstractObjectNormalizer * @return void */ - protected function setAttributeValue(object $object, string $attribute, mixed $value, ?string $format = null, array $context = []) @@ -11738,7 +11596,7 @@ diff --git a/src/Symfony/Component/Stopwatch/StopwatchEvent.php b/src/Symfony/Component/Stopwatch/StopwatchEvent.php --- a/src/Symfony/Component/Stopwatch/StopwatchEvent.php +++ b/src/Symfony/Component/Stopwatch/StopwatchEvent.php -@@ -120,5 +120,5 @@ class StopwatchEvent +@@ -118,5 +118,5 @@ class StopwatchEvent * @return void */ - public function ensureStopped() @@ -11758,7 +11616,7 @@ diff --git a/src/Symfony/Component/String/UnicodeString.php b/src/Symfony/Component/String/UnicodeString.php --- a/src/Symfony/Component/String/UnicodeString.php +++ b/src/Symfony/Component/String/UnicodeString.php -@@ -366,5 +366,5 @@ class UnicodeString extends AbstractUnicodeString +@@ -404,5 +404,5 @@ class UnicodeString extends AbstractUnicodeString * @return void */ - public function __wakeup() @@ -12220,28 +12078,28 @@ + public function addResource(ResourceInterface $resource): void { $this->resources[$resource->__toString()] = $resource; -@@ -254,5 +254,5 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf +@@ -264,5 +264,5 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf * @return void */ - public function setMetadata(string $key, mixed $value, string $domain = 'messages') + public function setMetadata(string $key, mixed $value, string $domain = 'messages'): void { $this->metadata[$domain][$key] = $value; -@@ -262,5 +262,5 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf +@@ -272,5 +272,5 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf * @return void */ - public function deleteMetadata(string $key = '', string $domain = 'messages') + public function deleteMetadata(string $key = '', string $domain = 'messages'): void { if ('' == $domain) { -@@ -295,5 +295,5 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf +@@ -305,5 +305,5 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf * @return void */ - public function setCatalogueMetadata(string $key, mixed $value, string $domain = 'messages') + public function setCatalogueMetadata(string $key, mixed $value, string $domain = 'messages'): void { $this->catalogueMetadata[$domain][$key] = $value; -@@ -303,5 +303,5 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf +@@ -313,5 +313,5 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf * @return void */ - public function deleteCatalogueMetadata(string $key = '', string $domain = 'messages') @@ -12386,14 +12244,14 @@ + protected function initializeCatalogue(string $locale): void { $this->assertValidLocale($locale); -@@ -388,5 +388,5 @@ EOF +@@ -386,5 +386,5 @@ class Translator implements TranslatorInterface, TranslatorBagInterface, LocaleA * @return array */ - protected function computeFallbackLocales(string $locale) + protected function computeFallbackLocales(string $locale): array { $this->parentLocales ??= json_decode(file_get_contents(__DIR__.'/Resources/data/parents.json'), true); -@@ -436,5 +436,5 @@ EOF +@@ -434,5 +434,5 @@ class Translator implements TranslatorInterface, TranslatorBagInterface, LocaleA * @throws InvalidArgumentException If the locale contains invalid characters */ - protected function assertValidLocale(string $locale) @@ -13079,7 +12937,7 @@ diff --git a/src/Symfony/Component/Validator/Constraints/UrlValidator.php b/src/Symfony/Component/Validator/Constraints/UrlValidator.php --- a/src/Symfony/Component/Validator/Constraints/UrlValidator.php +++ b/src/Symfony/Component/Validator/Constraints/UrlValidator.php -@@ -49,5 +49,5 @@ class UrlValidator extends ConstraintValidator +@@ -56,5 +56,5 @@ class UrlValidator extends ConstraintValidator * @return void */ - public function validate(mixed $value, Constraint $constraint) @@ -13270,7 +13128,7 @@ diff --git a/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php b/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php --- a/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php +++ b/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php -@@ -294,5 +294,5 @@ abstract class ConstraintValidatorTestCase extends TestCase +@@ -305,5 +305,5 @@ abstract class ConstraintValidatorTestCase extends TestCase * @psalm-return T */ - abstract protected function createValidator(); @@ -14059,7 +13917,7 @@ - public static function castHttpClient($client, array $a, Stub $stub, bool $isNested) + public static function castHttpClient($client, array $a, Stub $stub, bool $isNested): array { - $multiKey = sprintf("\0%s\0multi", $client::class); + $multiKey = \sprintf("\0%s\0multi", $client::class); @@ -66,5 +66,5 @@ class SymfonyCaster * @return array */ @@ -14074,14 +13932,14 @@ + public static function castLazyObjectState($state, array $a, Stub $stub, bool $isNested): array { if (!$isNested) { -@@ -109,5 +109,5 @@ class SymfonyCaster +@@ -111,5 +111,5 @@ class SymfonyCaster * @return array */ - public static function castUuid(Uuid $uuid, array $a, Stub $stub, bool $isNested) + public static function castUuid(Uuid $uuid, array $a, Stub $stub, bool $isNested): array { $a[Caster::PREFIX_VIRTUAL.'toBase58'] = $uuid->toBase58(); -@@ -125,5 +125,5 @@ class SymfonyCaster +@@ -127,5 +127,5 @@ class SymfonyCaster * @return array */ - public static function castUlid(Ulid $ulid, array $a, Stub $stub, bool $isNested) @@ -14354,28 +14212,28 @@ + protected function getDumpHeader(): string { $this->headerIsDumped = $this->outputStream ?? $this->lineDumper; -@@ -789,5 +789,5 @@ EOHTML +@@ -785,5 +785,5 @@ class HtmlDumper extends CliDumper * @return void */ - public function dumpString(Cursor $cursor, string $str, bool $bin, int $cut) + public function dumpString(Cursor $cursor, string $str, bool $bin, int $cut): void { if ('' === $str && isset($cursor->attr['img-data'], $cursor->attr['content-type'])) { -@@ -807,5 +807,5 @@ EOHTML +@@ -803,5 +803,5 @@ class HtmlDumper extends CliDumper * @return void */ - public function enterHash(Cursor $cursor, int $type, string|int|null $class, bool $hasChild) + public function enterHash(Cursor $cursor, int $type, string|int|null $class, bool $hasChild): void { if (Cursor::HASH_OBJECT === $type) { -@@ -838,5 +838,5 @@ EOHTML +@@ -834,5 +834,5 @@ class HtmlDumper extends CliDumper * @return void */ - public function leaveHash(Cursor $cursor, int $type, string|int|null $class, bool $hasChild, int $cut) + public function leaveHash(Cursor $cursor, int $type, string|int|null $class, bool $hasChild, int $cut): void { $this->dumpEllipsis($cursor, $hasChild, $cut); -@@ -954,5 +954,5 @@ EOHTML +@@ -957,5 +957,5 @@ class HtmlDumper extends CliDumper * @return void */ - protected function dumpLine(int $depth, bool $endOfValue = false) @@ -14405,7 +14263,7 @@ diff --git a/src/Symfony/Component/VarExporter/Internal/Hydrator.php b/src/Symfony/Component/VarExporter/Internal/Hydrator.php --- a/src/Symfony/Component/VarExporter/Internal/Hydrator.php +++ b/src/Symfony/Component/VarExporter/Internal/Hydrator.php -@@ -258,5 +258,5 @@ class Hydrator +@@ -273,5 +273,5 @@ class Hydrator * @return array */ - public static function getPropertyScopes($class) @@ -14466,7 +14324,7 @@ - public function onTransition(Event $event) + public function onTransition(Event $event): void { - $this->logger->info(sprintf('Transition "%s" for subject of class "%s" in workflow "%s".', $event->getTransition()->getName(), $event->getSubject()::class, $event->getWorkflowName())); + $this->logger->info(\sprintf('Transition "%s" for subject of class "%s" in workflow "%s".', $event->getTransition()->getName(), $event->getSubject()::class, $event->getWorkflowName())); @@ -49,5 +49,5 @@ class AuditTrailListener implements EventSubscriberInterface * @return void */ diff -Nru symfony-6.4.21+dfsg/.github/patch-types.php symfony-6.4.41+dfsg/.github/patch-types.php --- symfony-6.4.21+dfsg/.github/patch-types.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/patch-types.php 2026-05-27 08:23:35.000000000 +0000 @@ -50,6 +50,7 @@ case false !== strpos($file, '/src/Symfony/Component/Form/Tests/Fixtures/Answer.php'): case false !== strpos($file, '/src/Symfony/Component/Form/Tests/Fixtures/Number.php'): case false !== strpos($file, '/src/Symfony/Component/Form/Tests/Fixtures/Suit.php'): + case false !== strpos($file, '/src/Symfony/Component/PropertyAccess/Tests/Fixtures/AsymmetricVisibility.php'): case false !== strpos($file, '/src/Symfony/Component/PropertyInfo/Tests/Fixtures/'): case false !== strpos($file, '/src/Symfony/Component/PropertyInfo/Tests/Fixtures/Php81Dummy.php'): case false !== strpos($file, '/src/Symfony/Component/Runtime/Internal/ComposerPlugin.php'): diff -Nru symfony-6.4.21+dfsg/.github/psalm/.gitignore symfony-6.4.41+dfsg/.github/psalm/.gitignore --- symfony-6.4.21+dfsg/.github/psalm/.gitignore 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/psalm/.gitignore 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -* -!.gitignore -!stubs -!stubs/* diff -Nru symfony-6.4.21+dfsg/.github/psalm/psalm.baseline.xml symfony-6.4.41+dfsg/.github/psalm/psalm.baseline.xml --- symfony-6.4.21+dfsg/.github/psalm/psalm.baseline.xml 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/psalm/psalm.baseline.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru symfony-6.4.21+dfsg/.github/sa-tools/.gitignore symfony-6.4.41+dfsg/.github/sa-tools/.gitignore --- symfony-6.4.21+dfsg/.github/sa-tools/.gitignore 1970-01-01 00:00:00.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/sa-tools/.gitignore 2026-05-27 08:23:35.000000000 +0000 @@ -0,0 +1,6 @@ +* +!.gitignore +!psalm.baseline.xml +!phpstan.baseline.neon +!stubs +!stubs/* diff -Nru symfony-6.4.21+dfsg/.github/sa-tools/phpstan.baseline.neon symfony-6.4.41+dfsg/.github/sa-tools/phpstan.baseline.neon --- symfony-6.4.21+dfsg/.github/sa-tools/phpstan.baseline.neon 1970-01-01 00:00:00.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/sa-tools/phpstan.baseline.neon 2026-05-27 08:23:35.000000000 +0000 @@ -0,0 +1,2 @@ +parameters: + ignoreErrors: [] diff -Nru symfony-6.4.21+dfsg/.github/sa-tools/psalm.baseline.xml symfony-6.4.41+dfsg/.github/sa-tools/psalm.baseline.xml --- symfony-6.4.21+dfsg/.github/sa-tools/psalm.baseline.xml 1970-01-01 00:00:00.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/sa-tools/psalm.baseline.xml 2026-05-27 08:23:35.000000000 +0000 @@ -0,0 +1,3 @@ + + + diff -Nru symfony-6.4.21+dfsg/.github/workflows/fabbot.yml symfony-6.4.41+dfsg/.github/workflows/fabbot.yml --- symfony-6.4.21+dfsg/.github/workflows/fabbot.yml 1970-01-01 00:00:00.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/workflows/fabbot.yml 2026-05-27 08:23:35.000000000 +0000 @@ -0,0 +1,15 @@ +name: CS + +on: + pull_request: + +permissions: + contents: read + +jobs: + call-fabbot: + name: Fabbot + uses: symfony-tools/fabbot/.github/workflows/fabbot.yml@main + with: + package: Symfony + check_license: true diff -Nru symfony-6.4.21+dfsg/.github/workflows/integration-tests.yml symfony-6.4.41+dfsg/.github/workflows/integration-tests.yml --- symfony-6.4.21+dfsg/.github/workflows/integration-tests.yml 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/workflows/integration-tests.yml 2026-05-27 08:23:35.000000000 +0000 @@ -1,7 +1,7 @@ name: Integration on: - push: + push: { branches: [ '*.*' ] } pull_request: defaults: @@ -34,7 +34,7 @@ env: POSTGRES_PASSWORD: 'password' ldap: - image: bitnami/openldap + image: bitnamilegacy/openldap ports: - 3389:3389 env: @@ -74,7 +74,7 @@ env: STANDALONE: 1 redis-sentinel: - image: bitnami/redis-sentinel:6.2.8 + image: bitnamilegacy/redis-sentinel:6.2.8 ports: - 26379:26379 env: @@ -82,7 +82,7 @@ REDIS_MASTER_SET: redis_sentinel REDIS_SENTINEL_QUORUM: 1 redis-primary: - image: bitnami/redis:latest + image: bitnamilegacy/redis:latest ports: - 16381:6379 env: @@ -91,7 +91,7 @@ options: >- --name=redis-primary redis-replica: - image: bitnami/redis:latest + image: bitnamilegacy/redis:latest ports: - 16382:6379 env: @@ -128,7 +128,7 @@ zookeeper: image: zookeeper kafka: - image: bitnami/kafka:3.7 + image: bitnamilegacy/kafka:3.7 ports: - 9092:9092 env: @@ -208,7 +208,7 @@ with: coverage: "none" extensions: "json,couchbase-3.2.2,memcached,mongodb-1.12.0,redis,rdkafka,xsl,ldap,relay" - ini-values: date.timezone=UTC,memory_limit=-1,default_socket_timeout=10,session.gc_probability=0,apc.enable_cli=1,zend.assertions=1 + ini-values: date.timezone=UTC,memory_limit=-1,default_socket_timeout=10,session.gc_probability=0,apc.enable_cli=1,zend.assertions=1,intl.default_locale=en,intl.error_level=0 php-version: "${{ matrix.php }}" tools: pecl @@ -218,7 +218,7 @@ php -i - name: Load fixtures - uses: docker://bitnami/openldap + uses: docker://bitnamilegacy/openldap with: entrypoint: /bin/bash args: -c "(/opt/bitnami/openldap/bin/ldapwhoami -H ldap://ldap:3389 -D cn=admin,dc=symfony,dc=com -w symfony||sleep 5) && /opt/bitnami/openldap/bin/ldapadd -H ldap://ldap:3389 -D cn=admin,dc=symfony,dc=com -w symfony -f src/Symfony/Component/Ldap/Tests/Fixtures/data/fixtures.ldif && /opt/bitnami/openldap/bin/ldapdelete -H ldap://ldap:3389 -D cn=admin,dc=symfony,dc=com -w symfony cn=a,ou=users,dc=symfony,dc=com" @@ -261,6 +261,7 @@ REDIS_SENTINEL_SERVICE: redis_sentinel REDIS_REPLICATION_HOSTS: 'localhost:16382 localhost:16381' MESSENGER_REDIS_DSN: redis://127.0.0.1:7006/messages + MESSENGER_REDIS_SENTINEL_MASTER: redis_sentinel MESSENGER_AMQP_DSN: amqp://localhost/%2f/messages MESSENGER_SQS_DSN: "sqs://localhost:4566/messages?sslmode=disable&poll_timeout=0.01" MESSENGER_SQS_FIFO_QUEUE_DSN: "sqs://localhost:4566/messages.fifo?sslmode=disable&poll_timeout=0.01" diff -Nru symfony-6.4.21+dfsg/.github/workflows/intl-data-tests.yml symfony-6.4.41+dfsg/.github/workflows/intl-data-tests.yml --- symfony-6.4.21+dfsg/.github/workflows/intl-data-tests.yml 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/workflows/intl-data-tests.yml 2026-05-27 08:23:35.000000000 +0000 @@ -2,6 +2,7 @@ on: push: + branches: [ '*.*' ] paths: - 'src/Symfony/Component/Intl/*.php' - 'src/Symfony/Component/Intl/Util/GitRepository.php' @@ -56,7 +57,7 @@ with: coverage: "none" extensions: "zip,intl-${{env.SYMFONY_ICU_VERSION}}" - ini-values: "memory_limit=-1" + ini-values: memory_limit=-1,intl.default_locale=en,intl.error_level=0 php-version: "8.1" - name: Install dependencies diff -Nru symfony-6.4.21+dfsg/.github/workflows/phpunit-bridge.yml symfony-6.4.41+dfsg/.github/workflows/phpunit-bridge.yml --- symfony-6.4.21+dfsg/.github/workflows/phpunit-bridge.yml 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/workflows/phpunit-bridge.yml 2026-05-27 08:23:35.000000000 +0000 @@ -2,6 +2,7 @@ on: push: + branches: [ '*.*' ] paths: - 'src/Symfony/Bridge/PhpUnit/**' pull_request: diff -Nru symfony-6.4.21+dfsg/.github/workflows/psalm.yml symfony-6.4.41+dfsg/.github/workflows/psalm.yml --- symfony-6.4.21+dfsg/.github/workflows/psalm.yml 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/workflows/psalm.yml 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -name: Psalm - -on: - pull_request: ~ - -defaults: - run: - shell: bash - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -permissions: - contents: read - -jobs: - psalm: - name: Psalm - runs-on: ubuntu-24.04 - - env: - php-version: '8.1' - steps: - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ env.php-version }} - ini-values: "memory_limit=-1" - coverage: none - - - name: Checkout target branch - uses: actions/checkout@v4 - with: - ref: ${{ github.base_ref }} - - - name: Checkout PR - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - COMPOSER_HOME="$(composer config home)" - ([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json" - export COMPOSER_ROOT_VERSION=$(grep ' VERSION = ' src/Symfony/Component/HttpKernel/Kernel.php | grep -P -o '[0-9]+\.[0-9]+').x-dev - composer remove --dev --no-update --no-interaction symfony/phpunit-bridge - composer require --no-progress --ansi --no-plugins psalm/phar:@stable phpunit/phpunit:^9.5 php-http/discovery psr/event-dispatcher mongodb/mongodb jetbrains/phpstorm-stubs - - - name: Generate Psalm baseline - run: | - git checkout composer.json - git checkout -m ${{ github.base_ref }} - - # @todo intersection types are broken in Psalm - # @see https://github.com/vimeo/psalm/issues/7520 - sed -i 's/Uuid&/Uuid|/' src/Symfony/Component/Uid/Factory/TimeBasedUuidFactory.php - sed -i 's/Interface&/Interface|/' src/Symfony/Component/HttpFoundation/Session/Storage/Handler/MigratingSessionHandler.php - ./vendor/bin/psalm.phar --set-baseline=.github/psalm/psalm.baseline.xml --no-progress - git checkout -m FETCH_HEAD - - - name: Psalm - run: | - ./vendor/bin/psalm.phar --no-progress || ./vendor/bin/psalm.phar --output-format=github --no-progress diff -Nru symfony-6.4.21+dfsg/.github/workflows/scorecards.yml symfony-6.4.41+dfsg/.github/workflows/scorecards.yml --- symfony-6.4.21+dfsg/.github/workflows/scorecards.yml 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/workflows/scorecards.yml 2026-05-27 08:23:35.000000000 +0000 @@ -6,7 +6,7 @@ schedule: - cron: '34 4 * * 6' push: - branches: [ "7.3" ] + branches: [ "8.2" ] # Declare default permissions as read only. permissions: read-all diff -Nru symfony-6.4.21+dfsg/.github/workflows/static-analysis.yml symfony-6.4.41+dfsg/.github/workflows/static-analysis.yml --- symfony-6.4.21+dfsg/.github/workflows/static-analysis.yml 1970-01-01 00:00:00.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/workflows/static-analysis.yml 2026-05-27 08:23:35.000000000 +0000 @@ -0,0 +1,94 @@ +name: Static Analysis + +on: + pull_request: ~ + +defaults: + run: + shell: bash + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + psalm: + name: Psalm + runs-on: ubuntu-24.04 + + env: + php-version: '8.1' + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ env.php-version }} + ini-values: memory_limit=-1,intl.default_locale=en,intl.error_level=0 + coverage: none + + - name: Checkout target branch + uses: actions/checkout@v6 + with: + ref: ${{ github.base_ref }} + + - name: Install dependencies + run: | + COMPOSER_HOME="$(composer config home)" + ([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json" + export COMPOSER_ROOT_VERSION=$(grep ' VERSION = ' src/Symfony/Component/HttpKernel/Kernel.php | grep -P -o '[0-9]+\.[0-9]+').x-dev + composer remove --dev --no-update --no-interaction symfony/phpunit-bridge + composer require --no-progress --ansi --no-plugins psalm/phar:@stable phpunit/phpunit:^9.5 php-http/discovery psr/event-dispatcher mongodb/mongodb jetbrains/phpstorm-stubs + + - name: Generate Psalm baseline + run: ./vendor/bin/psalm.phar --set-baseline=.github/sa-tools/psalm.baseline.xml --no-progress + + - name: Switch to PR + run: | + git checkout composer.json + git fetch --depth=1 origin '+${{ github.event.pull_request.head.sha }}' + git checkout -m FETCH_HEAD + + - name: Psalm + run: ./vendor/bin/psalm.phar --no-progress || ./vendor/bin/psalm.phar --output-format=github --no-progress + + phpstan: + name: PHPStan + runs-on: ubuntu-24.04 + + env: + php-version: '8.1' + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ env.php-version }} + ini-values: memory_limit=-1,intl.default_locale=en,intl.error_level=0 + coverage: none + + - name: Checkout target branch + uses: actions/checkout@v6 + with: + ref: ${{ github.base_ref }} + + - name: Install dependencies + run: | + COMPOSER_HOME="$(composer config home)" + ([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json" + export COMPOSER_ROOT_VERSION=$(grep ' VERSION = ' src/Symfony/Component/HttpKernel/Kernel.php | grep -P -o '[0-9]+\.[0-9]+').x-dev + composer remove --dev --no-update --no-interaction symfony/phpunit-bridge + composer require --no-progress --ansi --no-plugins phpstan/phpstan:@stable phpstan/phpstan-deprecation-rules:@stable phpunit/phpunit:^9.5 php-http/discovery psr/event-dispatcher mongodb/mongodb + + - name: Generate PHPStan baseline + run: ./vendor/bin/phpstan analyse --generate-baseline=.github/sa-tools/phpstan.baseline.neon --allow-empty-baseline --no-progress + + - name: Switch to PR + run: | + git checkout composer.json + git fetch --depth=1 origin '+${{ github.event.pull_request.head.sha }}' + git checkout -m FETCH_HEAD + + - name: PHPStan + run: ./vendor/bin/phpstan analyse --no-progress || ./vendor/bin/phpstan analyse --error-format=github --no-progress diff -Nru symfony-6.4.21+dfsg/.github/workflows/unit-tests.yml symfony-6.4.41+dfsg/.github/workflows/unit-tests.yml --- symfony-6.4.21+dfsg/.github/workflows/unit-tests.yml 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/workflows/unit-tests.yml 2026-05-27 08:23:35.000000000 +0000 @@ -1,7 +1,7 @@ name: Unit Tests on: - push: + push: { branches: [ '*.*' ] } pull_request: defaults: @@ -27,14 +27,14 @@ matrix: include: - php: '8.1' - - php: '8.2' + - php: '8.4' mode: high-deps - php: '8.2' mode: low-deps - php: '8.3' - php: '8.4' - php: '8.5' - #mode: experimental + - php: '8.6' fail-fast: false runs-on: ubuntu-24.04 @@ -49,7 +49,7 @@ uses: shivammathur/setup-php@v2 with: coverage: "none" - ini-values: date.timezone=UTC,memory_limit=-1,default_socket_timeout=10,session.gc_probability=0,apc.enable_cli=1,zend.assertions=1 + ini-values: date.timezone=UTC,memory_limit=-1,default_socket_timeout=10,session.gc_probability=0,apc.enable_cli=1,zend.assertions=1,intl.default_locale=en,intl.error_level=0 php-version: "${{ matrix.php }}" extensions: "${{ matrix.extensions || env.extensions }}" tools: flex @@ -67,7 +67,7 @@ ([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json" echo COLUMNS=120 >> $GITHUB_ENV - echo PHPUNIT="$(pwd)/phpunit --exclude-group tty,benchmark,intl-data,integration" >> $GITHUB_ENV + echo PHPUNIT="$(pwd)/phpunit --exclude-group tty,benchmark,intl-data,integration,transient" >> $GITHUB_ENV echo COMPOSER_UP='composer update --no-progress --ansi'$([[ "${{ matrix.mode }}" != low-deps ]] && echo ' --ignore-platform-req=php+') >> $GITHUB_ENV SYMFONY_VERSIONS=$(git ls-remote -q --heads | cut -f2 | grep -o '/[1-9][0-9]*\.[0-9].*' | sort -V) @@ -92,7 +92,7 @@ # Create local composer packages for each patched components and reference them in composer.json files when cross-testing components if [[ ! "${{ matrix.mode }}" = *-deps ]]; then - php .github/build-packages.php HEAD^ $SYMFONY_VERSION src/Symfony/Bridge/PhpUnit + php .github/build-packages.php HEAD^ $SYMFONY_VERSION src/Symfony/Bridge/PhpUnit else echo SYMFONY_DEPRECATIONS_HELPER=weak >> $GITHUB_ENV cp composer.json composer.json.orig @@ -181,7 +181,7 @@ echo -e "\n\\e[32mOK\\e[0m $title\\n\\n::endgroup::" fi - [[ "${{ matrix.mode }}" = experimental ]] || (exit $ok) + exit $ok } export -f _run_tests @@ -212,7 +212,7 @@ export SYMFONY_REQUIRE=">=$SYMFONY_VERSION" git fetch --depth=2 origin $SYMFONY_VERSION git checkout -m FETCH_HEAD - PATCHED_COMPONENTS=$(echo "$PATCHED_COMPONENTS" | xargs dirname | xargs -n1 -I{} bash -c "[ -e '{}/phpunit.xml.dist' ] && echo '{}'" | sort || true) + PATCHED_COMPONENTS=$(echo "$PATCHED_COMPONENTS" | xargs dirname | xargs -I{} bash -c "[ -e '{}/phpunit.xml.dist' ] && echo '{}'" | sort || true) if [[ $PATCHED_COMPONENTS ]]; then echo "::group::install phpunit" ./phpunit install diff -Nru symfony-6.4.21+dfsg/.github/workflows/windows.yml symfony-6.4.41+dfsg/.github/workflows/windows.yml --- symfony-6.4.21+dfsg/.github/workflows/windows.yml 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.github/workflows/windows.yml 2026-05-27 08:23:35.000000000 +0000 @@ -1,7 +1,7 @@ name: Windows on: - push: + push: { branches: [ '*.*' ] } pull_request: concurrency: @@ -43,13 +43,15 @@ run: | $env:Path = 'c:\php;' + $env:Path mkdir c:\php && cd c:\php - iwr -outf php-8.1.0-Win32-vs16-x86.zip https://github.com/symfony/binary-utils/releases/download/v0.1/php-8.1.0-Win32-vs16-x86.zip - 7z x php-8.1.0-Win32-vs16-x86.zip -y >nul + iwr -outf php.zip https://github.com/symfony/binary-utils/releases/download/v0.1/php-8.1.0-Win32-vs16-x86.zip + 7z x php.zip -y >nul cd ext - iwr -outf php_apcu-5.1.21-8.1-ts-vs16-x86.zip https://github.com/symfony/binary-utils/releases/download/v0.1/php_apcu-5.1.21-8.1-ts-vs16-x86.zip - 7z x php_apcu-5.1.21-8.1-ts-vs16-x86.zip -y >nul - iwr -outf php_redis-5.3.7-8.1-ts-vs16-x86.zip https://github.com/symfony/binary-utils/releases/download/v0.1/php_redis-5.3.7-8.1-ts-vs16-x86.zip - 7z x php_redis-5.3.7-8.1-ts-vs16-x86.zip -y >nul + iwr -outf php_apcu.zip https://github.com/symfony/binary-utils/releases/download/v0.1/php_apcu-5.1.21-8.1-ts-vs16-x86.zip + 7z x php_apcu.zip -y >nul + iwr -outf php_igbinary.zip https://github.com/symfony/binary-utils/releases/download/v0.1/php_igbinary-3.2.16-8.1-ts-vs16-x86.zip + 7z x php_igbinary.zip -y >nul + iwr -outf php_redis.zip https://github.com/symfony/binary-utils/releases/download/v0.1/php_redis-5.3.7-8.1-ts-vs16-x86.zip + 7z x php_redis.zip -y >nul cd .. Copy php.ini-development php.ini-min "memory_limit=-1" >> php.ini-min @@ -66,6 +68,7 @@ "opcache.enable_cli=1" >> php.ini-max "extension=php_openssl.dll" >> php.ini-max "extension=php_apcu.dll" >> php.ini-max + "extension=php_igbinary.dll" >> php.ini-max "extension=php_redis.dll" >> php.ini-max "apc.enable_cli=1" >> php.ini-max "extension=php_intl.dll" >> php.ini-max @@ -73,6 +76,8 @@ "extension=php_pdo_sqlite.dll" >> php.ini-max "extension=php_curl.dll" >> php.ini-max "extension=php_sodium.dll" >> php.ini-max + "intl.default_locale=en" >> php.ini-max + "intl.error_level=0" >> php.ini-max Copy php.ini-max php.ini cd ${{ github.workspace }} iwr -outf composer.phar https://getcomposer.org/download/latest-stable/composer.phar diff -Nru symfony-6.4.21+dfsg/.php-cs-fixer.dist.php symfony-6.4.41+dfsg/.php-cs-fixer.dist.php --- symfony-6.4.21+dfsg/.php-cs-fixer.dist.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/.php-cs-fixer.dist.php 2026-05-27 08:23:35.000000000 +0000 @@ -13,35 +13,40 @@ exit(0); } -$fileHeaderComment = <<<'EOF' -This file is part of the Symfony package. +$fileHeaderParts = [ + <<<'EOF' + This file is part of the Symfony package. -(c) Fabien Potencier + (c) Fabien Potencier -For the full copyright and license information, please view the LICENSE -file that was distributed with this source code. -EOF; + EOF, + <<<'EOF' + + For the full copyright and license information, please view the LICENSE + file that was distributed with this source code. + EOF, +]; return (new PhpCsFixer\Config()) - // @see https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/7777 ->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect()) ->setRules([ - '@PHP71Migration' => true, - '@PHPUnit75Migration:risky' => true, + '@PHP8x1Migration' => true, // take lowest version from `git grep -h '"php"' **/composer.json | uniq | sort` + '@PHP8x1Migration:risky' => true, + '@PHPUnit9x1Migration:risky' => true, // take version from src/Symfony/Bridge/PhpUnit/phpunit.xml.dist#L4 '@Symfony' => true, '@Symfony:risky' => true, - 'protected_to_private' => false, - 'no_superfluous_phpdoc_tags' => [ - 'remove_inheritdoc' => true, - 'allow_unused_params' => true, // for future-ready params, to be replaced with https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/7377 + 'header_comment' => [ + 'header' => implode('', $fileHeaderParts), + 'validator' => implode('', [ + '/', + preg_quote($fileHeaderParts[0], '/'), + '(?P.*)??', + preg_quote($fileHeaderParts[1], '/'), + '/s', + ]), ], - 'header_comment' => ['header' => $fileHeaderComment], - // TODO: Remove once the "compiler_optimized" set includes "sprintf" - 'native_function_invocation' => ['include' => ['@compiler_optimized', 'sprintf'], 'scope' => 'namespaced', 'strict' => true], - 'nullable_type_declaration' => true, - 'nullable_type_declaration_for_default_null_value' => true, - 'modernize_strpos' => true, - 'get_class_to_class_keyword' => true, + 'modern_serialization_methods' => false, + 'void_return' => false, ]) ->setRiskyAllowed(true) ->setFinder( @@ -50,33 +55,18 @@ ->append([__FILE__]) ->notPath('#/Fixtures/#') ->exclude([ - // explicit trigger_error tests - 'Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/', + 'Symfony/Bridge/PhpUnit/', + 'Symfony/Component/Emoji/Resources/', 'Symfony/Component/Intl/Resources/data/', ]) - // explicit tests for ommited @param type, against `no_superfluous_phpdoc_tags` - ->notPath('Symfony/Component/PropertyInfo/Tests/Extractor/PhpDocExtractorTest.php') - ->notPath('Symfony/Component/PropertyInfo/Tests/Extractor/PhpStanExtractorTest.php') // Support for older PHPunit version - ->notPath('Symfony/Bridge/PhpUnit/SymfonyTestsListener.php') ->notPath('#Symfony/Bridge/PhpUnit/.*Mock\.php#') ->notPath('#Symfony/Bridge/PhpUnit/.*Legacy#') - // file content autogenerated by `var_export` - ->notPath('Symfony/Component/Translation/Tests/Fixtures/resources.php') - // explicit trigger_error tests - ->notPath('Symfony/Component/ErrorHandler/Tests/DebugClassLoaderTest.php') - // stop removing spaces on the end of the line in strings - ->notPath('Symfony/Component/Messenger/Tests/Command/FailedMessagesShowCommandTest.php') // auto-generated proxies - ->notPath('Symfony/Component/Cache/Traits/RelayProxy.php') - ->notPath('Symfony/Component/Cache/Traits/Redis5Proxy.php') - ->notPath('Symfony/Component/Cache/Traits/Redis6Proxy.php') - ->notPath('Symfony/Component/Cache/Traits/RedisCluster5Proxy.php') - ->notPath('Symfony/Component/Cache/Traits/RedisCluster6Proxy.php') + ->notPath('#Symfony/Component/Cache/Traits/Re.*Proxy\.php#') // svg ->notPath('Symfony/Component/ErrorHandler/Resources/assets/images/symfony-ghost.svg.php') // HTML templates ->notPath('#Symfony/.*\.html\.php#') ) - ->setCacheFile('.php-cs-fixer.cache') ; diff -Nru symfony-6.4.21+dfsg/CHANGELOG-6.4.md symfony-6.4.41+dfsg/CHANGELOG-6.4.md --- symfony-6.4.21+dfsg/CHANGELOG-6.4.md 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/CHANGELOG-6.4.md 2026-05-27 08:23:35.000000000 +0000 @@ -7,6 +7,576 @@ To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v6.4.0...v6.4.1 +* 6.4.41 (2026-05-27) + + * security #cve-2026-48761 [HtmlSanitizer] Sanitize URL attributes on , , '; + $this->assertSame('', $sanitizer->sanitize($input)); + + $sanitizer = new HtmlSanitizer((new HtmlSanitizerConfig()) + ->allowElement('iframe', '*') + ->allowAttribute('srcdoc', 'iframe') + ->forceAttribute('iframe', 'sandbox', '') + ); + $input = ''; + $this->assertSame('', $sanitizer->sanitize($input)); + } + public function testUnlimitedLength() { $sanitizer = new HtmlSanitizer((new HtmlSanitizerConfig())->withMaxInputLength(-1)); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerConfigTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerConfigTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerConfigTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerConfigTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -109,7 +109,7 @@ $config = new HtmlSanitizerConfig(); $config = $config->allowElement('div', '*'); $this->assertSame(['div'], array_keys($config->getAllowedElements())); - $this->assertCount(211, $config->getAllowedElements()['div']); + $this->assertCount(210, $config->getAllowedElements()['div']); $this->assertSame([], $config->getBlockedElements()); } @@ -269,7 +269,7 @@ { $config = new HtmlSanitizerConfig(); - $sanitizer = new class() implements AttributeSanitizerInterface { + $sanitizer = new class implements AttributeSanitizerInterface { public function getSupportedElements(): ?array { return null; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerCustomTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerCustomTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerCustomTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerCustomTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -232,11 +232,18 @@ { $config = (new HtmlSanitizerConfig()) ->allowElement('div') + ->allowElement('img', '*') ->allowElement('a', ['href']) ->forceAttribute('a', 'rel', 'noopener noreferrer') + ->forceAttribute('img', 'loading', 'lazy') ; $this->assertSame( + '', + $this->sanitize($config, '') + ); + + $this->assertSame( 'Hello world', $this->sanitize($config, 'Hello world') ); @@ -250,6 +257,11 @@ '
Hello
world', $this->sanitize($config, '
Hello
world') ); + + $this->assertSame( + 'Hello world', + $this->sanitize($config, 'Hello world') + ); } public function testForceHttps() @@ -311,6 +323,24 @@ ); } + public function testAreaUsesLinkPolicy() + { + $config = (new HtmlSanitizerConfig()) + ->allowElement('area', ['href']) + ->allowLinkHosts(['trusted.com']) + ; + + $this->assertSame( + '', + $this->sanitize($config, '') + ); + + $this->assertSame( + '', + $this->sanitize($config, '') + ); + } + public function testAllowLinksRelative() { $config = (new HtmlSanitizerConfig()) @@ -393,11 +423,164 @@ ); } + public function testActionAttributeIsSanitized() + { + $config = (new HtmlSanitizerConfig()) + ->allowElement('form', ['action']) + ; + + $this->assertSame( + '
Hello world
', + $this->sanitize($config, '
Hello world
') + ); + + $this->assertSame( + '
Hello world
', + $this->sanitize($config, '
Hello world
') + ); + + $this->assertSame( + '
Hello world
', + $this->sanitize($config, '
Hello world
') + ); + } + + public function testFormactionAttributeIsSanitized() + { + $config = (new HtmlSanitizerConfig()) + ->allowElement('button', ['formaction']) + ->allowElement('input', ['type', 'formaction']) + ; + + $this->assertSame( + '', + $this->sanitize($config, '') + ); + + $this->assertSame( + '', + $this->sanitize($config, '') + ); + + $this->assertSame( + '', + $this->sanitize($config, '') + ); + } + + public function testPosterAttributeIsSanitized() + { + $config = (new HtmlSanitizerConfig()) + ->allowElement('video', ['poster']) + ; + + $this->assertSame( + '', + $this->sanitize($config, '') + ); + + $this->assertSame( + '', + $this->sanitize($config, '') + ); + } + + public function testCiteAttributeIsSanitized() + { + $config = (new HtmlSanitizerConfig()) + ->allowElement('blockquote', ['cite']) + ->allowElement('q', ['cite']) + ; + + $this->assertSame( + '
Hello world
', + $this->sanitize($config, '
Hello world
') + ); + + $this->assertSame( + 'Hello world', + $this->sanitize($config, 'Hello world') + ); + } + + /** + * @dataProvider provideUrlAttributesSanitizedAcrossEmbeddingElements + */ + public function testUrlAttributesAreSanitizedAcrossEmbeddingElements(string $element, string $attribute, string $input, string $expected) + { + $config = (new HtmlSanitizerConfig()) + ->allowElement($element, [$attribute]) + ; + + $this->assertSame($expected, $this->sanitize($config, $input)); + } + + public static function provideUrlAttributesSanitizedAcrossEmbeddingElements(): iterable + { + yield 'object data javascript:' => [ + 'object', 'data', + 'x', + 'x', + ]; + yield 'object data http kept' => [ + 'object', 'data', + 'x', + 'x', + ]; + yield 'applet codebase javascript:' => [ + 'applet', 'codebase', + 'x', + 'x', + ]; + yield 'applet archive javascript:' => [ + 'applet', 'archive', + 'x', + 'x', + ]; + yield 'object codebase javascript:' => [ + 'object', 'codebase', + 'x', + 'x', + ]; + yield 'iframe longdesc javascript:' => [ + 'iframe', 'longdesc', + '', + '', + ]; + yield 'img longdesc javascript:' => [ + 'img', 'longdesc', + '', + '', + ]; + } + + public function testMetaRefreshContentIsSanitized() + { + $config = (new HtmlSanitizerConfig()) + ->allowElement('meta', ['http-equiv', 'content']) + ; + + $this->assertSame( + '', + (new HtmlSanitizer($config))->sanitizeFor('head', '') + ); + + $this->assertSame( + '', + (new HtmlSanitizer($config))->sanitizeFor('head', '') + ); + + $this->assertSame( + '', + (new HtmlSanitizer($config))->sanitizeFor('head', '') + ); + } + public function testCustomAttributeSanitizer() { $config = (new HtmlSanitizerConfig()) ->allowElement('div', ['data-attr']) - ->withAttributeSanitizer(new class() implements AttributeSanitizerInterface { + ->withAttributeSanitizer(new class implements AttributeSanitizerInterface { public function getSupportedElements(): ?array { return ['div']; @@ -421,6 +604,45 @@ ); } + public function testWildcardAttributeSanitizerIsCalled() + { + $config = (new HtmlSanitizerConfig()) + ->allowElement('div', ['data-foo', 'data-bar']) + ->withAttributeSanitizer(new class implements AttributeSanitizerInterface { + public function getSupportedElements(): ?array + { + return null; + } + + public function getSupportedAttributes(): ?array + { + return null; + } + + public function sanitizeAttribute(string $element, string $attribute, string $value, HtmlSanitizerConfig $config): ?string + { + return strrev($value); + } + }) + ; + + $this->assertSame( + '
Hello world
', + $this->sanitize($config, '
Hello world
') + ); + } + + public function testMaxInputLengthIsAppliedToTextContext() + { + $config = (new HtmlSanitizerConfig()); + + $input = str_repeat('A', $config->getMaxInputLength() + 100); + $expected = str_repeat('A', $config->getMaxInputLength()); + + $this->assertSame($expected, (new HtmlSanitizer($config))->sanitizeFor('textarea', $input)); + $this->assertSame($expected, (new HtmlSanitizer($config))->sanitizeFor('title', $input)); + } + private function sanitize(HtmlSanitizerConfig $config, string $input): string { return (new HtmlSanitizer($config))->sanitize($input); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -283,6 +283,42 @@ 'expected' => 'https://trusted.com/link.php', ]; + yield [ + 'input' => 'https://evil\\@trusted.com/', + 'allowedSchemes' => ['https'], + 'allowedHosts' => ['trusted.com'], + 'forceHttps' => false, + 'allowRelative' => false, + 'expected' => null, + ]; + + yield [ + 'input' => 'https:/evil.com/', + 'allowedSchemes' => ['https'], + 'allowedHosts' => ['trusted.com'], + 'forceHttps' => false, + 'allowRelative' => true, + 'expected' => null, + ]; + + yield [ + 'input' => 'https:///evil.com/', + 'allowedSchemes' => ['https'], + 'allowedHosts' => ['trusted.com'], + 'forceHttps' => false, + 'allowRelative' => true, + 'expected' => null, + ]; + + yield [ + 'input' => 'https:\\evil.com', + 'allowedSchemes' => ['https'], + 'allowedHosts' => ['trusted.com'], + 'forceHttps' => false, + 'allowRelative' => true, + 'expected' => null, + ]; + // Allow relative yield [ 'input' => '/link.php', @@ -369,7 +405,7 @@ " :foo.com \n" => null, ' foo.com ' => null, 'a: foo.com' => null, - 'http://f:21/ b ? d # e ' => null, + 'http://f:21/ b ? d # e ' => ['scheme' => 'http', 'host' => 'f'], 'lolscheme:x x#x x' => null, 'http://f:/c' => ['scheme' => 'http', 'host' => 'f'], 'http://f:0/c' => ['scheme' => 'http', 'host' => 'f'], @@ -443,7 +479,7 @@ 'javascript:example.com/' => ['scheme' => 'javascript', 'host' => null], 'mailto:example.com/' => ['scheme' => 'mailto', 'host' => null], '/a/b/c' => ['scheme' => null, 'host' => null], - '/a/ /c' => null, + '/a/ /c' => ['scheme' => null, 'host' => null], '/a%2fc' => ['scheme' => null, 'host' => null], '/a/%2f/c' => ['scheme' => null, 'host' => null], '#β' => ['scheme' => null, 'host' => null], @@ -503,10 +539,10 @@ 'http://example.com/@asdf%40' => ['scheme' => 'http', 'host' => 'example.com'], 'http://example.com/你好你好' => ['scheme' => 'http', 'host' => 'example.com'], 'http://example.com/‥/foo' => ['scheme' => 'http', 'host' => 'example.com'], - "http://example.com/\u{feff}/foo" => ['scheme' => 'http', 'host' => 'example.com'], + "http://example.com/\u{feff}/foo" => null, "http://example.com\u{002f}\u{202e}\u{002f}\u{0066}\u{006f}\u{006f}\u{002f}\u{202d}\u{002f}\u{0062}\u{0061}\u{0072}\u{0027}\u{0020}" => null, 'http://www.google.com/foo?bar=baz#' => ['scheme' => 'http', 'host' => 'www.google.com'], - 'http://www.google.com/foo?bar=baz# »' => null, + 'http://www.google.com/foo?bar=baz# »' => ['scheme' => 'http', 'host' => 'www.google.com'], 'data:test# »' => null, 'http://www.google.com' => ['scheme' => 'http', 'host' => 'www.google.com'], 'http://192.0x00A80001' => ['scheme' => 'http', 'host' => '192.0x00A80001'], @@ -561,7 +597,7 @@ 'file:..' => ['scheme' => 'file', 'host' => null], 'file:a' => ['scheme' => 'file', 'host' => null], 'http://ExAmPlE.CoM' => ['scheme' => 'http', 'host' => 'ExAmPlE.CoM'], - "http://GOO\u{200b}\u{2060}\u{feff}goo.com" => ['scheme' => 'http', 'host' => "GOO\u{200b}\u{2060}\u{feff}goo.com"], + "http://GOO\u{200b}\u{2060}\u{feff}goo.com" => null, 'http://www.foo。bar.com' => ['scheme' => 'http', 'host' => 'www.foo。bar.com'], 'https://x/�?�#�' => ['scheme' => 'https', 'host' => 'x'], 'http://Go.com' => ['scheme' => 'http', 'host' => 'Go.com'], @@ -810,6 +846,41 @@ 'a\\/\\/' => ['scheme' => null, 'host' => null], 'test-a-colon.html' => ['scheme' => null, 'host' => null], 'test-a-colon-b.html' => ['scheme' => null, 'host' => null], + 'https://example.com/path with space' => ['scheme' => 'https', 'host' => 'example.com'], + 'https://example.com:80/path with space' => ['scheme' => 'https', 'host' => 'example.com'], + 'example.com/path with space' => ['scheme' => null, 'host' => null], + 'https://user@example.com/path with space' => ['scheme' => 'https', 'host' => 'example.com'], + 'https://user with space@www.example.com/path with space' => null, + 'https://example.com?query=with space' => ['scheme' => 'https', 'host' => 'example.com'], + '//example.com/path with space' => ['scheme' => null, 'host' => 'example.com'], + '/file with space.html' => ['scheme' => null, 'host' => null], + 'file with space.html' => ['scheme' => null, 'host' => null], + 'mailto:foo bar@example.com' => null, + 'https://[::1]/path with space' => ['scheme' => 'https', 'host' => '[::1]'], + "http://example.com/foo\u{202E}bar" => null, + "http://example.com/foo\u{202D}bar with space" => null, + "http://example.com/\u{2066}bar with space" => null, + "http://example.com/\u{2069}bar" => null, + "http://example.com\u{202E}/foo" => null, + + // Percent-encoded BiDi formatting characters must also be rejected + 'http://example.com/login.html#%E2%80%AE/moc.lave.www//:ptth' => null, + 'http://example.com/x?q=%E2%80%AD' => null, + 'http://example.com/?r=%E2%80%AB' => null, + 'http://example.com/#%E2%81%A6' => null, + 'http://example.com/?p=%E2%81%A9' => null, + 'http://example.com/%e2%80%ae/x' => null, + + // Unicode whitespace must be rejected (raw and percent-encoded) + "http://example.com/foo\u{00A0}bar" => null, + "http://example.com/\u{2028}bar" => null, + "http://example.com/\u{2029}bar" => null, + "http://example.com/\u{3000}bar" => null, + "http://example.com/\u{205F}bar" => null, + "http://example.com/\u{FEFF}bar" => null, + 'http://example.com/foo%C2%A0bar' => null, + 'http://example.com/%E2%80%A8bar' => null, + 'http://example.com/%E3%80%80bar' => null, ]; foreach ($urls as $url => $expected) { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php 2026-05-27 08:23:35.000000000 +0000 @@ -20,6 +20,13 @@ final class UrlSanitizer { /** + * Characters with no legitimate place in a URL: explicit-direction BiDi + * formatting marks plus Unicode whitespace and the zero-width no-break + * space. ASCII space is tolerated and percent-encoded by parse(). + */ + private const DENIED_CHARS_PATTERN = '/[\t\n\v\f\r\x{0085}\x{00A0}\x{1680}\x{2000}-\x{200A}\x{2028}\x{2029}\x{202F}\x{205F}\x{3000}\x{FEFF}\x{202A}-\x{202E}\x{2066}-\x{2069}]/u'; + + /** * Sanitizes a given URL string. * * In addition to ensuring $input is a valid URL, this sanitizer checks that: @@ -35,6 +42,10 @@ return null; } + if (false !== strpbrk($input, '\\') || preg_match('~^(?:https?|ftp|wss?):(/[^/]|///)~i', $input)) { + return null; + } + $url = self::parse($input); // Malformed URL @@ -76,7 +87,7 @@ /** * Parses a given URL and returns an array of its components. * - * @return null|array{ + * @return array{ * scheme:?string, * user:?string, * pass:?string, @@ -85,7 +96,7 @@ * path:string, * query:?string, * fragment:?string - * } + * }|null */ public static function parse(string $url): ?array { @@ -94,16 +105,56 @@ } try { - $parsedUrl = UriString::parse($url); + // Reject explicit-direction BiDi formatting characters and non-space + // whitespace: they have no legitimate place in a URL and enable + // visual spoofing of the rendered href when the URL is later + // embedded in HTML or decoded by a downstream consumer. + if (preg_match(self::DENIED_CHARS_PATTERN, $url)) { + return null; + } + + // Browsers tolerate spaces inside path/query/fragment by transparently + // percent-encoding them. Mirror that behavior, but never inside the + // scheme or authority (where spaces are illegal); the whitespace check + // below rejects any space that didn't fit in the encoded slice. + if (str_contains($url, ' ')) { + if (str_starts_with($url, ' ')) { + return null; + } + + if (false !== $i = strpos($url, '://')) { + $i += 3 + strcspn($url, '/?#', $i + 3); + } elseif (str_starts_with($url, '//')) { + $i = 2 + strcspn($url, '/?#', 2); + } elseif (preg_match('#^[a-z][a-z0-9+.\-]*:#i', $url)) { + // Hostless scheme (data:, mailto:, …): leave the URL untouched + // and let the whitespace check reject it. + $i = \strlen($url); + } else { + $i = 0; + } + + $url = substr($url, 0, $i).str_replace(' ', '%20', substr($url, $i)); + } if (preg_match('/\s/', $url)) { return null; } + $parsedUrl = UriString::parse($url); + if (isset($parsedUrl['host']) && self::decodeUnreservedCharacters($parsedUrl['host']) !== $parsedUrl['host']) { return null; } + // Reject denied characters reachable via percent-encoding in any + // component; otherwise the upfront check is bypassed by encoding. + foreach (['user', 'pass', 'host', 'path', 'query', 'fragment'] as $part) { + if (isset($parsedUrl[$part]) && preg_match(self::DENIED_CHARS_PATTERN, rawurldecode($parsedUrl[$part]))) { + return null; + } + } + return $parsedUrl; } catch (SyntaxError) { return null; @@ -112,7 +163,7 @@ private static function isHostlessScheme(?string $scheme): bool { - return \in_array($scheme, ['blob', 'chrome', 'data', 'file', 'geo', 'mailto', 'maps', 'tel', 'view-source'], true); + return \in_array($scheme, ['blob', 'chrome', 'data', 'file', 'geo', 'mailto', 'maps', 'tel', 'sms', 'view-source'], true); } private static function isAllowedHost(?string $host, array $allowedHosts): bool @@ -136,7 +187,7 @@ { // Check each chunk of the domain is valid foreach ($trustedParts as $key => $trustedPart) { - if (!array_key_exists($key, $uriParts) || $uriParts[$key] !== $trustedPart) { + if (!\array_key_exists($key, $uriParts) || $uriParts[$key] !== $trustedPart) { return false; } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/MetaRefreshAttributeSanitizer.php symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/MetaRefreshAttributeSanitizer.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/MetaRefreshAttributeSanitizer.php 1970-01-01 00:00:00.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/MetaRefreshAttributeSanitizer.php 2026-05-27 08:23:35.000000000 +0000 @@ -0,0 +1,56 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HtmlSanitizer\Visitor\AttributeSanitizer; + +use Symfony\Component\HtmlSanitizer\HtmlSanitizerConfig; +use Symfony\Component\HtmlSanitizer\TextSanitizer\UrlSanitizer; + +/** + * Sanitizes the URL embedded in the content attribute of a + * element, since the http-equiv value is not visible from a per-attribute sanitizer. + * + * The content attribute carries an unrelated value for other meta types (description, + * keywords, generator…), which is passed through unchanged. + */ +final class MetaRefreshAttributeSanitizer implements AttributeSanitizerInterface +{ + public function getSupportedElements(): ?array + { + return ['meta']; + } + + public function getSupportedAttributes(): ?array + { + return ['content']; + } + + public function sanitizeAttribute(string $element, string $attribute, string $value, HtmlSanitizerConfig $config): ?string + { + if (!preg_match('/^(\s*\d+\s*[;,]\s*url\s*=\s*)(["\']?)(.+?)\2(\s*)$/i', $value, $m)) { + return $value; + } + + $sanitized = UrlSanitizer::sanitize( + $m[3], + $config->getAllowedLinkSchemes(), + $config->getForceHttpsUrls(), + $config->getAllowedLinkHosts(), + $config->getAllowRelativeLinks(), + ); + + if (null === $sanitized) { + return null; + } + + return $m[1].$m[2].$sanitized.$m[2].$m[4]; + } +} diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/UrlAttributeSanitizer.php symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/UrlAttributeSanitizer.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/UrlAttributeSanitizer.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/UrlAttributeSanitizer.php 2026-05-27 08:23:35.000000000 +0000 @@ -27,12 +27,12 @@ public function getSupportedAttributes(): ?array { - return ['src', 'href', 'lowsrc', 'background', 'ping']; + return ['src', 'href', 'lowsrc', 'background', 'ping', 'action', 'formaction', 'poster', 'cite', 'data', 'codebase', 'archive', 'longdesc']; } public function sanitizeAttribute(string $element, string $attribute, string $value, HtmlSanitizerConfig $config): ?string { - if ('a' === $element) { + if (\in_array($element, ['a', 'area'], true) || \in_array($attribute, ['action', 'formaction', 'cite'], true)) { return UrlSanitizer::sanitize( $value, $config->getAllowedLinkSchemes(), diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/DomVisitor.php symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/DomVisitor.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/DomVisitor.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/DomVisitor.php 2026-05-27 08:23:35.000000000 +0000 @@ -120,7 +120,7 @@ // Force configured attributes foreach ($this->forcedAttributes[$domNodeName] ?? [] as $attribute => $value) { - $node->setAttribute($attribute, $value); + $node->setAttribute($attribute, $value, true); } $cursor->node->addChild($node); @@ -164,6 +164,7 @@ $this->attributeSanitizers[$domNodeName][$name] ?? [], $this->attributeSanitizers['*'][$name] ?? [], $this->attributeSanitizers[$domNodeName]['*'] ?? [], + $this->attributeSanitizers['*']['*'] ?? [], ); foreach ($attributeSanitizers as $sanitizer) { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/Node/Node.php symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/Node/Node.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/Node/Node.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HtmlSanitizer/Visitor/Node/Node.php 2026-05-27 08:23:35.000000000 +0000 @@ -58,10 +58,10 @@ return $this->attributes[$name] ?? null; } - public function setAttribute(string $name, ?string $value): void + public function setAttribute(string $name, ?string $value, bool $override = false): void { // Always use only the first declaration (ease sanitization) - if (!\array_key_exists($name, $this->attributes)) { + if ($override || !\array_key_exists($name, $this->attributes)) { $this->attributes[$name] = $value; } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/AmpHttpClient.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/AmpHttpClient.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/AmpHttpClient.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/AmpHttpClient.php 2026-05-27 08:23:35.000000000 +0000 @@ -133,9 +133,9 @@ $request->addHeader($h[0], $h[1]); } - $request->setTcpConnectTimeout(1000 * $options['timeout']); - $request->setTlsHandshakeTimeout(1000 * $options['timeout']); - $request->setTransferTimeout(1000 * $options['max_duration']); + $request->setTcpConnectTimeout(ceil(1000 * $options['timeout'])); + $request->setTlsHandshakeTimeout(ceil(1000 * $options['timeout'])); + $request->setTransferTimeout(ceil(1000 * $options['max_duration'])); if (method_exists($request, 'setInactivityTimeout')) { $request->setInactivityTimeout(0); } @@ -166,7 +166,7 @@ foreach ($pushedResponses as [$pushedUrl, $pushDeferred]) { $pushDeferred->fail(new CancelledException()); - $this->logger?->debug(sprintf('Unused pushed response: "%s"', $pushedUrl)); + $this->logger?->debug(\sprintf('Unused pushed response: "%s"', $pushedUrl)); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/CachingHttpClient.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/CachingHttpClient.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/CachingHttpClient.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/CachingHttpClient.php 2026-05-27 08:23:35.000000000 +0000 @@ -42,7 +42,7 @@ public function __construct(HttpClientInterface $client, StoreInterface $store, array $defaultOptions = []) { if (!class_exists(HttpClientKernel::class)) { - throw new \LogicException(sprintf('Using "%s" requires the HttpKernel component, try running "composer require symfony/http-kernel".', __CLASS__)); + throw new \LogicException(\sprintf('Using "%s" requires the HttpKernel component, try running "composer require symfony/http-kernel".', __CLASS__)); } $this->client = $client; @@ -79,10 +79,14 @@ foreach ($options['normalized_headers'] as $name => $values) { if ('cookie' !== $name) { + $headerValues = []; + foreach ($values as $value) { - $request->headers->set($name, substr($value, 2 + \strlen($name)), false); + $headerValues[] = substr($value, 2 + \strlen($name)); } + $request->headers->set($name, $headerValues); + continue; } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Chunk/ErrorChunk.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Chunk/ErrorChunk.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Chunk/ErrorChunk.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Chunk/ErrorChunk.php 2026-05-27 08:23:35.000000000 +0000 @@ -93,15 +93,12 @@ return $this->didThrow; } - public function __sleep(): array + public function __serialize(): array { throw new \BadMethodCallException('Cannot serialize '.__CLASS__); } - /** - * @return void - */ - public function __wakeup() + public function __unserialize(array $data): void { throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Chunk/ServerSentEvent.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Chunk/ServerSentEvent.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Chunk/ServerSentEvent.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Chunk/ServerSentEvent.php 2026-05-27 08:23:35.000000000 +0000 @@ -45,15 +45,22 @@ $i += 1 + (' ' === ($line[1 + $i] ?? '')); switch ($field) { - case 'id': $this->id = substr($line, $i); break; - case 'event': $this->type = substr($line, $i); break; - case 'data': $this->data .= ('' === $this->data ? '' : "\n").substr($line, $i); break; + case 'id': + $this->id = substr($line, $i); + break; + case 'event': + $this->type = substr($line, $i); + break; + case 'data': + $this->data .= ('' === $this->data ? '' : "\n").substr($line, $i); + break; case 'retry': $retry = substr($line, $i); if ('' !== $retry && \strlen($retry) === strspn($retry, '0123456789')) { $this->retry = $retry / 1000.0; } + break; } } @@ -89,17 +96,17 @@ } if ('' === $this->data) { - throw new JsonException(sprintf('Server-Sent Event%s data is empty.', '' !== $this->id ? sprintf(' "%s"', $this->id) : '')); + throw new JsonException(\sprintf('Server-Sent Event%s data is empty.', '' !== $this->id ? \sprintf(' "%s"', $this->id) : '')); } try { $jsonData = json_decode($this->data, true, 512, \JSON_BIGINT_AS_STRING | \JSON_THROW_ON_ERROR); } catch (\JsonException $e) { - throw new JsonException(sprintf('Decoding Server-Sent Event%s failed: ', '' !== $this->id ? sprintf(' "%s"', $this->id) : '').$e->getMessage(), $e->getCode()); + throw new JsonException(\sprintf('Decoding Server-Sent Event%s failed: ', '' !== $this->id ? \sprintf(' "%s"', $this->id) : '').$e->getMessage(), $e->getCode()); } if (!\is_array($jsonData)) { - throw new JsonException(sprintf('JSON content was expected to decode to an array, "%s" returned in Server-Sent Event%s.', get_debug_type($jsonData), '' !== $this->id ? sprintf(' "%s"', $this->id) : '')); + throw new JsonException(\sprintf('JSON content was expected to decode to an array, "%s" returned in Server-Sent Event%s.', get_debug_type($jsonData), '' !== $this->id ? \sprintf(' "%s"', $this->id) : '')); } return $this->jsonData = $jsonData; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/CurlHttpClient.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/CurlHttpClient.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/CurlHttpClient.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/CurlHttpClient.php 2026-05-27 08:23:35.000000000 +0000 @@ -51,9 +51,6 @@ private ?LoggerInterface $logger = null; - private int $maxHostConnections; - private int $maxPendingPushes; - /** * An internal object to share state between the client and its responses. */ @@ -72,22 +69,18 @@ throw new \LogicException('You cannot use the "Symfony\Component\HttpClient\CurlHttpClient" as the "curl" extension is not installed.'); } - $this->maxHostConnections = $maxHostConnections; - $this->maxPendingPushes = $maxPendingPushes; - $this->defaultOptions['buffer'] ??= self::shouldBuffer(...); if ($defaultOptions) { [, $this->defaultOptions] = self::prepareRequest(null, null, $defaultOptions, $this->defaultOptions); } + + $this->multi = new CurlClientState($maxHostConnections, $maxPendingPushes); } public function setLogger(LoggerInterface $logger): void { - $this->logger = $logger; - if (isset($this->multi)) { - $this->multi->logger = $logger; - } + $this->logger = $this->multi->logger = $logger; } /** @@ -95,8 +88,6 @@ */ public function request(string $method, string $url, array $options = []): ResponseInterface { - $multi = $this->ensureState(); - [$url, $options] = self::prepareRequest($method, $url, $options, $this->defaultOptions); $scheme = $url['scheme']; $authority = $url['authority']; @@ -145,6 +136,7 @@ $curlopts[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0; } + $ntlmOriginKey = null; if (isset($options['auth_ntlm'])) { $curlopts[\CURLOPT_HTTPAUTH] = \CURLAUTH_NTLM; $curlopts[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1; @@ -152,17 +144,24 @@ if (\is_array($options['auth_ntlm'])) { $count = \count($options['auth_ntlm']); if ($count <= 0 || $count > 2) { - throw new InvalidArgumentException(sprintf('Option "auth_ntlm" must contain 1 or 2 elements, %d given.', $count)); + throw new InvalidArgumentException(\sprintf('Option "auth_ntlm" must contain 1 or 2 elements, %d given.', $count)); } $options['auth_ntlm'] = implode(':', $options['auth_ntlm']); } if (!\is_string($options['auth_ntlm'])) { - throw new InvalidArgumentException(sprintf('Option "auth_ntlm" must be a string or an array, "%s" given.', get_debug_type($options['auth_ntlm']))); + throw new InvalidArgumentException(\sprintf('Option "auth_ntlm" must be a string or an array, "%s" given.', get_debug_type($options['auth_ntlm']))); } $curlopts[\CURLOPT_USERPWD] = $options['auth_ntlm']; + + $ntlmOriginKey = CurlClientState::originKey($scheme, $host, $port); + + if (isset($this->multi->ntlmRequiresFreshConnection[$ntlmOriginKey])) { + $curlopts[\CURLOPT_FRESH_CONNECT] = true; + $curlopts[\CURLOPT_FORBID_REUSE] = true; + } } if (!\ZEND_THREAD_SAFE) { @@ -174,24 +173,24 @@ } // curl's resolve feature varies by host:port but ours varies by host only, let's handle this with our own DNS map - if (isset($multi->dnsCache->hostnames[$host])) { - $options['resolve'] += [$host => $multi->dnsCache->hostnames[$host]]; + if (isset($this->multi->dnsCache->hostnames[$host])) { + $options['resolve'] += [$host => $this->multi->dnsCache->hostnames[$host]]; } - if ($options['resolve'] || $multi->dnsCache->evictions) { + if ($options['resolve'] || $this->multi->dnsCache->evictions) { // First reset any old DNS cache entries then add the new ones - $resolve = $multi->dnsCache->evictions; - $multi->dnsCache->evictions = []; + $resolve = $this->multi->dnsCache->evictions; + $this->multi->dnsCache->evictions = []; if ($resolve && 0x072A00 > CurlClientState::$curlVersion['version_number']) { // DNS cache removals require curl 7.42 or higher - $multi->reset(); + $this->multi->reset(); } foreach ($options['resolve'] as $resolveHost => $ip) { $resolve[] = null === $ip ? "-$resolveHost:$port" : "$resolveHost:$port:$ip"; - $multi->dnsCache->hostnames[$resolveHost] = $ip; - $multi->dnsCache->removals["-$resolveHost:$port"] = "-$resolveHost:$port"; + $this->multi->dnsCache->hostnames[$resolveHost] = $ip; + $this->multi->dnsCache->removals["-$resolveHost:$port"] = "-$resolveHost:$port"; } $curlopts[\CURLOPT_RESOLVE] = $resolve; @@ -293,26 +292,26 @@ $curlopts += $options['extra']['curl']; } - if ($pushedResponse = $multi->pushedResponses[$url] ?? null) { - unset($multi->pushedResponses[$url]); + if ($pushedResponse = $this->multi->pushedResponses[$url] ?? null) { + unset($this->multi->pushedResponses[$url]); if (self::acceptPushForRequest($method, $options, $pushedResponse)) { - $this->logger?->debug(sprintf('Accepting pushed response: "%s %s"', $method, $url)); + $this->logger?->debug(\sprintf('Accepting pushed response: "%s %s"', $method, $url)); // Reinitialize the pushed response with request's options $ch = $pushedResponse->handle; $pushedResponse = $pushedResponse->response; - $pushedResponse->__construct($multi, $url, $options, $this->logger); + $pushedResponse->__construct($this->multi, $url, $options, $this->logger); } else { - $this->logger?->debug(sprintf('Rejecting pushed response: "%s"', $url)); + $this->logger?->debug(\sprintf('Rejecting pushed response: "%s"', $url)); $pushedResponse = null; } } if (!$pushedResponse) { $ch = curl_init(); - $this->logger?->info(sprintf('Request: "%s %s"', $method, $url)); - $curlopts += [\CURLOPT_SHARE => $multi->share]; + $this->logger?->info(\sprintf('Request: "%s %s"', $method, $url)); + $curlopts += [\CURLOPT_SHARE => $this->multi->share]; } foreach ($curlopts as $opt => $value) { @@ -321,11 +320,11 @@ } if (null !== $value && !curl_setopt($ch, $opt, $value) && \CURLOPT_CERTINFO !== $opt && (!\defined('CURLOPT_HEADEROPT') || \CURLOPT_HEADEROPT !== $opt)) { $constantName = $this->findConstantName($opt); - throw new TransportException(sprintf('Curl option "%s" is not supported.', $constantName ?? $opt)); + throw new TransportException(\sprintf('Curl option "%s" is not supported.', $constantName ?? $opt)); } } - return $pushedResponse ?? new CurlResponse($multi, $ch, $options, $this->logger, $method, self::createRedirectResolver($options, $authority), CurlClientState::$curlVersion['version_number'], $url); + return $pushedResponse ?? new CurlResponse($this->multi, $ch, $options, $this->logger, $method, self::createRedirectResolver($options, $authority), CurlClientState::$curlVersion['version_number'], $url, $ntlmOriginKey); } public function stream(ResponseInterface|iterable $responses, ?float $timeout = null): ResponseStreamInterface @@ -334,11 +333,9 @@ $responses = [$responses]; } - $multi = $this->ensureState(); - - if ($multi->handle instanceof \CurlMultiHandle) { + if ($this->multi->handle instanceof \CurlMultiHandle) { $active = 0; - while (\CURLM_CALL_MULTI_PERFORM === curl_multi_exec($multi->handle, $active)) { + while (\CURLM_CALL_MULTI_PERFORM === curl_multi_exec($this->multi->handle, $active)) { } } @@ -347,9 +344,7 @@ public function reset(): void { - if (isset($this->multi)) { - $this->multi->reset(); - } + $this->multi->reset(); } /** @@ -378,7 +373,9 @@ } } - return true; + $statusCode = $pushedResponse->response->getInfo('http_code') ?: 200; + + return $statusCode < 300 || 400 <= $statusCode; } /** @@ -388,7 +385,7 @@ { if (!$eof && \strlen($buffer) < $length) { if (!\is_string($data = $body($length))) { - throw new TransportException(sprintf('The return value of the "body" option callback must be a string, "%s" returned.', get_debug_type($data))); + throw new TransportException(\sprintf('The return value of the "body" option callback must be a string, "%s" returned.', get_debug_type($data))); } $buffer .= $data; @@ -446,16 +443,6 @@ }; } - private function ensureState(): CurlClientState - { - if (!isset($this->multi)) { - $this->multi = new CurlClientState($this->maxHostConnections, $this->maxPendingPushes); - $this->multi->logger = $this->logger; - } - - return $this->multi; - } - private function findConstantName(int $opt): ?string { $constants = array_filter(get_defined_constants(), static fn ($v, $k) => $v === $opt && 'C' === $k[0] && (str_starts_with($k, 'CURLOPT_') || str_starts_with($k, 'CURLINFO_')), \ARRAY_FILTER_USE_BOTH); @@ -551,7 +538,7 @@ foreach ($options as $opt => $optValue) { if (isset($curloptsToConfig[$opt])) { $constName = $this->findConstantName($opt) ?? $opt; - throw new InvalidArgumentException(sprintf('Cannot set "%s" with "extra.curl", use option "%s" instead.', $constName, $curloptsToConfig[$opt])); + throw new InvalidArgumentException(\sprintf('Cannot set "%s" with "extra.curl", use option "%s" instead.', $constName, $curloptsToConfig[$opt])); } if (\in_array($opt, $methodOpts)) { @@ -560,7 +547,7 @@ if (\in_array($opt, $curloptsToCheck)) { $constName = $this->findConstantName($opt) ?? $opt; - throw new InvalidArgumentException(sprintf('Cannot set "%s" with "extra.curl".', $constName)); + throw new InvalidArgumentException(\sprintf('Cannot set "%s" with "extra.curl".', $constName)); } } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/DataCollector/HttpClientDataCollector.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/DataCollector/HttpClientDataCollector.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/DataCollector/HttpClientDataCollector.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/DataCollector/HttpClientDataCollector.php 2026-05-27 08:23:35.000000000 +0000 @@ -45,8 +45,8 @@ public function lateCollect(): void { - $this->data['request_count'] = $this->data['request_count'] ?? 0; - $this->data['error_count'] = $this->data['error_count'] ?? 0; + $this->data['request_count'] ??= 0; + $this->data['error_count'] ??= 0; $this->data += ['clients' => []]; foreach ($this->clients as $name => $client) { @@ -64,7 +64,9 @@ $this->data['error_count'] += $errorCount; $this->data['clients'][$name]['error_count'] += $errorCount; - $client->reset(); + if ($traces) { + $client->reset(); + } } } @@ -201,11 +203,14 @@ $dataArg[] = '--data-raw '.$this->escapePayload($body); } elseif (\is_array($body)) { try { - $body = explode('&', self::normalizeBody($body)); + $body = self::normalizeBody($body); } catch (TransportException) { return null; } - foreach ($body as $value) { + if (!\is_string($body)) { + return null; + } + foreach (explode('&', $body) as $value) { $dataArg[] = '--data-raw '.$this->escapePayload(urldecode($value)); } } else { @@ -233,8 +238,8 @@ } if (preg_match('/^> ([A-Z]+)/', $line, $match)) { - $command[] = sprintf('--request %s', $match[1]); - $command[] = sprintf('--url %s', escapeshellarg($url)); + $command[] = \sprintf('--request %s', $match[1]); + $command[] = \sprintf('--url %s', escapeshellarg($url)); continue; } @@ -252,7 +257,7 @@ { static $useProcess; - if ($useProcess ??= function_exists('proc_open') && class_exists(Process::class)) { + if ($useProcess ??= \function_exists('proc_open') && class_exists(Process::class)) { return substr((new Process(['', $payload]))->getCommandLine(), 3); } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/EventSourceHttpClient.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/EventSourceHttpClient.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/EventSourceHttpClient.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/EventSourceHttpClient.php 2026-05-27 08:23:35.000000000 +0000 @@ -53,7 +53,7 @@ public function request(string $method, string $url, array $options = []): ResponseInterface { - $state = new class() { + $state = new class { public ?string $buffer = null; public ?string $lastEventId = null; public float $reconnectionTime; @@ -110,14 +110,12 @@ if (preg_match('/^text\/event-stream(;|$)/i', $context->getHeaders()['content-type'][0] ?? '')) { $state->buffer = ''; } elseif (null !== $lastError || (null !== $state->buffer && 200 === $context->getStatusCode())) { - throw new EventSourceException(sprintf('Response content-type is "%s" while "text/event-stream" was expected for "%s".', $context->getHeaders()['content-type'][0] ?? '', $context->getInfo('url'))); + throw new EventSourceException(\sprintf('Response content-type is "%s" while "text/event-stream" was expected for "%s".', $context->getHeaders()['content-type'][0] ?? '', $context->getInfo('url'))); } else { $context->passthru(); } - if (null === $lastError) { - yield $chunk; - } + yield $chunk; return; } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Exception/HttpExceptionTrait.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Exception/HttpExceptionTrait.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Exception/HttpExceptionTrait.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Exception/HttpExceptionTrait.php 2026-05-27 08:23:35.000000000 +0000 @@ -27,7 +27,7 @@ $this->response = $response; $code = $response->getInfo('http_code'); $url = $response->getInfo('url'); - $message = sprintf('HTTP %d returned for "%s".', $code, $url); + $message = \sprintf('HTTP %d returned for "%s".', $code, $url); $httpCodeFound = false; $isJson = false; @@ -37,7 +37,7 @@ break; } - $message = sprintf('%s returned for "%s".', $h, $url); + $message = \sprintf('%s returned for "%s".', $h, $url); $httpCodeFound = true; } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/HttpClientTrait.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/HttpClientTrait.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/HttpClientTrait.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/HttpClientTrait.php 2026-05-27 08:23:35.000000000 +0000 @@ -46,7 +46,7 @@ { if (null !== $method) { if (\strlen($method) !== strspn($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')) { - throw new InvalidArgumentException(sprintf('Invalid HTTP method "%s", only uppercase letters are accepted.', $method)); + throw new InvalidArgumentException(\sprintf('Invalid HTTP method "%s", only uppercase letters are accepted.', $method)); } if (!$method) { throw new InvalidArgumentException('The HTTP method cannot be empty.'); @@ -61,11 +61,11 @@ $options['buffer'] = static function (array $headers) use ($buffer) { if (!\is_bool($buffer = $buffer($headers))) { if (!\is_array($bufferInfo = @stream_get_meta_data($buffer))) { - throw new \LogicException(sprintf('The closure passed as option "buffer" must return bool or stream resource, got "%s".', get_debug_type($buffer))); + throw new \LogicException(\sprintf('The closure passed as option "buffer" must return bool or stream resource, got "%s".', get_debug_type($buffer))); } if (false === strpbrk($bufferInfo['mode'], 'acew+')) { - throw new \LogicException(sprintf('The stream returned by the closure passed as option "buffer" must be writeable, got mode "%s".', $bufferInfo['mode'])); + throw new \LogicException(\sprintf('The stream returned by the closure passed as option "buffer" must be writeable, got mode "%s".', $bufferInfo['mode'])); } } @@ -73,11 +73,11 @@ }; } elseif (!\is_bool($buffer)) { if (!\is_array($bufferInfo = @stream_get_meta_data($buffer))) { - throw new InvalidArgumentException(sprintf('Option "buffer" must be bool, stream resource or Closure, "%s" given.', get_debug_type($buffer))); + throw new InvalidArgumentException(\sprintf('Option "buffer" must be bool, stream resource or Closure, "%s" given.', get_debug_type($buffer))); } if (false === strpbrk($bufferInfo['mode'], 'acew+')) { - throw new InvalidArgumentException(sprintf('The stream in option "buffer" must be writeable, mode "%s" given.', $bufferInfo['mode'])); + throw new InvalidArgumentException(\sprintf('The stream in option "buffer" must be writeable, mode "%s" given.', $bufferInfo['mode'])); } } @@ -128,25 +128,25 @@ // Validate on_progress if (isset($options['on_progress']) && !\is_callable($onProgress = $options['on_progress'])) { - throw new InvalidArgumentException(sprintf('Option "on_progress" must be callable, "%s" given.', get_debug_type($onProgress))); + throw new InvalidArgumentException(\sprintf('Option "on_progress" must be callable, "%s" given.', get_debug_type($onProgress))); } if (\is_array($options['auth_basic'] ?? null)) { $count = \count($options['auth_basic']); if ($count <= 0 || $count > 2) { - throw new InvalidArgumentException(sprintf('Option "auth_basic" must contain 1 or 2 elements, "%s" given.', $count)); + throw new InvalidArgumentException(\sprintf('Option "auth_basic" must contain 1 or 2 elements, "%s" given.', $count)); } $options['auth_basic'] = implode(':', $options['auth_basic']); } if (!\is_string($options['auth_basic'] ?? '')) { - throw new InvalidArgumentException(sprintf('Option "auth_basic" must be string or an array, "%s" given.', get_debug_type($options['auth_basic']))); + throw new InvalidArgumentException(\sprintf('Option "auth_basic" must be string or an array, "%s" given.', get_debug_type($options['auth_basic']))); } if (isset($options['auth_bearer'])) { if (!\is_string($options['auth_bearer'])) { - throw new InvalidArgumentException(sprintf('Option "auth_bearer" must be a string, "%s" given.', get_debug_type($options['auth_bearer']))); + throw new InvalidArgumentException(\sprintf('Option "auth_bearer" must be a string, "%s" given.', get_debug_type($options['auth_bearer']))); } if (preg_match('{[^\x21-\x7E]}', $options['auth_bearer'])) { throw new InvalidArgumentException('Invalid character found in option "auth_bearer": '.json_encode($options['auth_bearer']).'.'); @@ -170,13 +170,14 @@ unset($options['auth_basic'], $options['auth_bearer']); // Parse base URI - if (\is_string($options['base_uri'])) { - $options['base_uri'] = self::parseUrl($options['base_uri']); + if (\is_string($baseUri = $options['base_uri'] ?? null)) { + $baseUri = self::parseUrl($baseUri); } + unset($options['base_uri']); // Validate and resolve URL $url = self::parseUrl($url, $options['query']); - $url = self::resolveUrl($url, $options['base_uri'], $defaultOptions['query'] ?? []); + $url = self::resolveUrl($url, $baseUri, $defaultOptions['query'] ?? []); } // Finalize normalization of options @@ -263,11 +264,11 @@ $msg = 'try using "%s" instead.'; } - throw new InvalidArgumentException(sprintf('Option "auth_ntlm" is not supported by "%s", '.$msg, __CLASS__, CurlHttpClient::class)); + throw new InvalidArgumentException(\sprintf('Option "auth_ntlm" is not supported by "%s", '.$msg, __CLASS__, CurlHttpClient::class)); } if ('vars' === $name) { - throw new InvalidArgumentException(sprintf('Option "vars" is not supported by "%s", try using "%s" instead.', __CLASS__, UriTemplateHttpClient::class)); + throw new InvalidArgumentException(\sprintf('Option "vars" is not supported by "%s", try using "%s" instead.', __CLASS__, UriTemplateHttpClient::class)); } $alternatives = []; @@ -278,7 +279,7 @@ } } - throw new InvalidArgumentException(sprintf('Unsupported option "%s" passed to "%s", did you mean "%s"?', $name, __CLASS__, implode('", "', $alternatives ?: array_keys($defaultOptions)))); + throw new InvalidArgumentException(\sprintf('Unsupported option "%s" passed to "%s", did you mean "%s"?', $name, __CLASS__, implode('", "', $alternatives ?: array_keys($defaultOptions)))); } return $options; @@ -300,13 +301,13 @@ if (\is_int($name)) { if (!\is_string($values)) { - throw new InvalidArgumentException(sprintf('Invalid value for header "%s": expected string, "%s" given.', $name, get_debug_type($values))); + throw new InvalidArgumentException(\sprintf('Invalid value for header "%s": expected string, "%s" given.', $name, get_debug_type($values))); } [$name, $values] = explode(':', $values, 2); $values = [ltrim($values)]; } elseif (!is_iterable($values)) { if (\is_object($values)) { - throw new InvalidArgumentException(sprintf('Invalid value for header "%s": expected string, "%s" given.', $name, get_debug_type($values))); + throw new InvalidArgumentException(\sprintf('Invalid value for header "%s": expected string, "%s" given.', $name, get_debug_type($values))); } $values = (array) $values; @@ -319,7 +320,7 @@ $normalizedHeaders[$lcName][] = $value = $name.': '.$value; if (\strlen($value) !== strcspn($value, "\r\n\0")) { - throw new InvalidArgumentException(sprintf('Invalid header: CR/LF/NUL found in "%s".', $value)); + throw new InvalidArgumentException(\sprintf('Invalid header: CR/LF/NUL found in "%s".', $value)); } } } @@ -355,6 +356,7 @@ } } }); + $caster = null; if ('' === $body = http_build_query($body, '', '&')) { return ''; @@ -392,10 +394,10 @@ $v = $streams[$v]; if (!\is_array($m = @stream_get_meta_data($v))) { - throw new TransportException(sprintf('Invalid "%s" resource found in body part "%s".', get_resource_type($v), $k)); + throw new TransportException(\sprintf('Invalid "%s" resource found in body part "%s".', get_resource_type($v), $k)); } if (feof($v)) { - throw new TransportException(sprintf('Uploaded stream ended for body part "%s".', $k)); + throw new TransportException(\sprintf('Uploaded stream ended for body part "%s".', $k)); } $m += stream_context_get_options($v)['http'] ?? []; @@ -451,7 +453,7 @@ while (null !== $h && !feof($h)) { if (false === $part = fread($h, $size)) { - throw new TransportException(sprintf('Error while reading uploaded stream for body part "%s".', $k)); + throw new TransportException(\sprintf('Error while reading uploaded stream for body part "%s".', $k)); } yield $part; @@ -500,7 +502,7 @@ } if (!\is_array(@stream_get_meta_data($body))) { - throw new InvalidArgumentException(sprintf('Option "body" must be string, stream resource, iterable or callable, "%s" given.', get_debug_type($body))); + throw new InvalidArgumentException(\sprintf('Option "body" must be string, stream resource, iterable or callable, "%s" given.', get_debug_type($body))); } return $body; @@ -533,14 +535,14 @@ 40 => ['sha1' => $fingerprint], 44 => ['pin-sha256' => [$fingerprint]], 64 => ['sha256' => $fingerprint], - default => throw new InvalidArgumentException(sprintf('Cannot auto-detect fingerprint algorithm for "%s".', $fingerprint)), + default => throw new InvalidArgumentException(\sprintf('Cannot auto-detect fingerprint algorithm for "%s".', $fingerprint)), }; } elseif (\is_array($fingerprint)) { foreach ($fingerprint as $algo => $hash) { $fingerprint[$algo] = 'pin-sha256' === $algo ? (array) $hash : str_replace(':', '', $hash); } } else { - throw new InvalidArgumentException(sprintf('Option "peer_fingerprint" must be string or array, "%s" given.', get_debug_type($fingerprint))); + throw new InvalidArgumentException(\sprintf('Option "peer_fingerprint" must be string or array, "%s" given.', get_debug_type($fingerprint))); } return $fingerprint; @@ -574,15 +576,15 @@ $givenUrl = $url; if (null !== $base && '' === ($base['scheme'] ?? '').($base['authority'] ?? '')) { - throw new InvalidArgumentException(sprintf('Invalid "base_uri" option: host or scheme is missing in "%s".', implode('', $base))); + throw new InvalidArgumentException(\sprintf('Invalid "base_uri" option: host or scheme is missing in "%s".', implode('', $base))); } if (null === $url['scheme'] && (null === $base || null === $base['scheme'])) { - throw new InvalidArgumentException(sprintf('Invalid URL: scheme is missing in "%s". Did you forget to add "http(s)://"?', implode('', $base ?? $url))); + throw new InvalidArgumentException(\sprintf('Invalid URL: scheme is missing in "%s". Did you forget to add "http(s)://"?', implode('', $base ?? $url))); } if (null === $base && '' === $url['scheme'].$url['authority']) { - throw new InvalidArgumentException(sprintf('Invalid URL: no "base_uri" option was provided and host or scheme is missing in "%s".', implode('', $url))); + throw new InvalidArgumentException(\sprintf('Invalid URL: no "base_uri" option was provided and host or scheme is missing in "%s".', implode('', $url))); } if (null !== $url['scheme']) { @@ -643,7 +645,7 @@ $tail = ''; if (false === $parts = parse_url(\strlen($url) !== strcspn($url, '?#') ? $url : $url.$tail = '#')) { - throw new InvalidArgumentException(sprintf('Malformed URL "%s".', $url)); + throw new InvalidArgumentException(\sprintf('Malformed URL "%s".', $url)); } if ($query) { @@ -663,7 +665,7 @@ if (null !== $scheme) { if (!isset($allowedSchemes[$scheme = strtolower($scheme)])) { - throw new InvalidArgumentException(sprintf('Unsupported scheme in "%s": "%s" expected.', $url, implode('" or "', array_keys($allowedSchemes)))); + throw new InvalidArgumentException(\sprintf('Unsupported scheme in "%s": "%s" expected.', $url, implode('" or "', array_keys($allowedSchemes)))); } $port = $allowedSchemes[$scheme] === $port ? 0 : $port; @@ -672,7 +674,7 @@ if (null !== $host) { if (!\defined('INTL_IDNA_VARIANT_UTS46') && preg_match('/[\x80-\xFF]/', $host)) { - throw new InvalidArgumentException(sprintf('Unsupported IDN "%s", try enabling the "intl" PHP extension or running "composer require symfony/polyfill-intl-idn".', $host)); + throw new InvalidArgumentException(\sprintf('Unsupported IDN "%s", try enabling the "intl" PHP extension or running "composer require symfony/polyfill-intl-idn".', $host)); } $host = \defined('INTL_IDNA_VARIANT_UTS46') ? idn_to_ascii($host, \IDNA_DEFAULT | \IDNA_USE_STD3_RULES | \IDNA_CHECK_BIDI | \IDNA_CHECK_CONTEXTJ | \IDNA_NONTRANSITIONAL_TO_ASCII, \INTL_IDNA_VARIANT_UTS46) ?: strtolower($host) : strtolower($host); @@ -686,11 +688,11 @@ if (str_contains($parts[$part], '%')) { // https://tools.ietf.org/html/rfc3986#section-2.3 - $parts[$part] = preg_replace_callback('/%(?:2[DE]|3[0-9]|[46][1-9A-F]|5F|[57][0-9A]|7E)++/i', fn ($m) => rawurldecode($m[0]), $parts[$part]); + $parts[$part] = preg_replace_callback('/%(?:2[DE]|3[0-9]|[46][1-9A-F]|5F|[57][0-9A]|7E)++/i', static fn ($m) => rawurldecode($m[0]), $parts[$part]); } // https://tools.ietf.org/html/rfc3986#section-3.3 - $parts[$part] = preg_replace_callback("#[^-A-Za-z0-9._~!$&/'()[\]*+,;=:@{}%]++#", fn ($m) => rawurlencode($m[0]), $parts[$part]); + $parts[$part] = preg_replace_callback("#[^-A-Za-z0-9._~!$&/'()[\]*+,;=:@{}%]++#", static fn ($m) => rawurlencode($m[0]), $parts[$part]); } return [ @@ -811,7 +813,7 @@ } elseif ('https' === $proxy['scheme']) { $proxyUrl = 'ssl://'.$proxy['host'].':'.($proxy['port'] ?? '443'); } else { - throw new TransportException(sprintf('Unsupported proxy scheme "%s": "http" or "https" expected.', $proxy['scheme'])); + throw new TransportException(\sprintf('Unsupported proxy scheme "%s": "http" or "https" expected.', $proxy['scheme'])); } $noProxy ??= $_SERVER['no_proxy'] ?? $_SERVER['NO_PROXY'] ?? ''; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/HttplugClient.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/HttplugClient.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/HttplugClient.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/HttplugClient.php 2026-05-27 08:23:35.000000000 +0000 @@ -114,7 +114,7 @@ public function sendAsyncRequest(RequestInterface $request): HttplugPromise { if (!$promisePool = $this->promisePool) { - throw new \LogicException(sprintf('You cannot use "%s()" as the "guzzlehttp/promises" package is not installed. Try running "composer require guzzlehttp/promises".', __METHOD__)); + throw new \LogicException(\sprintf('You cannot use "%s()" as the "guzzlehttp/promises" package is not installed. Try running "composer require guzzlehttp/promises".', __METHOD__)); } try { @@ -165,7 +165,7 @@ } elseif (class_exists(Request::class)) { $request = new Request($method, $uri); } else { - throw new \LogicException(sprintf('You cannot use "%s()" as no PSR-17 factories have been found. Try running "composer require php-http/discovery psr/http-factory-implementation:*".', __METHOD__)); + throw new \LogicException(\sprintf('You cannot use "%s()" as no PSR-17 factories have been found. Try running "composer require php-http/discovery psr/http-factory-implementation:*".', __METHOD__)); } $request = $request @@ -198,7 +198,7 @@ } elseif (\is_resource($content)) { $stream = $this->streamFactory->createStreamFromResource($content); } else { - throw new \InvalidArgumentException(sprintf('"%s()" expects string, resource or StreamInterface, "%s" given.', __METHOD__, get_debug_type($content))); + throw new \InvalidArgumentException(\sprintf('"%s()" expects string, resource or StreamInterface, "%s" given.', __METHOD__, get_debug_type($content))); } if ($stream->isSeekable()) { @@ -247,15 +247,15 @@ return new Uri($uri); } - throw new \LogicException(sprintf('You cannot use "%s()" as no PSR-17 factories have been found. Try running "composer require php-http/discovery psr/http-factory-implementation:*".', __METHOD__)); + throw new \LogicException(\sprintf('You cannot use "%s()" as no PSR-17 factories have been found. Try running "composer require php-http/discovery psr/http-factory-implementation:*".', __METHOD__)); } - public function __sleep(): array + public function __serialize(): array { throw new \BadMethodCallException('Cannot serialize '.__CLASS__); } - public function __wakeup(): void + public function __unserialize(array $data): void { throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Internal/AmpBody.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Internal/AmpBody.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Internal/AmpBody.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Internal/AmpBody.php 2026-05-27 08:23:35.000000000 +0000 @@ -139,7 +139,7 @@ } if (!\is_string($data)) { - throw new TransportException(sprintf('Return value of the "body" option callback must be string, "%s" returned.', get_debug_type($data))); + throw new TransportException(\sprintf('Return value of the "body" option callback must be string, "%s" returned.', get_debug_type($data))); } return new Success($data); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Internal/AmpClientState.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Internal/AmpClientState.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Internal/AmpClientState.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Internal/AmpClientState.php 2026-05-27 08:23:35.000000000 +0000 @@ -144,7 +144,7 @@ $options['capture_peer_cert_chain'] && $context = $context->withPeerCapturing(); $options['crypto_method'] && $context = $context->withMinimumVersion($options['crypto_method']); - $connector = $handleConnector = new class() implements Connector { + $connector = $handleConnector = new class implements Connector { public DnsConnector $connector; public string $uri; /** @var resource|null */ @@ -201,11 +201,11 @@ if ($this->maxPendingPushes <= \count($this->pushedResponses[$authority] ?? [])) { $fifoUrl = key($this->pushedResponses[$authority]); unset($this->pushedResponses[$authority][$fifoUrl]); - $this->logger?->debug(sprintf('Evicting oldest pushed response: "%s"', $fifoUrl)); + $this->logger?->debug(\sprintf('Evicting oldest pushed response: "%s"', $fifoUrl)); } $url = (string) $request->getUri(); - $this->logger?->debug(sprintf('Queueing pushed response: "%s"', $url)); + $this->logger?->debug(\sprintf('Queueing pushed response: "%s"', $url)); $this->pushedResponses[$authority][] = [$url, $deferred, $request, $response, [ 'proxy' => $options['proxy'], 'bindto' => $options['bindto'], diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Internal/AmpListener.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Internal/AmpListener.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Internal/AmpListener.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Internal/AmpListener.php 2026-05-27 08:23:35.000000000 +0000 @@ -89,7 +89,7 @@ $this->info['primary_port'] = $stream->getRemoteAddress()->getPort(); $this->info['pretransfer_time'] = microtime(true) - $this->info['start_time']; - $this->info['debug'] .= sprintf("* Connected to %s (%s) port %d\n", $request->getUri()->getHost(), $host, $this->info['primary_port']); + $this->info['debug'] .= \sprintf("* Connected to %s (%s) port %d\n", $request->getUri()->getHost(), $host, $this->info['primary_port']); if ((isset($this->info['peer_certificate_chain']) || $this->pinSha256) && null !== $tlsInfo = $stream->getTlsInfo()) { foreach ($tlsInfo->getPeerCertificates() as $cert) { @@ -104,7 +104,7 @@ $pin = base64_encode(hash('sha256', $pin, true)); if (!\in_array($pin, $this->pinSha256, true)) { - throw new TransportException(sprintf('SSL public key does not match pinned public key for "%s".', $this->info['url'])); + throw new TransportException(\sprintf('SSL public key does not match pinned public key for "%s".', $this->info['url'])); } } } @@ -121,7 +121,7 @@ $requestUri = $uri->getHost().': '.($uri->getPort() ?? ('https' === $uri->getScheme() ? 443 : 80)); } - $this->info['debug'] .= sprintf("> %s %s HTTP/%s \r\n", $method, $requestUri, $request->getProtocolVersions()[0]); + $this->info['debug'] .= \sprintf("> %s %s HTTP/%s \r\n", $method, $requestUri, $request->getProtocolVersions()[0]); foreach ($request->getRawHeaders() as [$name, $value]) { $this->info['debug'] .= $name.': '.$value."\r\n"; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Internal/CurlClientState.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Internal/CurlClientState.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Internal/CurlClientState.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Internal/CurlClientState.php 2026-05-27 08:23:35.000000000 +0000 @@ -35,72 +35,98 @@ public int $execCounter = \PHP_INT_MIN; public ?LoggerInterface $logger = null; + /** @var array Indexed by self::originKey() */ + public array $ntlmRequiresFreshConnection = []; + public static array $curlVersion; - public function __construct(int $maxHostConnections, int $maxPendingPushes) - { + public function __construct( + private int $maxHostConnections, + private int $maxPendingPushes, + ) { self::$curlVersion ??= curl_version(); - - $this->handle = curl_multi_init(); $this->dnsCache = new DnsCache(); - $this->reset(); - - // Don't enable HTTP/1.1 pipelining: it forces responses to be sent in order - if (\defined('CURLPIPE_MULTIPLEX')) { - curl_multi_setopt($this->handle, \CURLMOPT_PIPELINING, \CURLPIPE_MULTIPLEX); - } - if (\defined('CURLMOPT_MAX_HOST_CONNECTIONS') && 0 < $maxHostConnections) { - $maxHostConnections = curl_multi_setopt($this->handle, \CURLMOPT_MAX_HOST_CONNECTIONS, $maxHostConnections) ? 4294967295 : $maxHostConnections; - } - if (\defined('CURLMOPT_MAXCONNECTS') && 0 < $maxHostConnections) { - curl_multi_setopt($this->handle, \CURLMOPT_MAXCONNECTS, $maxHostConnections); - } - // Skip configuring HTTP/2 push when it's unsupported or buggy, see https://bugs.php.net/77535 - if (0 >= $maxPendingPushes) { - return; - } - - // HTTP/2 push crashes before curl 7.61 - if (!\defined('CURLMOPT_PUSHFUNCTION') || 0x073D00 > self::$curlVersion['version_number'] || !(\CURL_VERSION_HTTP2 & self::$curlVersion['features'])) { - return; - } + // handle and share are initialized lazily in __get() + unset($this->handle, $this->share); + } - // Clone to prevent a circular reference - $multi = clone $this; - $multi->handle = null; - $multi->share = null; - $multi->pushedResponses = &$this->pushedResponses; - $multi->logger = &$this->logger; - $multi->handlesActivity = &$this->handlesActivity; - $multi->openHandles = &$this->openHandles; + public static function originKey(string $scheme, string $host, ?int $port = null): string + { + $scheme = strtolower(rtrim($scheme, ':')); + $port ??= 'https' === $scheme ? 443 : 80; - curl_multi_setopt($this->handle, \CURLMOPT_PUSHFUNCTION, static fn ($parent, $pushed, array $requestHeaders) => $multi->handlePush($parent, $pushed, $requestHeaders, $maxPendingPushes)); + return $scheme.'://'.strtolower($host).':'.$port; } public function reset(): void { foreach ($this->pushedResponses as $url => $response) { - $this->logger?->debug(sprintf('Unused pushed response: "%s"', $url)); + $this->logger?->debug(\sprintf('Unused pushed response: "%s"', $url)); curl_multi_remove_handle($this->handle, $response->handle); - curl_close($response->handle); + unset($this->handlesActivity[(int) $response->handle]); } $this->pushedResponses = []; $this->dnsCache->evictions = $this->dnsCache->evictions ?: $this->dnsCache->removals; $this->dnsCache->removals = $this->dnsCache->hostnames = []; + $this->ntlmRequiresFreshConnection = []; - $this->share = curl_share_init(); + unset($this->share); + } - curl_share_setopt($this->share, \CURLSHOPT_SHARE, \CURL_LOCK_DATA_DNS); - curl_share_setopt($this->share, \CURLSHOPT_SHARE, \CURL_LOCK_DATA_SSL_SESSION); + public function __get(string $name): mixed + { + if ('share' === $name) { + $this->share = curl_share_init(); - if (\defined('CURL_LOCK_DATA_CONNECT')) { - curl_share_setopt($this->share, \CURLSHOPT_SHARE, \CURL_LOCK_DATA_CONNECT); + curl_share_setopt($this->share, \CURLSHOPT_SHARE, \CURL_LOCK_DATA_DNS); + curl_share_setopt($this->share, \CURLSHOPT_SHARE, \CURL_LOCK_DATA_SSL_SESSION); + + // Don't share CURL_LOCK_DATA_CONNECT: easy handles attached to the same multi handle + // already share the connection cache, and adding it here creates a second pool that + // bypasses CURLMOPT_MAX_HOST_CONNECTIONS. + // See https://curl.se/libcurl/c/CURLSHOPT_SHARE.html#CURLLOCKDATACONNECT + + return $this->share; } + + if ('handle' === $name) { + $this->handle = curl_multi_init(); + + // Don't enable HTTP/1.1 pipelining: it forces responses to be sent in order + if (\defined('CURLPIPE_MULTIPLEX')) { + curl_multi_setopt($this->handle, \CURLMOPT_PIPELINING, \CURLPIPE_MULTIPLEX); + } + $maxHostConnections = $this->maxHostConnections; + if (\defined('CURLMOPT_MAX_HOST_CONNECTIONS') && 0 < $maxHostConnections) { + $maxHostConnections = curl_multi_setopt($this->handle, \CURLMOPT_MAX_HOST_CONNECTIONS, $maxHostConnections) ? min(50 * $maxHostConnections, 4294967295) : $maxHostConnections; + } + if (\defined('CURLMOPT_MAXCONNECTS') && 0 < $maxHostConnections) { + curl_multi_setopt($this->handle, \CURLMOPT_MAXCONNECTS, $maxHostConnections); + } + + // Skip configuring HTTP/2 push when it's unsupported or buggy, see https://bugs.php.net/77535 + if (0 < $this->maxPendingPushes && (\defined('CURLMOPT_PUSHFUNCTION') && 0x073D00 <= self::$curlVersion['version_number'] && (\CURL_VERSION_HTTP2 & self::$curlVersion['features']))) { + // Clone to prevent a circular reference + $multi = clone $this; + $multi->handle = null; + $multi->share = null; + $multi->pushedResponses = &$this->pushedResponses; + $multi->logger = &$this->logger; + $multi->handlesActivity = &$this->handlesActivity; + $multi->openHandles = &$this->openHandles; + + curl_multi_setopt($this->handle, \CURLMOPT_PUSHFUNCTION, $multi->handlePush(...)); + } + + return $this->handle; + } + + throw new \LogicException(\sprintf('Unknown property "%s" on "%s".', $name, self::class)); } - private function handlePush($parent, $pushed, array $requestHeaders, int $maxPendingPushes): int + private function handlePush($parent, $pushed, array $requestHeaders): int { $headers = []; $origin = curl_getinfo($parent, \CURLINFO_EFFECTIVE_URL); @@ -112,7 +138,7 @@ } if (!isset($headers[':method']) || !isset($headers[':scheme']) || !isset($headers[':authority']) || !isset($headers[':path'])) { - $this->logger?->debug(sprintf('Rejecting pushed response from "%s": pushed headers are invalid', $origin)); + $this->logger?->debug(\sprintf('Rejecting pushed response from "%s": pushed headers are invalid', $origin)); return \CURL_PUSH_DENY; } @@ -123,19 +149,19 @@ // but this is a MUST in the HTTP/2 RFC; let's restrict pushes to the original host, // ignoring domains mentioned as alt-name in the certificate for now (same as curl). if (!str_starts_with($origin, $url.'/')) { - $this->logger?->debug(sprintf('Rejecting pushed response from "%s": server is not authoritative for "%s"', $origin, $url)); + $this->logger?->debug(\sprintf('Rejecting pushed response from "%s": server is not authoritative for "%s"', $origin, $url)); return \CURL_PUSH_DENY; } - if ($maxPendingPushes <= \count($this->pushedResponses)) { + if ($this->maxPendingPushes <= \count($this->pushedResponses)) { $fifoUrl = key($this->pushedResponses); unset($this->pushedResponses[$fifoUrl]); - $this->logger?->debug(sprintf('Evicting oldest pushed response: "%s"', $fifoUrl)); + $this->logger?->debug(\sprintf('Evicting oldest pushed response: "%s"', $fifoUrl)); } $url .= $headers[':path'][0]; - $this->logger?->debug(sprintf('Queueing pushed response: "%s"', $url)); + $this->logger?->debug(\sprintf('Queueing pushed response: "%s"', $url)); $this->pushedResponses[$url] = new PushedResponse(new CurlResponse($this, $pushed), $headers, $this->openHandles[(int) $parent][1] ?? [], $pushed); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/MockHttpClient.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/MockHttpClient.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/MockHttpClient.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/MockHttpClient.php 2026-05-27 08:23:35.000000000 +0000 @@ -78,7 +78,7 @@ ++$this->requestsCount; if (!$response instanceof ResponseInterface) { - throw new TransportException(sprintf('The response factory passed to MockHttpClient must return/yield an instance of ResponseInterface, "%s" given.', get_debug_type($response))); + throw new TransportException(\sprintf('The response factory passed to MockHttpClient must return/yield an instance of ResponseInterface, "%s" given.', get_debug_type($response))); } return MockResponse::fromRequest($method, $url, $options, $response); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/NativeHttpClient.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/NativeHttpClient.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/NativeHttpClient.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/NativeHttpClient.php 2026-05-27 08:23:35.000000000 +0000 @@ -142,7 +142,7 @@ $maxDuration = 0 < $options['max_duration'] ? $options['max_duration'] : \INF; $onProgress = static function (...$progress) use ($onProgress, &$info, $maxDuration) { if ($info['total_time'] >= $maxDuration) { - throw new TransportException(sprintf('Max duration was reached for "%s".', implode('', $info['url']))); + throw new TransportException(\sprintf('Max duration was reached for "%s".', implode('', $info['url']))); } $progressInfo = $info; @@ -165,7 +165,7 @@ $maxDuration = $options['max_duration']; $onProgress = static function () use (&$info, $maxDuration): void { if ($info['total_time'] >= $maxDuration) { - throw new TransportException(sprintf('Max duration was reached for "%s".', implode('', $info['url']))); + throw new TransportException(\sprintf('Max duration was reached for "%s".', implode('', $info['url']))); } }; } @@ -195,7 +195,7 @@ $this->multi->dnsCache = $options['resolve'] + $this->multi->dnsCache; } - $this->logger?->info(sprintf('Request: "%s %s"', $method, implode('', $url))); + $this->logger?->info(\sprintf('Request: "%s %s"', $method, implode('', $url))); if (!isset($options['normalized_headers']['user-agent'])) { $options['headers'][] = 'User-Agent: Symfony HttpClient (Native)'; @@ -301,7 +301,7 @@ while ('' !== $data = $body(self::$CHUNK_SIZE)) { if (!\is_string($data)) { - throw new TransportException(sprintf('Return value of the "body" option callback must be string, "%s" returned.', get_debug_type($data))); + throw new TransportException(\sprintf('Return value of the "body" option callback must be string, "%s" returned.', get_debug_type($data))); } $result .= $data; @@ -340,7 +340,7 @@ $now = microtime(true); if (!$ip = gethostbynamel($host)) { - throw new TransportException(sprintf('Could not resolve host "%s".', $host)); + throw new TransportException(\sprintf('Could not resolve host "%s".', $host)); } $multi->dnsCache[$host] = $ip = $ip[0]; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/NoPrivateNetworkHttpClient.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/NoPrivateNetworkHttpClient.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/NoPrivateNetworkHttpClient.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/NoPrivateNetworkHttpClient.php 2026-05-27 08:23:35.000000000 +0000 @@ -30,12 +30,12 @@ */ final class NoPrivateNetworkHttpClient implements HttpClientInterface, LoggerAwareInterface, ResetInterface { - use HttpClientTrait; use AsyncDecoratorTrait; + use HttpClientTrait; private array $defaultOptions = self::OPTIONS_DEFAULTS; private HttpClientInterface $client; - private array|null $subnets; + private ?array $subnets; private int $ipFlags; private \ArrayObject $dnsCache; @@ -46,7 +46,7 @@ public function __construct(HttpClientInterface $client, string|array|null $subnets = null) { if (!class_exists(IpUtils::class)) { - throw new \LogicException(sprintf('You cannot use "%s" if the HttpFoundation component is not installed. Try running "composer require symfony/http-foundation".', __CLASS__)); + throw new \LogicException(\sprintf('You cannot use "%s" if the HttpFoundation component is not installed. Try running "composer require symfony/http-foundation".', __CLASS__)); } if (null === $subnets) { @@ -103,9 +103,7 @@ $redirectHeaders['with_auth'] = $redirectHeaders['no_auth'] = $options['headers']; if (isset($options['normalized_headers']['host']) || isset($options['normalized_headers']['authorization']) || isset($options['normalized_headers']['cookie'])) { - $redirectHeaders['no_auth'] = array_filter($redirectHeaders['no_auth'], static function ($h) { - return 0 !== stripos($h, 'Host:') && 0 !== stripos($h, 'Authorization:') && 0 !== stripos($h, 'Cookie:'); - }); + $redirectHeaders['no_auth'] = array_filter($redirectHeaders['no_auth'], static fn ($h) => 0 !== stripos($h, 'Host:') && 0 !== stripos($h, 'Authorization:') && 0 !== stripos($h, 'Cookie:')); } return new AsyncResponse($this->client, $method, $url, $options, static function (ChunkInterface $chunk, AsyncContext $context) use (&$method, &$options, $maxRedirects, &$redirectHeaders, $subnets, $ipFlags, $dnsCache): \Generator { @@ -135,9 +133,7 @@ unset($options['body'], $options['json']); if (isset($options['normalized_headers']['content-length']) || isset($options['normalized_headers']['content-type']) || isset($options['normalized_headers']['transfer-encoding'])) { - $filterContentHeaders = static function ($h) { - return 0 !== stripos($h, 'Content-Length:') && 0 !== stripos($h, 'Content-Type:') && 0 !== stripos($h, 'Transfer-Encoding:'); - }; + $filterContentHeaders = static fn ($h) => 0 !== stripos($h, 'Content-Length:') && 0 !== stripos($h, 'Content-Type:') && 0 !== stripos($h, 'Transfer-Encoding:'); $options['headers'] = array_filter($options['headers'], $filterContentHeaders); $redirectHeaders['no_auth'] = array_filter($redirectHeaders['no_auth'], $filterContentHeaders); $redirectHeaders['with_auth'] = array_filter($redirectHeaders['with_auth'], $filterContentHeaders); @@ -204,7 +200,7 @@ if ($ip = dns_get_record($host, \DNS_AAAA)) { $ip = $ip[0]['ipv6']; - } elseif (extension_loaded('sockets')) { + } elseif (\extension_loaded('sockets')) { if (!$info = socket_addrinfo_lookup($host, 0, ['ai_socktype' => \SOCK_STREAM, 'ai_family' => \AF_INET6])) { return $host; } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Psr18Client.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Psr18Client.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Psr18Client.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Psr18Client.php 2026-05-27 08:23:35.000000000 +0000 @@ -132,7 +132,7 @@ return new Request($method, $uri); } - throw new \LogicException(sprintf('You cannot use "%s()" as no PSR-17 factories have been found. Try running "composer require php-http/discovery psr/http-factory-implementation:*".', __METHOD__)); + throw new \LogicException(\sprintf('You cannot use "%s()" as no PSR-17 factories have been found. Try running "composer require php-http/discovery psr/http-factory-implementation:*".', __METHOD__)); } public function createStream(string $content = ''): StreamInterface @@ -174,7 +174,7 @@ return new Uri($uri); } - throw new \LogicException(sprintf('You cannot use "%s()" as no PSR-17 factories have been found. Try running "composer require php-http/discovery psr/http-factory-implementation:*".', __METHOD__)); + throw new \LogicException(\sprintf('You cannot use "%s()" as no PSR-17 factories have been found. Try running "composer require php-http/discovery psr/http-factory-implementation:*".', __METHOD__)); } public function reset(): void diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/AmpResponse.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/AmpResponse.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/AmpResponse.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/AmpResponse.php 2026-05-27 08:23:35.000000000 +0000 @@ -99,7 +99,8 @@ $throttleWatcher = null; - $this->id = $id = self::$nextId++; + $this->id = $id = self::$nextId; + self::$nextId = str_increment(self::$nextId); Loop::defer(static function () use ($request, $multi, $id, &$info, &$headers, $canceller, &$options, $onProgress, &$handle, $logger, &$pause) { return new Coroutine(self::generateResponse($request, $multi, $id, $info, $headers, $canceller, $options, $onProgress, $handle, $logger, $pause)); }); @@ -139,12 +140,12 @@ return null !== $type ? $this->info[$type] ?? null : $this->info; } - public function __sleep(): array + public function __serialize(): array { throw new \BadMethodCallException('Cannot serialize '.__CLASS__); } - public function __wakeup(): void + public function __unserialize(array $data): void { throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); } @@ -222,9 +223,9 @@ }); try { - /* @var Response $response */ + /** @var Response $response */ if (null === $response = yield from self::getPushedResponse($request, $multi, $info, $headers, $options, $logger)) { - $logger?->info(sprintf('Request: "%s %s"', $info['http_method'], $info['url'])); + $logger?->info(\sprintf('Request: "%s %s"', $info['http_method'], $info['url'])); $response = yield from self::followRedirects($request, $multi, $info, $headers, $canceller, $options, $onProgress, $handle, $logger, $pause); } @@ -288,7 +289,7 @@ return $response; } - $urlResolver = new class() { + $urlResolver = new class { use HttpClientTrait { parseUrl as public; resolveUrl as public; @@ -308,7 +309,7 @@ return $response; } - $logger?->info(sprintf('Redirecting: "%s %s"', $status, $info['url'])); + $logger?->info(\sprintf('Redirecting: "%s %s"', $status, $info['url'])); try { // Discard body of redirects @@ -328,6 +329,10 @@ $request->setTcpConnectTimeout($originRequest->getTcpConnectTimeout()); $request->setTlsHandshakeTimeout($originRequest->getTlsHandshakeTimeout()); $request->setTransferTimeout($originRequest->getTransferTimeout()); + $request->setBodySizeLimit(0); + if (method_exists($request, 'setInactivityTimeout')) { + $request->setInactivityTimeout(0); + } if (303 === $status || \in_array($status, [301, 302], true) && 'POST' === $response->getRequest()->getMethod()) { // Do like curl and browsers: turn POST to GET on 301, 302 and 303 @@ -367,7 +372,7 @@ $headers = []; } - $h = sprintf('HTTP/%s %s %s', $response->getProtocolVersion(), $response->getStatus(), $response->getReason()); + $h = \sprintf('HTTP/%s %s %s', $response->getProtocolVersion(), $response->getStatus(), $response->getReason()); $info['debug'] .= "< {$h}\r\n"; $info['response_headers'][] = $h; @@ -414,14 +419,14 @@ foreach ($response->getHeaderArray('vary') as $vary) { foreach (preg_split('/\s*+,\s*+/', $vary) as $v) { if ('*' === $v || ($pushedRequest->getHeaderArray($v) !== $request->getHeaderArray($v) && 'accept-encoding' !== strtolower($v))) { - $logger?->debug(sprintf('Skipping pushed response: "%s"', $info['url'])); + $logger?->debug(\sprintf('Skipping pushed response: "%s"', $info['url'])); continue 3; } } } $pushDeferred->resolve(); - $logger?->debug(sprintf('Accepting pushed response: "%s %s"', $info['http_method'], $info['url'])); + $logger?->debug(\sprintf('Accepting pushed response: "%s %s"', $info['http_method'], $info['url'])); self::addResponseHeaders($response, $info, $headers); unset($multi->pushedResponses[$authority][$i]); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/AsyncContext.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/AsyncContext.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/AsyncContext.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/AsyncContext.php 2026-05-27 08:23:35.000000000 +0000 @@ -167,7 +167,7 @@ } if (0 < ($info['max_duration'] ?? 0) && 0 < ($info['total_time'] ?? 0)) { if (0 >= $options['max_duration'] = $info['max_duration'] - $info['total_time']) { - throw new TransportException(sprintf('Max duration was reached for "%s".', $info['url'])); + throw new TransportException(\sprintf('Max duration was reached for "%s".', $info['url'])); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/AsyncResponse.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/AsyncResponse.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/AsyncResponse.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/AsyncResponse.php 2026-05-27 08:23:35.000000000 +0000 @@ -40,6 +40,7 @@ private $passthru; private ?\Iterator $stream = null; private ?int $yieldedState = null; + private bool $hasThrown = false; /** * @param ?callable(ChunkInterface, AsyncContext): ?\Iterator $passthru @@ -64,7 +65,7 @@ while (true) { foreach (self::stream([$response], $timeout) as $chunk) { - if ($chunk->isTimeout() && $response->passthru) { + if ($chunk->isTimeout() && ($response->passthru || $response = self::findInnerPassthru($response))) { // Timeouts thrown during initialization are transport errors foreach (self::passthru($response->client, $response, new ErrorChunk($response->offset, new TransportException($chunk->getError()))) as $chunk) { if ($chunk->isFirst()) { @@ -187,7 +188,7 @@ { $httpException = null; - if ($this->initializer && null === $this->getInfo('error')) { + if ($this->initializer && null === $this->getInfo('error') && !$this->hasThrown) { try { self::initialize($this, -0.0); $this->getHeaders(true); @@ -225,7 +226,7 @@ foreach ($responses as $r) { if (!$r instanceof self) { - throw new \TypeError(sprintf('"%s::stream()" expects parameter 1 to be an iterable of AsyncResponse objects, "%s" given.', $class ?? static::class, get_debug_type($r))); + throw new \TypeError(\sprintf('"%s::stream()" expects parameter 1 to be an iterable of AsyncResponse objects, "%s" given.', $class ?? static::class, get_debug_type($r))); } if (null !== $e = $r->info['error'] ?? null) { @@ -274,7 +275,8 @@ } } - if (!$r->passthru) { + $innerR = null; + if (!$r->passthru && !$innerR = null !== $chunk->getError() ? self::findInnerPassthru($r) : null) { $r->stream = (static fn () => yield $chunk)(); yield from self::passthruStream($response, $r, $asyncMap); @@ -286,14 +288,15 @@ } elseif ($chunk->isFirst()) { $r->yieldedState = self::FIRST_CHUNK_YIELDED; } elseif (self::FIRST_CHUNK_YIELDED !== $r->yieldedState && null === $chunk->getInformationalStatus()) { - throw new \LogicException(sprintf('Instance of "%s" is already consumed and cannot be managed by "%s". A decorated client should not call any of the response\'s methods in its "request()" method.', get_debug_type($response), $class ?? static::class)); + throw new \LogicException(\sprintf('Instance of "%s" is already consumed and cannot be managed by "%s". A decorated client should not call any of the response\'s methods in its "request()" method.', get_debug_type($response), $class ?? static::class)); } - foreach (self::passthru($r->client, $r, $chunk, $asyncMap) as $chunk) { + $innerR ??= $r; + foreach (self::passthru($innerR->client, $innerR, $chunk, $asyncMap) as $chunk) { yield $r => $chunk; } - if ($r->response !== $response && isset($asyncMap[$response])) { + if ($innerR->response !== $response && isset($asyncMap[$response])) { break; } } @@ -313,7 +316,7 @@ $r = $asyncMap[$response]; if (null !== $r->client) { - $responses[] = $asyncMap[$response]; + $responses[] = $r; } } } @@ -336,13 +339,28 @@ } if (!$stream instanceof \Iterator) { - throw new \LogicException(sprintf('A chunk passthru must return an "Iterator", "%s" returned.', get_debug_type($stream))); + throw new \LogicException(\sprintf('A chunk passthru must return an "Iterator", "%s" returned.', get_debug_type($stream))); } $r->stream = $stream; yield from self::passthruStream($response, $r, $asyncMap); } + private static function findInnerPassthru(self $response): ?self + { + $innerResponse = $response->response ?? null; + + while ($innerResponse instanceof self) { + if ($innerResponse->passthru) { + return $innerResponse; + } + + $innerResponse = $innerResponse->response ?? null; + } + + return null; + } + /** * @param \SplObjectStorage|null $asyncMap */ @@ -372,7 +390,7 @@ $chunk = $r->stream->current(); if (!$chunk instanceof ChunkInterface) { - throw new \LogicException(sprintf('A chunk passthru must yield instances of "%s", "%s" yielded.', ChunkInterface::class, get_debug_type($chunk))); + throw new \LogicException(\sprintf('A chunk passthru must yield instances of "%s", "%s" yielded.', ChunkInterface::class, get_debug_type($chunk))); } if (null !== $chunk->getError()) { @@ -399,7 +417,7 @@ } if (null !== $r->content && \strlen($content) !== fwrite($r->content, $content)) { - $chunk = new ErrorChunk($r->offset, new TransportException(sprintf('Failed writing %d bytes to the response buffer.', \strlen($content)))); + $chunk = new ErrorChunk($r->offset, new TransportException(\sprintf('Failed writing %d bytes to the response buffer.', \strlen($content)))); $r->info['error'] = $chunk->getError(); $r->response->cancel(); } @@ -438,6 +456,8 @@ } } + $r->hasThrown = true; + yield $r => $chunk; $chunk->didThrow() ?: $chunk->getContent(); } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/CommonResponseTrait.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/CommonResponseTrait.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/CommonResponseTrait.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/CommonResponseTrait.php 2026-05-27 08:23:35.000000000 +0000 @@ -87,11 +87,11 @@ try { $content = json_decode($content, true, 512, \JSON_BIGINT_AS_STRING | \JSON_THROW_ON_ERROR); } catch (\JsonException $e) { - throw new JsonException($e->getMessage().sprintf(' for "%s".', $this->getInfo('url')), $e->getCode()); + throw new JsonException($e->getMessage().\sprintf(' for "%s".', $this->getInfo('url')), $e->getCode()); } if (!\is_array($content)) { - throw new JsonException(sprintf('JSON content was expected to decode to an array, "%s" returned for "%s".', get_debug_type($content), $this->getInfo('url'))); + throw new JsonException(\sprintf('JSON content was expected to decode to an array, "%s" returned for "%s".', get_debug_type($content), $this->getInfo('url'))); } if (null !== $this->content) { @@ -119,15 +119,12 @@ return $stream; } - public function __sleep(): array + public function __serialize(): array { throw new \BadMethodCallException('Cannot serialize '.__CLASS__); } - /** - * @return void - */ - public function __wakeup() + public function __unserialize(array $data): void { throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/CurlResponse.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/CurlResponse.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/CurlResponse.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/CurlResponse.php 2026-05-27 08:23:35.000000000 +0000 @@ -33,6 +33,7 @@ use TransportResponseTrait; private CurlClientState $multi; + private ?string $ntlmOriginKey; /** * @var resource @@ -42,9 +43,10 @@ /** * @internal */ - public function __construct(CurlClientState $multi, \CurlHandle|string $ch, ?array $options = null, ?LoggerInterface $logger = null, string $method = 'GET', ?callable $resolveRedirect = null, ?int $curlVersion = null, ?string $originalUrl = null) + public function __construct(CurlClientState $multi, \CurlHandle|string $ch, ?array $options = null, ?LoggerInterface $logger = null, string $method = 'GET', ?callable $resolveRedirect = null, ?int $curlVersion = null, ?string $originalUrl = null, ?string $ntlmOriginKey = null) { $this->multi = $multi; + $this->ntlmOriginKey = $ntlmOriginKey; if ($ch instanceof \CurlHandle) { $this->handle = $ch; @@ -139,7 +141,7 @@ curl_setopt($ch, \CURLOPT_WRITEFUNCTION, static function ($ch, string $data) use ($multi, $id): int { if ('H' === (curl_getinfo($ch, \CURLINFO_PRIVATE)[0] ?? null)) { $multi->handlesActivity[$id][] = null; - $multi->handlesActivity[$id][] = new TransportException(sprintf('Unsupported protocol for "%s"', curl_getinfo($ch, \CURLINFO_EFFECTIVE_URL))); + $multi->handlesActivity[$id][] = new TransportException(\sprintf('Unsupported protocol for "%s"', curl_getinfo($ch, \CURLINFO_EFFECTIVE_URL))); return 0; } @@ -271,7 +273,7 @@ if ($responses) { $response = $responses[array_key_first($responses)]; $multi->handlesActivity[(int) $response->handle][] = null; - $multi->handlesActivity[(int) $response->handle][] = new TransportException(sprintf('Userland callback cannot use the client nor the response while processing "%s".', curl_getinfo($response->handle, \CURLINFO_EFFECTIVE_URL))); + $multi->handlesActivity[(int) $response->handle][] = new TransportException(\sprintf('Userland callback cannot use the client nor the response while processing "%s".', curl_getinfo($response->handle, \CURLINFO_EFFECTIVE_URL))); } return; @@ -296,6 +298,10 @@ $id = (int) $ch = $info['handle']; $waitFor = @curl_getinfo($ch, \CURLINFO_PRIVATE) ?: '_0'; + if (isset($responses[$id]) && self::retryNtlmOnFreshConnection($multi, $ch, $responses[$id]->ntlmOriginKey, $result)) { + continue; + } + if (\in_array($result, [\CURLE_SEND_ERROR, \CURLE_RECV_ERROR, /* CURLE_HTTP2 */ 16, /* CURLE_HTTP2_STREAM */ 92], true) && $waitFor[1] && 'C' !== $waitFor[0]) { curl_multi_remove_handle($multi->handle, $ch); $waitFor[1] = (string) ((int) $waitFor[1] - 1); // decrement the retry counter @@ -309,6 +315,7 @@ if (\CURLE_RECV_ERROR === $result && 'H' === $waitFor[0] && 400 <= ($responses[(int) $ch]->info['http_code'] ?? 0)) { $multi->handlesActivity[$id][] = new FirstChunk(); + curl_setopt($ch, \CURLOPT_PRIVATE, 'C'.$waitFor[1]); } $multi->handlesActivity[$id][] = null; @@ -396,7 +403,7 @@ $info['peer_certificate_chain'] = array_map('openssl_x509_read', array_column($certinfo, 'Cert')); } - if (300 <= $info['http_code'] && $info['http_code'] < 400) { + if (300 <= $info['http_code'] && $info['http_code'] < 400 && null !== $options) { if (curl_getinfo($ch, \CURLINFO_REDIRECT_COUNT) === $options['max_redirects']) { curl_setopt($ch, \CURLOPT_FOLLOWLOCATION, false); } elseif (303 === $info['http_code'] || ('POST' === $info['http_method'] && \in_array($info['http_code'], [301, 302], true))) { @@ -418,7 +425,7 @@ $info['redirect_url'] = null; - if (300 <= $statusCode && $statusCode < 400 && null !== $location) { + if (300 <= $statusCode && $statusCode < 400 && null !== $location && null !== $options) { if ($noContent = 303 === $statusCode || ('POST' === $info['http_method'] && \in_array($statusCode, [301, 302], true))) { $info['http_method'] = 'HEAD' === $info['http_method'] ? 'HEAD' : 'GET'; curl_setopt($ch, \CURLOPT_CUSTOMREQUEST, $info['http_method']); @@ -433,7 +440,7 @@ if (401 === $statusCode && isset($options['auth_ntlm']) && 0 === strncasecmp($headers['www-authenticate'][0] ?? '', 'NTLM ', 5)) { // Continue with NTLM auth - } elseif ($statusCode < 300 || 400 <= $statusCode || null === $location || curl_getinfo($ch, \CURLINFO_REDIRECT_COUNT) === $options['max_redirects']) { + } elseif ($statusCode < 300 || 400 <= $statusCode || null === $location || null === $options || curl_getinfo($ch, \CURLINFO_REDIRECT_COUNT) === $options['max_redirects']) { // Headers and redirects completed, time to get the response's content $multi->handlesActivity[$id][] = new FirstChunk(); @@ -447,11 +454,48 @@ curl_setopt($ch, \CURLOPT_PRIVATE, $waitFor); } elseif (null !== $info['redirect_url'] && $logger) { - $logger->info(sprintf('Redirecting: "%s %s"', $info['http_code'], $info['redirect_url'])); + $logger->info(\sprintf('Redirecting: "%s %s"', $info['http_code'], $info['redirect_url'])); } $location = null; return \strlen($data); } + + /** + * Handles servers that do not persist NTLM authentication across requests on a reused + * TCP connection (e.g. IIS with authPersistNonNTLM=false). On such servers, libcurl + * still considers the pooled socket authenticated client-side and skips the handshake, + * but the server returns a fresh 401 + NTLM challenge that libcurl cannot pick up on + * the same request, so the caller sees an unauthenticated 401. + * + * The discriminator is CURLINFO_NUM_CONNECTS == 0: no new connection was opened for + * this request, so the socket came from the pool. A 401 + NTLM challenge on a brand + * new socket is the legitimate first leg of libcurl's in-request 3-way handshake and + * must NOT trigger this path. + * + * When detected, the deauthenticated socket is closed, the request is retried once on + * a fresh one, and the origin is recorded so subsequent requests to it skip the pool + * from the start. + */ + private static function retryNtlmOnFreshConnection(CurlClientState $multi, \CurlHandle $ch, ?string $originKey, int $result): bool + { + if (null === $originKey + || \CURLE_OK !== $result + || 401 !== curl_getinfo($ch, \CURLINFO_RESPONSE_CODE) + || 0 === (curl_getinfo($ch, \CURLINFO_HTTPAUTH_AVAIL) & \CURLAUTH_NTLM) + || 0 !== curl_getinfo($ch, \CURLINFO_NUM_CONNECTS) + || isset($multi->ntlmRequiresFreshConnection[$originKey]) + ) { + return false; + } + + $multi->ntlmRequiresFreshConnection[$originKey] = true; + $multi->logger?->info(\sprintf('Discarding NTLM-deauthenticated connection to "%s" and retrying on a fresh one', $originKey)); + curl_setopt($ch, \CURLOPT_FORBID_REUSE, true); + curl_multi_remove_handle($multi->handle, $ch); + curl_setopt($ch, \CURLOPT_FRESH_CONNECT, true); + + return 0 === curl_multi_add_handle($multi->handle, $ch); + } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/MockResponse.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/MockResponse.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/MockResponse.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/MockResponse.php 2026-05-27 08:23:35.000000000 +0000 @@ -240,7 +240,7 @@ } elseif ($body instanceof \Closure) { while ('' !== $data = $body(16372)) { if (!\is_string($data)) { - throw new TransportException(sprintf('Return value of the "body" option callback must be string, "%s" returned.', get_debug_type($data))); + throw new TransportException(\sprintf('Return value of the "body" option callback must be string, "%s" returned.', get_debug_type($data))); } // "notify" upload progress @@ -296,7 +296,7 @@ if ('' === $chunk = (string) $chunk) { // simulate an idle timeout - $response->body[] = new ErrorChunk($offset, sprintf('Idle timeout reached for "%s".', $response->info['url'])); + $response->body[] = new ErrorChunk($offset, \sprintf('Idle timeout reached for "%s".', $response->info['url'])); } else { $response->body[] = $chunk; $offset += \strlen($chunk); @@ -320,7 +320,7 @@ $onProgress($offset, $dlSize, $response->info); if ($dlSize && $offset !== $dlSize) { - throw new TransportException(sprintf('Transfer closed with %d bytes remaining to read.', $dlSize - $offset)); + throw new TransportException(\sprintf('Transfer closed with %d bytes remaining to read.', $dlSize - $offset)); } } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/StreamWrapper.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/StreamWrapper.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/StreamWrapper.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/StreamWrapper.php 2026-05-27 08:23:35.000000000 +0000 @@ -30,7 +30,7 @@ private ResponseInterface $response; /** @var resource|string|null */ - private $content = null; + private $content; /** @var resource|callable|null */ private $handle; @@ -56,7 +56,7 @@ } if (null === $client && !method_exists($response, 'stream')) { - throw new \InvalidArgumentException(sprintf('Providing a client to "%s()" is required when the response doesn\'t have any "stream()" method.', __CLASS__)); + throw new \InvalidArgumentException(\sprintf('Providing a client to "%s()" is required when the response doesn\'t have any "stream()" method.', __CLASS__)); } static $registered = false; @@ -94,7 +94,7 @@ { if ('r' !== $mode) { if ($options & \STREAM_REPORT_ERRORS) { - trigger_error(sprintf('Invalid mode "%s": only "r" is supported.', $mode), \E_USER_WARNING); + trigger_error(\sprintf('Invalid mode "%s": only "r" is supported.', $mode), \E_USER_WARNING); } return false; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/TraceableResponse.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/TraceableResponse.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/TraceableResponse.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/TraceableResponse.php 2026-05-27 08:23:35.000000000 +0000 @@ -44,12 +44,12 @@ $this->event = $event; } - public function __sleep(): array + public function __serialize(): array { throw new \BadMethodCallException('Cannot serialize '.__CLASS__); } - public function __wakeup(): void + public function __unserialize(array $data): void { throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); } @@ -173,7 +173,7 @@ foreach ($responses as $r) { if (!$r instanceof self) { - throw new \TypeError(sprintf('"%s::stream()" expects parameter 1 to be an iterable of TraceableResponse objects, "%s" given.', TraceableHttpClient::class, get_debug_type($r))); + throw new \TypeError(\sprintf('"%s::stream()" expects parameter 1 to be an iterable of TraceableResponse objects, "%s" given.', TraceableHttpClient::class, get_debug_type($r))); } $traceableMap[$r->response] = $r; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/TransportResponseTrait.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/TransportResponseTrait.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Response/TransportResponseTrait.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Response/TransportResponseTrait.php 2026-05-27 08:23:35.000000000 +0000 @@ -45,6 +45,7 @@ private \InflateContext|bool|null $inflate = null; private ?array $finalInfo = null; private ?LoggerInterface $logger = null; + private bool $didTimeout = false; public function getStatusCode(): int { @@ -126,7 +127,7 @@ { $this->shouldBuffer = true; - if ($this->initializer && null === $this->info['error']) { + if ($this->initializer && null === $this->info['error'] && !$this->didTimeout) { self::initialize($this); $this->checkStatusCode(); } @@ -183,7 +184,8 @@ unset($responses[$j]); continue; } elseif ($elapsedTimeout >= $timeoutMax) { - $multi->handlesActivity[$j] = [new ErrorChunk($response->offset, sprintf('Idle timeout reached for "%s".', $response->getInfo('url')))]; + $response->didTimeout = true; + $multi->handlesActivity[$j] = [new ErrorChunk($response->offset, \sprintf('Idle timeout reached for "%s".', $response->getInfo('url')))]; $multi->lastTimeout ??= $lastActivity; $elapsedTimeout = $timeoutMax; } else { @@ -196,12 +198,12 @@ while ($multi->handlesActivity[$j] ?? false) { if (\is_string($chunk = array_shift($multi->handlesActivity[$j]))) { if (null !== $response->inflate && false === $chunk = @inflate_add($response->inflate, $chunk)) { - $multi->handlesActivity[$j] = [null, new TransportException(sprintf('Error while processing content unencoding for "%s".', $response->getInfo('url')))]; + $multi->handlesActivity[$j] = [null, new TransportException(\sprintf('Error while processing content unencoding for "%s".', $response->getInfo('url')))]; continue; } if ('' !== $chunk && null !== $response->content && \strlen($chunk) !== fwrite($response->content, $chunk)) { - $multi->handlesActivity[$j] = [null, new TransportException(sprintf('Failed writing %d bytes to the response buffer.', \strlen($chunk)))]; + $multi->handlesActivity[$j] = [null, new TransportException(\sprintf('Failed writing %d bytes to the response buffer.', \strlen($chunk)))]; continue; } @@ -233,7 +235,7 @@ } elseif ($chunk instanceof FirstChunk) { if ($response->logger) { $info = $response->getInfo(); - $response->logger->info(sprintf('Response: "%s %s"', $info['http_code'], $info['url'])); + $response->logger->info(\sprintf('Response: "%s %s"', $info['http_code'], $info['url'])); } $response->inflate = \extension_loaded('zlib') && $response->inflate && 'gzip' === ($response->headers['content-encoding'][0] ?? null) ? inflate_init(\ZLIB_ENCODING_GZIP) : null; @@ -299,7 +301,7 @@ continue; } - if (-1 === self::select($multi, min($timeoutMin, $timeoutMax - $elapsedTimeout))) { + if (-1 === self::select($multi, min($timeoutMin, max(0, $timeoutMax - $elapsedTimeout)))) { usleep((int) min(500, 1E6 * $timeoutMin)); } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Retry/GenericRetryStrategy.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Retry/GenericRetryStrategy.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Retry/GenericRetryStrategy.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Retry/GenericRetryStrategy.php 2026-05-27 08:23:35.000000000 +0000 @@ -54,22 +54,22 @@ $this->statusCodes = $statusCodes; if ($delayMs < 0) { - throw new InvalidArgumentException(sprintf('Delay must be greater than or equal to zero: "%s" given.', $delayMs)); + throw new InvalidArgumentException(\sprintf('Delay must be greater than or equal to zero: "%s" given.', $delayMs)); } $this->delayMs = $delayMs; if ($multiplier < 1) { - throw new InvalidArgumentException(sprintf('Multiplier must be greater than or equal to one: "%s" given.', $multiplier)); + throw new InvalidArgumentException(\sprintf('Multiplier must be greater than or equal to one: "%s" given.', $multiplier)); } $this->multiplier = $multiplier; if ($maxDelayMs < 0) { - throw new InvalidArgumentException(sprintf('Max delay must be greater than or equal to zero: "%s" given.', $maxDelayMs)); + throw new InvalidArgumentException(\sprintf('Max delay must be greater than or equal to zero: "%s" given.', $maxDelayMs)); } $this->maxDelayMs = $maxDelayMs; if ($jitter < 0 || $jitter > 1) { - throw new InvalidArgumentException(sprintf('Jitter must be between 0 and 1: "%s" given.', $jitter)); + throw new InvalidArgumentException(\sprintf('Jitter must be between 0 and 1: "%s" given.', $jitter)); } $this->jitter = $jitter; } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/RetryableHttpClient.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/RetryableHttpClient.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/RetryableHttpClient.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/RetryableHttpClient.php 2026-05-27 08:23:35.000000000 +0000 @@ -100,7 +100,7 @@ if ('' !== $context->getInfo('primary_ip')) { $shouldRetry = $this->strategy->shouldRetry($context, null, $exception); if (null === $shouldRetry) { - throw new \LogicException(sprintf('The "%s::shouldRetry()" method must not return null when called with an exception.', $this->strategy::class)); + throw new \LogicException(\sprintf('The "%s::shouldRetry()" method must not return null when called with an exception.', $this->strategy::class)); } if (false === $shouldRetry) { @@ -131,7 +131,7 @@ } if (null === $shouldRetry = $this->strategy->shouldRetry($context, $content, null)) { - throw new \LogicException(sprintf('The "%s::shouldRetry()" method must not return null when called with a body.', $this->strategy::class)); + throw new \LogicException(\sprintf('The "%s::shouldRetry()" method must not return null when called with a body.', $this->strategy::class)); } if (false === $shouldRetry) { @@ -201,6 +201,8 @@ if ($baseUris) { $baseUri = 1 < \count($baseUris) ? array_shift($baseUris) : current($baseUris); $options['base_uri'] = \is_array($baseUri) ? $baseUri[array_rand($baseUri)] : $baseUri; + } elseif (\is_array($options['base_uri'] ?? null)) { + unset($options['base_uri']); } return $options; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/ScopingHttpClient.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/ScopingHttpClient.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/ScopingHttpClient.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/ScopingHttpClient.php 2026-05-27 08:23:35.000000000 +0000 @@ -39,7 +39,7 @@ $this->defaultRegexp = $defaultRegexp; if (null !== $defaultRegexp && !isset($defaultOptionsByRegexp[$defaultRegexp])) { - throw new InvalidArgumentException(sprintf('No options are mapped to the provided "%s" default regexp.', $defaultRegexp)); + throw new InvalidArgumentException(\sprintf('No options are mapped to the provided "%s" default regexp.', $defaultRegexp)); } } @@ -56,9 +56,11 @@ { $e = null; $url = self::parseUrl($url, $options['query'] ?? []); + $resolved = false; if (\is_string($options['base_uri'] ?? null)) { $options['base_uri'] = self::parseUrl($options['base_uri']); + $resolved = true; } try { @@ -72,10 +74,15 @@ $options = self::mergeDefaultOptions($options, $defaultOptions, true); if (\is_string($options['base_uri'] ?? null)) { $options['base_uri'] = self::parseUrl($options['base_uri']); + $resolved = true; } $url = implode('', self::resolveUrl($url, $options['base_uri'] ?? null, $defaultOptions['query'] ?? [])); } + if ($resolved) { + unset($options['base_uri']); + } + foreach ($this->defaultOptionsByRegexp as $regexp => $defaultOptions) { if (preg_match("{{$regexp}}A", $url)) { if (null === $e || $regexp !== $this->defaultRegexp) { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Test/HarFileResponseFactory.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Test/HarFileResponseFactory.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Test/HarFileResponseFactory.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Test/HarFileResponseFactory.php 2026-05-27 08:23:35.000000000 +0000 @@ -34,7 +34,7 @@ public function __invoke(string $method, string $url, array $options): ResponseInterface { if (!is_file($this->archiveFile)) { - throw new \InvalidArgumentException(sprintf('Invalid file path provided: "%s".', $this->archiveFile)); + throw new \InvalidArgumentException(\sprintf('Invalid file path provided: "%s".', $this->archiveFile)); } $json = json_decode(json: file_get_contents($this->archiveFile), associative: true, flags: \JSON_THROW_ON_ERROR); @@ -77,7 +77,7 @@ return new MockResponse($body, $info); } - throw new TransportException(sprintf('File "%s" does not contain a response for HTTP request "%s" "%s".', $this->archiveFile, $method, $url)); + throw new TransportException(\sprintf('File "%s" does not contain a response for HTTP request "%s" "%s".', $this->archiveFile, $method, $url)); } /** @@ -91,7 +91,7 @@ return match ($encoding) { 'base64' => base64_decode($text), null => $text, - default => throw new \InvalidArgumentException(sprintf('Unsupported encoding "%s", currently only base64 is supported.', $encoding)), + default => throw new \InvalidArgumentException(\sprintf('Unsupported encoding "%s", currently only base64 is supported.', $encoding)), }; } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/AmpHttpClientTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/AmpHttpClientTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/AmpHttpClientTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/AmpHttpClientTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -19,6 +19,22 @@ */ class AmpHttpClientTest extends HttpClientTestCase { + /** + * @group transient + */ + public function testNonBlockingStream() + { + parent::testNonBlockingStream(); + } + + /** + * @group transient-on-windows + */ + public function testResolve() + { + parent::testResolve(); + } + protected function getHttpClient(string $testCase): HttpClientInterface { return new AmpHttpClient(['verify_peer' => false, 'verify_host' => false, 'timeout' => 5]); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/AsyncDecoratorTraitTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/AsyncDecoratorTraitTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/AsyncDecoratorTraitTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/AsyncDecoratorTraitTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -182,7 +182,7 @@ public function testProcessingHappensOnce() { $lastChunks = 0; - $client = $this->getHttpClient(__FUNCTION__, function (ChunkInterface $chunk, AsyncContext $context) use (&$lastChunks) { + $client = $this->getHttpClient(__FUNCTION__, static function (ChunkInterface $chunk, AsyncContext $context) use (&$lastChunks) { $lastChunks += $chunk->isLast(); yield $chunk; @@ -205,7 +205,7 @@ public function testLastChunkIsYieldOnHttpExceptionAtDestructTime() { $lastChunk = null; - $client = $this->getHttpClient(__FUNCTION__, function (ChunkInterface $chunk, AsyncContext $context) use (&$lastChunk) { + $client = $this->getHttpClient(__FUNCTION__, static function (ChunkInterface $chunk, AsyncContext $context) use (&$lastChunk) { $lastChunk = $chunk; yield $chunk; @@ -222,7 +222,7 @@ public function testBufferPurePassthru() { - $client = $this->getHttpClient(__FUNCTION__, function (ChunkInterface $chunk, AsyncContext $context) { + $client = $this->getHttpClient(__FUNCTION__, static function (ChunkInterface $chunk, AsyncContext $context) { $context->passthru(); yield $chunk; @@ -298,10 +298,10 @@ public function testInfoPassToDecorator() { $lastInfo = null; - $options = ['on_progress' => function (int $dlNow, int $dlSize, array $info) use (&$lastInfo) { + $options = ['on_progress' => static function (int $dlNow, int $dlSize, array $info) use (&$lastInfo) { $lastInfo = $info; }]; - $client = $this->getHttpClient(__FUNCTION__, function (ChunkInterface $chunk, AsyncContext $context) use ($options) { + $client = $this->getHttpClient(__FUNCTION__, static function (ChunkInterface $chunk, AsyncContext $context) use ($options) { $context->setInfo('foo', 'test'); $context->getResponse()->cancel(); $context->replaceRequest('GET', 'http://localhost:8057/', $options); @@ -316,7 +316,7 @@ public function testMultipleYieldInInitializer() { - $client = $this->getHttpClient(__FUNCTION__, function (ChunkInterface $chunk, AsyncContext $context) { + $client = $this->getHttpClient(__FUNCTION__, static function (ChunkInterface $chunk, AsyncContext $context) { static $first; if ($chunk->isFirst()) { $first = $chunk; @@ -358,7 +358,7 @@ public function testMaxDuration() { - $client = $this->getHttpClient(__FUNCTION__, function (ChunkInterface $chunk, AsyncContext $context) { + $client = $this->getHttpClient(__FUNCTION__, static function (ChunkInterface $chunk, AsyncContext $context) { static $sawFirst = false; try { if (!$chunk->isFirst() || !$sawFirst) { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/CachingHttpClientTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/CachingHttpClientTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/CachingHttpClientTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/CachingHttpClientTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -41,6 +41,37 @@ self::assertSame($response->getRequestOptions()['normalized_headers']['test-name-header'][0], 'Test-Name-Header: test12345'); } + public function testOverridesDefaultsAndKeepsMultipleHeaderValues() + { + $capturedHeaders = null; + + $mockClient = new MockHttpClient(static function (string $method, string $url, array $options) use (&$capturedHeaders) { + $capturedHeaders = $options['normalized_headers']; + + return new MockResponse(); + }); + + $cacheDir = sys_get_temp_dir().'/sf_http_cache_'.uniqid('', true); + $store = new Store($cacheDir); + $client = new CachingHttpClient($mockClient, $store); + + try { + $client->request('GET', 'https://example.com/foo', [ + 'headers' => [ + 'Accept-Language' => ['de', 'fr'], + ], + ]); + } finally { + $this->removeDir($cacheDir); + } + + self::assertNotNull($capturedHeaders); + self::assertSame([ + 'accept-language: de', + 'accept-language: fr', + ], $capturedHeaders['accept-language']); + } + public function testDoesNotEvaluateResponseBody() { $body = file_get_contents(__DIR__.'/Fixtures/assertion_failure.php'); @@ -87,10 +118,10 @@ { $response = $this->runRequest(new MockResponse( 'test', [ - 'response_headers' => [ - 'X-Content-Digest' => 'some-hash', - ], - ])); + 'response_headers' => [ + 'X-Content-Digest' => 'some-hash', + ], + ])); $headers = $response->getHeaders(); $this->assertArrayNotHasKey('x-content-digest', $headers); @@ -107,4 +138,26 @@ return $response; } + + private function removeDir(string $directory): void + { + if (!is_dir($directory)) { + return; + } + + $iterator = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($directory, \FilesystemIterator::SKIP_DOTS), + \RecursiveIteratorIterator::CHILD_FIRST + ); + + foreach ($iterator as $fileInfo) { + if ($fileInfo->isDir()) { + rmdir($fileInfo->getPathname()); + } else { + unlink($fileInfo->getPathname()); + } + } + + rmdir($directory); + } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/Chunk/ServerSentEventTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Chunk/ServerSentEventTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/Chunk/ServerSentEventTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Chunk/ServerSentEventTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -23,12 +23,12 @@ public function testParse() { $rawData = <<assertSame("test\ntest", $sse->getData()); @@ -39,10 +39,10 @@ public function testParseValid() { $rawData = <<assertSame('', $sse->getData()); @@ -53,8 +53,8 @@ public function testParseRetry() { $rawData = <<assertSame('', $sse->getData()); $this->assertSame('', $sse->getId()); @@ -67,13 +67,13 @@ $rawData = << -data -data: -data: -data: -data: -STR; + data: + data + data: + data: + data: + data: + STR; $sse = new ServerSentEvent($rawData); $this->assertSame("\n\n \n\n\n", $sse->getData()); } @@ -81,9 +81,9 @@ public function testGetArrayData() { $this->assertSame(['foo' => 'bar'], (new ServerSentEvent(<<getArrayData()); } @@ -101,9 +101,9 @@ $this->expectExceptionMessage('Decoding Server-Sent Event "33" failed: Syntax error'); (new ServerSentEvent(<<getArrayData(); } @@ -113,9 +113,9 @@ $this->expectExceptionMessage('JSON content was expected to decode to an array, "string" returned in Server-Sent Event "33".'); (new ServerSentEvent(<<getArrayData(); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -13,15 +13,15 @@ use Symfony\Component\HttpClient\CurlHttpClient; use Symfony\Component\HttpClient\Exception\InvalidArgumentException; -use Symfony\Contracts\HttpClient\HttpClientInterface; /** * @requires extension curl + * * @group dns-sensitive */ class CurlHttpClientTest extends HttpClientTestCase { - protected function getHttpClient(string $testCase): HttpClientInterface + protected function getHttpClient(string $testCase): CurlHttpClient { if (!str_contains($testCase, 'Push')) { return new CurlHttpClient(['verify_peer' => false, 'verify_host' => false]); @@ -47,13 +47,42 @@ { $httpClient = $this->getHttpClient(__FUNCTION__); - $r = new \ReflectionMethod($httpClient, 'ensureState'); - $clientState = $r->invoke($httpClient); + $r = new \ReflectionProperty($httpClient, 'multi'); + $clientState = $r->getValue($httpClient); $initialShareId = $clientState->share; $httpClient->reset(); self::assertNotSame($initialShareId, $clientState->share); } + public function testCurlClientStateIsSharedBetweenClones() + { + $client = $this->getHttpClient(__FUNCTION__); + $cloneA = $client->withOptions(['headers' => ['Foo: bar']]); + $cloneB = $client->withOptions(['headers' => ['Foo: baz']]); + + $r = new \ReflectionProperty($client, 'multi'); + $state = $r->getValue($client); + + self::assertSame($state, $r->getValue($cloneA)); + self::assertSame($state, $r->getValue($cloneB)); + } + + public function testCurlClientStateInitializesHandlesLazily() + { + $client = $this->getHttpClient(__FUNCTION__); + + $r = new \ReflectionProperty($client, 'multi'); + $state = $r->getValue($client); + + self::assertFalse(isset($state->handle)); + self::assertFalse(isset($state->share)); + + $client->request('GET', 'http://127.0.0.1:8057/json')->getStatusCode(); + + self::assertInstanceOf(\CurlMultiHandle::class, $state->handle); + self::assertInstanceOf(\CurlShareHandle::class, $state->share); + } + public function testProcessAfterReset() { $client = $this->getHttpClient(__FUNCTION__); @@ -126,6 +155,100 @@ $this->assertSame('/302', $response->toArray()['REQUEST_URI'] ?? null); } + public function testNtlmRequiresFreshConnectionStateIsEmptyByDefault() + { + $client = $this->getHttpClient(__FUNCTION__); + + $r = new \ReflectionProperty($client, 'multi'); + $state = $r->getValue($client); + + self::assertSame([], $state->ntlmRequiresFreshConnection); + } + + public function testNtlmFreshConnectionForcedWhenOriginKnown() + { + $client = $this->getHttpClient(__FUNCTION__); + + $client->request('GET', 'http://127.0.0.1:8057/')->getContent(); + + $r = new \ReflectionProperty($client, 'multi'); + $state = $r->getValue($client); + $state->ntlmRequiresFreshConnection['http://127.0.0.1:8057'] = true; + + $response = $client->request('GET', 'http://127.0.0.1:8057/', [ + 'auth_ntlm' => 'user:pass', + ]); + $response->getStatusCode(); + + self::assertStringNotContainsString('Re-using existing connection', $response->getInfo('debug')); + } + + public function testNtlmStateNotMutatedByNonNtlmRequest() + { + // A plain (non-NTLM) request must not touch the NTLM origin map. This guards against + // a regression where the detection logic fires on every CURLMSG_DONE event (e.g. an + // inverted condition guard) — which would silently mark every origin as needing a + // fresh NTLM connection. + $client = $this->getHttpClient(__FUNCTION__); + $client->request('GET', 'http://127.0.0.1:8057/json')->getContent(); + + $r = new \ReflectionProperty($client, 'multi'); + $state = $r->getValue($client); + + self::assertSame([], $state->ntlmRequiresFreshConnection); + } + + public function testNtlmStateNotMutatedByFreshConnectionNtlm401() + { + // A 401 + NTLM challenge that arrives on a fresh connection (NUM_CONNECTS != 0) is + // the legitimate first leg of libcurl's in-request handshake — not the cross-request + // de-auth case. Detection must NOT fire, and the origin must NOT be marked. + $client = $this->getHttpClient(__FUNCTION__); + $client->request('GET', 'http://127.0.0.1:8057/custom?'.http_build_query([ + 'status' => 401, + 'headers' => ['WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAwADADgAAAAGgokCB7m5ksVjjAsAAAAAAAAAAHYAdgA7AAAACgB8TwAAAA9QUkQ=', 'Content-Length: 0'], + ]), [ + 'auth_ntlm' => 'user:pass', + ])->getStatusCode(); + + $r = new \ReflectionProperty($client, 'multi'); + $state = $r->getValue($client); + + self::assertSame([], $state->ntlmRequiresFreshConnection); + } + + public function testNoNtlmLogMessagesForNonNtlmRequest() + { + // The observable signal for "we discarded a connection" is a specific log line. + // A plain request must not produce that line — protects against bugs that cause + // the retry/discovery path to fire unconditionally. + $client = $this->getHttpClient(__FUNCTION__); + $logger = new TestLogger(); + $client->setLogger($logger); + + $client->request('GET', 'http://127.0.0.1:8057/json')->getContent(); + + $ntlmLogs = array_filter($logger->logs, static fn ($msg) => str_contains($msg, 'NTLM')); + self::assertSame([], $ntlmLogs); + } + + public function testNtlmLoopGuardDoesNotRetryWhenOriginAlreadyKnown() + { + $client = $this->getHttpClient(__FUNCTION__); + $r = new \ReflectionProperty($client, 'multi'); + $state = $r->getValue($client); + $state->ntlmRequiresFreshConnection['http://127.0.0.1:8057'] = true; + + $response = $client->request('GET', 'http://127.0.0.1:8057/custom?'.http_build_query([ + 'status' => 401, + 'headers' => ['WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAwADADgAAAAGgokCB7m5ksVjjAsAAAAAAAAAAHYAdgA7AAAACgB8TwAAAA9QUkQ=', 'Content-Length: 0'], + ]), [ + 'auth_ntlm' => 'user:pass', + ]); + + self::assertSame(401, $response->getStatusCode()); + } + /** * @group integration */ diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/DataCollector/HttpClientDataCollectorTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/DataCollector/HttpClientDataCollectorTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/DataCollector/HttpClientDataCollectorTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/DataCollector/HttpClientDataCollectorTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -12,7 +12,10 @@ namespace Symfony\Component\HttpClient\Tests\DataCollector; use PHPUnit\Framework\TestCase; +use Symfony\Component\HttpClient\CurlHttpClient; use Symfony\Component\HttpClient\DataCollector\HttpClientDataCollector; +use Symfony\Component\HttpClient\Exception\TransportException; +use Symfony\Component\HttpClient\MockHttpClient; use Symfony\Component\HttpClient\NativeHttpClient; use Symfony\Component\HttpClient\TraceableHttpClient; use Symfony\Contracts\HttpClient\Test\TestHttpServer; @@ -47,9 +50,9 @@ $sut->registerClient('http_client1', $httpClient1); $sut->registerClient('http_client2', $httpClient2); $sut->registerClient('http_client3', $httpClient3); - $this->assertEquals(0, $sut->getRequestCount()); + $this->assertSame(0, $sut->getRequestCount()); $sut->lateCollect(); - $this->assertEquals(3, $sut->getRequestCount()); + $this->assertSame(3, $sut->getRequestCount()); } public function testItCollectsErrorCount() @@ -76,9 +79,9 @@ $sut->registerClient('http_client1', $httpClient1); $sut->registerClient('http_client2', $httpClient2); $sut->registerClient('http_client3', $httpClient3); - $this->assertEquals(0, $sut->getErrorCount()); + $this->assertSame(0, $sut->getErrorCount()); $sut->lateCollect(); - $this->assertEquals(1, $sut->getErrorCount()); + $this->assertSame(1, $sut->getErrorCount()); } public function testItCollectsErrorCountByClient() @@ -105,12 +108,12 @@ $sut->registerClient('http_client1', $httpClient1); $sut->registerClient('http_client2', $httpClient2); $sut->registerClient('http_client3', $httpClient3); - $this->assertEquals([], $sut->getClients()); + $this->assertSame([], $sut->getClients()); $sut->lateCollect(); $collectedData = $sut->getClients(); - $this->assertEquals(0, $collectedData['http_client1']['error_count']); - $this->assertEquals(1, $collectedData['http_client2']['error_count']); - $this->assertEquals(0, $collectedData['http_client3']['error_count']); + $this->assertSame(0, $collectedData['http_client1']['error_count']); + $this->assertSame(1, $collectedData['http_client2']['error_count']); + $this->assertSame(0, $collectedData['http_client3']['error_count']); } public function testItCollectsTracesByClient() @@ -137,7 +140,7 @@ $sut->registerClient('http_client1', $httpClient1); $sut->registerClient('http_client2', $httpClient2); $sut->registerClient('http_client3', $httpClient3); - $this->assertEquals([], $sut->getClients()); + $this->assertSame([], $sut->getClients()); $sut->lateCollect(); $collectedData = $sut->getClients(); $this->assertCount(2, $collectedData['http_client1']['traces']); @@ -159,9 +162,9 @@ $collectedData = $sut->getClients(); $this->assertCount(1, $collectedData['http_client1']['traces']); $sut->reset(); - $this->assertEquals([], $sut->getClients()); - $this->assertEquals(0, $sut->getErrorCount()); - $this->assertEquals(0, $sut->getRequestCount()); + $this->assertSame([], $sut->getClients()); + $this->assertSame(0, $sut->getErrorCount()); + $this->assertSame(0, $sut->getRequestCount()); } /** @@ -176,8 +179,7 @@ self::assertCount(1, $collectedData['http_client']['traces']); $curlCommand = $collectedData['http_client']['traces'][0]['curlCommand']; - $isWindows = '\\' === \DIRECTORY_SEPARATOR; - self::assertEquals(sprintf($expectedCurlCommand, $isWindows ? '"' : "'", $isWindows ? '' : "'"), $curlCommand); + self::assertSame(str_replace(['"', "'"], '', $expectedCurlCommand), str_replace(['"', "'"], '', $curlCommand)); } public static function provideCurlRequests(): iterable @@ -190,10 +192,10 @@ 'curl \\ --compressed \\ --request GET \\ - --url %1$shttp://localhost:8057/json%1$s \\ - --header %1$sAccept: */*%1$s \\ - --header %1$sAccept-Encoding: gzip%1$s \\ - --header %1$sUser-Agent: Symfony HttpClient (Native)%1$s', + --url http://localhost:8057/json \\ + --header Accept: */* \\ + --header Accept-Encoding: gzip \\ + --header User-Agent: Symfony HttpClient (Native)', ]; yield 'GET with base uri' => [ [ @@ -206,10 +208,10 @@ 'curl \\ --compressed \\ --request GET \\ - --url %1$shttp://localhost:8057/json/1%1$s \\ - --header %1$sAccept: */*%1$s \\ - --header %1$sAccept-Encoding: gzip%1$s \\ - --header %1$sUser-Agent: Symfony HttpClient (Native)%1$s', + --url http://localhost:8057/json/1 \\ + --header Accept: */* \\ + --header Accept-Encoding: gzip \\ + --header User-Agent: Symfony HttpClient (Native)', ]; yield 'GET with resolve' => [ [ @@ -224,12 +226,12 @@ ], 'curl \\ --compressed \\ - --resolve %1$slocalhost:8057:127.0.0.1%1$s \\ + --resolve localhost:8057:127.0.0.1 \\ --request GET \\ - --url %1$shttp://localhost:8057/json%1$s \\ - --header %1$sAccept: */*%1$s \\ - --header %1$sAccept-Encoding: gzip%1$s \\ - --header %1$sUser-Agent: Symfony HttpClient (Native)%1$s', + --url http://localhost:8057/json \\ + --header Accept: */* \\ + --header Accept-Encoding: gzip \\ + --header User-Agent: Symfony HttpClient (Native)', ]; yield 'POST with string body' => [ [ @@ -242,13 +244,13 @@ 'curl \\ --compressed \\ --request POST \\ - --url %1$shttp://localhost:8057/json%1$s \\ - --header %1$sAccept: */*%1$s \\ - --header %1$sContent-Length: 11%1$s \\ - --header %1$sContent-Type: application/x-www-form-urlencoded%1$s \\ - --header %1$sAccept-Encoding: gzip%1$s \\ - --header %1$sUser-Agent: Symfony HttpClient (Native)%1$s \\ - --data-raw %1$sfoo bar baz%1$s', + --url http://localhost:8057/json \\ + --header Accept: */* \\ + --header Content-Length: 11 \\ + --header Content-Type: application/x-www-form-urlencoded \\ + --header Accept-Encoding: gzip \\ + --header User-Agent: Symfony HttpClient (Native) \\ + --data-raw foo bar baz', ]; yield 'POST with array body' => [ [ @@ -268,7 +270,7 @@ 'fooprop' => 'foopropval', 'barprop' => 'barpropval', ], - 'tostring' => new class() { + 'tostring' => new class { public function __toString(): string { return 'tostringval'; @@ -280,13 +282,13 @@ 'curl \\ --compressed \\ --request POST \\ - --url %1$shttp://localhost:8057/json%1$s \\ - --header %1$sAccept: */*%1$s \\ - --header %1$sContent-Type: application/x-www-form-urlencoded%1$s \\ - --header %1$sContent-Length: 211%1$s \\ - --header %1$sAccept-Encoding: gzip%1$s \\ - --header %1$sUser-Agent: Symfony HttpClient (Native)%1$s \\ - --data-raw %2$sfoo=fooval%2$s --data-raw %2$sbar=barval%2$s --data-raw %2$sbaz=bazval%2$s --data-raw %2$sfoobar[baz]=bazval%2$s --data-raw %2$sfoobar[qux]=quxval%2$s --data-raw %2$sbazqux[0]=bazquxval1%2$s --data-raw %2$sbazqux[1]=bazquxval2%2$s --data-raw %2$sobject[fooprop]=foopropval%2$s --data-raw %2$sobject[barprop]=barpropval%2$s --data-raw %2$stostring=tostringval%2$s', + --url http://localhost:8057/json \\ + --header Accept: */* \\ + --header Content-Type: application/x-www-form-urlencoded \\ + --header Content-Length: 211 \\ + --header Accept-Encoding: gzip \\ + --header User-Agent: Symfony HttpClient (Native) \\ + --data-raw foo=fooval --data-raw bar=barval --data-raw baz=bazval --data-raw foobar[baz]=bazval --data-raw foobar[qux]=quxval --data-raw bazqux[0]=bazquxval1 --data-raw bazqux[1]=bazquxval2 --data-raw object[fooprop]=foopropval --data-raw object[barprop]=barpropval --data-raw tostring=tostringval', ]; // escapeshellarg on Windows replaces double quotes & percent signs with spaces @@ -309,10 +311,10 @@ 'curl \\ --compressed \\ --request GET \\ - --url %1$shttp://localhost:8057/?foo=fooval&bar=newbarval&foobar[baz]=bazval&foobar[qux]=quxval&bazqux[0]=bazquxval1&bazqux[1]=bazquxval2%1$s \\ - --header %1$sAccept: */*%1$s \\ - --header %1$sAccept-Encoding: gzip%1$s \\ - --header %1$sUser-Agent: Symfony HttpClient (Native)%1$s', + --url http://localhost:8057/?foo=fooval&bar=newbarval&foobar[baz]=bazval&foobar[qux]=quxval&bazqux[0]=bazquxval1&bazqux[1]=bazquxval2 \\ + --header Accept: */* \\ + --header Accept-Encoding: gzip \\ + --header User-Agent: Symfony HttpClient (Native)', ]; yield 'POST with json' => [ [ @@ -331,13 +333,13 @@ 'curl \\ --compressed \\ --request POST \\ - --url %1$shttp://localhost:8057/json%1$s \\ - --header %1$sContent-Type: application/json%1$s \\ - --header %1$sAccept: */*%1$s \\ - --header %1$sContent-Length: 120%1$s \\ - --header %1$sAccept-Encoding: gzip%1$s \\ - --header %1$sUser-Agent: Symfony HttpClient (Native)%1$s \\ - --data-raw %1$s{"foo":{"bar":"baz","qux":[1.1,1.0],"fred":["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026"]}}%1$s', + --url http://localhost:8057/json \\ + --header Content-Type: application/json \\ + --header Accept: */* \\ + --header Content-Length: 120 \\ + --header Accept-Encoding: gzip \\ + --header User-Agent: Symfony HttpClient (Native) \\ + --data-raw {"foo":{"bar":"baz","qux":[1.1,1.0],"fred":["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026"]}}', ]; } } @@ -358,14 +360,14 @@ $collectedData = $sut->getClients(); self::assertCount(1, $collectedData['http_client']['traces']); $curlCommand = $collectedData['http_client']['traces'][0]['curlCommand']; - self::assertEquals(sprintf('curl \\ + self::assertSame('curl \\ --compressed \\ --request GET \\ - --url %1$shttp://localhost:8057/301%1$s \\ - --header %1$sAccept: */*%1$s \\ - --header %1$sAuthorization: Basic Zm9vOmJhcg==%1$s \\ - --header %1$sAccept-Encoding: gzip%1$s \\ - --header %1$sUser-Agent: Symfony HttpClient (Native)%1$s', '\\' === \DIRECTORY_SEPARATOR ? '"' : "'"), $curlCommand + --url http://localhost:8057/301 \\ + --header Accept: */* \\ + --header Authorization: Basic Zm9vOmJhcg== \\ + --header Accept-Encoding: gzip \\ + --header User-Agent: Symfony HttpClient (Native)', str_replace(['"', "'"], '', $curlCommand) ); } @@ -426,6 +428,27 @@ self::assertNull($curlCommand); } + /** + * @requires extension curl + */ + public function testGeneratingCurlCommandForArraysWithResourcesAndUnreachableHost() + { + $httpClient = new TraceableHttpClient(new CurlHttpClient()); + try { + $httpClient->request('POST', 'http://localhast:8057/', [ + 'body' => ['file' => fopen('data://text/plain,', 'r')], + ]); + } catch (TransportException) { + } + $sut = new HttpClientDataCollector(); + $sut->registerClient('http_client', $httpClient); + $sut->lateCollect(); + $collectedData = $sut->getClients(); + self::assertCount(1, $collectedData['http_client']['traces']); + $curlCommand = $collectedData['http_client']['traces'][0]['curlCommand']; + self::assertNull($curlCommand); + } + private function httpClientThatHasTracedRequests($tracedRequests): TraceableHttpClient { $httpClient = new TraceableHttpClient(new NativeHttpClient()); @@ -437,4 +460,44 @@ return $httpClient; } + + /** + * @dataProvider provideClientIsResetWhenExpectedCases + */ + public function testClientIsResetWhenExpected(\Closure $request, bool $wasReset) + { + $mockHttpClient = new class extends MockHttpClient { + public bool $wasReset = false; + + public function reset(): void + { + parent::reset(); + + $this->wasReset = true; + } + }; + + $sut = new HttpClientDataCollector(); + $sut->registerClient('http_client', $traceableHttpClient = new TraceableHttpClient($mockHttpClient)); + $request($traceableHttpClient); + $sut->lateCollect(); + + $this->assertSame($wasReset, $mockHttpClient->wasReset); + } + + public static function provideClientIsResetWhenExpectedCases(): iterable + { + yield [ + static function (TraceableHttpClient $traceableHttpClient) { + $response = $traceableHttpClient->request('GET', 'http://localhost/'); + $response->getContent(); + }, + true, + ]; + + yield [ + static fn () => null, + false, + ]; + } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/EventSourceHttpClientTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/EventSourceHttpClientTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/EventSourceHttpClientTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/EventSourceHttpClientTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -41,45 +41,45 @@ return new MockResponse([ str_replace("\n", $sep, << -data -data: -data -data: - -id: 60 -data -TXT + : anywhere + id: 48 + data: {} + + data: test + data:test + id: 49 + event: testEvent + + + id: 50 + data: + data + data: + data + data: + + id: 60 + data + TXT ), ], [ 'canceled' => false, @@ -112,7 +112,7 @@ { $chunk = new DataChunk(0, ''); $response = new MockResponse('', ['canceled' => false, 'http_method' => 'POST', 'url' => 'http://localhost:8080/events', 'response_headers' => ['content-type: text/event-stream']]); - $responseStream = new ResponseStream((function () use ($response, $chunk) { + $responseStream = new ResponseStream((static function () use ($response, $chunk) { yield $response => new FirstChunk(); yield $response => $chunk; yield $response => new ErrorChunk(0, 'timeout'); @@ -125,9 +125,16 @@ return true; }; - $httpClient = $this->createMock(HttpClientInterface::class); + $httpClient = $this->createStub(HttpClientInterface::class); - $httpClient->method('request')->with('POST', 'http://localhost:8080/events', $this->callback($hasCorrectHeaders))->willReturn($response); + $httpClient->method('request') + ->willReturnCallback(function (string $method, string $url, array $options = []) use ($hasCorrectHeaders, $response) { + $this->assertSame('POST', $method); + $this->assertSame('http://localhost:8080/events', $url); + $this->assertTrue($hasCorrectHeaders($options)); + + return $response; + }); $httpClient->method('stream')->willReturn($responseStream); @@ -142,7 +149,7 @@ { $chunk = new DataChunk(0, ''); $response = new MockResponse('', ['canceled' => false, 'http_method' => 'GET', 'url' => 'http://localhost:8080/events', 'response_headers' => ['content-type: '.$contentType]]); - $responseStream = new ResponseStream((function () use ($response, $chunk) { + $responseStream = new ResponseStream((static function () use ($response, $chunk) { yield $response => new FirstChunk(); yield $response => $chunk; yield $response => new ErrorChunk(0, 'timeout'); @@ -154,8 +161,15 @@ return true; }; - $httpClient = $this->createMock(HttpClientInterface::class); - $httpClient->method('request')->with('GET', 'http://localhost:8080/events', $this->callback($hasCorrectHeaders))->willReturn($response); + $httpClient = $this->createStub(HttpClientInterface::class); + $httpClient->method('request') + ->willReturnCallback(function (string $method, string $url, array $options = []) use ($hasCorrectHeaders, $response) { + $this->assertSame('GET', $method); + $this->assertSame('http://localhost:8080/events', $url); + $this->assertTrue($hasCorrectHeaders($options)); + + return $response; + }); $httpClient->method('stream')->willReturn($responseStream); @@ -177,6 +191,34 @@ } } + public function testFirstChunkIsYieldedAfterTimeout() + { + $es = new EventSourceHttpClient(new MockHttpClient([ + // Throws TransportException before any chunks are sent, emulating a stream timeout + new MockResponse('', [ + 'response_headers' => ['content-type: text/event-stream'], + 'error' => 'timeout', + ]), + new MockResponse("data: hello\n\n", [ + 'response_headers' => ['content-type: text/event-stream'], + ]), + ]), reconnectionTime: 0.0); + + $res = $es->connect('http://localhost:8080/events'); + + $expected = [ + new FirstChunk(), + new ServerSentEvent("data: hello\n\n"), + new LastChunk(13), + ]; + + foreach ($es->stream($res) as $chunk) { + $this->assertEquals(array_shift($expected), $chunk); + } + + $this->assertSame([], $expected); + } + public static function contentTypeProvider() { return [ diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/Exception/HttpExceptionTraitTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Exception/HttpExceptionTraitTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/Exception/HttpExceptionTraitTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Exception/HttpExceptionTraitTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -25,10 +25,10 @@ $errorWithoutMessage = 'HTTP/1.1 400 Bad Request returned for "http://example.com".'; $errorWithMessage = <<createMock(ResponseInterface::class); + $response = $this->createStub(ResponseInterface::class); $response ->method('getInfo') ->willReturnMap([ diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php 2026-05-27 08:23:35.000000000 +0000 @@ -18,6 +18,7 @@ use Symfony\Component\HttpClient\Internal\ClientState; use Symfony\Component\HttpClient\NoPrivateNetworkHttpClient; use Symfony\Component\HttpClient\Response\StreamWrapper; +use Symfony\Component\HttpClient\RetryableHttpClient; use Symfony\Component\Process\Exception\ProcessFailedException; use Symfony\Component\Process\Process; use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface; @@ -377,7 +378,7 @@ $client = $this->getHttpClient(__FUNCTION__); $traceInfo = []; - $client->request('GET', 'http://localhost:8057', ['on_progress' => function (int $dlNow, int $dlSize, array $info) use (&$traceInfo) { + $client->request('GET', 'http://localhost:8057', ['on_progress' => static function (int $dlNow, int $dlSize, array $info) use (&$traceInfo) { $traceInfo = $info; }]); @@ -652,6 +653,55 @@ $this->assertSame(['abc' => 'def', 'content-type' => 'application/json', 'REQUEST_METHOD' => 'POST'], $response->toArray()); } + public function testDoesNotThrowOnDestructIfExceptionCaughtEarlierWithGetStatusCode() + { + $client = new RetryableHttpClient($this->getHttpClient(__FUNCTION__)); + $client = $client->withOptions([ + 'max_duration' => 0.1, + 'timeout' => 0.1, + ]); + + $response = $client->request('GET', 'https://127.0.0.1:8000/api/cheeses'); + + try { + $response->getStatusCode(); + $this->fail('TransportException expected'); + } catch (TransportException) { + } + + try { + unset($response); + } catch (TransportException $e) { + $this->fail('Caught '.$e::class.'('.$e->getMessage().') but destruct should not throw'); + } + $this->expectNotToPerformAssertions(); + } + + public function testDoesNotThrowOnDestructIfExceptionCaughtEarlierEvenWithoutGetStatusCode() + { + $client = new RetryableHttpClient($this->getHttpClient(__FUNCTION__)); + $client = $client->withOptions([ + 'max_duration' => 0.1, + 'timeout' => 0.1, + ]); + + $response = $client->request('GET', 'https://127.0.0.1:8000/api/cheeses'); + + try { + foreach ($client->stream($response) as $chunk) { + } + $this->fail('TransportException expected'); + } catch (TransportException) { + } + + try { + unset($response); + } catch (TransportException $e) { + $this->fail('Caught '.$e::class.'('.$e->getMessage().') but destruct should not throw'); + } + $this->expectNotToPerformAssertions(); + } + public function testHeadRequestWithClosureBody() { $p = TestHttpServer::start(8067); @@ -660,7 +710,7 @@ $client = $this->getHttpClient(__FUNCTION__); $response = $client->request('HEAD', 'http://localhost:8057/head', [ - 'body' => fn () => '', + 'body' => static fn () => '', ]); $headers = $response->getHeaders(); } finally { @@ -686,7 +736,7 @@ try { $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('POST', 'http://localhost:8057/custom?status=' . $status . '&headers[]=Location%3A%20%2F'); + $response = $client->request('POST', 'http://localhost:8057/custom?status='.$status.'&headers[]=Location%3A%20%2F'); $body = $response->toArray(); } finally { $p->stop(); @@ -708,4 +758,14 @@ $this->addToAssertionCount(1); } + + public function testMaxConnectDurationInfo() + { + $this->markTestSkipped('The "max_connect_duration" option is not supported in this version of the HttpClient component.'); + } + + public function testMaxConnectDuration() + { + $this->markTestSkipped('The "max_connect_duration" option is not supported in this version of the HttpClient component.'); + } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/HttplugClientTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/HttplugClientTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/HttplugClientTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/HttplugClientTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -59,11 +59,11 @@ $promise = $client->sendAsyncRequest($client->createRequest('GET', 'http://localhost:8057')); $successCallableCalled = false; $failureCallableCalled = false; - $promise->then(function (ResponseInterface $response) use (&$successCallableCalled) { + $promise->then(static function (ResponseInterface $response) use (&$successCallableCalled) { $successCallableCalled = true; return $response; - }, function (\Exception $exception) use (&$failureCallableCalled) { + }, static function (\Exception $exception) use (&$failureCallableCalled) { $failureCallableCalled = true; throw $exception; @@ -91,11 +91,11 @@ $successCallableCalled = false; $failureCallableCalled = false; $client->sendAsyncRequest($client->createRequest('GET', 'http://localhost:8057/timeout-body')) - ->then(function (ResponseInterface $response) use (&$successCallableCalled) { + ->then(static function (ResponseInterface $response) use (&$successCallableCalled) { $successCallableCalled = true; return $response; - }, function (\Exception $exception) use (&$failureCallableCalled) { + }, static function (\Exception $exception) use (&$failureCallableCalled) { $failureCallableCalled = true; throw $exception; @@ -137,11 +137,11 @@ $promise = $client->sendAsyncRequest($client->createRequest('GET', 'http://localhost:8058')); $successCallableCalled = false; $failureCallableCalled = false; - $promise->then(function (ResponseInterface $response) use (&$successCallableCalled) { + $promise->then(static function (ResponseInterface $response) use (&$successCallableCalled) { $successCallableCalled = true; return $response; - }, function (\Exception $exception) use (&$failureCallableCalled) { + }, static function (\Exception $exception) use (&$failureCallableCalled) { $failureCallableCalled = true; throw $exception; @@ -180,7 +180,7 @@ return $client->sendAsyncRequest($client->createRequest('GET', 'http://localhost:8057')); }, - function (\Exception $exception) use (&$failureCallableCalled) { + static function (\Exception $exception) use (&$failureCallableCalled) { $failureCallableCalled = true; throw $exception; @@ -204,7 +204,7 @@ $promise = $client ->sendAsyncRequest($client->createRequest('GET', 'http://localhost:8057/chunked-broken')) - ->then(function (ResponseInterface $response) use (&$successCallableCalled) { + ->then(static function (ResponseInterface $response) use (&$successCallableCalled) { $successCallableCalled = true; return $response; @@ -229,7 +229,7 @@ $isFirstRequest = true; $errorMessage = 'Error occurred before making the actual request.'; - $client = new HttplugClient(new MockHttpClient(function () use (&$isFirstRequest, $errorMessage) { + $client = new HttplugClient(new MockHttpClient(static function () use (&$isFirstRequest, $errorMessage) { if ($isFirstRequest) { $isFirstRequest = false; throw new TransportException($errorMessage); @@ -246,7 +246,7 @@ $promise = $client ->sendAsyncRequest($request) ->then( - function (ResponseInterface $response) use (&$successCallableCalled) { + static function (ResponseInterface $response) use (&$successCallableCalled) { $successCallableCalled = true; return $response; @@ -257,7 +257,7 @@ $failureCallableCalled = true; // Ensure arbitrary levels of promises work. - return (new FulfilledPromise(null))->then(fn () => (new GuzzleFulfilledPromise(null))->then(fn () => $client->sendAsyncRequest($request))); + return (new FulfilledPromise(null))->then(static fn () => (new GuzzleFulfilledPromise(null))->then(static fn () => $client->sendAsyncRequest($request))); } ) ; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/Internal/CurlClientStateTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Internal/CurlClientStateTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/Internal/CurlClientStateTest.php 1970-01-01 00:00:00.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Internal/CurlClientStateTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -0,0 +1,43 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpClient\Tests\Internal; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\HttpClient\Internal\CurlClientState; + +/** + * @requires extension curl + */ +class CurlClientStateTest extends TestCase +{ + public function testOriginKeyFormat() + { + self::assertSame('http://127.0.0.1:8057', CurlClientState::originKey('http', '127.0.0.1', 8057)); + self::assertSame('http://127.0.0.1:8057', CurlClientState::originKey('http:', '127.0.0.1', 8057)); + self::assertSame('https://example.com:443', CurlClientState::originKey('https', 'example.com', 443)); + self::assertSame('http://example.com:80', CurlClientState::originKey('http', 'example.com', 80)); + self::assertSame('http://example.com:80', CurlClientState::originKey('http', 'EXAMPLE.com', 80)); + self::assertSame('http://example.com:80', CurlClientState::originKey('HTTP', 'example.com', 80)); + self::assertSame('http://example.com:80', CurlClientState::originKey('http', 'example.com')); + self::assertSame('https://example.com:443', CurlClientState::originKey('https', 'example.com')); + } + + public function testResetClearsNtlmRequiresFreshConnection() + { + $state = new CurlClientState(6, 0); + $state->ntlmRequiresFreshConnection['http://example.com:80'] = true; + + $state->reset(); + + self::assertSame([], $state->ntlmRequiresFreshConnection); + } +} diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -313,8 +313,8 @@ $responses = []; $headers = [ - 'Host: localhost:8057', - 'Content-Type: application/json', + 'Host: localhost:8057', + 'Content-Type: application/json', ]; $body = '{ @@ -390,9 +390,9 @@ $responses[] = new MockResponse($body, ['response_headers' => $headers]); $headers = [ - 'Host: localhost:8057', - 'Content-Length: 1000', - 'Content-Type: application/json', + 'Host: localhost:8057', + 'Content-Length: 1000', + 'Content-Type: application/json', ]; $responses[] = new MockResponse($body, ['response_headers' => $headers]); @@ -427,7 +427,7 @@ case 'testResolve': $responses[] = new MockResponse($body, ['response_headers' => $headers]); $responses[] = new MockResponse($body, ['response_headers' => $headers]); - $responses[] = new MockResponse((function () { yield ''; })(), ['response_headers' => $headers]); + $responses[] = new MockResponse((static function () { yield ''; })(), ['response_headers' => $headers]); break; case 'testTimeoutOnStream': @@ -438,7 +438,7 @@ break; case 'testInformationalResponseStream': - $client = $this->createMock(HttpClientInterface::class); + $client = $this->createStub(HttpClientInterface::class); $response = new MockResponse('Here the body', ['response_headers' => [ 'HTTP/1.1 103 ', 'Link: ; rel=preload; as=style', @@ -448,23 +448,23 @@ ]]); $client->method('request')->willReturn($response); $client->method('stream')->willReturn(new ResponseStream((function () use ($response) { - $chunk = $this->createMock(ChunkInterface::class); + $chunk = $this->createStub(ChunkInterface::class); $chunk->method('getInformationalStatus') ->willReturn([103, ['link' => ['; rel=preload; as=style', '; rel=preload; as=script']]]); yield $response => $chunk; - $chunk = $this->createMock(ChunkInterface::class); + $chunk = $this->createStub(ChunkInterface::class); $chunk->method('isFirst')->willReturn(true); yield $response => $chunk; - $chunk = $this->createMock(ChunkInterface::class); + $chunk = $this->createStub(ChunkInterface::class); $chunk->method('getContent')->willReturn('Here the body'); yield $response => $chunk; - $chunk = $this->createMock(ChunkInterface::class); + $chunk = $this->createStub(ChunkInterface::class); $chunk->method('isLast')->willReturn(true); yield $response => $chunk; @@ -474,7 +474,11 @@ case 'testNonBlockingStream': case 'testSeekAsyncStream': - $responses[] = new MockResponse((function () { yield '<1>'; yield ''; yield '<2>'; })(), ['response_headers' => $headers]); + $responses[] = new MockResponse((static function () { + yield '<1>'; + yield ''; + yield '<2>'; + })(), ['response_headers' => $headers]); break; case 'testMaxDuration': @@ -497,7 +501,7 @@ public function testChangeResponseFactory() { - /* @var MockHttpClient $client */ + /** @var MockHttpClient $client */ $client = $this->getHttpClient(__METHOD__); $expectedBody = '{"foo": "bar"}'; $client->setResponseFactory(new MockResponse($expectedBody)); @@ -511,7 +515,7 @@ { $client = new MockHttpClient(); - $param = new class() { + $param = new class { public function __toString() { return 'bar'; @@ -576,4 +580,14 @@ $client->request('GET', 'https://example.com'); $client->request('GET', 'https://example.com'); } + + public function testDoesNotThrowOnDestructIfExceptionCaughtEarlierWithGetStatusCode() + { + $this->markTestSkipped('Not supported'); + } + + public function testDoesNotThrowOnDestructIfExceptionCaughtEarlierEvenWithoutGetStatusCode() + { + $this->markTestSkipped('Not supported'); + } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/NoPrivateNetworkHttpClientTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/NoPrivateNetworkHttpClientTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/NoPrivateNetworkHttpClientTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/NoPrivateNetworkHttpClientTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -68,6 +68,7 @@ /** * @dataProvider getExcludeIpData + * * @group dns-sensitive */ public function testExcludeByIp(string $ipAddr, $subnets, bool $mustThrow) @@ -105,6 +106,7 @@ /** * @dataProvider getExcludeHostData + * * @group dns-sensitive */ public function testExcludeByHost(string $ipAddr, $subnets, bool $mustThrow) @@ -143,11 +145,11 @@ public function testCustomOnProgressCallback() { $ipAddr = '104.26.14.6'; - $url = sprintf('http://%s/', $ipAddr); + $url = \sprintf('http://%s/', $ipAddr); $content = 'foo'; $executionCount = 0; - $customCallback = function (int $dlNow, int $dlSize, array $info) use (&$executionCount): void { + $customCallback = static function (int $dlNow, int $dlSize, array $info) use (&$executionCount): void { ++$executionCount; }; @@ -163,8 +165,8 @@ public function testNonCallableOnProgressCallback() { $ipAddr = '104.26.14.6'; - $url = sprintf('http://%s/', $ipAddr); - $customCallback = sprintf('cb_%s', microtime(true)); + $url = \sprintf('http://%s/', $ipAddr); + $customCallback = \sprintf('cb_%s', microtime(true)); $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('Option "on_progress" must be callable, "string" given.'); @@ -176,13 +178,14 @@ public function testHeadersArePassedOnRedirect() { $ipAddr = '104.26.14.6'; - $url = sprintf('http://%s/', $ipAddr); + $url = \sprintf('http://%s/', $ipAddr); $content = 'foo'; $callback = function ($method, $url, $options) use ($content): MockResponse { $this->assertArrayHasKey('headers', $options); $this->assertNotContains('content-type: application/json', $options['headers']); $this->assertContains('foo: bar', $options['headers']); + return new MockResponse($content); }; $responses = [ diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/Response/HttplugPromiseTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Response/HttplugPromiseTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/Response/HttplugPromiseTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Response/HttplugPromiseTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -19,8 +19,8 @@ { public function testComplexNesting() { - $mkPromise = function ($result): HttplugPromise { - $guzzlePromise = new Promise(function () use (&$guzzlePromise, $result) { + $mkPromise = static function ($result): HttplugPromise { + $guzzlePromise = new Promise(static function () use (&$guzzlePromise, $result) { $guzzlePromise->resolve($result); }); @@ -29,7 +29,7 @@ $promise1 = $mkPromise('result'); $promise2 = $promise1->then($mkPromise); - $promise3 = $promise2->then(fn ($result) => $result); + $promise3 = $promise2->then(static fn ($result) => $result); $this->assertSame('result', $promise3->wait()); } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/Response/MockResponseTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Response/MockResponseTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/Response/MockResponseTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Response/MockResponseTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -86,13 +86,13 @@ yield [ 'content' => 'not json', 'responseHeaders' => [], - 'message' => 'Syntax error for "https://example.com/file.json".', + 'message' => \PHP_VERSION_ID < 80600 ? 'Syntax error for "https://example.com/file.json".' : 'Syntax error near location 1:1 for "https://example.com/file.json".', ]; yield [ 'content' => '[1,2}', 'responseHeaders' => [], - 'message' => 'State mismatch (invalid or malformed JSON) for "https://example.com/file.json".', + 'message' => \PHP_VERSION_ID < 80600 ? 'State mismatch (invalid or malformed JSON) for "https://example.com/file.json".' : 'State mismatch (invalid or malformed JSON) near location 1:5 for "https://example.com/file.json".', ]; yield [ diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/RetryableHttpClientTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/RetryableHttpClientTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/RetryableHttpClientTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/RetryableHttpClientTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -18,11 +18,14 @@ use Symfony\Component\HttpClient\MockHttpClient; use Symfony\Component\HttpClient\NativeHttpClient; use Symfony\Component\HttpClient\Response\AsyncContext; +use Symfony\Component\HttpClient\Response\AsyncResponse; use Symfony\Component\HttpClient\Response\MockResponse; use Symfony\Component\HttpClient\Retry\GenericRetryStrategy; use Symfony\Component\HttpClient\Retry\RetryStrategyInterface; use Symfony\Component\HttpClient\RetryableHttpClient; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; +use Symfony\Contracts\HttpClient\HttpClientInterface; +use Symfony\Contracts\HttpClient\ResponseInterface; use Symfony\Contracts\HttpClient\Test\TestHttpServer; class RetryableHttpClientTest extends TestCase @@ -210,7 +213,7 @@ ]), new GenericRetryStrategy(), 1, - $logger = new class() extends TestLogger { + $logger = new class extends TestLogger { public array $context = []; public function log($level, $message, array $context = []): void @@ -234,8 +237,8 @@ { $client = new RetryableHttpClient( new MockHttpClient([ - new MockResponse('', ['http_code' => 500]), - new MockResponse('Test out content', ['http_code' => 200]), + new MockResponse('', ['http_code' => 500]), + new MockResponse('Test out content', ['http_code' => 200]), ]), new GenericRetryStrategy([500], 0), 1 @@ -254,7 +257,7 @@ TestHttpServer::start(); - $strategy = new class() implements RetryStrategyInterface { + $strategy = new class implements RetryStrategyInterface { public $isCalled = false; public function shouldRetry(AsyncContext $context, ?string $responseContent, ?TransportExceptionInterface $exception): ?bool @@ -421,4 +424,174 @@ self::assertSame(504, $response->getStatusCode()); } + + public function testRetryOnTimeoutWithAsyncDecorator() + { + $client = HttpClient::create(); + + TestHttpServer::start(); + + $strategy = new class implements RetryStrategyInterface { + public bool $isCalled = false; + + public function shouldRetry(AsyncContext $context, ?string $responseContent, ?TransportExceptionInterface $exception): ?bool + { + $this->isCalled = true; + + return false; + } + + public function getDelay(AsyncContext $context, ?string $responseContent, ?TransportExceptionInterface $exception): int + { + return 0; + } + }; + $client = new RetryableHttpClient($client, $strategy); + + $client = new class($client) implements HttpClientInterface { + use \Symfony\Component\HttpClient\AsyncDecoratorTrait; + + public function request(string $method, string $url, array $options = []): ResponseInterface + { + return new AsyncResponse($this->client, $method, $url, $options); + } + }; + + $response = $client->request('GET', 'http://localhost:8057/timeout-header', ['timeout' => 0.1]); + + try { + $response->getStatusCode(); + $this->fail(TransportException::class.' expected'); + } catch (TransportException $e) { + } + + $this->assertTrue($strategy->isCalled, 'The HTTP retry strategy should be called'); + } + + public function testRetryOnErrorWithAsyncDecorator() + { + $client = new MockHttpClient([ + new MockResponse('', ['http_code' => 500]), + new MockResponse('OK', ['http_code' => 200]), + ]); + + $client = new RetryableHttpClient($client, new GenericRetryStrategy([500], 0), 1); + + $client = new class($client) implements HttpClientInterface { + use \Symfony\Component\HttpClient\AsyncDecoratorTrait; + + public function request(string $method, string $url, array $options = []): ResponseInterface + { + return new AsyncResponse($this->client, $method, $url, $options); + } + }; + + $response = $client->request('GET', 'http://example.com/foo-bar'); + + self::assertSame(200, $response->getStatusCode()); + self::assertSame('OK', $response->getContent()); + } + + public function testRetryOnTimeoutWithMultipleAsyncDecorators() + { + $client = HttpClient::create(); + + TestHttpServer::start(); + + $strategy = new class implements RetryStrategyInterface { + public bool $isCalled = false; + + public function shouldRetry(AsyncContext $context, ?string $responseContent, ?TransportExceptionInterface $exception): ?bool + { + $this->isCalled = true; + + return false; + } + + public function getDelay(AsyncContext $context, ?string $responseContent, ?TransportExceptionInterface $exception): int + { + return 0; + } + }; + + $client = new RetryableHttpClient($client, $strategy); + + // Two nested async decorators without passthru around the RetryableHttpClient + $client = new class($client) implements HttpClientInterface { + use \Symfony\Component\HttpClient\AsyncDecoratorTrait; + + public function request(string $method, string $url, array $options = []): ResponseInterface + { + return new AsyncResponse($this->client, $method, $url, $options); + } + }; + $client = new class($client) implements HttpClientInterface { + use \Symfony\Component\HttpClient\AsyncDecoratorTrait; + + public function request(string $method, string $url, array $options = []): ResponseInterface + { + return new AsyncResponse($this->client, $method, $url, $options); + } + }; + + $response = $client->request('GET', 'http://localhost:8057/timeout-header', ['timeout' => 0.1]); + + try { + $response->getStatusCode(); + $this->fail(TransportException::class.' expected'); + } catch (TransportException $e) { + } + + $this->assertTrue($strategy->isCalled, 'The HTTP retry strategy should be called with multiple decorators'); + } + + public function testRetryActuallyRetriesWithAsyncDecorator() + { + $client = HttpClient::create(); + + TestHttpServer::start(); + + $retryCount = 0; + $strategy = new class($retryCount) implements RetryStrategyInterface { + private int $retryCount; + + public function __construct(int &$retryCount) + { + $this->retryCount = &$retryCount; + } + + public function shouldRetry(AsyncContext $context, ?string $responseContent, ?TransportExceptionInterface $exception): ?bool + { + ++$this->retryCount; + + return $this->retryCount < 2; + } + + public function getDelay(AsyncContext $context, ?string $responseContent, ?TransportExceptionInterface $exception): int + { + return 0; + } + }; + + $client = new RetryableHttpClient($client, $strategy, 2); + + $client = new class($client) implements HttpClientInterface { + use \Symfony\Component\HttpClient\AsyncDecoratorTrait; + + public function request(string $method, string $url, array $options = []): ResponseInterface + { + return new AsyncResponse($this->client, $method, $url, $options); + } + }; + + $response = $client->request('GET', 'http://localhost:8057/timeout-header', ['timeout' => 0.1]); + + try { + $response->getStatusCode(); + $this->fail(TransportException::class.' expected'); + } catch (TransportException $e) { + } + + $this->assertSame(2, $retryCount, 'The request should have been retried once'); + } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/ScopingHttpClientTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/ScopingHttpClientTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/ScopingHttpClientTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/ScopingHttpClientTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -14,6 +14,9 @@ use PHPUnit\Framework\TestCase; use Symfony\Component\HttpClient\Exception\InvalidArgumentException; use Symfony\Component\HttpClient\MockHttpClient; +use Symfony\Component\HttpClient\Response\MockResponse; +use Symfony\Component\HttpClient\Retry\GenericRetryStrategy; +use Symfony\Component\HttpClient\RetryableHttpClient; use Symfony\Component\HttpClient\ScopingHttpClient; class ScopingHttpClientTest extends TestCase @@ -94,10 +97,31 @@ $client = ScopingHttpClient::forBaseUri(new MockHttpClient(null, null), 'http://example.com/foo'); $response = $client->request('GET', '/bar'); - $this->assertSame('http://example.com/foo', implode('', $response->getRequestOptions()['base_uri'])); $this->assertSame('http://example.com/bar', $response->getInfo('url')); $response = $client->request('GET', 'http://foo.bar/'); - $this->assertNull($response->getRequestOptions()['base_uri']); + $this->assertSame('http://foo.bar/', $response->getInfo('url')); + } + + public function testRetryableHttpClientIntegration() + { + $responses = [ + new MockResponse(info: ['http_code' => 503]), + new MockResponse(info: ['http_code' => 503]), + new MockResponse(info: ['http_code' => 503]), + new MockResponse(), + ]; + + $client = ScopingHttpClient::forBaseUri( + new RetryableHttpClient( + new MockHttpClient($responses), + new GenericRetryStrategy(delayMs: 0) + ), + 'https://foo.example.com/app/', + ); + + $response = $client->request('GET', 'santysisi'); + $this->assertSame(200, $response->getStatusCode()); + $this->assertSame('https://foo.example.com/app/santysisi', $response->getInfo('url')); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/Test/HarFileResponseFactoryTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Test/HarFileResponseFactoryTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/Test/HarFileResponseFactoryTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/Test/HarFileResponseFactoryTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -46,18 +46,18 @@ $factory = new HarFileResponseFactory("{$this->fixtureDir}/graphql.github.io_archive.har"); $client = new MockHttpClient($factory, 'https://swapi-graphql.netlify.app'); $query = <<<'GRAPHQL' -{ - allFilms(first: 5) { - edges { - node { - title - director - } - } - totalCount - } -} -GRAPHQL; + { + allFilms(first: 5) { + edges { + node { + title + director + } + } + totalCount + } + } + GRAPHQL; $response = $client->request('POST', '/graphql', [ 'json' => ['query' => $query], diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/TraceableHttpClientTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/TraceableHttpClientTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/Tests/TraceableHttpClientTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/Tests/TraceableHttpClientTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -31,22 +31,17 @@ public function testItTracesRequest() { - $httpClient = $this->createMock(HttpClientInterface::class); + $httpClient = $this->createStub(HttpClientInterface::class); $httpClient - ->expects($this->any()) ->method('request') - ->with( - 'GET', - '/foo/bar', - $this->callback(function ($subject) { - $onprogress = $subject['on_progress']; - unset($subject['on_progress'], $subject['extra']); - $this->assertEquals(['options1' => 'foo'], $subject); - - return true; - }) - ) - ->willReturn(MockResponse::fromRequest('GET', '/foo/bar', ['options1' => 'foo'], new MockResponse('hello'))) + ->willReturnCallback(function (string $method, string $url, array $options = []) { + $this->assertSame('GET', $method); + $this->assertSame('/foo/bar', $url); + unset($options['on_progress'], $options['extra']); + $this->assertEquals(['options1' => 'foo'], $options); + + return MockResponse::fromRequest('GET', '/foo/bar', ['options1' => 'foo'], new MockResponse('hello')); + }) ; $sut = new TraceableHttpClient($httpClient); @@ -90,7 +85,7 @@ { $sut = new TraceableHttpClient(new MockHttpClient()); $foo = 0; - $sut->request('GET', 'http://localhost:8057', ['on_progress' => function (int $dlNow, int $dlSize, array $info) use (&$foo) { + $sut->request('GET', 'http://localhost:8057', ['on_progress' => static function (int $dlNow, int $dlSize, array $info) use (&$foo) { ++$foo; }]); $this->assertCount(1, $tracedRequests = $sut->getTracedRequests()); @@ -123,7 +118,7 @@ { $this->expectException(ClientExceptionInterface::class); - $sut = new TraceableHttpClient(new MockHttpClient($responseFactory = fn (): MockResponse => new MockResponse('Errored.', ['http_code' => 400]))); + $sut = new TraceableHttpClient(new MockHttpClient($responseFactory = static fn (): MockResponse => new MockResponse('Errored.', ['http_code' => 400]))); $response = $sut->request('GET', 'https://example.com/foo/bar'); $response->toArray(); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/TraceableHttpClient.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/TraceableHttpClient.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/TraceableHttpClient.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/TraceableHttpClient.php 2026-05-27 08:23:35.000000000 +0000 @@ -55,7 +55,7 @@ $content = false; } - $options['on_progress'] = function (int $dlNow, int $dlSize, array $info) use (&$traceInfo, $onProgress) { + $options['on_progress'] = static function (int $dlNow, int $dlSize, array $info) use (&$traceInfo, $onProgress) { $traceInfo = $info; if (null !== $onProgress) { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/composer.json symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/composer.json --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpClient/composer.json 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpClient/composer.json 2026-05-27 08:23:35.000000000 +0000 @@ -26,6 +26,7 @@ "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-client-contracts": "~3.4.4|^3.5.2", + "symfony/polyfill-php83": "^1.29", "symfony/service-contracts": "^2.5|^3" }, "require-dev": { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/AcceptHeader.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/AcceptHeader.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/AcceptHeader.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/AcceptHeader.php 2026-05-27 08:23:35.000000000 +0000 @@ -25,7 +25,7 @@ class AcceptHeader { /** - * @var AcceptHeaderItem[] + * @var array */ private array $items = []; @@ -46,18 +46,15 @@ */ public static function fromString(?string $headerValue): self { - $parts = HeaderUtils::split($headerValue ?? '', ',;='); + $items = []; + foreach (HeaderUtils::split($headerValue ?? '', ',;=') as $i => $parts) { + $part = array_shift($parts); + $item = new AcceptHeaderItem($part[0], HeaderUtils::combine($parts)); - return new self(array_map(function ($subParts) { - static $index = 0; - $part = array_shift($subParts); - $attributes = HeaderUtils::combine($subParts); - - $item = new AcceptHeaderItem($part[0], $attributes); - $item->setIndex($index++); + $items[] = $item->setIndex($i); + } - return $item; - }, $parts)); + return new self($items); } /** @@ -73,7 +70,9 @@ */ public function has(string $value): bool { - return isset($this->items[$value]); + $canonicalKey = $this->getCanonicalKey(AcceptHeaderItem::fromString($value)); + + return isset($this->items[$canonicalKey]); } /** @@ -81,7 +80,26 @@ */ public function get(string $value): ?AcceptHeaderItem { - return $this->items[$value] ?? $this->items[explode('/', $value)[0].'/*'] ?? $this->items['*/*'] ?? $this->items['*'] ?? null; + $queryItem = AcceptHeaderItem::fromString($value.';q=1'); + $canonicalKey = $this->getCanonicalKey($queryItem); + + if (isset($this->items[$canonicalKey])) { + return $this->items[$canonicalKey]; + } + + // Collect and filter matching candidates + if (!$candidates = array_filter($this->items, fn (AcceptHeaderItem $item) => $this->matches($item, $queryItem))) { + return null; + } + + usort( + $candidates, + fn ($a, $b) => $this->getSpecificity($b, $queryItem) <=> $this->getSpecificity($a, $queryItem) // Descending specificity + ?: $b->getQuality() <=> $a->getQuality() // Descending quality + ?: $a->getIndex() <=> $b->getIndex() // Ascending index (stability) + ); + + return reset($candidates); } /** @@ -91,7 +109,7 @@ */ public function add(AcceptHeaderItem $item): static { - $this->items[$item->getValue()] = $item; + $this->items[$this->getCanonicalKey($item)] = $item; $this->sorted = false; return $this; @@ -114,7 +132,7 @@ */ public function filter(string $pattern): self { - return new self(array_filter($this->items, fn (AcceptHeaderItem $item) => preg_match($pattern, $item->getValue()))); + return new self(array_filter($this->items, static fn ($item) => preg_match($pattern, $item->getValue()))); } /** @@ -133,18 +151,154 @@ private function sort(): void { if (!$this->sorted) { - uasort($this->items, function (AcceptHeaderItem $a, AcceptHeaderItem $b) { - $qA = $a->getQuality(); - $qB = $b->getQuality(); - - if ($qA === $qB) { - return $a->getIndex() > $b->getIndex() ? 1 : -1; - } - - return $qA > $qB ? -1 : 1; - }); + uasort($this->items, static fn ($a, $b) => $b->getQuality() <=> $a->getQuality() ?: $a->getIndex() <=> $b->getIndex()); $this->sorted = true; } } + + /** + * Generates the canonical key for storing/retrieving an item. + */ + private function getCanonicalKey(AcceptHeaderItem $item): string + { + $parts = []; + + // Normalize and sort attributes for consistent key generation + $attributes = $this->getMediaParams($item); + ksort($attributes); + + foreach ($attributes as $name => $value) { + if (null === $value) { + $parts[] = $name; // Flag parameter (e.g., "flowed") + continue; + } + + // Quote values containing spaces, commas, semicolons, or equals per RFC 9110 + // This handles cases like 'format="value with space"' or similar. + $quotedValue = \is_string($value) && preg_match('/[\s;,=]/', $value) ? '"'.addcslashes($value, '"\\').'"' : $value; + + $parts[] = $name.'='.$quotedValue; + } + + return $item->getValue().($parts ? ';'.implode(';', $parts) : ''); + } + + /** + * Checks if a given header item (range) matches a queried item (value). + * + * @param AcceptHeaderItem $rangeItem The item from the Accept header (e.g., text/*;format=flowed) + * @param AcceptHeaderItem $queryItem The item being queried (e.g., text/plain;format=flowed;charset=utf-8) + */ + private function matches(AcceptHeaderItem $rangeItem, AcceptHeaderItem $queryItem): bool + { + $rangeValue = strtolower($rangeItem->getValue()); + $queryValue = strtolower($queryItem->getValue()); + + // Handle universal wildcard ranges + if ('*' === $rangeValue || '*/*' === $rangeValue) { + return $this->rangeParametersMatch($rangeItem, $queryItem); + } + + // Queries for '*' only match wildcard ranges (handled above) + if ('*' === $queryValue) { + return false; + } + + // Ensure media vs. non-media consistency + $isQueryMedia = str_contains($queryValue, '/'); + $isRangeMedia = str_contains($rangeValue, '/'); + + if ($isQueryMedia !== $isRangeMedia) { + return false; + } + + // Non-media: exact match only (wildcards handled above) + if (!$isQueryMedia) { + return $rangeValue === $queryValue && $this->rangeParametersMatch($rangeItem, $queryItem); + } + + // Media type: type/subtype with wildcards + [$queryType, $querySubtype] = explode('/', $queryValue, 2); + [$rangeType, $rangeSubtype] = explode('/', $rangeValue, 2) + [1 => '*']; + + if ('*' !== $rangeType && $rangeType !== $queryType) { + return false; + } + + if ('*' !== $rangeSubtype && $rangeSubtype !== $querySubtype) { + return false; + } + + // Parameters must match + return $this->rangeParametersMatch($rangeItem, $queryItem); + } + + /** + * Checks if the parameters of a range item are satisfied by the query item. + * + * Parameters are case-insensitive; range params must be a subset of query params. + */ + private function rangeParametersMatch(AcceptHeaderItem $rangeItem, AcceptHeaderItem $queryItem): bool + { + $queryAttributes = $this->getMediaParams($queryItem); + $rangeAttributes = $this->getMediaParams($rangeItem); + + foreach ($rangeAttributes as $name => $rangeValue) { + if (!\array_key_exists($name, $queryAttributes)) { + return false; // Missing required param + } + + $queryValue = $queryAttributes[$name]; + + if (null === $rangeValue) { + return null === $queryValue; // Both flags or neither + } + + if (null === $queryValue || strtolower($queryValue) !== strtolower($rangeValue)) { + return false; + } + } + + return true; + } + + /** + * Calculates a specificity score for sorting: media precision + param count. + */ + private function getSpecificity(AcceptHeaderItem $item, AcceptHeaderItem $queryItem): int + { + $rangeValue = strtolower($item->getValue()); + $queryValue = strtolower($queryItem->getValue()); + + $paramCount = \count($this->getMediaParams($item)); + + $isQueryMedia = str_contains($queryValue, '/'); + $isRangeMedia = str_contains($rangeValue, '/'); + + if (!$isQueryMedia && !$isRangeMedia) { + return ('*' !== $rangeValue ? 2000 : 1000) + $paramCount; + } + + [$rangeType, $rangeSubtype] = explode('/', $rangeValue, 2) + [1 => '*']; + + $specificity = match (true) { + '*' !== $rangeSubtype => 3000, // Exact subtype (text/plain) + '*' !== $rangeType => 2000, // Type wildcard (text/*) + default => 1000, // Full wildcard (*/* or *) + }; + + return $specificity + $paramCount; + } + + /** + * Returns normalized attributes: keys lowercased, excluding 'q'. + */ + private function getMediaParams(AcceptHeaderItem $item): array + { + $attributes = array_change_key_case($item->getAttributes(), \CASE_LOWER); + unset($attributes['q']); + + return $attributes; + } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/BinaryFileResponse.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/BinaryFileResponse.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/BinaryFileResponse.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/BinaryFileResponse.php 2026-05-27 08:23:35.000000000 +0000 @@ -163,7 +163,7 @@ for ($i = 0, $filenameLength = mb_strlen($filename, $encoding); $i < $filenameLength; ++$i) { $char = mb_substr($filename, $i, 1, $encoding); - if ('%' === $char || \ord($char) < 32 || \ord($char) > 126) { + if ('%' === $char || \ord($char[0]) < 32 || \ord($char[0]) > 126) { $filenameFallback .= '_'; } else { $filenameFallback .= $char; @@ -229,7 +229,7 @@ $path = $location.substr($path, \strlen($pathPrefix)); // Only set X-Accel-Redirect header if a valid URI can be produced // as nginx does not serve arbitrary file paths. - $this->headers->set($type, $path); + $this->headers->set($type, rawurlencode($path)); $this->maxlen = 0; break; } @@ -259,13 +259,13 @@ $end = min($end, $fileSize - 1); if ($start < 0 || $start > $end) { $this->setStatusCode(416); - $this->headers->set('Content-Range', sprintf('bytes */%s', $fileSize)); - } elseif ($end - $start < $fileSize - 1) { + $this->headers->set('Content-Range', \sprintf('bytes */%s', $fileSize)); + } else { $this->maxlen = $end < $fileSize ? $end - $start + 1 : -1; $this->offset = $start; $this->setStatusCode(206); - $this->headers->set('Content-Range', sprintf('bytes %s-%s/%s', $start, $end, $fileSize)); + $this->headers->set('Content-Range', \sprintf('bytes %s-%s/%s', $start, $end, $fileSize)); $this->headers->set('Content-Length', $end - $start + 1); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Cookie.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Cookie.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Cookie.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Cookie.php 2026-05-27 08:23:35.000000000 +0000 @@ -101,7 +101,7 @@ { // from PHP source code if ($raw && false !== strpbrk($name, self::RESERVED_CHARS_LIST)) { - throw new \InvalidArgumentException(sprintf('The cookie name "%s" contains invalid characters.', $name)); + throw new \InvalidArgumentException(\sprintf('The cookie name "%s" contains invalid characters.', $name)); } if (empty($name)) { @@ -211,7 +211,7 @@ public function withRaw(bool $raw = true): static { if ($raw && false !== strpbrk($this->name, self::RESERVED_CHARS_LIST)) { - throw new \InvalidArgumentException(sprintf('The cookie name "%s" contains invalid characters.', $this->name)); + throw new \InvalidArgumentException(\sprintf('The cookie name "%s" contains invalid characters.', $this->name)); } $cookie = clone $this; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php 2026-05-27 08:23:35.000000000 +0000 @@ -20,6 +20,6 @@ { public function __construct(string $path) { - parent::__construct(sprintf('The file %s could not be accessed', $path)); + parent::__construct(\sprintf('The file %s could not be accessed', $path)); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php 2026-05-27 08:23:35.000000000 +0000 @@ -20,6 +20,6 @@ { public function __construct(string $path) { - parent::__construct(sprintf('The file "%s" does not exist', $path)); + parent::__construct(\sprintf('The file "%s" does not exist', $path)); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php 2026-05-27 08:23:35.000000000 +0000 @@ -15,6 +15,6 @@ { public function __construct(mixed $value, string $expectedType) { - parent::__construct(sprintf('Expected argument of type %s, %s given', $expectedType, get_debug_type($value))); + parent::__construct(\sprintf('Expected argument of type %s, %s given', $expectedType, get_debug_type($value))); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/File/File.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/File.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/File/File.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/File.php 2026-05-27 08:23:35.000000000 +0000 @@ -86,17 +86,17 @@ { $target = $this->getTargetFile($directory, $name); - set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; }); + set_error_handler(static function ($type, $msg) use (&$error) { $error = $msg; }); try { $renamed = rename($this->getPathname(), $target); } finally { restore_error_handler(); } if (!$renamed) { - throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error))); + throw new FileException(\sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error))); } - @chmod($target, 0666 & ~umask()); + @chmod($target, 0o666 & ~umask()); return $target; } @@ -106,7 +106,7 @@ $content = file_get_contents($this->getPathname()); if (false === $content) { - throw new FileException(sprintf('Could not get the content of the file "%s".', $this->getPathname())); + throw new FileException(\sprintf('Could not get the content of the file "%s".', $this->getPathname())); } return $content; @@ -115,11 +115,11 @@ protected function getTargetFile(string $directory, ?string $name = null): self { if (!is_dir($directory)) { - if (false === @mkdir($directory, 0777, true) && !is_dir($directory)) { - throw new FileException(sprintf('Unable to create the "%s" directory.', $directory)); + if (false === @mkdir($directory, 0o777, true) && !is_dir($directory)) { + throw new FileException(\sprintf('Unable to create the "%s" directory.', $directory)); } } elseif (!is_writable($directory)) { - throw new FileException(sprintf('Unable to write in the "%s" directory.', $directory)); + throw new FileException(\sprintf('Unable to write in the "%s" directory.', $directory)); } $target = rtrim($directory, '/\\').\DIRECTORY_SEPARATOR.(null === $name ? $this->getBasename() : $this->getName($name)); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/File/UploadedFile.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/UploadedFile.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/File/UploadedFile.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/File/UploadedFile.php 2026-05-27 08:23:35.000000000 +0000 @@ -167,39 +167,47 @@ $target = $this->getTargetFile($directory, $name); - set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; }); + set_error_handler(static function ($type, $msg) use (&$error) { $error = $msg; }); try { $moved = move_uploaded_file($this->getPathname(), $target); } finally { restore_error_handler(); } if (!$moved) { - throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error))); + throw new FileException(\sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error))); } - @chmod($target, 0666 & ~umask()); + @chmod($target, 0o666 & ~umask()); return $target; } switch ($this->error) { case \UPLOAD_ERR_INI_SIZE: - throw new IniSizeFileException($this->getErrorMessage()); + throw new IniSizeFileException($this->getExceptionMessage()); case \UPLOAD_ERR_FORM_SIZE: - throw new FormSizeFileException($this->getErrorMessage()); + throw new FormSizeFileException($this->getExceptionMessage()); case \UPLOAD_ERR_PARTIAL: - throw new PartialFileException($this->getErrorMessage()); + throw new PartialFileException($this->getExceptionMessage()); case \UPLOAD_ERR_NO_FILE: - throw new NoFileException($this->getErrorMessage()); + throw new NoFileException($this->getExceptionMessage()); case \UPLOAD_ERR_CANT_WRITE: - throw new CannotWriteFileException($this->getErrorMessage()); + throw new CannotWriteFileException($this->getExceptionMessage()); case \UPLOAD_ERR_NO_TMP_DIR: - throw new NoTmpDirFileException($this->getErrorMessage()); + throw new NoTmpDirFileException($this->getExceptionMessage()); case \UPLOAD_ERR_EXTENSION: - throw new ExtensionFileException($this->getErrorMessage()); + throw new ExtensionFileException($this->getExceptionMessage()); } - throw new FileException($this->getErrorMessage()); + throw new FileException($this->getExceptionMessage()); + } + + /** + * Retrieves a user-friendly error message for file upload issues, if any. + */ + public function getErrorMessage(): string + { + return \UPLOAD_ERR_OK !== $this->error ? $this->getExceptionMessage() : ''; } /** @@ -248,7 +256,7 @@ /** * Returns an informative upload error message. */ - public function getErrorMessage(): string + private function getExceptionMessage(): string { static $errors = [ \UPLOAD_ERR_INI_SIZE => 'The file "%s" exceeds your upload_max_filesize ini directive (limit is %d KiB).', @@ -264,6 +272,6 @@ $maxFilesize = \UPLOAD_ERR_INI_SIZE === $errorCode ? self::getMaxFilesize() / 1024 : 0; $message = $errors[$errorCode] ?? 'The file "%s" was not uploaded due to an unknown error.'; - return sprintf($message, $this->getClientOriginalName(), $maxFilesize); + return \sprintf($message, $this->getClientOriginalName(), $maxFilesize); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/HeaderBag.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/HeaderBag.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/HeaderBag.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/HeaderBag.php 2026-05-27 08:23:35.000000000 +0000 @@ -51,7 +51,7 @@ foreach ($headers as $name => $values) { $name = ucwords($name, '-'); foreach ($values as $value) { - $content .= sprintf("%-{$max}s %s\r\n", $name.':', $value); + $content .= \sprintf("%-{$max}s %s\r\n", $name.':', $value); } } @@ -204,7 +204,7 @@ } if (false === $date = \DateTimeImmutable::createFromFormat(\DATE_RFC2822, $value)) { - throw new \RuntimeException(sprintf('The "%s" HTTP header is not parseable (%s).', $key, $value)); + throw new \RuntimeException(\sprintf('The "%s" HTTP header is not parseable (%s).', $key, $value)); } return $date; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/HeaderUtils.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/HeaderUtils.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/HeaderUtils.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/HeaderUtils.php 2026-05-27 08:23:35.000000000 +0000 @@ -165,7 +165,7 @@ public static function makeDisposition(string $disposition, string $filename, string $filenameFallback = ''): string { if (!\in_array($disposition, [self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE])) { - throw new \InvalidArgumentException(sprintf('The disposition must be either "%s" or "%s".', self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE)); + throw new \InvalidArgumentException(\sprintf('The disposition must be either "%s" or "%s".', self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE)); } if ('' === $filenameFallback) { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/InputBag.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/InputBag.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/InputBag.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/InputBag.php 2026-05-27 08:23:35.000000000 +0000 @@ -29,13 +29,13 @@ public function get(string $key, mixed $default = null): string|int|float|bool|null { if (null !== $default && !\is_scalar($default) && !$default instanceof \Stringable) { - throw new \InvalidArgumentException(sprintf('Expected a scalar value as a 2nd argument to "%s()", "%s" given.', __METHOD__, get_debug_type($default))); + throw new \InvalidArgumentException(\sprintf('Expected a scalar value as a 2nd argument to "%s()", "%s" given.', __METHOD__, get_debug_type($default))); } $value = parent::get($key, $this); if (null !== $value && $this !== $value && !\is_scalar($value) && !$value instanceof \Stringable) { - throw new BadRequestException(sprintf('Input value "%s" contains a non-scalar value.', $key)); + throw new BadRequestException(\sprintf('Input value "%s" contains a non-scalar value.', $key)); } return $this === $value ? $default : $value; @@ -68,7 +68,7 @@ public function set(string $key, mixed $value): void { if (null !== $value && !\is_scalar($value) && !\is_array($value) && !$value instanceof \Stringable) { - throw new \InvalidArgumentException(sprintf('Expected a scalar, or an array as a 2nd argument to "%s()", "%s" given.', __METHOD__, get_debug_type($value))); + throw new \InvalidArgumentException(\sprintf('Expected a scalar, or an array as a 2nd argument to "%s()", "%s" given.', __METHOD__, get_debug_type($value))); } $this->parameters[$key] = $value; @@ -112,11 +112,11 @@ } if (\is_array($value) && !(($options['flags'] ?? 0) & (\FILTER_REQUIRE_ARRAY | \FILTER_FORCE_ARRAY))) { - throw new BadRequestException(sprintf('Input value "%s" contains an array, but "FILTER_REQUIRE_ARRAY" or "FILTER_FORCE_ARRAY" flags were not set.', $key)); + throw new BadRequestException(\sprintf('Input value "%s" contains an array, but "FILTER_REQUIRE_ARRAY" or "FILTER_FORCE_ARRAY" flags were not set.', $key)); } if ((\FILTER_CALLBACK & $filter) && !(($options['options'] ?? null) instanceof \Closure)) { - throw new \InvalidArgumentException(sprintf('A Closure must be passed to "%s()" when FILTER_CALLBACK is used, "%s" given.', __METHOD__, get_debug_type($options['options'] ?? null))); + throw new \InvalidArgumentException(\sprintf('A Closure must be passed to "%s()" when FILTER_CALLBACK is used, "%s" given.', __METHOD__, get_debug_type($options['options'] ?? null))); } $options['flags'] ??= 0; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/IpUtils.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/IpUtils.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/IpUtils.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/IpUtils.php 2026-05-27 08:23:35.000000000 +0000 @@ -29,8 +29,13 @@ '::1/128', // Loopback 'fc00::/7', // Unique Local Address 'fe80::/10', // Link Local Address - '::ffff:0:0/96', // IPv4 translations + '::ffff:0:0/96', // IPv4-mapped IPv6 addresses (RFC 4291 section 2.5.5.2) '::/128', // Unspecified address + '::/96', // IPv4-compatible IPv6 addresses (RFC 4291 section 2.5.5.1) + '2002::/16', // 6to4 (RFC 3056) + '2001::/32', // Teredo tunneling (RFC 4380) + '64:ff9b::/96', // NAT64 well-known prefix (RFC 6052) + '64:ff9b:1::/48', // NAT64 local-use prefix (RFC 8215) ]; private static array $checkedIps = []; @@ -102,7 +107,7 @@ return self::setCacheResult($cacheKey, false); } - return self::setCacheResult($cacheKey, 0 === substr_compare(sprintf('%032b', ip2long($requestIp)), sprintf('%032b', ip2long($address)), 0, $netmask)); + return self::setCacheResult($cacheKey, 0 === substr_compare(\sprintf('%032b', ip2long($requestIp)), \sprintf('%032b', ip2long($address)), 0, $netmask)); } /** @@ -182,7 +187,7 @@ */ public static function anonymize(string $ip): string { - /** + /* * If the IP contains a % symbol, then it is a local-link address with scoping according to RFC 4007 * In that case, we only care about the part before the % symbol, as the following functions, can only work with * the IP address itself. As the scope can leak information (containing interface name), we do not want to diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/JsonResponse.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/JsonResponse.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/JsonResponse.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/JsonResponse.php 2026-05-27 08:23:35.000000000 +0000 @@ -41,7 +41,7 @@ parent::__construct('', $status, $headers); if ($json && !\is_string($data) && !is_numeric($data) && !\is_callable([$data, '__toString'])) { - throw new \TypeError(sprintf('"%s": If $json is set to true, argument $data must be a string or object implementing __toString(), "%s" given.', __METHOD__, get_debug_type($data))); + throw new \TypeError(\sprintf('"%s": If $json is set to true, argument $data must be a string or object implementing __toString(), "%s" given.', __METHOD__, get_debug_type($data))); } $data ??= new \ArrayObject(); @@ -176,7 +176,7 @@ // Not using application/javascript for compatibility reasons with older browsers. $this->headers->set('Content-Type', 'text/javascript'); - return $this->setContent(sprintf('/**/%s(%s);', $this->callback, $this->data)); + return $this->setContent(\sprintf('/**/%s(%s);', $this->callback, $this->data)); } // Only set the header when there is none or when it equals 'text/javascript' (from a previous update with callback) diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/ParameterBag.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/ParameterBag.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/ParameterBag.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/ParameterBag.php 2026-05-27 08:23:35.000000000 +0000 @@ -45,7 +45,7 @@ } if (!\is_array($value = $this->parameters[$key] ?? [])) { - throw new BadRequestException(sprintf('Unexpected value for parameter "%s": expecting "array", got "%s".', $key, get_debug_type($value))); + throw new BadRequestException(\sprintf('Unexpected value for parameter "%s": expecting "array", got "%s".', $key, get_debug_type($value))); } return $value; @@ -141,7 +141,7 @@ { $value = $this->get($key, $default); if (!\is_scalar($value) && !$value instanceof \Stringable) { - throw new UnexpectedValueException(sprintf('Parameter value "%s" cannot be converted to "string".', $key)); + throw new UnexpectedValueException(\sprintf('Parameter value "%s" cannot be converted to "string".', $key)); } return (string) $value; @@ -185,7 +185,7 @@ try { return $class::from($value); } catch (\ValueError|\TypeError $e) { - throw new UnexpectedValueException(sprintf('Parameter "%s" cannot be converted to enum: %s.', $key, $e->getMessage()), $e->getCode(), $e); + throw new UnexpectedValueException(\sprintf('Parameter "%s" cannot be converted to enum: %s.', $key, $e->getMessage()), $e->getCode(), $e); } } @@ -212,11 +212,11 @@ } if (\is_object($value) && !$value instanceof \Stringable) { - throw new UnexpectedValueException(sprintf('Parameter value "%s" cannot be filtered.', $key)); + throw new UnexpectedValueException(\sprintf('Parameter value "%s" cannot be filtered.', $key)); } if ((\FILTER_CALLBACK & $filter) && !(($options['options'] ?? null) instanceof \Closure)) { - throw new \InvalidArgumentException(sprintf('A Closure must be passed to "%s()" when FILTER_CALLBACK is used, "%s" given.', __METHOD__, get_debug_type($options['options'] ?? null))); + throw new \InvalidArgumentException(\sprintf('A Closure must be passed to "%s()" when FILTER_CALLBACK is used, "%s" given.', __METHOD__, get_debug_type($options['options'] ?? null))); } $options['flags'] ??= 0; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/RedirectResponse.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/RedirectResponse.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/RedirectResponse.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/RedirectResponse.php 2026-05-27 08:23:35.000000000 +0000 @@ -39,7 +39,7 @@ $this->setTargetUrl($url); if (!$this->isRedirect()) { - throw new \InvalidArgumentException(sprintf('The HTTP status code is not a redirect ("%s" given).', $status)); + throw new \InvalidArgumentException(\sprintf('The HTTP status code is not a redirect ("%s" given).', $status)); } if (301 == $status && !\array_key_exists('cache-control', array_change_key_case($headers, \CASE_LOWER))) { @@ -71,7 +71,7 @@ $this->targetUrl = $url; $this->setContent( - sprintf(' + \sprintf(' diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Request.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Request.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Request.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Request.php 2026-05-27 08:23:35.000000000 +0000 @@ -351,10 +351,21 @@ $server['PATH_INFO'] = ''; $server['REQUEST_METHOD'] = strtoupper($method); + if (($i = strcspn($uri, ':/?#')) && ':' === ($uri[$i] ?? null) && (strspn($uri, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-.') !== $i || strcspn($uri, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'))) { + throw new BadRequestException('Invalid URI: Scheme is malformed.'); + } if (false === $components = parse_url(\strlen($uri) !== strcspn($uri, '?#') ? $uri : $uri.'#')) { throw new BadRequestException('Invalid URI.'); } + $part = ($components['user'] ?? '').':'.($components['pass'] ?? ''); + + if (':' !== $part && \strlen($part) !== strcspn($part, '[]')) { + throw new BadRequestException('Invalid URI: Userinfo is malformed.'); + } + if (($part = $components['host'] ?? '') && !self::isHostValid($part)) { + throw new BadRequestException('Invalid URI: Host is malformed.'); + } if (false !== ($i = strpos($uri, '\\')) && $i < strcspn($uri, '?#')) { throw new BadRequestException('Invalid URI: A URI cannot contain a backslash.'); } @@ -393,8 +404,16 @@ $server['PHP_AUTH_PW'] = $components['pass']; } - if (!isset($components['path'])) { + if ('' === $path = $components['path'] ?? '') { $components['path'] = '/'; + } elseif (!isset($components['scheme']) && !isset($components['host']) && '/' !== $path[0]) { + if (false !== $pos = strpos($path, '/')) { + $path = substr($path, 0, $pos); + } + + if (str_contains($path, ':')) { + throw new BadRequestException('Invalid URI: Path is malformed.'); + } } switch (strtoupper($method)) { @@ -537,7 +556,7 @@ } return - sprintf('%s %s %s', $this->getMethod(), $this->getRequestUri(), $this->server->get('SERVER_PROTOCOL'))."\r\n". + \sprintf('%s %s %s', $this->getMethod(), $this->getRequestUri(), $this->server->get('SERVER_PROTOCOL'))."\r\n". $this->headers. $cookieHeader."\r\n". $content; @@ -595,7 +614,7 @@ */ public static function setTrustedProxies(array $proxies, int $trustedHeaderSet) { - self::$trustedProxies = array_reduce($proxies, function ($proxies, $proxy) { + self::$trustedProxies = array_reduce($proxies, static function ($proxies, $proxy) { if ('REMOTE_ADDR' !== $proxy) { $proxies[] = $proxy; } elseif (isset($_SERVER['REMOTE_ADDR'])) { @@ -638,7 +657,7 @@ */ public static function setTrustedHosts(array $hostPatterns) { - self::$trustedHostPatterns = array_map(fn ($hostPattern) => sprintf('{%s}i', $hostPattern), $hostPatterns); + self::$trustedHostPatterns = array_map(static fn ($hostPattern) => \sprintf('{%s}i', $hostPattern), $hostPatterns); // we need to reset trusted hosts on trusted host patterns change self::$trustedHosts = []; } @@ -817,10 +836,6 @@ * being the original client, and each successive proxy that passed the request * adding the IP address where it received the request from. * - * If your reverse proxy uses a different header name than "X-Forwarded-For", - * ("Client-Ip" for instance), configure it via the $trustedHeaderSet - * argument of the Request::setTrustedProxies() method instead. - * * @see getClientIps() * @see https://wikipedia.org/wiki/X-Forwarded-For */ @@ -846,7 +861,7 @@ * * Suppose this request is instantiated from /mysite on localhost: * - * * http://localhost/mysite returns an empty string + * * http://localhost/mysite returns '/' * * http://localhost/mysite/about returns '/about' * * http://localhost/mysite/enco%20ded returns '/enco%20ded' * * http://localhost/mysite/about?var=1 returns '/about' @@ -1151,16 +1166,14 @@ // host is lowercase as per RFC 952/2181 $host = strtolower(preg_replace('/:\d+$/', '', trim($host))); - // as the host can come from the user (HTTP_HOST and depending on the configuration, SERVER_NAME too can come from the user) - // check that it does not contain forbidden characters (see RFC 952 and RFC 2181) - // use preg_replace() instead of preg_match() to prevent DoS attacks with long host names - if ($host && '' !== preg_replace('/(?:^\[)?[a-zA-Z0-9-:\]_]+\.?/', '', $host)) { + // the host can come from the user (HTTP_HOST and depending on the configuration, SERVER_NAME too can come from the user) + if ($host && !self::isHostValid($host)) { if (!$this->isHostValid) { return ''; } $this->isHostValid = false; - throw new SuspiciousOperationException(sprintf('Invalid Host "%s".', $host)); + throw new SuspiciousOperationException(\sprintf('Invalid Host "%s".', $host)); } if (\count(self::$trustedHostPatterns) > 0) { @@ -1183,7 +1196,7 @@ } $this->isHostValid = false; - throw new SuspiciousOperationException(sprintf('Untrusted Host "%s".', $host)); + throw new SuspiciousOperationException(\sprintf('Untrusted Host "%s".', $host)); } return $host; @@ -1298,15 +1311,22 @@ static::initializeFormats(); } + $exactFormat = null; + $canonicalFormat = null; + foreach (static::$formats as $format => $mimeTypes) { - if (\in_array($mimeType, (array) $mimeTypes)) { - return $format; + if (\in_array($mimeType, $mimeTypes, true)) { + $exactFormat = $format; } - if (null !== $canonicalMimeType && \in_array($canonicalMimeType, (array) $mimeTypes)) { - return $format; + if (null !== $canonicalMimeType && \in_array($canonicalMimeType, $mimeTypes, true)) { + $canonicalFormat = $format; } } + if ($format = $exactFormat ?? $canonicalFormat) { + return $format; + } + return null; } @@ -1323,7 +1343,7 @@ static::initializeFormats(); } - static::$formats[$format] = \is_array($mimeTypes) ? $mimeTypes : [$mimeTypes]; + static::$formats[$format ?? ''] = (array) $mimeTypes; } /** @@ -1466,7 +1486,7 @@ public function getProtocolVersion(): ?string { if ($this->isFromTrustedProxy()) { - preg_match('~^(HTTP/)?([1-9]\.[0-9]) ~', $this->headers->get('Via') ?? '', $matches); + preg_match('~^(HTTP/)?([1-9]\.[0-9])\b~', $this->headers->get('Via') ?? '', $matches); if ($matches) { return 'HTTP/'.$matches[2]; @@ -1545,7 +1565,7 @@ } if (!\is_array($content)) { - throw new JsonException(sprintf('JSON content was expected to decode to an array, "%s" returned.', get_debug_type($content))); + throw new JsonException(\sprintf('JSON content was expected to decode to an array, "%s" returned.', get_debug_type($content))); } return new InputBag($content); @@ -1571,7 +1591,7 @@ } if (!\is_array($content)) { - throw new JsonException(sprintf('JSON content was expected to decode to an array, "%s" returned.', get_debug_type($content))); + throw new JsonException(\sprintf('JSON content was expected to decode to an array, "%s" returned.', get_debug_type($content))); } return $content; @@ -1917,9 +1937,8 @@ } $pathInfo = substr($requestUri, \strlen($baseUrl)); - if (false === $pathInfo || '' === $pathInfo) { - // If substr() returns false then PATH_INFO is set to an empty string - return '/'; + if (false === $pathInfo || '' === $pathInfo || '/' !== $pathInfo[0]) { + return '/'.$pathInfo; } return $pathInfo; @@ -1978,7 +1997,7 @@ $len = \strlen($prefix); - if (preg_match(sprintf('#^(%%[[:xdigit:]]{2}|.){%d}#', $len), $string, $match)) { + if (preg_match(\sprintf('#^(%%[[:xdigit:]]{2}|.){%d}#', $len), $string, $match)) { return $match[0]; } @@ -2070,7 +2089,7 @@ } $this->isForwardedValid = false; - throw new ConflictingHeadersException(sprintf('The request has both a trusted "%s" header and a trusted "%s" header, conflicting with each other. You should either configure your proxy to remove one of them, or configure your project to distrust the offending one.', self::TRUSTED_HEADERS[self::HEADER_FORWARDED], self::TRUSTED_HEADERS[$type])); + throw new ConflictingHeadersException(\sprintf('The request has both a trusted "%s" header and a trusted "%s" header, conflicting with each other. You should either configure your proxy to remove one of them, or configure your project to distrust the offending one.', self::TRUSTED_HEADERS[self::HEADER_FORWARDED], self::TRUSTED_HEADERS[$type])); } private function normalizeAndFilterClientIps(array $clientIps, string $ip): array @@ -2128,4 +2147,21 @@ return $this->isIisRewrite; } + + /** + * See https://url.spec.whatwg.org/. + */ + private static function isHostValid(string $host): bool + { + if ('[' === $host[0]) { + return ']' === $host[-1] && filter_var(substr($host, 1, -1), \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV6); + } + + if (preg_match('/\.[0-9]++\.?$/D', $host)) { + return null !== filter_var($host, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV4 | \FILTER_NULL_ON_FAILURE); + } + + // use preg_replace() instead of preg_match() to prevent DoS attacks with long host names + return '' === preg_replace('/[-a-zA-Z0-9_]++\.?/', '', $host); + } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Response.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Response.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Response.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Response.php 2026-05-27 08:23:35.000000000 +0000 @@ -241,7 +241,7 @@ public function __toString(): string { return - sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText)."\r\n". + \sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText)."\r\n". $this->headers."\r\n". $this->getContent(); } @@ -393,7 +393,7 @@ $statusCode ??= $this->statusCode; // status - header(sprintf('HTTP/%s %s %s', $this->version, $statusCode, $this->statusText), true, $statusCode); + header(\sprintf('HTTP/%s %s %s', $this->version, $statusCode, $this->statusText), true, $statusCode); return $this; } @@ -499,7 +499,7 @@ { $this->statusCode = $code; if ($this->isInvalid()) { - throw new \InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $code)); + throw new \InvalidArgumentException(\sprintf('The HTTP status code "%s" is not valid.', $code)); } if (null === $text) { @@ -1011,7 +1011,7 @@ public function setCache(array $options): static { if ($diff = array_diff(array_keys($options), array_keys(self::HTTP_RESPONSE_CACHE_CONTROL_DIRECTIVES))) { - throw new \InvalidArgumentException(sprintf('Response does not support the following options: "%s".', implode('", "', $diff))); + throw new \InvalidArgumentException(\sprintf('Response does not support the following options: "%s".', implode('", "', $diff))); } if (isset($options['etag'])) { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/ResponseHeaderBag.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/ResponseHeaderBag.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/ResponseHeaderBag.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/ResponseHeaderBag.php 2026-05-27 08:23:35.000000000 +0000 @@ -174,7 +174,7 @@ */ public function setCookie(Cookie $cookie) { - $this->cookies[$cookie->getDomain()][$cookie->getPath()][$cookie->getName()] = $cookie; + $this->cookies[$cookie->getDomain() ?? ''][$cookie->getPath()][$cookie->getName()] = $cookie; $this->headerNames['set-cookie'] = 'Set-Cookie'; } @@ -187,13 +187,13 @@ { $path ??= '/'; - unset($this->cookies[$domain][$path][$name]); + unset($this->cookies[$domain ?? ''][$path][$name]); - if (empty($this->cookies[$domain][$path])) { - unset($this->cookies[$domain][$path]); + if (empty($this->cookies[$domain ?? ''][$path])) { + unset($this->cookies[$domain ?? ''][$path]); - if (empty($this->cookies[$domain])) { - unset($this->cookies[$domain]); + if (empty($this->cookies[$domain ?? ''])) { + unset($this->cookies[$domain ?? '']); } } @@ -212,7 +212,7 @@ public function getCookies(string $format = self::COOKIES_FLAT): array { if (!\in_array($format, [self::COOKIES_FLAT, self::COOKIES_ARRAY])) { - throw new \InvalidArgumentException(sprintf('Format "%s" invalid (%s).', $format, implode(', ', [self::COOKIES_FLAT, self::COOKIES_ARRAY]))); + throw new \InvalidArgumentException(\sprintf('Format "%s" invalid (%s).', $format, implode(', ', [self::COOKIES_FLAT, self::COOKIES_ARRAY]))); } if (self::COOKIES_ARRAY === $format) { @@ -240,7 +240,7 @@ */ public function clearCookie(string $name, ?string $path = '/', ?string $domain = null, bool $secure = false, bool $httpOnly = true, ?string $sameSite = null /* , bool $partitioned = false */) { - $partitioned = 6 < \func_num_args() ? \func_get_arg(6) : false; + $partitioned = 6 < \func_num_args() ? func_get_arg(6) : false; $this->setCookie(new Cookie($name, null, 1, $path, $domain, $secure, $httpOnly, false, $sameSite, $partitioned)); } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/SessionUtils.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/SessionUtils.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/SessionUtils.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/SessionUtils.php 2026-05-27 08:23:35.000000000 +0000 @@ -28,8 +28,8 @@ public static function popSessionCookie(string $sessionName, #[\SensitiveParameter] string $sessionId): ?string { $sessionCookie = null; - $sessionCookiePrefix = sprintf(' %s=', urlencode($sessionName)); - $sessionCookieWithId = sprintf('%s%s;', $sessionCookiePrefix, urlencode($sessionId)); + $sessionCookiePrefix = \sprintf(' %s=', urlencode($sessionName)); + $sessionCookieWithId = \sprintf('%s%s;', $sessionCookiePrefix, urlencode($sessionId)); $otherCookies = []; foreach (headers_list() as $h) { if (0 !== stripos($h, 'Set-Cookie:')) { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/AbstractSessionHandler.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/AbstractSessionHandler.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/AbstractSessionHandler.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/AbstractSessionHandler.php 2026-05-27 08:23:35.000000000 +0000 @@ -32,7 +32,7 @@ { $this->sessionName = $sessionName; if (!headers_sent() && !\ini_get('session.cache_limiter') && '0' !== \ini_get('session.cache_limiter')) { - header(sprintf('Cache-Control: max-age=%d, private, must-revalidate', 60 * (int) \ini_get('session.cache_expire'))); + header(\sprintf('Cache-Control: max-age=%d, private, must-revalidate', 60 * (int) \ini_get('session.cache_expire'))); } return true; @@ -72,6 +72,16 @@ return $data; } + public function updateTimestamp(#[\SensitiveParameter] string $sessionId, string $data): bool + { + $this->igbinaryEmptyData ??= \function_exists('igbinary_serialize') ? igbinary_serialize([]) : ''; + if ('' === $data || $this->igbinaryEmptyData === $data) { + return $this->destroy($sessionId); + } + + return true; + } + public function write(#[\SensitiveParameter] string $sessionId, string $data): bool { // see https://github.com/igbinary/igbinary/issues/146 @@ -88,7 +98,7 @@ { if (!headers_sent() && filter_var(\ini_get('session.use_cookies'), \FILTER_VALIDATE_BOOL)) { if (!isset($this->sessionName)) { - throw new \LogicException(sprintf('Session name cannot be empty, did you forget to call "parent::open()" in "%s"?.', static::class)); + throw new \LogicException(\sprintf('Session name cannot be empty, did you forget to call "parent::open()" in "%s"?.', static::class)); } $cookie = SessionUtils::popSessionCookie($this->sessionName, $sessionId); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/IdentityMarshaller.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/IdentityMarshaller.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/IdentityMarshaller.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/IdentityMarshaller.php 2026-05-27 08:23:35.000000000 +0000 @@ -22,7 +22,7 @@ { foreach ($values as $key => $value) { if (!\is_string($value)) { - throw new \LogicException(sprintf('%s accepts only string as data.', __METHOD__)); + throw new \LogicException(\sprintf('%s accepts only string as data.', __METHOD__)); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/MemcachedSessionHandler.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/MemcachedSessionHandler.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/MemcachedSessionHandler.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/MemcachedSessionHandler.php 2026-05-27 08:23:35.000000000 +0000 @@ -47,7 +47,7 @@ $this->memcached = $memcached; if ($diff = array_diff(array_keys($options), ['prefix', 'expiretime', 'ttl'])) { - throw new \InvalidArgumentException(sprintf('The following options are not supported "%s".', implode(', ', $diff))); + throw new \InvalidArgumentException(\sprintf('The following options are not supported "%s".', implode(', ', $diff))); } $this->ttl = $options['expiretime'] ?? $options['ttl'] ?? null; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.php 2026-05-27 08:23:35.000000000 +0000 @@ -34,15 +34,15 @@ if ($count = substr_count($savePath, ';')) { if ($count > 2) { - throw new \InvalidArgumentException(sprintf('Invalid argument $savePath \'%s\'.', $savePath)); + throw new \InvalidArgumentException(\sprintf('Invalid argument $savePath \'%s\'.', $savePath)); } // characters after last ';' are the path $baseDir = ltrim(strrchr($savePath, ';'), ';'); } - if ($baseDir && !is_dir($baseDir) && !@mkdir($baseDir, 0777, true) && !is_dir($baseDir)) { - throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s".', $baseDir)); + if ($baseDir && !is_dir($baseDir) && !@mkdir($baseDir, 0o777, true) && !is_dir($baseDir)) { + throw new \RuntimeException(\sprintf('Session Storage was not able to create directory "%s".', $baseDir)); } if ($savePath !== \ini_get('session.save_path')) { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php 2026-05-27 08:23:35.000000000 +0000 @@ -155,7 +155,7 @@ { if ($pdoOrDsn instanceof \PDO) { if (\PDO::ERRMODE_EXCEPTION !== $pdoOrDsn->getAttribute(\PDO::ATTR_ERRMODE)) { - throw new \InvalidArgumentException(sprintf('"%s" requires PDO error mode attribute be set to throw Exceptions (i.e. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)).', __CLASS__)); + throw new \InvalidArgumentException(\sprintf('"%s" requires PDO error mode attribute be set to throw Exceptions (i.e. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)).', __CLASS__)); } $this->pdo = $pdoOrDsn; @@ -194,7 +194,6 @@ $table->addColumn($this->dataCol, Types::BLOB)->setNotnull(true); $table->addColumn($this->lifetimeCol, Types::INTEGER)->setUnsigned(true)->setNotnull(true); $table->addColumn($this->timeCol, Types::INTEGER)->setUnsigned(true)->setNotnull(true); - $table->addOption('collate', 'utf8mb4_bin'); $table->addOption('engine', 'InnoDB'); break; case 'sqlite': @@ -216,13 +215,13 @@ $table->addColumn($this->timeCol, Types::INTEGER)->setNotnull(true); break; case 'sqlsrv': - $table->addColumn($this->idCol, Types::TEXT)->setLength(128)->setNotnull(true); + $table->addColumn($this->idCol, Types::STRING)->setLength(128)->setNotnull(true); $table->addColumn($this->dataCol, Types::BLOB)->setNotnull(true); $table->addColumn($this->lifetimeCol, Types::INTEGER)->setUnsigned(true)->setNotnull(true); $table->addColumn($this->timeCol, Types::INTEGER)->setUnsigned(true)->setNotnull(true); break; default: - throw new \DomainException(sprintf('Creating the session table is currently not implemented for PDO driver "%s".', $this->driver)); + throw new \DomainException(\sprintf('Creating the session table is currently not implemented for PDO driver "%s".', $this->driver)); } $table->setPrimaryKey([$this->idCol]); $table->addIndex([$this->lifetimeCol], $this->lifetimeCol.'_idx'); @@ -252,12 +251,12 @@ // - trailing space removal // - case-insensitivity // - language processing like é == e - 'mysql' => "CREATE TABLE $this->table ($this->idCol VARBINARY(128) NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER UNSIGNED NOT NULL, $this->timeCol INTEGER UNSIGNED NOT NULL) COLLATE utf8mb4_bin, ENGINE = InnoDB", + 'mysql' => "CREATE TABLE $this->table ($this->idCol VARBINARY(128) NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER UNSIGNED NOT NULL, $this->timeCol INTEGER UNSIGNED NOT NULL) ENGINE = InnoDB", 'sqlite' => "CREATE TABLE $this->table ($this->idCol TEXT NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)", 'pgsql' => "CREATE TABLE $this->table ($this->idCol VARCHAR(128) NOT NULL PRIMARY KEY, $this->dataCol BYTEA NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)", 'oci' => "CREATE TABLE $this->table ($this->idCol VARCHAR2(128) NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)", 'sqlsrv' => "CREATE TABLE $this->table ($this->idCol VARCHAR(128) NOT NULL PRIMARY KEY, $this->dataCol VARBINARY(MAX) NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)", - default => throw new \DomainException(sprintf('Creating the session table is currently not implemented for PDO driver "%s".', $this->driver)), + default => throw new \DomainException(\sprintf('Creating the session table is currently not implemented for PDO driver "%s".', $this->driver)), }; try { @@ -538,7 +537,7 @@ return $dsn; default: - throw new \InvalidArgumentException(sprintf('The scheme "%s" is not supported by the PdoSessionHandler URL configuration. Pass a PDO DSN directly.', $params['scheme'])); + throw new \InvalidArgumentException(\sprintf('The scheme "%s" is not supported by the PdoSessionHandler URL configuration. Pass a PDO DSN directly.', $params['scheme'])); } } @@ -734,7 +733,7 @@ case 'sqlite': throw new \DomainException('SQLite does not support advisory locks.'); default: - throw new \DomainException(sprintf('Advisory locks are currently not implemented for PDO driver "%s".', $this->driver)); + throw new \DomainException(\sprintf('Advisory locks are currently not implemented for PDO driver "%s".', $this->driver)); } } @@ -776,7 +775,7 @@ // we already locked when starting transaction break; default: - throw new \DomainException(sprintf('Transactional locks are currently not implemented for PDO driver "%s".', $this->driver)); + throw new \DomainException(\sprintf('Transactional locks are currently not implemented for PDO driver "%s".', $this->driver)); } } @@ -795,6 +794,12 @@ rewind($data); $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, EMPTY_BLOB(), :expiry, :time) RETURNING $this->dataCol into :data"; break; + case 'sqlsrv': + $data = fopen('php://memory', 'r+'); + fwrite($data, $sessionData); + rewind($data); + $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time)"; + break; default: $data = $sessionData; $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time)"; @@ -822,6 +827,12 @@ rewind($data); $sql = "UPDATE $this->table SET $this->dataCol = EMPTY_BLOB(), $this->lifetimeCol = :expiry, $this->timeCol = :time WHERE $this->idCol = :id RETURNING $this->dataCol into :data"; break; + case 'sqlsrv': + $data = fopen('php://memory', 'r+'); + fwrite($data, $sessionData); + rewind($data); + $sql = "UPDATE $this->table SET $this->dataCol = :data, $this->lifetimeCol = :expiry, $this->timeCol = :time WHERE $this->idCol = :id"; + break; default: $data = $sessionData; $sql = "UPDATE $this->table SET $this->dataCol = :data, $this->lifetimeCol = :expiry, $this->timeCol = :time WHERE $this->idCol = :id"; @@ -869,12 +880,16 @@ $mergeStmt = $this->pdo->prepare($mergeSql); if ('sqlsrv' === $this->driver) { + $dataStream = fopen('php://memory', 'r+'); + fwrite($dataStream, $data); + rewind($dataStream); + $mergeStmt->bindParam(1, $sessionId, \PDO::PARAM_STR); $mergeStmt->bindParam(2, $sessionId, \PDO::PARAM_STR); - $mergeStmt->bindParam(3, $data, \PDO::PARAM_LOB); + $mergeStmt->bindParam(3, $dataStream, \PDO::PARAM_LOB); $mergeStmt->bindValue(4, time() + $maxlifetime, \PDO::PARAM_INT); $mergeStmt->bindValue(5, time(), \PDO::PARAM_INT); - $mergeStmt->bindParam(6, $data, \PDO::PARAM_LOB); + $mergeStmt->bindParam(6, $dataStream, \PDO::PARAM_LOB); $mergeStmt->bindValue(7, time() + $maxlifetime, \PDO::PARAM_INT); $mergeStmt->bindValue(8, time(), \PDO::PARAM_INT); } else { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/RedisSessionHandler.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/RedisSessionHandler.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/RedisSessionHandler.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/RedisSessionHandler.php 2026-05-27 08:23:35.000000000 +0000 @@ -44,7 +44,7 @@ array $options = [], ) { if ($diff = array_diff(array_keys($options), ['prefix', 'ttl'])) { - throw new \InvalidArgumentException(sprintf('The following options are not supported "%s".', implode(', ', $diff))); + throw new \InvalidArgumentException(\sprintf('The following options are not supported "%s".', implode(', ', $diff))); } $this->prefix = $options['prefix'] ?? 'sf_s'; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/SessionHandlerFactory.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/SessionHandlerFactory.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/SessionHandlerFactory.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/SessionHandlerFactory.php 2026-05-27 08:23:35.000000000 +0000 @@ -49,7 +49,7 @@ return new PdoSessionHandler($connection); case !\is_string($connection): - throw new \InvalidArgumentException(sprintf('Unsupported Connection: "%s".', get_debug_type($connection))); + throw new \InvalidArgumentException(\sprintf('Unsupported Connection: "%s".', get_debug_type($connection))); case str_starts_with($connection, 'file://'): $savePath = substr($connection, 7); @@ -62,6 +62,7 @@ throw new \InvalidArgumentException('Unsupported Redis or Memcached DSN. Try running "composer require symfony/cache".'); } $handlerClass = str_starts_with($connection, 'memcached:') ? MemcachedSessionHandler::class : RedisSessionHandler::class; + $connection = preg_replace('/([?&])prefix=[^&]*+&?/', '\1', $connection); $connection = AbstractAdapter::createConnection($connection, ['lazy' => true]); return new $handlerClass($connection, array_intersect_key($options, ['prefix' => 1, 'ttl' => 1])); @@ -94,6 +95,6 @@ return new PdoSessionHandler($connection, $options); } - throw new \InvalidArgumentException(sprintf('Unsupported Connection: "%s".', $connection)); + throw new \InvalidArgumentException(\sprintf('Unsupported Connection: "%s".', $connection)); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/StrictSessionHandler.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/StrictSessionHandler.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/StrictSessionHandler.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/StrictSessionHandler.php 2026-05-27 08:23:35.000000000 +0000 @@ -24,7 +24,7 @@ public function __construct(\SessionHandlerInterface $handler) { if ($handler instanceof \SessionUpdateTimestampHandlerInterface) { - throw new \LogicException(sprintf('"%s" is already an instance of "SessionUpdateTimestampHandlerInterface", you cannot wrap it with "%s".', get_debug_type($handler), self::class)); + throw new \LogicException(\sprintf('"%s" is already an instance of "SessionUpdateTimestampHandlerInterface", you cannot wrap it with "%s".', get_debug_type($handler), self::class)); } $this->handler = $handler; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MetadataBag.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MetadataBag.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MetadataBag.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MetadataBag.php 2026-05-27 08:23:35.000000000 +0000 @@ -41,14 +41,18 @@ private int $updateThreshold; + private ?int $cookieLifetime; + /** - * @param string $storageKey The key used to store bag in the session - * @param int $updateThreshold The time to wait between two UPDATED updates + * @param string $storageKey The key used to store bag in the session + * @param int $updateThreshold The time to wait between two UPDATED updates + * @param int|null $cookieLifetime The configured cookie lifetime; null to read from php.ini */ - public function __construct(string $storageKey = '_sf2_meta', int $updateThreshold = 0) + public function __construct(string $storageKey = '_sf2_meta', int $updateThreshold = 0, ?int $cookieLifetime = null) { $this->storageKey = $storageKey; $this->updateThreshold = $updateThreshold; + $this->cookieLifetime = $cookieLifetime; } /** @@ -143,6 +147,6 @@ { $timeStamp = time(); $this->meta[self::CREATED] = $this->meta[self::UPDATED] = $this->lastUsed = $timeStamp; - $this->meta[self::LIFETIME] = $lifetime ?? (int) \ini_get('session.cookie_lifetime'); + $this->meta[self::LIFETIME] = $lifetime ?? $this->cookieLifetime ?? (int) \ini_get('session.cookie_lifetime'); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MockArraySessionStorage.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MockArraySessionStorage.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MockArraySessionStorage.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MockArraySessionStorage.php 2026-05-27 08:23:35.000000000 +0000 @@ -174,7 +174,7 @@ public function getBag(string $name): SessionBagInterface { if (!isset($this->bags[$name])) { - throw new \InvalidArgumentException(sprintf('The SessionBagInterface "%s" is not registered.', $name)); + throw new \InvalidArgumentException(\sprintf('The SessionBagInterface "%s" is not registered.', $name)); } if (!$this->started) { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MockFileSessionStorage.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MockFileSessionStorage.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MockFileSessionStorage.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/MockFileSessionStorage.php 2026-05-27 08:23:35.000000000 +0000 @@ -34,8 +34,8 @@ { $savePath ??= sys_get_temp_dir(); - if (!is_dir($savePath) && !@mkdir($savePath, 0777, true) && !is_dir($savePath)) { - throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s".', $savePath)); + if (!is_dir($savePath) && !@mkdir($savePath, 0o777, true) && !is_dir($savePath)) { + throw new \RuntimeException(\sprintf('Session Storage was not able to create directory "%s".', $savePath)); } $this->savePath = $savePath; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php 2026-05-27 08:23:35.000000000 +0000 @@ -129,7 +129,7 @@ } if (filter_var(\ini_get('session.use_cookies'), \FILTER_VALIDATE_BOOL) && headers_sent($file, $line)) { - throw new \RuntimeException(sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line)); + throw new \RuntimeException(\sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line)); } $sessionId = $_COOKIE[session_name()] ?? null; @@ -139,7 +139,7 @@ * ---------- Part 1 * * The part `[a-zA-Z0-9,-]` is related to the PHP ini directive `session.sid_bits_per_character` defined as 6. - * See https://www.php.net/manual/en/session.configuration.php#ini.session.sid-bits-per-character. + * See https://php.net/session.configuration#ini.session.sid-bits-per-character * Allowed values are integers such as: * - 4 for range `a-f0-9` * - 5 for range `a-v0-9` @@ -148,7 +148,7 @@ * ---------- Part 2 * * The part `{22,250}` is related to the PHP ini directive `session.sid_length`. - * See https://www.php.net/manual/en/session.configuration.php#ini.session.sid-length. + * See https://php.net/session.configuration#ini.session.sid-length * Allowed values are integers between 22 and 256, but we use 250 for the max. * * Where does the 250 come from? @@ -249,7 +249,7 @@ $previousHandler = set_error_handler(function ($type, $msg, $file, $line) use (&$previousHandler) { if (\E_WARNING === $type && str_starts_with($msg, 'session_write_close():')) { $handler = $this->saveHandler instanceof SessionHandlerProxy ? $this->saveHandler->getHandler() : $this->saveHandler; - $msg = sprintf('session_write_close(): Failed to write session data with "%s" handler', $handler::class); + $msg = \sprintf('session_write_close(): Failed to write session data with "%s" handler', $handler::class); } return $previousHandler ? $previousHandler($type, $msg, $file, $line) : false; @@ -302,7 +302,7 @@ public function getBag(string $name): SessionBagInterface { if (!isset($this->bags[$name])) { - throw new \InvalidArgumentException(sprintf('The SessionBagInterface "%s" is not registered.', $name)); + throw new \InvalidArgumentException(\sprintf('The SessionBagInterface "%s" is not registered.', $name)); } if (!$this->started && $this->saveHandler->isActive()) { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/StreamedJsonResponse.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/StreamedJsonResponse.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/StreamedJsonResponse.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/StreamedJsonResponse.php 2026-05-27 08:23:35.000000000 +0000 @@ -94,7 +94,7 @@ { $generators = []; - array_walk_recursive($data, function (&$item, $key) use (&$generators) { + array_walk_recursive($data, static function (&$item, $key) use (&$generators) { if (self::PLACEHOLDER === $key) { // if the placeholder is already in the structure it should be replaced with a new one that explode // works like expected for the structure diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/RequestAttributeValueSame.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/RequestAttributeValueSame.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/RequestAttributeValueSame.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/RequestAttributeValueSame.php 2026-05-27 08:23:35.000000000 +0000 @@ -27,7 +27,7 @@ public function toString(): string { - return sprintf('has attribute "%s" with value "%s"', $this->name, $this->value); + return \sprintf('has attribute "%s" with value "%s"', $this->name, $this->value); } /** diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseCookieValueSame.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseCookieValueSame.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseCookieValueSame.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseCookieValueSame.php 2026-05-27 08:23:35.000000000 +0000 @@ -32,14 +32,14 @@ public function toString(): string { - $str = sprintf('has cookie "%s"', $this->name); + $str = \sprintf('has cookie "%s"', $this->name); if ('/' !== $this->path) { - $str .= sprintf(' with path "%s"', $this->path); + $str .= \sprintf(' with path "%s"', $this->path); } if ($this->domain) { - $str .= sprintf(' for domain "%s"', $this->domain); + $str .= \sprintf(' for domain "%s"', $this->domain); } - $str .= sprintf(' with value "%s"', $this->value); + $str .= \sprintf(' with value "%s"', $this->value); return $str; } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHasCookie.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHasCookie.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHasCookie.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHasCookie.php 2026-05-27 08:23:35.000000000 +0000 @@ -30,12 +30,12 @@ public function toString(): string { - $str = sprintf('has cookie "%s"', $this->name); + $str = \sprintf('has cookie "%s"', $this->name); if ('/' !== $this->path) { - $str .= sprintf(' with path "%s"', $this->path); + $str .= \sprintf(' with path "%s"', $this->path); } if ($this->domain) { - $str .= sprintf(' for domain "%s"', $this->domain); + $str .= \sprintf(' for domain "%s"', $this->domain); } return $str; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHasHeader.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHasHeader.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHasHeader.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHasHeader.php 2026-05-27 08:23:35.000000000 +0000 @@ -25,7 +25,7 @@ public function toString(): string { - return sprintf('has header "%s"', $this->headerName); + return \sprintf('has header "%s"', $this->headerName); } /** diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHeaderLocationSame.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHeaderLocationSame.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHeaderLocationSame.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHeaderLocationSame.php 2026-05-27 08:23:35.000000000 +0000 @@ -23,7 +23,7 @@ public function toString(): string { - return sprintf('has header "Location" matching "%s"', $this->expectedValue); + return \sprintf('has header "Location" matching "%s"', $this->expectedValue); } protected function matches($other): bool @@ -53,7 +53,7 @@ } if (str_starts_with($url, '//')) { - return sprintf('%s:%s', $this->request->getScheme(), $url); + return \sprintf('%s:%s', $this->request->getScheme(), $url); } if (str_starts_with($url, '/')) { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHeaderSame.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHeaderSame.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHeaderSame.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseHeaderSame.php 2026-05-27 08:23:35.000000000 +0000 @@ -27,7 +27,7 @@ public function toString(): string { - return sprintf('has header "%s" with value "%s"', $this->headerName, $this->expectedValue); + return \sprintf('has header "%s" with value "%s"', $this->headerName, $this->expectedValue); } /** diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/AcceptHeaderTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/AcceptHeaderTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/AcceptHeaderTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/AcceptHeaderTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -100,6 +100,8 @@ 'quality has priority' => ['*;q=0.3,ISO-8859-1,utf-8;q=0.7', ['ISO-8859-1', 'utf-8', '*']], 'order matters when q is equal' => ['*;q=0.3,ISO-8859-1;q=0.7,utf-8;q=0.7', ['ISO-8859-1', 'utf-8', '*']], 'order matters when q is equal2' => ['*;q=0.3,utf-8;q=0.7,ISO-8859-1;q=0.7', ['utf-8', 'ISO-8859-1', '*']], + 'additional attributes like "format" should be handled according RFC 9110' => ['text/*;q=0.3, text/plain;q=0.7, text/plain;format=flowed, text/plain;format=fixed;q=0.4, */*;q=0.5', ['text/plain;format=flowed', 'text/plain', '*/*', 'text/plain;format=fixed', 'text/*']], + 'additional attributes like "format" should be handled according obsoleted RFC 7231 as well' => ['text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', ['text/html;level=1', 'text/html', '*/*', 'text/html;level=2', 'text/*']], ]; } @@ -109,7 +111,7 @@ public function testDefaultValue($acceptHeader, $value, $expectedQuality) { $header = AcceptHeader::fromString($acceptHeader); - $this->assertSame($expectedQuality, $header->get($value)->getQuality()); + $this->assertSame($expectedQuality, $header->get($value)?->getQuality()); } public static function provideDefaultValueData() @@ -128,5 +130,50 @@ yield ['*;q=0.3, ISO-8859-1;q=0.7, utf-8;q=0.7', '*', 0.3]; yield ['*;q=0.3, ISO-8859-1;q=0.7, utf-8;q=0.7', 'utf-8', 0.7]; yield ['*;q=0.3, ISO-8859-1;q=0.7, utf-8;q=0.7', 'SHIFT_JIS', 0.3]; + yield 'additional attributes like "format" should be handled according RFC 9110' => ['text/*;q=0.3, text/plain;q=0.7, text/plain;format=flowed, text/plain;format=fixed;q=0.4, */*;q=0.5', 'text/plain;format=flowed', 1.0]; + yield 'additional attributes like "format" should be handled according obsoleted RFC 7231 as well' => ['text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', 'text/html;level=1', 1.0]; + + // Edge cases for case-insensitivity + yield 'case-insensitive param names' => ['text/plain;format=flowed;q=0.8, text/plain;Format=fixed', 'text/plain;format=fixed', 1.0]; + yield 'case-insensitive charset' => ['text/plain;Charset=utf-8', 'text/plain;charset=utf-8', 1.0]; + + // Quoted values and specials + yield 'quoted value with space' => ['text/plain;param="value with space"', 'text/plain;param="value with space"', 1.0]; + yield 'quoted value with backslash' => ['text/plain;param="value\\with\\backslash"', 'text/plain;param="value\\with\\backslash"', 1.0]; + yield 'mismatched quoted' => ['text/plain;param="value with space"', 'text/plain;param=value with space', 1.0]; + + // Flag params or empty + yield 'flag param' => ['text/plain;flowed;q=0.9', 'text/plain;flowed', 0.9]; + yield 'empty param value' => ['text/plain;param=', 'text/plain;param=""', 1.0]; + yield 'missing required flag' => ['text/plain;flowed', 'text/plain', null]; + + // Extra params in query + yield 'extra param in query' => ['text/plain;format=flowed', 'text/plain;format=flowed;charset=utf-8', 1.0]; + yield 'missing required param in query' => ['text/plain;format=flowed', 'text/plain;charset=utf-8', null]; + yield 'wildcard with param' => ['text/*;format=flowed', 'text/plain;format=flowed', 1.0]; + yield 'wildcard missing param' => ['text/*;format=flowed', 'text/plain', null]; + + // Wildcards and specificity + yield 'specificity priority' => ['*/*;q=0.1, text/*;format=flowed;q=0.5, text/plain;q=0.8', 'text/plain;format=flowed', 0.8]; + yield 'wildcard with param match' => ['*/*;param=test', 'text/plain;param=test', 1.0]; + yield 'wildcard with param no match' => ['*/*;param=test', 'text/plain', null]; + + // Non-media types + yield 'charset wildcard' => ['utf-8;q=0.9, *;q=0.5', 'iso-8859-1', 0.5]; + yield 'language star' => ['*;q=0.5', 'en-US', 0.5]; + yield 'non-media */*' => ['*/*;q=0.5', 'utf-8', 0.5]; + + // Ties and duplicates + yield 'duplicate params tie on index' => ['text/plain;format=flowed;q=0.8, text/plain;format=flowed;q=0.8', 'text/plain;format=flowed', 0.8]; + yield 'param count tie' => ['text/plain;q=0.5, text/plain;format=flowed;q=0.5', 'text/plain;format=flowed;extra=foo', 0.5]; + + // Invalid/malformed + yield 'non-media invalid' => ['text', 'text', 1.0]; + yield 'invalid subtype' => ['text/', 'text/plain', null]; + yield 'empty header' => ['', 'text/plain', null]; + + // Mixed case types + yield 'mixed case type' => ['Text/Plain;Format=flowed', 'text/plain;format=flowed', 1.0]; + yield 'mixed case charset' => ['UTF-8;q=0.9', 'utf-8', 0.9]; } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/BinaryFileResponseTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/BinaryFileResponseTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/BinaryFileResponseTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/BinaryFileResponseTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -145,6 +145,9 @@ public static function provideRanges() { return [ + ['bytes=0-', 0, 35, 'bytes 0-34/35'], + ['bytes=0-34', 0, 35, 'bytes 0-34/35'], + ['bytes=-35', 0, 35, 'bytes 0-34/35'], ['bytes=1-4', 1, 4, 'bytes 1-4/35'], ['bytes=-5', 30, 5, 'bytes 30-34/35'], ['bytes=30-', 30, 5, 'bytes 30-34/35'], @@ -199,9 +202,6 @@ public static function provideFullFileRanges() { return [ - ['bytes=0-'], - ['bytes=0-34'], - ['bytes=-35'], // Syntactical invalid range-request should also return the full resource ['bytes=20-10'], ['bytes=50-40'], @@ -314,7 +314,15 @@ $property->setValue($response, $file); $response->prepare($request); - $this->assertEquals($virtual, $response->headers->get('X-Accel-Redirect')); + $header = $response->headers->get('X-Accel-Redirect'); + + if ($virtual) { + // Making sure the path doesn't contain characters unsupported by nginx + $this->assertMatchesRegularExpression('/^([^?%]|%[0-9A-F]{2})*$/', $header); + $header = rawurldecode($header); + } + + $this->assertEquals($virtual, $header); } public function testDeleteFileAfterSend() @@ -361,6 +369,7 @@ ['/home/Foo/bar.txt', '/var/www/=/files/,/home/Foo/=/baz/', '/baz/bar.txt'], ['/home/Foo/bar.txt', '"/var/www/"="/files/", "/home/Foo/"="/baz/"', '/baz/bar.txt'], ['/tmp/bar.txt', '"/var/www/"="/files/", "/home/Foo/"="/baz/"', null], + ['/var/www/var/www/files/foo%.txt', '/var/www/=/files/', '/files/var/www/files/foo%.txt'], ]; } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/File/UploadedFileTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/File/UploadedFileTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/File/UploadedFileTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/File/UploadedFileTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -119,6 +119,32 @@ $this->assertEquals(\UPLOAD_ERR_OK, $file->getError()); } + public function testInvalidFile() + { + $file = new UploadedFile( + __DIR__.'/Fixtures/test.gif', + 'original.gif', + 'image/gif', + ); + + $this->expectException(FileException::class); + $this->expectExceptionMessage('The file "original.gif" was not uploaded due to an unknown error.'); + + $file->move(__DIR__.'/Fixtures/directory'); + } + + public function testNoErrorMessageIfErrorIsUploadErrOk() + { + $file = new UploadedFile( + __DIR__.'/Fixtures/test.gif', + 'original.gif', + 'image/gif', + null + ); + + $this->assertSame('', $file->getErrorMessage()); + } + public function testGetClientOriginalName() { $file = new UploadedFile( diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/FileBagTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/FileBagTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/FileBagTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/FileBagTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -179,7 +179,7 @@ protected function setUp(): void { - mkdir(sys_get_temp_dir().'/form_test', 0777, true); + mkdir(sys_get_temp_dir().'/form_test', 0o777, true); } protected function tearDown(): void diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Fixtures/response-functional/invalid_cookie_name.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Fixtures/response-functional/invalid_cookie_name.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Fixtures/response-functional/invalid_cookie_name.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Fixtures/response-functional/invalid_cookie_name.php 2026-05-27 08:23:35.000000000 +0000 @@ -6,6 +6,6 @@ try { $r->headers->setCookie(new Cookie('Hello + world', 'hodor', 0, null, null, null, false, true)); -} catch (\InvalidArgumentException $e) { +} catch (InvalidArgumentException $e) { echo $e->getMessage(); } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/InputBagTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/InputBagTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/InputBagTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/InputBagTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -23,7 +23,7 @@ public function testGet() { - $bag = new InputBag(['foo' => 'bar', 'null' => null, 'int' => 1, 'float' => 1.0, 'bool' => false, 'stringable' => new class() implements \Stringable { + $bag = new InputBag(['foo' => 'bar', 'null' => null, 'int' => 1, 'float' => 1.0, 'bool' => false, 'stringable' => new class implements \Stringable { public function __toString(): string { return 'strval'; @@ -65,7 +65,7 @@ public function testGetString() { - $bag = new InputBag(['integer' => 123, 'bool_true' => true, 'bool_false' => false, 'string' => 'abc', 'stringable' => new class() implements \Stringable { + $bag = new InputBag(['integer' => 123, 'bool_true' => true, 'bool_false' => false, 'string' => 'abc', 'stringable' => new class implements \Stringable { public function __toString(): string { return 'strval'; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/IpUtilsTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/IpUtilsTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/IpUtilsTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/IpUtilsTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -192,6 +192,11 @@ ['fe80::1', true], ['::ffff:0:1', true], ['fd00::1', true], + ['::7f00:1', true], + ['2002:7f00:1::', true], + ['2001::1', true], + ['64:ff9b::7f00:1', true], + ['64:ff9b:1::7f00:1', true], // public ['104.26.14.6', false], diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -171,7 +171,7 @@ public function testConstructorWithObjectWithToStringMethod() { - $class = new class() { + $class = new class { public function __toString(): string { return '{}'; diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -192,7 +192,7 @@ */ public function testGetIntExceptionWithArray() { - $this->expectDeprecation(sprintf('Since symfony/http-foundation 6.3: Ignoring invalid values when using "%s::getInt(\'digits\')" is deprecated and will throw an "%s" in 7.0; use method "filter()" with flag "FILTER_NULL_ON_FAILURE" to keep ignoring them.', ParameterBag::class, UnexpectedValueException::class)); + $this->expectDeprecation(\sprintf('Since symfony/http-foundation 6.3: Ignoring invalid values when using "%s::getInt(\'digits\')" is deprecated and will throw an "%s" in 7.0; use method "filter()" with flag "FILTER_NULL_ON_FAILURE" to keep ignoring them.', ParameterBag::class, UnexpectedValueException::class)); $bag = new ParameterBag(['digits' => ['123']]); $result = $bag->getInt('digits', 0); @@ -204,7 +204,7 @@ */ public function testGetIntExceptionWithInvalid() { - $this->expectDeprecation(sprintf('Since symfony/http-foundation 6.3: Ignoring invalid values when using "%s::getInt(\'word\')" is deprecated and will throw an "%s" in 7.0; use method "filter()" with flag "FILTER_NULL_ON_FAILURE" to keep ignoring them.', ParameterBag::class, UnexpectedValueException::class)); + $this->expectDeprecation(\sprintf('Since symfony/http-foundation 6.3: Ignoring invalid values when using "%s::getInt(\'word\')" is deprecated and will throw an "%s" in 7.0; use method "filter()" with flag "FILTER_NULL_ON_FAILURE" to keep ignoring them.', ParameterBag::class, UnexpectedValueException::class)); $bag = new ParameterBag(['word' => 'foo_BAR_012']); $result = $bag->getInt('word', 0); @@ -213,7 +213,7 @@ public function testGetString() { - $bag = new ParameterBag(['integer' => 123, 'bool_true' => true, 'bool_false' => false, 'string' => 'abc', 'stringable' => new class() implements \Stringable { + $bag = new ParameterBag(['integer' => 123, 'bool_true' => true, 'bool_false' => false, 'string' => 'abc', 'stringable' => new class implements \Stringable { public function __toString(): string { return 'strval'; @@ -258,7 +258,7 @@ 'dec' => '256', 'hex' => '0x100', 'array' => ['bang'], - ]); + ]); $this->assertEmpty($bag->filter('nokey'), '->filter() should return empty by default if no key is found'); @@ -339,7 +339,7 @@ */ public function testGetBooleanExceptionWithInvalid() { - $this->expectDeprecation(sprintf('Since symfony/http-foundation 6.3: Ignoring invalid values when using "%s::getBoolean(\'invalid\')" is deprecated and will throw an "%s" in 7.0; use method "filter()" with flag "FILTER_NULL_ON_FAILURE" to keep ignoring them.', ParameterBag::class, UnexpectedValueException::class)); + $this->expectDeprecation(\sprintf('Since symfony/http-foundation 6.3: Ignoring invalid values when using "%s::getBoolean(\'invalid\')" is deprecated and will throw an "%s" in 7.0; use method "filter()" with flag "FILTER_NULL_ON_FAILURE" to keep ignoring them.', ParameterBag::class, UnexpectedValueException::class)); $bag = new ParameterBag(['invalid' => 'foo']); $result = $bag->getBoolean('invalid', 0); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestMatcher/AttributesRequestMatcherTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestMatcher/AttributesRequestMatcherTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestMatcher/AttributesRequestMatcherTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestMatcher/AttributesRequestMatcherTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -26,7 +26,7 @@ $matcher = new AttributesRequestMatcher([$key => $regexp]); $request = Request::create('/admin/foo'); $request->attributes->set('foo', 'foo_bar'); - $request->attributes->set('_controller', fn () => new Response('foo')); + $request->attributes->set('_controller', static fn () => new Response('foo')); $this->assertSame($expected, $matcher->matches($request)); } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestMatcherTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestMatcherTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestMatcherTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestMatcherTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -173,7 +173,7 @@ $matcher = new RequestMatcher(); $request = Request::create('/admin/foo'); - $request->attributes->set('_controller', fn () => new Response('foo')); + $request->attributes->set('_controller', static fn () => new Response('foo')); $matcher->matchAttribute('_controller', 'babar'); $this->assertFalse($matcher->matches($request)); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -31,6 +31,8 @@ { Request::setTrustedProxies([], -1); Request::setTrustedHosts([]); + Request::setFactory(null); + \Closure::bind(static fn () => self::$formats = null, null, Request::class)(); } public function testInitialize() @@ -604,7 +606,6 @@ $server['REDIRECT_QUERY_STRING'] = 'query=string'; $server['REDIRECT_URL'] = '/path/info'; - $server['SCRIPT_NAME'] = '/index.php'; $server['QUERY_STRING'] = 'query=string'; $server['REQUEST_URI'] = '/path/info?toto=test&1=1'; $server['SCRIPT_NAME'] = '/index.php'; @@ -731,7 +732,6 @@ $server['REDIRECT_QUERY_STRING'] = 'query=string'; $server['REDIRECT_URL'] = '/path/info'; - $server['SCRIPT_NAME'] = '/index.php'; $server['QUERY_STRING'] = 'query=string'; $server['REQUEST_URI'] = '/path/info?toto=test&1=1'; $server['SCRIPT_NAME'] = '/index.php'; @@ -1711,7 +1711,7 @@ $this->assertFalse($request->hasSession()); $this->assertFalse($request->hasSession(true)); - $request->setSessionFactory(function () {}); + $request->setSessionFactory(static function () {}); $this->assertTrue($request->hasSession()); $this->assertFalse($request->hasSession(true)); @@ -1906,6 +1906,16 @@ '', '/foo/api/bar', ], + [ + '/api/index.phpfoo', + [ + 'SCRIPT_FILENAME' => '/var/www/api/index.php', + 'SCRIPT_NAME' => '/api/index.php', + 'PHP_SELF' => '/api/index.php', + ], + '/api/index.php', + '/foo', + ], ]; } @@ -2232,18 +2242,16 @@ public function testFactory() { - Request::setFactory(fn (array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null) => new NewRequest()); + Request::setFactory(static fn (array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null) => new NewRequest()); $this->assertEquals('foo', Request::create('/')->getFoo()); Request::setFactory(null); } - /** - * @dataProvider getLongHostNames - */ - public function testVeryLongHosts($host) + public function testVeryLongHosts() { + $host = 'a'.str_repeat('.a', 40000); $start = microtime(true); $request = Request::create('/'); @@ -2286,14 +2294,6 @@ ]; } - public static function getLongHostNames() - { - return [ - ['a'.str_repeat('.a', 40000)], - [str_repeat(':', 101)], - ]; - } - /** * @dataProvider methodIdempotentProvider */ @@ -2404,6 +2404,8 @@ 'trusted with via and protocol name' => ['HTTP/2.0', true, 'HTTP/1.0 fred, HTTP/1.1 nowhere.com (Apache/1.1)', 'HTTP/1.0'], 'trusted with broken via' => ['HTTP/2.0', true, 'HTTP/1^0 foo', 'HTTP/2.0'], 'trusted with partially-broken via' => ['HTTP/2.0', true, '1.0 fred, foo', 'HTTP/1.0'], + 'trusted with simple via' => ['HTTP/2.0', true, 'HTTP/1.0', 'HTTP/1.0'], + 'trusted with only version via' => ['HTTP/2.0', true, '1.0', 'HTTP/1.0'], ]; } @@ -2664,9 +2666,335 @@ public function testReservedFlags() { foreach ((new \ReflectionClass(Request::class))->getConstants() as $constant => $value) { - $this->assertNotSame(0b10000000, $value, sprintf('The constant "%s" should not use the reserved value "0b10000000".', $constant)); + $this->assertNotSame(0b10000000, $value, \sprintf('The constant "%s" should not use the reserved value "0b10000000".', $constant)); } } + + /** + * @dataProvider provideMalformedUrls + */ + public function testMalformedUrls(string $url, string $expectedException) + { + $this->expectException(BadRequestException::class); + $this->expectExceptionMessage($expectedException); + + Request::create($url); + } + + public static function provideMalformedUrls(): array + { + return [ + ['http://normal.com[@vulndetector.com/', 'Invalid URI: Userinfo is malformed.'], + ['http://[normal.com@vulndetector.com/', 'Invalid URI: Userinfo is malformed.'], + ['http://normal.com@[vulndetector.com/', 'Invalid URI: Host is malformed.'], + ['http://[[normal.com@][vulndetector.com/', 'Invalid URI: Userinfo is malformed.'], + ['http://[vulndetector.com]', 'Invalid URI: Host is malformed.'], + ['http://[0:0::vulndetector.com]:80', 'Invalid URI: Host is malformed.'], + ['http://[2001:db8::vulndetector.com]', 'Invalid URI: Host is malformed.'], + ['http://[malicious.com]', 'Invalid URI: Host is malformed.'], + ['http://[evil.org]', 'Invalid URI: Host is malformed.'], + ['http://[internal.server]', 'Invalid URI: Host is malformed.'], + ['http://[192.168.1.1]', 'Invalid URI: Host is malformed.'], + ['http://192.abc.1.1', 'Invalid URI: Host is malformed.'], + ['http://[localhost]', 'Invalid URI: Host is malformed.'], + ["\x80https://example.com", 'Invalid URI: Scheme is malformed.'], + ['>https://example.com', 'Invalid URI: Scheme is malformed.'], + ["http\x0b://example.com", 'Invalid URI: Scheme is malformed.'], + ["https\x80://example.com", 'Invalid URI: Scheme is malformed.'], + ['http>://example.com', 'Invalid URI: Scheme is malformed.'], + ['0http://example.com', 'Invalid URI: Scheme is malformed.'], + [':path', 'Invalid URI: Path is malformed.'], + ]; + } + + /** + * @dataProvider provideLegitimateUrls + */ + public function testLegitimateUrls(string $url) + { + $request = Request::create($url); + + $this->assertInstanceOf(Request::class, $request); + } + + public static function provideLegitimateUrls(): array + { + return [ + ['http://example.com'], + ['https://example.com'], + ['http://example.com:8080'], + ['https://example.com:8443'], + ['http://user:pass@example.com'], + ['http://user:pass@example.com:8080'], + ['http://user:pass@example.com/path'], + ['http://[2001:db8::1]'], + ['http://[2001:db8::1]:8080'], + ['http://[2001:db8::1]/path'], + ['http://[::1]'], + ['http://example.com/path'], + ]; + } + + /** + * @dataProvider provideAcceptableContentTypesRfc9110 + */ + public function testGetAcceptableContentTypesRfc9110(string $acceptHeader, array $expectedContentTypes) + { + $request = new Request(); + $request->headers->set('Accept', $acceptHeader); + $this->assertSame($expectedContentTypes, $request->getAcceptableContentTypes()); + } + + public static function provideAcceptableContentTypesRfc9110(): iterable + { + // Basic sorting by quality + yield 'quality sorting' => [ + 'text/html;q=0.9, application/json;q=0.8, text/plain;q=1.0', + ['text/plain', 'text/html', 'application/json'], + ]; + + // Parameters with RFC9110 canonical key generation (parameters normalized to lowercase) + yield 'parameters with canonical keys' => [ + 'text/plain, text/plain;format=flowed', + ['text/plain', 'text/plain;format=flowed'], + ]; + + yield 'parameters with quality and order' => [ + 'text/*;q=0.3, text/plain;q=0.7, text/plain;format=flowed, text/plain;format=fixed;q=0.4, */*;q=0.5', + ['text/plain;format=flowed', 'text/plain', '*/*', 'text/plain;format=fixed', 'text/*'], + ]; + + yield 'multiple parameters with order' => [ + 'text/html;level=1, text/html;level=2;q=0.4, text/html;q=0.7, text/*;q=0.3', + ['text/html;level=1', 'text/html', 'text/html;level=2', 'text/*'], + ]; + + // Case insensitivity for parameters - parameter names normalized to lowercase in canonical keys + yield 'case-insensitive param names normalized' => [ + 'text/plain;format=flowed;q=0.8, text/plain;Format=fixed', + ['text/plain;format=fixed', 'text/plain;format=flowed'], + ]; + + yield 'case-insensitive charset normalized' => [ + 'text/plain;Charset=utf-8, text/plain;charset=iso-8859-1;q=0.8', + ['text/plain;charset=utf-8', 'text/plain;charset=iso-8859-1'], + ]; + + // Quoted values with spaces + yield 'quoted value with space' => [ + 'text/plain;param="value with space"', + ['text/plain;param="value with space"'], + ]; + + yield 'quoted value with special chars' => [ + 'text/plain;param="value;with=special,chars"', + ['text/plain;param="value;with=special,chars"'], + ]; + + // Wildcards with parameters + yield 'wildcard type with parameter' => [ + 'text/*;format=flowed, text/plain', + ['text/*;format=flowed', 'text/plain'], + ]; + + yield 'wildcard all with parameter' => [ + '*/*;q=0.5, text/html;q=0.9', + ['text/html', '*/*'], + ]; + + // Stability - original order when quality is equal + yield 'order preserved for equal quality' => [ + 'application/json, application/xml, text/html', + ['application/json', 'application/xml', 'text/html'], + ]; + + yield 'order preserved for equal quality with params' => [ + 'text/plain;format=flowed;q=0.8, text/plain;format=fixed;q=0.8', + ['text/plain;format=flowed', 'text/plain;format=fixed'], + ]; + + // Complex scenarios + yield 'complex with wildcards and params' => [ + 'text/html, application/xhtml+xml, application/xml;q=0.9, text/*;q=0.8, */*;q=0.7', + ['text/html', 'application/xhtml+xml', 'application/xml', 'text/*', '*/*'], + ]; + + yield 'charset parameter order' => [ + 'text/plain, text/plain;charset=utf-8', + ['text/plain', 'text/plain;charset=utf-8'], + ]; + + yield 'multiple params on same type' => [ + 'text/plain;charset=utf-8;format=flowed, text/plain;charset=utf-8, text/plain', + ['text/plain;charset=utf-8;format=flowed', 'text/plain;charset=utf-8', 'text/plain'], + ]; + + // Edge cases + yield 'single wildcard' => [ + '*/*', + ['*/*'], + ]; + + yield 'type wildcard only' => [ + 'text/*', + ['text/*'], + ]; + + yield 'mixed case media types' => [ + 'Text/HTML, Application/JSON', + ['Text/HTML', 'Application/JSON'], + ]; + } + + /** + * @dataProvider providePreferredFormatRfc9110 + */ + public function testGetPreferredFormatRfc9110(string $acceptHeader, ?string $expectedFormat, ?string $default = 'html') + { + $request = new Request(); + $request->headers->set('Accept', $acceptHeader); + $this->assertSame($expectedFormat, $request->getPreferredFormat($default)); + } + + public static function providePreferredFormatRfc9110(): iterable + { + // Basic format detection with parameters + yield 'json with charset parameter' => [ + 'application/json;charset=utf-8', + 'json', + 'html', + ]; + + yield 'xml with version parameter' => [ + 'application/xml;version=1.0', + 'xml', + 'html', + ]; + + // Quality-based preference + yield 'json preferred over xml by quality' => [ + 'application/json;q=0.9, application/xml;q=0.8', + 'json', + 'html', + ]; + + yield 'xml preferred over json by quality' => [ + 'application/xml;q=0.9, application/json;q=0.8', + 'xml', + 'html', + ]; + + // Specificity affects format selection + yield 'more specific parameter wins with equal quality' => [ + 'application/json, application/json;charset=utf-8', + 'json', + 'html', + ]; + + yield 'text/html with level parameter' => [ + 'text/html;level=1, application/json', + 'html', + null, + ]; + + // Wildcards + yield 'wildcard type matches first known format' => [ + 'text/*', + 'html', + 'html', + ]; + + yield 'wildcard all matches default' => [ + '*/*', + 'html', + 'html', + ]; + + yield 'wildcard with quality lower than specific' => [ + 'application/json;q=0.9, */*;q=0.5', + 'json', + 'html', + ]; + + // Multiple content types with RFC9110 parameter handling + yield 'complex accept with parameters' => [ + 'text/html;q=0.9, application/xhtml+xml, application/xml;q=0.8, text/*;q=0.7', + 'html', + 'html', + ]; + + yield 'json with multiple parameters' => [ + 'application/json;charset=utf-8;profile=strict, text/html', + 'json', + 'html', + ]; + + // Case sensitivity - media type case is preserved, must use lowercase for proper format matching + yield 'lowercase content type for format matching' => [ + 'application/json', + 'json', + 'html', + ]; + + yield 'lowercase with parameters for format matching' => [ + 'application/json;charset=utf-8', + 'json', + 'html', + ]; + + // Quoted parameter values + yield 'quoted parameter value' => [ + 'application/json;profile="http://example.com/schema"', + 'json', + 'html', + ]; + + // Order preservation with equal quality and specificity + yield 'first match wins with equal priority' => [ + 'application/json;q=0.9, application/xml;q=0.9', + 'json', + 'html', + ]; + + // No match scenarios + yield 'unknown content type returns default' => [ + 'application/vnd.custom+unknown', + 'html', + 'html', + ]; + + yield 'unknown with null default' => [ + 'application/vnd.custom+unknown', + null, + null, + ]; + + // Empty or malformed + yield 'empty accept header' => [ + '', + 'html', + 'html', + ]; + + // Real-world examples + yield 'browser-like accept header' => [ + 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', + 'html', + 'html', + ]; + + yield 'api client prefer json' => [ + 'application/json, text/plain, */*', + 'json', + 'html', + ]; + + yield 'rss/atom feeds' => [ + 'application/atom+xml;q=0.9, application/rss+xml;q=0.8', + 'atom', + 'html', + ]; + } } class RequestContentProxy extends Request diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/ResponseFunctionalTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/ResponseFunctionalTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/ResponseFunctionalTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/ResponseFunctionalTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -45,9 +45,9 @@ */ public function testCookie($fixture) { - $result = file_get_contents(sprintf('http://localhost:8054/%s.php', $fixture)); - $result = preg_replace_callback('/expires=[^;]++/', fn ($m) => str_replace('-', ' ', $m[0]), $result); - $this->assertStringMatchesFormatFile(__DIR__.sprintf('/Fixtures/response-functional/%s.expected', $fixture), $result); + $result = file_get_contents(\sprintf('http://localhost:8054/%s.php', $fixture)); + $result = preg_replace_callback('/expires=[^;]++/', static fn ($m) => str_replace('-', ' ', $m[0]), $result); + $this->assertStringMatchesFormatFile(__DIR__.\sprintf('/Fixtures/response-functional/%s.expected', $fixture), $result); } public static function provideCookie() diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -181,7 +181,7 @@ $etagTwo = 'randomly_generated_etag_2'; $request = new Request(); - $request->headers->set('If-None-Match', sprintf('%s, %s, %s', $etagOne, $etagTwo, 'etagThree')); + $request->headers->set('If-None-Match', \sprintf('%s, %s, %s', $etagOne, $etagTwo, 'etagThree')); $response = new Response(); @@ -235,7 +235,7 @@ $etag = 'randomly_generated_etag'; $request = new Request(); - $request->headers->set('If-None-Match', sprintf('%s, %s', $etag, 'etagThree')); + $request->headers->set('If-None-Match', \sprintf('%s, %s', $etag, 'etagThree')); $request->headers->set('If-Modified-Since', $modified); $response = new Response(); @@ -259,7 +259,7 @@ $etag = 'randomly_generated_etag'; $request = new Request(); - $request->headers->set('If-None-Match', sprintf('%s, %s', $etag, 'etagThree')); + $request->headers->set('If-None-Match', \sprintf('%s, %s', $etag, 'etagThree')); $request->headers->set('If-Modified-Since', $modified); $response = new Response(); @@ -1040,7 +1040,7 @@ public function testNoDeprecationsAreTriggered() { new DefaultResponse(); - $this->createMock(Response::class); + new Response(); // we just need to ensure that subclasses of Response can be created without any deprecations // being triggered if the subclass does not override any final methods diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/AutoExpireFlashBagTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/AutoExpireFlashBagTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/AutoExpireFlashBagTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/AutoExpireFlashBagTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -46,9 +46,9 @@ $bag->initialize($array); $this->assertEquals(['A previous flash message'], $bag->peek('notice')); $array = ['new' => [ - 'notice' => ['Something else'], - 'error' => ['a'], - ]]; + 'notice' => ['Something else'], + 'error' => ['a'], + ]]; $bag->initialize($array); $this->assertEquals(['Something else'], $bag->peek('notice')); $this->assertEquals(['a'], $bag->peek('error')); @@ -106,13 +106,13 @@ $this->assertEquals([ 'notice' => 'Foo', 'error' => 'Bar', - ], $this->bag->peekAll() + ], $this->bag->peekAll() ); $this->assertEquals([ 'notice' => 'Foo', 'error' => 'Bar', - ], $this->bag->peekAll() + ], $this->bag->peekAll() ); } @@ -137,7 +137,7 @@ $this->bag->set('error', 'Bar'); $this->assertEquals([ 'notice' => ['A previous flash message'], - ], $this->bag->all() + ], $this->bag->all() ); $this->assertEquals([], $this->bag->all()); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/FlashBagTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/FlashBagTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/FlashBagTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/FlashBagTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -141,14 +141,14 @@ $this->assertEquals([ 'notice' => ['Foo'], 'error' => ['Bar'], - ], $this->bag->peekAll() + ], $this->bag->peekAll() ); $this->assertTrue($this->bag->has('notice')); $this->assertTrue($this->bag->has('error')); $this->assertEquals([ 'notice' => ['Foo'], 'error' => ['Bar'], - ], $this->bag->peekAll() + ], $this->bag->peekAll() ); } } diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/AbstractRedisSessionHandlerTestCase.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/AbstractRedisSessionHandlerTestCase.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/AbstractRedisSessionHandlerTestCase.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/AbstractRedisSessionHandlerTestCase.php 2026-05-27 08:23:35.000000000 +0000 @@ -155,7 +155,7 @@ $options = [ 'prefix' => self::PREFIX, - 'ttl' => fn () => $ttl, + 'ttl' => static fn () => $ttl, ]; $handler = new RedisSessionHandler($this->redisClient, $options); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/AbstractSessionHandlerTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/AbstractSessionHandlerTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/AbstractSessionHandlerTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/AbstractSessionHandlerTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -45,10 +45,14 @@ { $context = ['http' => ['header' => "Cookie: sid=123abc\r\n"]]; $context = stream_context_create($context); - $result = file_get_contents(sprintf('http://localhost:8053/%s.php', $fixture), false, $context); - $result = preg_replace_callback('/expires=[^;]++/', fn ($m) => str_replace('-', ' ', $m[0]), $result); + $result = file_get_contents(\sprintf('http://localhost:8053/%s.php', $fixture), false, $context); + $result = preg_replace_callback('/expires=[^;]++/', static fn ($m) => str_replace('-', ' ', $m[0]), $result); - $this->assertStringEqualsFile(__DIR__.sprintf('/Fixtures/%s.expected', $fixture), $result); + if (\PHP_VERSION_ID < 80600) { + $result = str_replace("write\ndestroy\nclose\n", "updateTimestamp\ndestroy\nclose\n", $result); + } + + $this->assertStringEqualsFile(__DIR__.\sprintf('/Fixtures/%s.expected', $fixture), $result); } public static function provideSession() diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/common.inc symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/common.inc --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/common.inc 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/common.inc 2026-05-27 08:23:35.000000000 +0000 @@ -34,6 +34,7 @@ ini_set('session.cookie_domain', ''); ini_set('session.cookie_secure', 1); ini_set('session.cookie_httponly', 1); +ini_set('session.cookie_samesite', 'Lax'); ini_set('session.use_strict_mode', 1); ini_set('session.lazy_write', 1); ini_set('session.name', 'sid'); @@ -87,7 +88,7 @@ { echo __FUNCTION__, "\n"; - return true; + return parent::updateTimestamp($sessionId, $data); } public function write(string $sessionId, string $data): bool diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.expected symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.expected --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.expected 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.expected 2026-05-27 08:23:35.000000000 +0000 @@ -12,6 +12,6 @@ ( [0] => Content-Type: text/plain; charset=utf-8 [1] => Cache-Control: max-age=10800, private, must-revalidate - [2] => Set-Cookie: sid=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly + [2] => Set-Cookie: sid=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly; SameSite=Lax ) shutdown diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/invalid_regenerate.expected symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/invalid_regenerate.expected --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/invalid_regenerate.expected 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/invalid_regenerate.expected 2026-05-27 08:23:35.000000000 +0000 @@ -12,6 +12,6 @@ ( [0] => Content-Type: text/plain; charset=utf-8 [1] => Cache-Control: max-age=0, private, must-revalidate - [2] => Set-Cookie: sid=random_session_id; path=/; secure; HttpOnly + [2] => Set-Cookie: sid=random_session_id; path=/; secure; HttpOnly; SameSite=Lax ) shutdown diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected 2026-05-27 08:23:35.000000000 +0000 @@ -19,6 +19,6 @@ ( [0] => Content-Type: text/plain; charset=utf-8 [1] => Cache-Control: max-age=10800, private, must-revalidate - [2] => Set-Cookie: sid=random_session_id; path=/; secure; HttpOnly + [2] => Set-Cookie: sid=random_session_id; path=/; secure; HttpOnly; SameSite=Lax ) shutdown diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/storage.expected symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/storage.expected --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/storage.expected 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/storage.expected 2026-05-27 08:23:35.000000000 +0000 @@ -8,7 +8,7 @@ [0] => bar ) $_SESSION is not empty -write +updateTimestamp destroy close $_SESSION is empty @@ -16,6 +16,6 @@ ( [0] => Content-Type: text/plain; charset=utf-8 [1] => Cache-Control: max-age=0, private, must-revalidate - [2] => Set-Cookie: sid=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly + [2] => Set-Cookie: sid=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly; SameSite=Lax ) shutdown diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected 2026-05-27 08:23:35.000000000 +0000 @@ -20,6 +20,6 @@ [0] => Content-Type: text/plain; charset=utf-8 [1] => Cache-Control: max-age=10800, private, must-revalidate [2] => Set-Cookie: abc=def - [3] => Set-Cookie: sid=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly + [3] => Set-Cookie: sid=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly; SameSite=Lax ) shutdown diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/IdentityMarshallerTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/IdentityMarshallerTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/IdentityMarshallerTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/IdentityMarshallerTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -17,7 +17,7 @@ /** * @author Ahmed TAILOULOUTE */ -class IdentityMarshallerTest extends Testcase +class IdentityMarshallerTest extends TestCase { public function testMarshall() { diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MarshallingSessionHandlerTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MarshallingSessionHandlerTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MarshallingSessionHandlerTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MarshallingSessionHandlerTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -23,17 +23,15 @@ class MarshallingSessionHandlerTest extends TestCase { protected MockObject&\SessionHandlerInterface $handler; - protected MockObject&MarshallerInterface $marshaller; protected function setUp(): void { - $this->marshaller = $this->createMock(MarshallerInterface::class); $this->handler = $this->createMock(AbstractSessionHandler::class); } public function testOpen() { - $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->marshaller); + $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->createStub(MarshallerInterface::class)); $this->handler->expects($this->once())->method('open') ->with('path', 'name')->willReturn(true); @@ -43,7 +41,7 @@ public function testClose() { - $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->marshaller); + $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->createStub(MarshallerInterface::class)); $this->handler->expects($this->once())->method('close')->willReturn(true); @@ -52,7 +50,7 @@ public function testDestroy() { - $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->marshaller); + $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->createStub(MarshallerInterface::class)); $this->handler->expects($this->once())->method('destroy') ->with('session_id')->willReturn(true); @@ -62,7 +60,7 @@ public function testGc() { - $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->marshaller); + $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->createStub(MarshallerInterface::class)); $this->handler->expects($this->once())->method('gc') ->with(4711)->willReturn(1); @@ -72,11 +70,12 @@ public function testRead() { - $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->marshaller); + $marshaller = $this->createMock(MarshallerInterface::class); + $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $marshaller); $this->handler->expects($this->once())->method('read')->with('session_id') ->willReturn('data'); - $this->marshaller->expects($this->once())->method('unmarshall')->with('data') + $marshaller->expects($this->once())->method('unmarshall')->with('data') ->willReturn('unmarshalled_data') ; @@ -86,9 +85,10 @@ public function testWrite() { - $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->marshaller); + $marshaller = $this->createMock(MarshallerInterface::class); + $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $marshaller); - $this->marshaller->expects($this->once())->method('marshall') + $marshaller->expects($this->once())->method('marshall') ->with(['data' => 'data'], []) ->willReturn(['data' => 'marshalled_data']); @@ -101,7 +101,7 @@ public function testValidateId() { - $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->marshaller); + $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->createStub(MarshallerInterface::class)); $this->handler->expects($this->once())->method('validateId') ->with('session_id')->willReturn(true); @@ -111,7 +111,7 @@ public function testUpdateTimestamp() { - $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->marshaller); + $marshallingSessionHandler = new MarshallingSessionHandler($this->handler, $this->createStub(MarshallerInterface::class)); $this->handler->expects($this->once())->method('updateTimestamp') ->with('session_id', 'data')->willReturn(true); diff -Nru symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php --- symfony-6.4.21+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php 2025-05-02 08:46:49.000000000 +0000 +++ symfony-6.4.41+dfsg/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php 2026-05-27 08:23:35.000000000 +0000 @@ -25,9 +25,6 @@ private const PREFIX = 'prefix_'; private const TTL = 1000; - protected MemcachedSessionHandler $storage; - protected MockObject&\Memcached $memcached; - protected function setUp(): void { parent::setUp(); @@ -35,94 +32,86 @@ if (version_compare(phpversion('memcached'), '2.2.0', '>=') && version_compare(phpversion('memcached'), '3.0.0b1', '<')) { $this->markTestSkipped('Tests can only be run with memcached extension 2.1.0 or lower, or 3.0.0b1 or higher'); } - - $r = new \ReflectionClass(\Memcached::class); - $methodsToMock = array_map(fn ($m) => $m->name, $r->getMethods(\ReflectionMethod::IS_PUBLIC)); - $methodsToMock = array_diff($methodsToMock, ['getDelayed', 'getDelayedByKey']); - - $this->memcached = $this->getMockBuilder(\Memcached::class) - ->disableOriginalConstructor() - ->onlyMethods($methodsToMock) - ->getMock(); - - $this->storage = new MemcachedSessionHandler( - $this->memcached, - ['prefix' => self::PREFIX, 'expiretime' => self::TTL] - ); } public function testOpenSession() { - $this->assertTrue($this->storage->open('', '')); + $this->assertTrue($this->getSessionHandler()->open('', '')); } public function testCloseSession() { - $this->memcached + $memcached = $this->getMemcachedMock(); + $memcached ->expects($this->once()) ->method('quit') ->willReturn(true) ; - $this->assertTrue($this->storage->close()); + $this->assertTrue($this->getSessionHandler($memcached)->close()); } public function testReadSession() { - $this->memcached + $memcached = $this->getMemcachedMock(); + $memcached ->expects($this->once()) ->method('get') ->with(self::PREFIX.'id') ; - $this->assertEquals('', $this->storage->read('id')); + $this->assertEquals('', $this->getSessionHandler($memcached)->read('id')); } public function testWriteSession() { - $this->memcached + $memcached = $this->getMemcachedMock(); + $memcached ->expects($this->once()) ->method('set') ->with(self::PREFIX.'id', 'data', $this->equalTo(self::TTL, 2)) ->willReturn(true) ; - $this->assertTrue($this->storage->write('id', 'data')); + $this->assertTrue($this->getSessionHandler($memcached)->write('id', 'data')); } public function testWriteSessionWithLargeTTL() { - $this->memcached + $memcached = $this->getMemcachedMock(); + $memcached ->expects($this->once()) ->method('set') ->with(self::PREFIX.'id', 'data', $this->equalTo(time() + self::TTL + 60 * 60 * 24 * 30, 2)) ->willReturn(true) ; - $storage = new MemcachedSessionHandler( - $this->memcached, + $sessionHandler = new MemcachedSessionHandler( + $memcached, ['prefix' => self::PREFIX, 'expiretime' => self::TTL + 60 * 60 * 24 * 30] ); - $this->assertTrue($storage->write('id', 'data')); + $this->assertTrue($sessionHandler->write('id', 'data')); } public function testDestroySession() { - $this->storage->open('', 'sid'); - $this->memcached + $memcached = $this->getMemcachedMock(); + $sessionHandler = $this->getSessionHandler($memcached); + $sessionHandler->open('', 'sid'); + $memcached ->expects($this->once()) ->method('delete') ->with(self::PREFIX.'id') ->willReturn(true) ; - $this->assertTrue($this->storage->destroy('id')); + $this->assertTrue($sessionHandler->destroy('id')); } public function testGcSession() { - $this->assertIsInt($this->storage->gc(123)); + $this->assertIsInt($t