From 4cc50cf76807bcd6b458fcb7e8cbba9ad8e05c7d Mon Sep 17 00:00:00 2001 From: Andrei-Chiorian Date: Tue, 27 Jun 2023 17:17:24 +0200 Subject: [PATCH 1/4] last --- .github/workflows/firebase-hosting-merge.yml | 19 + .../firebase-hosting-pull-request.yml | 16 + .gitignore | 36 +- .htaccess | 6 + Procfile | 1 + composer.json | 1 + composer.lock | 1493 +++++++++++++--- config/app.php | 1 + database.rules.json | 7 + node_modules/.vite/deps/_metadata.json | 6 +- public/404.html | 33 + .../ebcca851-3bcb-49b7-af50-66a3de266d75.jpg | Bin 0 -> 44244 bytes public/build/assets/app-4b1c64a9.css | 6 + public/build/assets/app-94c96da9.js | 1 + .../build/assets/fa-brands-400-20c4a58b.ttf | Bin 0 -> 187208 bytes .../build/assets/fa-brands-400-74833209.woff2 | Bin 0 -> 108020 bytes .../build/assets/fa-regular-400-528d022d.ttf | Bin 0 -> 63952 bytes .../assets/fa-regular-400-8e7e5ea1.woff2 | Bin 0 -> 24948 bytes public/build/assets/fa-solid-900-67a65763.ttf | Bin 0 -> 394628 bytes .../build/assets/fa-solid-900-7152a693.woff2 | Bin 0 -> 150124 bytes .../assets/fa-v4compatibility-0515a423.ttf | Bin 0 -> 10172 bytes .../assets/fa-v4compatibility-694a17c3.woff2 | Bin 0 -> 4564 bytes public/build/manifest.json | 44 + public/hot | 1 - public/index.html | 89 + resources/views/auth/login.blade.php | 3 +- vendor/composer/autoload_classmap.php | 595 ++++++- vendor/composer/autoload_files.php | 11 +- vendor/composer/autoload_psr4.php | 19 + vendor/composer/autoload_static.php | 707 +++++++- vendor/composer/installed.json | 1563 ++++++++++++++--- vendor/composer/installed.php | 282 ++- vendor/guzzlehttp/guzzle/CHANGELOG.md | 52 +- vendor/guzzlehttp/guzzle/README.md | 14 +- vendor/guzzlehttp/guzzle/composer.json | 5 +- vendor/guzzlehttp/guzzle/src/Client.php | 34 +- .../guzzle/src/Cookie/CookieJar.php | 26 +- .../guzzle/src/Cookie/CookieJarInterface.php | 2 +- .../guzzle/src/Cookie/SessionCookieJar.php | 2 +- .../guzzle/src/Cookie/SetCookie.php | 30 +- .../guzzle/src/Handler/CurlFactory.php | 47 +- .../guzzle/src/Handler/CurlMultiHandler.php | 3 +- .../guzzle/src/Handler/EasyHandle.php | 2 +- .../guzzle/src/Handler/HeaderProcessor.php | 4 +- .../guzzle/src/Handler/MockHandler.php | 3 +- .../guzzle/src/Handler/StreamHandler.php | 45 +- vendor/guzzlehttp/guzzle/src/HandlerStack.php | 12 +- .../guzzle/src/MessageFormatter.php | 15 +- vendor/guzzlehttp/guzzle/src/Middleware.php | 20 +- .../guzzle/src/PrepareBodyMiddleware.php | 1 + .../guzzle/src/RedirectMiddleware.php | 8 +- .../guzzlehttp/guzzle/src/RequestOptions.php | 2 +- .../guzzlehttp/guzzle/src/RetryMiddleware.php | 7 +- vendor/guzzlehttp/guzzle/src/Utils.php | 22 +- vendor/guzzlehttp/guzzle/src/functions.php | 8 +- .../guzzle/src/functions_include.php | 2 +- vendor/guzzlehttp/promises/CHANGELOG.md | 6 + vendor/guzzlehttp/promises/composer.json | 5 - vendor/guzzlehttp/promises/src/Each.php | 2 +- vendor/guzzlehttp/promises/src/Utils.php | 2 +- .../lib/PhpParser/Builder/Param.php | 48 +- .../php-code-coverage/ChangeLog-10.1.md | 7 + .../ExecutableLinesFindingVisitor.php | 1 + .../phpunit/php-code-coverage/src/Version.php | 2 +- vendor/phpunit/phpunit/composer.json | 2 +- vendor/phpunit/phpunit/phpunit.xsd | 9 +- .../src/Event/Dispatcher/DirectDispatcher.php | 8 +- .../src/Event/Emitter/DispatchingEmitter.php | 296 ++-- .../phpunit/src/Event/Emitter/Emitter.php | 19 +- .../src/Event/Events/Application/Finished.php | 2 +- .../src/Event/Events/Application/Started.php | 2 +- .../Events/Test/Assertion/AssertionFailed.php | 4 +- .../Test/Assertion/AssertionSucceeded.php | 4 +- .../Events/Test/ComparatorRegistered.php | 2 +- .../HookMethod/AfterLastTestMethodCalled.php | 2 +- .../AfterLastTestMethodFinished.php | 2 +- .../Test/HookMethod/AfterTestMethodCalled.php | 2 +- .../HookMethod/AfterTestMethodFinished.php | 2 +- .../BeforeFirstTestMethodCalled.php | 2 +- .../BeforeFirstTestMethodErrored.php | 2 +- .../BeforeFirstTestMethodFinished.php | 2 +- .../HookMethod/BeforeTestMethodCalled.php | 2 +- .../HookMethod/BeforeTestMethodFinished.php | 2 +- .../Test/HookMethod/PostConditionCalled.php | 2 +- .../Test/HookMethod/PostConditionFinished.php | 2 +- .../Test/HookMethod/PreConditionCalled.php | 2 +- .../Test/HookMethod/PreConditionFinished.php | 2 +- .../Test/Issue/DeprecationTriggered.php | 14 +- .../Events/Test/Issue/ErrorTriggered.php | 14 +- .../Events/Test/Issue/NoticeTriggered.php | 14 +- .../Test/Issue/PhpDeprecationTriggered.php | 14 +- .../Events/Test/Issue/PhpNoticeTriggered.php | 14 +- .../Events/Test/Issue/PhpWarningTriggered.php | 14 +- .../Issue/PhpunitDeprecationTriggered.php | 2 +- .../Test/Issue/PhpunitErrorTriggered.php | 2 +- .../Test/Issue/PhpunitWarningTriggered.php | 2 +- .../Events/Test/Issue/WarningTriggered.php | 14 +- .../src/Event/Events/Test/Outcome/Errored.php | 2 +- .../src/Event/Events/Test/Outcome/Failed.php | 2 +- .../Events/Test/Outcome/MarkedIncomplete.php | 2 +- .../src/Event/Events/Test/Outcome/Skipped.php | 2 +- .../Events/Test/PrintedUnexpectedOutput.php | 2 +- .../Test/TestDouble/MockObjectCreated.php | 2 +- .../MockObjectForAbstractClassCreated.php | 2 +- ...jectForIntersectionOfInterfacesCreated.php | 2 +- .../TestDouble/MockObjectForTraitCreated.php | 2 +- .../TestDouble/MockObjectFromWsdlCreated.php | 2 +- .../TestDouble/PartialMockObjectCreated.php | 2 +- .../Test/TestDouble/TestProxyCreated.php | 2 +- .../Test/TestDouble/TestStubCreated.php | 2 +- ...StubForIntersectionOfInterfacesCreated.php | 2 +- .../Events/TestRunner/BootstrapFinished.php | 2 +- .../TestRunner/DeprecationTriggered.php | 2 +- .../Events/TestRunner/ExecutionStarted.php | 2 +- .../TestRunner/ExtensionLoadedFromPhar.php | 2 +- .../Events/TestRunner/WarningTriggered.php | 2 +- .../src/Event/Events/TestSuite/Filtered.php | 2 +- .../src/Event/Events/TestSuite/Finished.php | 12 +- .../src/Event/Events/TestSuite/Loaded.php | 2 +- .../src/Event/Events/TestSuite/Skipped.php | 12 +- .../src/Event/Events/TestSuite/Started.php | 12 +- vendor/phpunit/phpunit/src/Event/Facade.php | 14 +- vendor/phpunit/phpunit/src/Event/TypeMap.php | 28 +- .../Event/Value/ComparisonFailureBuilder.php | 2 +- .../phpunit/src/Event/Value/Runtime/PHP.php | 2 +- .../src/Event/Value/Runtime/Runtime.php | 2 +- .../src/Event/Value/Telemetry/Duration.php | 14 +- .../src/Event/Value/Telemetry/HRTime.php | 10 +- .../src/Event/Value/Telemetry/Info.php | 2 +- .../src/Event/Value/Telemetry/System.php | 2 +- .../src/Event/Value/Test/TestMethod.php | 4 +- .../Event/Value/Test/TestMethodBuilder.php | 19 +- .../src/Event/Value/TestSuite/TestSuite.php | 9 + .../Value/TestSuite/TestSuiteBuilder.php | 41 +- ...TestSuiteForTestMethodWithDataProvider.php | 1 + .../src/Event/Value/ThrowableBuilder.php | 2 +- .../phpunit/phpunit/src/Framework/Assert.php | 168 +- .../src/Framework/Assert/Functions.php | 2 +- .../Constraint/Cardinality/Count.php | 6 +- .../Constraint/Cardinality/IsEmpty.php | 2 +- .../src/Framework/Constraint/Constraint.php | 4 +- .../Framework/Constraint/Equality/IsEqual.php | 12 +- .../Equality/IsEqualCanonicalizing.php | 10 +- .../Equality/IsEqualIgnoringCase.php | 10 +- .../Constraint/Equality/IsEqualWithDelta.php | 8 +- .../Constraint/Exception/Exception.php | 6 +- .../Constraint/Exception/ExceptionCode.php | 2 +- .../ExceptionMessageIsOrContains.php | 4 +- ...ceptionMessageMatchesRegularExpression.php | 6 +- .../Constraint/Filesystem/DirectoryExists.php | 2 +- .../Constraint/Filesystem/FileExists.php | 2 +- .../Constraint/Filesystem/IsReadable.php | 2 +- .../Constraint/Filesystem/IsWritable.php | 2 +- .../src/Framework/Constraint/IsIdentical.php | 4 +- .../src/Framework/Constraint/JsonMatches.php | 4 +- .../Constraint/Object/ObjectEquals.php | 18 +- .../Constraint/Object/ObjectHasProperty.php | 6 +- .../Constraint/Operator/BinaryOperator.php | 2 +- .../Constraint/Operator/LogicalNot.php | 8 +- .../Constraint/Operator/LogicalXor.php | 2 +- .../Framework/Constraint/String/IsJson.php | 2 +- .../Constraint/String/RegularExpression.php | 2 +- .../Constraint/String/StringContains.php | 4 +- .../StringEqualsStringIgnoringLineEndings.php | 4 +- .../String/StringMatchesFormatDescription.php | 6 +- .../Traversable/TraversableContains.php | 2 +- .../Constraint/Type/IsInstanceOf.php | 4 +- .../src/Framework/Constraint/Type/IsType.php | 2 +- .../src/Framework/DataProviderTestSuite.php | 4 +- .../GeneratorNotSupportedException.php | 4 +- .../ActualValueIsNotAnObjectException.php | 2 +- ...hodDoesNotAcceptParameterTypeException.php | 4 +- ...dDoesNotDeclareBoolReturnTypeException.php | 4 +- ...NotDeclareExactlyOneParameterException.php | 4 +- ...odDoesNotDeclareParameterTypeException.php | 4 +- .../ComparisonMethodDoesNotExistException.php | 4 +- .../Exception/UnknownClassException.php | 4 +- .../UnknownClassOrInterfaceException.php | 4 +- .../Exception/UnknownTypeException.php | 4 +- .../Framework/ExecutionOrderDependency.php | 14 +- .../src/Framework/MockObject/Api/Api.php | 4 +- .../src/Framework/MockObject/Api/Method.php | 2 +- .../MockObject/Builder/InvocationMocker.php | 4 +- .../CannotUseAddMethodsException.php | 4 +- .../CannotUseOnlyMethodsException.php | 4 +- .../Exception/ClassAlreadyExistsException.php | 4 +- .../Exception/ClassIsEnumerationException.php | 4 +- .../Exception/ClassIsFinalException.php | 4 +- .../Exception/ClassIsReadonlyException.php | 4 +- .../Exception/DuplicateMethodException.php | 4 +- .../IncompatibleReturnValueException.php | 4 +- .../Exception/InvalidMethodNameException.php | 4 +- .../MatchBuilderNotFoundException.php | 4 +- .../MatcherAlreadyRegisteredException.php | 4 +- .../MethodCannotBeConfiguredException.php | 4 +- .../ReturnValueNotConfiguredException.php | 4 +- .../SoapExtensionNotAvailableException.php | 2 +- .../Exception/UnknownClassException.php | 4 +- .../Exception/UnknownTraitException.php | 4 +- .../Exception/UnknownTypeException.php | 4 +- .../src/Framework/MockObject/Generator.php | 86 +- .../src/Framework/MockObject/Invocation.php | 14 +- .../MockObject/InvocationHandler.php | 2 +- .../src/Framework/MockObject/Matcher.php | 20 +- .../MockObject/MethodNameConstraint.php | 2 +- .../src/Framework/MockObject/MockBuilder.php | 10 +- .../src/Framework/MockObject/MockClass.php | 2 +- .../src/Framework/MockObject/MockMethod.php | 20 +- .../MockObject/Rule/InvokedAtLeastCount.php | 2 +- .../MockObject/Rule/InvokedAtLeastOnce.php | 2 +- .../MockObject/Rule/InvokedAtMostCount.php | 2 +- .../MockObject/Rule/InvokedCount.php | 6 +- .../Framework/MockObject/Rule/Parameters.php | 8 +- .../MockObject/Stub/ConsecutiveCalls.php | 2 +- .../Framework/MockObject/Stub/Exception.php | 2 +- .../MockObject/Stub/ReturnCallback.php | 2 +- .../MockObject/Stub/ReturnReference.php | 2 +- .../Framework/MockObject/Stub/ReturnStub.php | 2 +- .../phpunit/src/Framework/TestBuilder.php | 32 +- .../phpunit/src/Framework/TestCase.php | 138 +- .../phpunit/src/Framework/TestRunner.php | 36 +- .../phpunit/src/Framework/TestSuite.php | 121 +- .../src/Framework/TestSuiteIterator.php | 2 +- .../phpunit/src/Logging/EventLogger.php | 2 +- .../src/Logging/JUnit/JunitXmlLogger.php | 28 +- .../src/Logging/TeamCity/TeamCityLogger.php | 36 +- .../src/Logging/TestDox/HtmlRenderer.php | 4 +- .../src/Logging/TestDox/NamePrettifier.php | 4 +- .../src/Logging/TestDox/PlainTextRenderer.php | 2 +- .../TestMethod/TestResultCollector.php | 4 +- .../phpunit/src/Metadata/Api/CodeCoverage.php | 40 +- .../phpunit/src/Metadata/Api/DataProvider.php | 52 +- .../phpunit/src/Metadata/Api/HookMethods.php | 6 +- .../phpunit/src/Metadata/Api/Requirements.php | 18 +- ...otSupportedForInternalClassesException.php | 4 +- .../src/Metadata/MetadataCollection.php | 184 +- .../Metadata/Parser/Annotation/DocBlock.php | 12 +- .../Metadata/Parser/Annotation/Registry.php | 4 +- .../src/Metadata/Parser/AnnotationParser.php | 18 +- .../src/Metadata/Parser/AttributeParser.php | 34 +- .../src/Metadata/Parser/CachingParser.php | 2 +- .../src/Metadata/Parser/ParserChain.php | 2 +- .../phpunit/src/Metadata/Parser/Registry.php | 4 +- .../Version/ConstraintRequirement.php | 4 +- .../src/Metadata/Version/Requirement.php | 8 +- .../phpunit/src/Runner/CodeCoverage.php | 30 +- .../phpunit/src/Runner/ErrorHandler.php | 57 +- .../Exception/ClassCannotBeFoundException.php | 4 +- .../Exception/ClassIsAbstractException.php | 4 +- .../DirectoryCannotBeCreatedException.php | 4 +- .../Exception/FileDoesNotExistException.php | 4 +- .../ParameterDoesNotExistException.php | 2 +- ...hptExternalFileCannotBeLoadedException.php | 4 +- .../UnsupportedPhptSectionException.php | 4 +- .../Extension/ExtensionBootstrapper.php | 41 +- .../src/Runner/Extension/PharLoader.php | 97 +- .../src/Runner/Filter/GroupFilterIterator.php | 4 +- .../src/Runner/Filter/NameFilterIterator.php | 10 +- .../phpunit/src/Runner/PhptTestCase.php | 18 +- .../Runner/ResultCache/DefaultResultCache.php | 4 +- .../Runner/ResultCache/ResultCacheHandler.php | 10 +- .../src/Runner/TestResult/Collector.php | 50 +- .../phpunit/src/Runner/TestResult/Facade.php | 3 - .../src/Runner/TestResult/PassedTests.php | 6 +- .../phpunit/src/Runner/TestSuiteLoader.php | 11 +- .../phpunit/src/Runner/TestSuiteSorter.php | 6 +- vendor/phpunit/phpunit/src/Runner/Version.php | 2 +- .../phpunit/src/TextUI/Application.php | 91 +- .../Commands/GenerateConfigurationCommand.php | 4 +- .../Command/Commands/ListGroupsCommand.php | 4 +- .../Commands/ListTestSuitesCommand.php | 2 +- .../Commands/ListTestsAsTextCommand.php | 4 +- .../Commands/ListTestsAsXmlCommand.php | 6 +- .../Commands/MigrateConfigurationCommand.php | 2 +- .../Command/Commands/ShowHelpCommand.php | 2 +- .../Command/Commands/VersionCheckCommand.php | 6 +- .../Commands/WarmCodeCoverageCacheCommand.php | 8 +- .../src/TextUI/Configuration/Builder.php | 4 +- .../src/TextUI/Configuration/Cli/Builder.php | 10 +- .../Cli/XmlConfigurationFileFinder.php | 4 +- .../TextUI/Configuration/Configuration.php | 23 +- .../src/TextUI/Configuration/Merger.php | 25 +- .../src/TextUI/Configuration/PhpHandler.php | 2 +- .../src/TextUI/Configuration/Registry.php | 4 +- .../TextUI/Configuration/TestSuiteBuilder.php | 13 +- .../src/TextUI/Configuration/Value/Source.php | 80 +- .../TextUI/Configuration/Value/TestSuite.php | 9 + .../Xml/CodeCoverage/CodeCoverage.php | 16 +- .../Configuration/Xml/Configuration.php | 1 + .../Xml/DefaultConfiguration.php | 20 +- .../TextUI/Configuration/Xml/Generator.php | 2 +- .../Xml/LoadedFromFileConfiguration.php | 3 +- .../src/TextUI/Configuration/Xml/Loader.php | 153 +- .../Xml/Migration/MigrationBuilder.php | 4 +- .../Migrations/IntroduceCoverageElement.php | 2 +- .../Migrations/LogToReportMigration.php | 2 +- .../MoveWhitelistExcludesToCoverage.php | 2 +- .../Migrations/UpdateSchemaLocation.php | 2 +- .../Configuration/Xml/Migration/Migrator.php | 2 +- .../TextUI/Configuration/Xml/SchemaFinder.php | 4 +- .../Configuration/Xml/TestSuiteMapper.php | 10 +- .../DirectoryDoesNotExistException.php | 4 +- .../Exception/InvalidSocketException.php | 4 +- .../TestDirectoryNotFoundException.php | 4 +- .../Exception/TestFileNotFoundException.php | 4 +- vendor/phpunit/phpunit/src/TextUI/Help.php | 2 +- .../ProgressPrinter/ProgressPrinter.php | 111 +- .../TestTriggeredPhpDeprecationSubscriber.php | 2 +- .../TestTriggeredPhpNoticeSubscriber.php | 2 +- .../TestTriggeredPhpWarningSubscriber.php | 2 +- ...tTriggeredPhpunitDeprecationSubscriber.php | 2 +- .../TestTriggeredPhpunitWarningSubscriber.php | 2 +- .../TextUI/Output/Default/ResultPrinter.php | 34 +- .../phpunit/src/TextUI/Output/Facade.php | 7 +- .../TextUI/Output/Printer/DefaultPrinter.php | 4 +- .../src/TextUI/Output/SummaryPrinter.php | 24 +- .../TextUI/Output/TestDox/ResultPrinter.php | 32 +- .../phpunit/phpunit/src/TextUI/TestRunner.php | 8 +- .../src/TextUI/TestSuiteFilterProcessor.php | 16 +- vendor/phpunit/phpunit/src/Util/Color.php | 6 +- .../Exception/InvalidDirectoryException.php | 4 +- .../InvalidVersionOperatorException.php | 4 +- .../phpunit/phpunit/src/Util/Filesystem.php | 2 +- vendor/phpunit/phpunit/src/Util/Filter.php | 6 +- .../phpunit/phpunit/src/Util/GlobalState.php | 8 +- .../src/Util/PHP/AbstractPhpProcess.php | 22 +- .../src/Util/PHP/DefaultPhpProcess.php | 10 +- .../src/Util/PHP/WindowsPhpProcess.php | 2 +- vendor/phpunit/phpunit/src/Util/Test.php | 2 +- .../phpunit/phpunit/src/Util/Xml/Loader.php | 23 +- vendor/phpunit/phpunit/src/Util/Xml/Xml.php | 4 +- vendor/psr/http-message/composer.json | 4 +- .../psr/http-message/src/MessageInterface.php | 24 +- .../psr/http-message/src/RequestInterface.php | 15 +- .../http-message/src/ResponseInterface.php | 8 +- .../src/ServerRequestInterface.php | 24 +- .../psr/http-message/src/StreamInterface.php | 28 +- .../src/UploadedFileInterface.php | 14 +- vendor/psr/http-message/src/UriInterface.php | 34 +- vendor/psr/simple-cache/composer.json | 6 +- .../psr/simple-cache/src/CacheException.php | 2 +- .../psr/simple-cache/src/CacheInterface.php | 24 +- vendor/symfony/console/Application.php | 107 +- vendor/symfony/console/CHANGELOG.md | 7 + vendor/symfony/console/Command/Command.php | 18 +- .../console/Command/CompleteCommand.php | 12 +- .../console/Command/DumpCompletionCommand.php | 8 +- .../symfony/console/Command/HelpCommand.php | 14 +- .../symfony/console/Command/ListCommand.php | 11 +- .../symfony/console/Command/LockableTrait.php | 4 +- .../Command/SignalableCommandInterface.php | 6 +- .../console/Completion/CompletionInput.php | 2 +- .../AddConsoleCommandPass.php | 3 + .../Descriptor/ApplicationDescription.php | 2 +- .../symfony/console/Descriptor/Descriptor.php | 22 +- .../Descriptor/DescriptorInterface.php | 3 + .../console/Descriptor/JsonDescriptor.php | 12 +- .../console/Descriptor/MarkdownDescriptor.php | 38 +- .../console/Descriptor/TextDescriptor.php | 20 +- .../console/Descriptor/XmlDescriptor.php | 14 +- .../console/Event/ConsoleSignalEvent.php | 23 +- .../console/EventListener/ErrorListener.php | 6 + .../console/Formatter/OutputFormatter.php | 9 + .../Formatter/OutputFormatterInterface.php | 4 + .../Formatter/OutputFormatterStyle.php | 15 + .../OutputFormatterStyleInterface.php | 10 + .../Formatter/OutputFormatterStyleStack.php | 4 + .../console/Helper/DescriptorHelper.php | 4 + vendor/symfony/console/Helper/Dumper.php | 14 +- vendor/symfony/console/Helper/Helper.php | 14 +- .../console/Helper/HelperInterface.php | 2 + vendor/symfony/console/Helper/HelperSet.php | 3 + .../console/Helper/InputAwareHelper.php | 3 + vendor/symfony/console/Helper/ProgressBar.php | 79 +- .../console/Helper/ProgressIndicator.php | 30 +- .../symfony/console/Helper/QuestionHelper.php | 33 +- .../console/Helper/SymfonyQuestionHelper.php | 6 + vendor/symfony/console/Helper/Table.php | 16 +- .../symfony/console/Helper/TableCellStyle.php | 4 +- vendor/symfony/console/Input/ArgvInput.php | 18 +- vendor/symfony/console/Input/ArrayInput.php | 9 +- vendor/symfony/console/Input/Input.php | 29 +- .../symfony/console/Input/InputArgument.php | 4 +- .../console/Input/InputAwareInterface.php | 2 + .../symfony/console/Input/InputDefinition.php | 14 + .../symfony/console/Input/InputInterface.php | 10 + vendor/symfony/console/Input/InputOption.php | 3 + .../Input/StreamableInputInterface.php | 2 + .../symfony/console/Output/AnsiColorMode.php | 22 +- .../symfony/console/Output/BufferedOutput.php | 3 + .../symfony/console/Output/ConsoleOutput.php | 12 + .../console/Output/ConsoleOutputInterface.php | 3 + .../console/Output/ConsoleSectionOutput.php | 9 +- vendor/symfony/console/Output/NullOutput.php | 15 + vendor/symfony/console/Output/Output.php | 17 + .../console/Output/OutputInterface.php | 11 + .../symfony/console/Output/StreamOutput.php | 3 + .../console/Output/TrimmedBufferOutput.php | 3 + vendor/symfony/console/Question/Question.php | 12 +- vendor/symfony/console/README.md | 16 + .../symfony/console/Resources/completion.bash | 10 + vendor/symfony/console/Style/OutputStyle.php | 21 + .../symfony/console/Style/StyleInterface.php | 28 + vendor/symfony/console/Style/SymfonyStyle.php | 64 +- vendor/symfony/console/Terminal.php | 12 +- vendor/symfony/console/Tester/TesterTrait.php | 2 +- vendor/symfony/console/composer.json | 10 +- .../deprecation-contracts/composer.json | 2 +- .../event-dispatcher-contracts/composer.json | 5 +- .../Debug/TraceableEventDispatcher.php | 23 +- .../Debug/WrappedListener.php | 2 +- .../RegisterListenersPass.php | 7 +- .../event-dispatcher/EventDispatcher.php | 16 +- .../EventDispatcherInterface.php | 9 + .../ImmutableEventDispatcher.php | 12 + vendor/symfony/event-dispatcher/composer.json | 11 +- vendor/symfony/finder/Finder.php | 6 +- vendor/symfony/finder/Gitignore.php | 4 +- .../finder/Iterator/SortableIterator.php | 38 +- .../Iterator/VcsIgnoredFilterIterator.php | 4 +- .../Exception/ProcessFailedException.php | 3 + .../Exception/ProcessTimedOutException.php | 11 +- vendor/symfony/process/ExecutableFinder.php | 4 + vendor/symfony/process/InputStream.php | 10 +- vendor/symfony/process/PhpProcess.php | 3 + .../symfony/process/Pipes/AbstractPipes.php | 6 +- .../symfony/process/Pipes/PipesInterface.php | 2 +- vendor/symfony/process/Pipes/WindowsPipes.php | 2 +- vendor/symfony/process/Process.php | 36 +- .../Test/ServiceLocatorTest.php | 81 +- .../symfony/service-contracts/composer.json | 5 +- .../symfony/string/AbstractUnicodeString.php | 12 +- vendor/symfony/string/LazyString.php | 4 +- .../symfony/string/Slugger/AsciiSlugger.php | 7 +- vendor/symfony/string/composer.json | 4 +- .../Test/TranslatorTest.php | 6 +- .../translation-contracts/composer.json | 5 +- vendor/symfony/yaml/CHANGELOG.md | 5 + vendor/symfony/yaml/Command/LintCommand.php | 34 +- vendor/symfony/yaml/Dumper.php | 4 + .../symfony/yaml/Exception/ParseException.php | 8 +- vendor/symfony/yaml/Inline.php | 16 +- vendor/symfony/yaml/Parser.php | 8 +- vendor/symfony/yaml/Tag/TaggedValue.php | 2 +- vendor/symfony/yaml/Unescaper.php | 4 +- vendor/symfony/yaml/Yaml.php | 1 + vendor/symfony/yaml/composer.json | 3 - 447 files changed, 7610 insertions(+), 2726 deletions(-) create mode 100644 .github/workflows/firebase-hosting-merge.yml create mode 100644 .github/workflows/firebase-hosting-pull-request.yml create mode 100644 .htaccess create mode 100644 Procfile create mode 100644 database.rules.json create mode 100644 public/404.html create mode 100644 public/books/ebcca851-3bcb-49b7-af50-66a3de266d75.jpg create mode 100644 public/build/assets/app-4b1c64a9.css create mode 100644 public/build/assets/app-94c96da9.js create mode 100644 public/build/assets/fa-brands-400-20c4a58b.ttf create mode 100644 public/build/assets/fa-brands-400-74833209.woff2 create mode 100644 public/build/assets/fa-regular-400-528d022d.ttf create mode 100644 public/build/assets/fa-regular-400-8e7e5ea1.woff2 create mode 100644 public/build/assets/fa-solid-900-67a65763.ttf create mode 100644 public/build/assets/fa-solid-900-7152a693.woff2 create mode 100644 public/build/assets/fa-v4compatibility-0515a423.ttf create mode 100644 public/build/assets/fa-v4compatibility-694a17c3.woff2 create mode 100644 public/build/manifest.json delete mode 100644 public/hot create mode 100644 public/index.html diff --git a/.github/workflows/firebase-hosting-merge.yml b/.github/workflows/firebase-hosting-merge.yml new file mode 100644 index 00000000..d16117b3 --- /dev/null +++ b/.github/workflows/firebase-hosting-merge.yml @@ -0,0 +1,19 @@ +# This file was auto-generated by the Firebase CLI +# https://github.com/firebase/firebase-tools + +name: Deploy to Firebase Hosting on merge +'on': + push: + branches: + - build +jobs: + build_and_deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: FirebaseExtended/action-hosting-deploy@v0 + with: + repoToken: '${{ secrets.GITHUB_TOKEN }}' + firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_CLOUDLIB_8060E }}' + channelId: live + projectId: cloudlib-8060e diff --git a/.github/workflows/firebase-hosting-pull-request.yml b/.github/workflows/firebase-hosting-pull-request.yml new file mode 100644 index 00000000..5d12230d --- /dev/null +++ b/.github/workflows/firebase-hosting-pull-request.yml @@ -0,0 +1,16 @@ +# This file was auto-generated by the Firebase CLI +# https://github.com/firebase/firebase-tools + +name: Deploy to Firebase Hosting on PR +'on': pull_request +jobs: + build_and_preview: + if: '${{ github.event.pull_request.head.repo.full_name == github.repository }}' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: FirebaseExtended/action-hosting-deploy@v0 + with: + repoToken: '${{ secrets.GITHUB_TOKEN }}' + firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_CLOUDLIB_8060E }}' + projectId: cloudlib-8060e diff --git a/.gitignore b/.gitignore index 3e92d600..40af830a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,19 @@ -# /.phpunit.cache -# /node_modules +/.phpunit.cache +/node_modules # /public/build -# /public/hot -# /public/storage -# /storage/*.key -# /vendor -# .env -# .env.backup -# .env.production -# .phpunit.result.cache -# Homestead.json -# Homestead.yaml -# auth.json -# npm-debug.log -# yarn-error.log -# /.fleet -# /.idea -# /.vscode +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.env.production +.phpunit.result.cache +Homestead.json +Homestead.yaml +auth.json +npm-debug.log +yarn-error.log +/.fleet +/.idea +/.vscode diff --git a/.htaccess b/.htaccess new file mode 100644 index 00000000..ecabe0f8 --- /dev/null +++ b/.htaccess @@ -0,0 +1,6 @@ + +RewriteEngine On +RewriteBase / +RewriteCond %{REQUEST_URI} !/public +RewriteRule ^(.*)$ public/$1 + \ No newline at end of file diff --git a/Procfile b/Procfile new file mode 100644 index 00000000..1e3f9918 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: cp .env.example .env && php artisan key:generate && heroku-php-apache2 \ No newline at end of file diff --git a/composer.json b/composer.json index 0fbf8713..7495adfd 100644 --- a/composer.json +++ b/composer.json @@ -8,6 +8,7 @@ "php": "^8.1", "guzzlehttp/guzzle": "^7.2", "intervention/image": "^2.7", + "kreait/firebase-php": "*", "laravel/framework": "^10.10", "laravel/sanctum": "^3.2", "laravel/tinker": "^2.8" diff --git a/composer.lock b/composer.lock index 383d90f2..3b5ec82f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f50719ba0d311731bd6eefffadfc77ec", + "content-hash": "6811fb3d97e1d290e4c565cd306a20cb", "packages": [ { "name": "brick/math", @@ -432,6 +432,125 @@ ], "time": "2023-01-14T14:17:03+00:00" }, + { + "name": "fig/http-message-util", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "suggest": { + "psr/http-message": "The package containing the PSR-7 interfaces" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" + }, + "time": "2020-11-24T22:02:12+00:00" + }, + { + "name": "firebase/php-jwt", + "version": "v6.5.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "e94e7353302b0c11ec3cfff7180cd0b1743975d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/e94e7353302b0c11ec3cfff7180cd0b1743975d2", + "reference": "e94e7353302b0c11ec3cfff7180cd0b1743975d2", + "shasum": "" + }, + "require": { + "php": "^7.4||^8.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^6.5||^7.4", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psr/cache": "^1.0||^2.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "ext-sodium": "Support EdDSA (Ed25519) signatures", + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "keywords": [ + "jwt", + "php" + ], + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v6.5.0" + }, + "time": "2023-05-12T15:47:07+00:00" + }, { "name": "fruitcake/php-cors", "version": "v1.2.0", @@ -503,6 +622,231 @@ ], "time": "2022-02-20T15:07:15+00:00" }, + { + "name": "google/auth", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/googleapis/google-auth-library-php.git", + "reference": "07f7f6305f1b7df32b2acf6e101c1225c839c7ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/07f7f6305f1b7df32b2acf6e101c1225c839c7ac", + "reference": "07f7f6305f1b7df32b2acf6e101c1225c839c7ac", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "^6.0", + "guzzlehttp/guzzle": "^6.2.1|^7.0", + "guzzlehttp/psr7": "^2.4.5", + "php": "^7.4||^8.0", + "psr/cache": "^1.0||^2.0||^3.0", + "psr/http-message": "^1.1||^2.0" + }, + "require-dev": { + "guzzlehttp/promises": "^1.3", + "kelvinmo/simplejwt": "0.7.0", + "phpseclib/phpseclib": "^3.0", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.0.0", + "sebastian/comparator": ">=1.2.3", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "phpseclib/phpseclib": "May be used in place of OpenSSL for signing strings or for token management. Please require version ^2." + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Auth\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Auth Library for PHP", + "homepage": "http://github.com/google/google-auth-library-php", + "keywords": [ + "Authentication", + "google", + "oauth2" + ], + "support": { + "docs": "https://googleapis.github.io/google-auth-library-php/main/", + "issues": "https://github.com/googleapis/google-auth-library-php/issues", + "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.28.0" + }, + "time": "2023-05-11T21:58:18+00:00" + }, + { + "name": "google/cloud-core", + "version": "v1.51.2", + "source": { + "type": "git", + "url": "https://github.com/googleapis/google-cloud-php-core.git", + "reference": "85dc48d62143f4bbfaa34c24da95003371de7b79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/googleapis/google-cloud-php-core/zipball/85dc48d62143f4bbfaa34c24da95003371de7b79", + "reference": "85dc48d62143f4bbfaa34c24da95003371de7b79", + "shasum": "" + }, + "require": { + "google/auth": "^1.18", + "guzzlehttp/guzzle": "^5.3|^6.5.7|^7.4.4", + "guzzlehttp/promises": "^1.3", + "guzzlehttp/psr7": "^1.7|^2.0", + "monolog/monolog": "^1.1|^2.0|^3.0", + "php": ">=7.4", + "psr/http-message": "^1.0", + "rize/uri-template": "~0.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "google/cloud-common-protos": "^0.4", + "google/gax": "^1.9", + "opis/closure": "^3", + "phpdocumentor/reflection": "^5.0", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.0", + "squizlabs/php_codesniffer": "2.*" + }, + "suggest": { + "opis/closure": "May be used to serialize closures to process jobs in the batch daemon. Please require version ^3.", + "symfony/lock": "Required for the Spanner cached based session pool. Please require the following commit: 3.3.x-dev#1ba6ac9" + }, + "bin": [ + "bin/google-cloud-batch" + ], + "type": "library", + "extra": { + "component": { + "id": "cloud-core", + "target": "googleapis/google-cloud-php-core.git", + "path": "Core", + "entry": "src/ServiceBuilder.php" + } + }, + "autoload": { + "psr-4": { + "Google\\Cloud\\Core\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Cloud PHP shared dependency, providing functionality useful to all components.", + "support": { + "source": "https://github.com/googleapis/google-cloud-php-core/tree/v1.51.2" + }, + "time": "2023-05-05T23:01:42+00:00" + }, + { + "name": "google/cloud-storage", + "version": "v1.31.2", + "source": { + "type": "git", + "url": "https://github.com/googleapis/google-cloud-php-storage.git", + "reference": "7fe96d56856cda550b21779bb95a066b264852da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/googleapis/google-cloud-php-storage/zipball/7fe96d56856cda550b21779bb95a066b264852da", + "reference": "7fe96d56856cda550b21779bb95a066b264852da", + "shasum": "" + }, + "require": { + "google/cloud-core": "^1.51.1", + "google/crc32": "^0.2.0", + "php": ">=7.4", + "ramsey/uuid": "^4.2.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "google/cloud-pubsub": "^1.0", + "phpdocumentor/reflection": "^5.0", + "phpseclib/phpseclib": "^2.0||^3.0", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.0", + "squizlabs/php_codesniffer": "2.*" + }, + "suggest": { + "google/cloud-pubsub": "May be used to register a topic to receive bucket notifications.", + "phpseclib/phpseclib": "May be used in place of OpenSSL for creating signed Cloud Storage URLs. Please require version ^2." + }, + "type": "library", + "extra": { + "component": { + "id": "cloud-storage", + "target": "googleapis/google-cloud-php-storage.git", + "path": "Storage", + "entry": "src/StorageClient.php" + } + }, + "autoload": { + "psr-4": { + "Google\\Cloud\\Storage\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Cloud Storage Client for PHP", + "support": { + "source": "https://github.com/googleapis/google-cloud-php-storage/tree/v1.31.2" + }, + "time": "2023-05-05T23:01:42+00:00" + }, + { + "name": "google/crc32", + "version": "v0.2.0", + "source": { + "type": "git", + "url": "https://github.com/google/php-crc32.git", + "reference": "948f7945d803dcc1a375152c72f63144c2dadf23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/php-crc32/zipball/948f7945d803dcc1a375152c72f63144c2dadf23", + "reference": "948f7945d803dcc1a375152c72f63144c2dadf23", + "shasum": "" + }, + "require": { + "php": ">=7.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "v3.15", + "phpunit/phpunit": "^9" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\CRC32\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Andrew Brampton", + "email": "bramp@google.com" + } + ], + "description": "Various CRC32 implementations", + "homepage": "https://github.com/google/php-crc32", + "support": { + "issues": "https://github.com/google/php-crc32/issues", + "source": "https://github.com/google/php-crc32/tree/v0.2.0" + }, + "time": "2023-04-16T22:44:57+00:00" + }, { "name": "graham-campbell/result-type", "version": "v1.1.1", @@ -567,21 +911,21 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.6.1", + "version": "7.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51" + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/8444a2bacf1960bc6a2b62ed86b8e72e11eebe51", - "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0", "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", @@ -593,7 +937,8 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", "phpunit/phpunit": "^8.5.29 || ^9.5.23", "psr/log": "^1.1 || ^2.0 || ^3.0" }, @@ -672,7 +1017,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.6.1" + "source": "https://github.com/guzzle/guzzle/tree/7.7.0" }, "funding": [ { @@ -688,20 +1033,20 @@ "type": "tidelift" } ], - "time": "2023-05-15T20:43:01+00:00" + "time": "2023-05-21T14:04:53+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.2", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "b94b2807d85443f9719887892882d0329d1e2598" + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", + "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", "shasum": "" }, "require": { @@ -711,11 +1056,6 @@ "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, "autoload": { "files": [ "src/functions_include.php" @@ -756,7 +1096,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.2" + "source": "https://github.com/guzzle/promises/tree/1.5.3" }, "funding": [ { @@ -772,7 +1112,7 @@ "type": "tidelift" } ], - "time": "2022-08-28T14:55:35+00:00" + "time": "2023-05-21T12:31:43+00:00" }, { "name": "guzzlehttp/psr7", @@ -1043,20 +1383,246 @@ "watermark" ], "support": { - "issues": "https://github.com/Intervention/image/issues", - "source": "https://github.com/Intervention/image/tree/2.7.2" + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/2.7.2" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + } + ], + "time": "2022-05-21T17:30:32+00:00" + }, + { + "name": "kreait/clock", + "version": "1.2", + "source": { + "type": "git", + "url": "https://github.com/kreait/clock-php.git", + "reference": "49e103382ca36cb2bc2e86ff3b8d11d44d0e0b31" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kreait/clock-php/zipball/49e103382ca36cb2bc2e86ff3b8d11d44d0e0b31", + "reference": "49e103382ca36cb2bc2e86ff3b8d11d44d0e0b31", + "shasum": "" + }, + "require": { + "php": "^7.0|^8.0", + "stella-maris/clock": "^0.1.4" + }, + "require-dev": { + "phpunit/phpunit": "^6.5.14" + }, + "type": "library", + "autoload": { + "files": [ + "src/Clock.php" + ], + "psr-4": { + "Kreait\\Clock\\": "src/Clock" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jérôme Gamez", + "email": "jerome@gamez.name" + } + ], + "description": "A PHP 7.0 compatible clock abstraction", + "support": { + "issues": "https://github.com/kreait/clock-php/issues", + "source": "https://github.com/kreait/clock-php/tree/1.2" + }, + "time": "2022-04-20T14:14:35+00:00" + }, + { + "name": "kreait/firebase-php", + "version": "5.26.4", + "source": { + "type": "git", + "url": "https://github.com/kreait/firebase-php.git", + "reference": "01c129ee628dc988b1da4b6cbaf1ee421d951aed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kreait/firebase-php/zipball/01c129ee628dc988b1da4b6cbaf1ee421d951aed", + "reference": "01c129ee628dc988b1da4b6cbaf1ee421d951aed", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "google/auth": "^1.18", + "google/cloud-core": "^1.42.2", + "google/cloud-storage": "^1.24.1", + "guzzlehttp/guzzle": "^6.5.5|^7.3", + "guzzlehttp/promises": "^1.4", + "guzzlehttp/psr7": "^1.7|^2.0", + "kreait/clock": "^1.1", + "kreait/firebase-tokens": "^1.16.1", + "mtdowling/jmespath.php": "^2.6.1", + "php": "^7.4|^8.0", + "psr/cache": "^1.0.1|^2.0|^3.0", + "psr/http-message": "^1.0.1", + "psr/log": "^1.1|^2.0|^3.0", + "psr/simple-cache": "^1.0", + "riverline/multipart-parser": "^2.0.8", + "symfony/polyfill-php80": "^1.23", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "giggsey/libphonenumber-for-php": "^8.12.27", + "google/cloud-firestore": "^1.19.3", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5.10", + "rector/rector": "^0.12.5", + "symfony/var-dumper": "^5.4|^6.0", + "symplify/easy-coding-standard": "^10.0" + }, + "suggest": { + "giggsey/libphonenumber-for-php": "^8.9 to validate phone numbers before attempting to send them to Firebase", + "google/cloud-firestore": "^1.0 to use the Firestore component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-6.x": "6.x-dev", + "dev-5.x": "5.x-dev", + "dev-4.x": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Kreait\\Firebase\\": "src/Firebase" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jérôme Gamez", + "homepage": "https://github.com/jeromegamez" + } + ], + "description": "Firebase Admin SDK", + "homepage": "https://github.com/kreait/firebase-php", + "keywords": [ + "api", + "database", + "firebase", + "google", + "sdk" + ], + "support": { + "chat": "https://discord.gg/Yacm7unBsr", + "docs": "https://firebase-php.readthedocs.io", + "issues": "https://github.com/kreait/firebase-php/issues", + "source": "https://github.com/kreait/firebase-php" + }, + "funding": [ + { + "url": "https://github.com/sponsors/jeromegamez", + "type": "github" + } + ], + "time": "2023-01-24T00:00:03+00:00" + }, + { + "name": "kreait/firebase-tokens", + "version": "1.17.0", + "source": { + "type": "git", + "url": "https://github.com/kreait/firebase-tokens-php.git", + "reference": "cad73174508a20961bae72a4c4a621208be83ee4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kreait/firebase-tokens-php/zipball/cad73174508a20961bae72a4c4a621208be83ee4", + "reference": "cad73174508a20961bae72a4c4a621208be83ee4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-openssl": "*", + "fig/http-message-util": "^1.1.5", + "guzzlehttp/guzzle": "^6.3.1|^7.0", + "kreait/clock": "^1.1.0", + "lcobucci/jwt": "^4.0.4|^4.1.5", + "php": "^7.4|^8.0", + "psr/cache": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0.1" + }, + "require-dev": { + "firebase/php-jwt": "^5.5.1", + "friendsofphp/php-cs-fixer": "^3.10", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^0.12.99", + "phpstan/phpstan-phpunit": "^0.12.22", + "phpunit/phpunit": "^9.5.23", + "rector/rector": "^0.11.60", + "symfony/cache": "^5.4.11", + "symfony/var-dumper": "^5.4.11" + }, + "suggest": { + "firebase/php-jwt": "^5.0 can be used to create and parse tokens", + "guzzlehttp/guzzle": "^6.2.1|^7.0 can be used as an HTTP handler", + "lcobucci/jwt": "^3.2 can be used to create and parse tokens", + "psr/cache-implementation": "to cache fetched remote public keys", + "psr/simple-cache-implementation": "to cache fetched remote public keys" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\Auth\\Token\\": "src/Firebase/Auth/Token", + "Kreait\\Firebase\\JWT\\": "src/JWT" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jérôme Gamez", + "homepage": "https://github.com/jeromegamez" + } + ], + "description": "A library to work with Firebase tokens", + "homepage": "https://github.com/kreait/firebase-token-php", + "keywords": [ + "Authentication", + "auth", + "firebase", + "google", + "token" + ], + "support": { + "issues": "https://github.com/kreait/firebase-tokens-php/issues", + "source": "https://github.com/kreait/firebase-tokens-php/tree/1.17.0" }, "funding": [ { - "url": "https://paypal.me/interventionio", - "type": "custom" - }, - { - "url": "https://github.com/Intervention", + "url": "https://github.com/sponsors/jeromegamez", "type": "github" } ], - "time": "2022-05-21T17:30:32+00:00" + "time": "2022-08-22T21:31:22+00:00" }, { "name": "laravel/framework", @@ -1452,6 +2018,146 @@ }, "time": "2023-02-15T16:40:09+00:00" }, + { + "name": "lcobucci/clock", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/clock.git", + "reference": "c7aadcd6fd97ed9e199114269c0be3f335e38876" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/c7aadcd6fd97ed9e199114269c0be3f335e38876", + "reference": "c7aadcd6fd97ed9e199114269c0be3f335e38876", + "shasum": "" + }, + "require": { + "php": "~8.1.0 || ~8.2.0", + "stella-maris/clock": "^0.1.7" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "infection/infection": "^0.26", + "lcobucci/coding-standard": "^9.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^9.5.27" + }, + "type": "library", + "autoload": { + "psr-4": { + "Lcobucci\\Clock\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com" + } + ], + "description": "Yet another clock abstraction", + "support": { + "issues": "https://github.com/lcobucci/clock/issues", + "source": "https://github.com/lcobucci/clock/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2022-12-19T14:38:11+00:00" + }, + { + "name": "lcobucci/jwt", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "55564265fddf810504110bd68ca311932324b0e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/55564265fddf810504110bd68ca311932324b0e9", + "reference": "55564265fddf810504110bd68ca311932324b0e9", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-openssl": "*", + "lcobucci/clock": "^2.0", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "infection/infection": "^0.20", + "lcobucci/coding-standard": "^6.0", + "mikey179/vfsstream": "^1.6", + "phpbench/phpbench": "^0.17", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/php-invoker": "^3.1", + "phpunit/phpunit": "^9.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "support": { + "issues": "https://github.com/lcobucci/jwt/issues", + "source": "https://github.com/lcobucci/jwt/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2021-09-28T19:18:28+00:00" + }, { "name": "league/commonmark", "version": "2.4.0", @@ -1945,6 +2651,67 @@ ], "time": "2023-02-06T13:46:10+00:00" }, + { + "name": "mtdowling/jmespath.php", + "version": "2.6.1", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "composer/xdebug-handler": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^7.5.15" + }, + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "files": [ + "src/JmesPath.php" + ], + "psr-4": { + "JmesPath\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "support": { + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" + }, + "time": "2021-06-14T00:11:39+00:00" + }, { "name": "nesbot/carbon", "version": "2.66.0", @@ -2198,16 +2965,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v4.15.5", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", "shasum": "" }, "require": { @@ -2248,9 +3015,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" }, - "time": "2023-03-05T19:49:14+00:00" + "time": "2023-05-19T20:20:00+00:00" }, { "name": "nunomaduro/termwind", @@ -2343,75 +3110,172 @@ "version": "1.9.1", "source": { "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2023-02-25T19:38:58+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "php": "^7.0 || ^8.0" }, "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": true - }, - "branch-alias": { - "dev-master": "1.9-dev" - } - }, "autoload": { "psr-4": { - "PhpOption\\": "src/PhpOption/" + "Psr\\Clock\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "MIT" ], "authors": [ { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh" - }, - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Option Type for PHP", + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", "keywords": [ - "language", - "option", - "php", - "type" + "clock", + "now", + "psr", + "psr-20", + "time" ], "support": { - "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2023-02-25T19:38:58+00:00" + "time": "2022-11-25T14:36:26+00:00" }, { "name": "psr/container", @@ -2625,16 +3489,16 @@ }, { "name": "psr/http-message", - "version": "2.0", + "version": "1.1", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "shasum": "" }, "require": { @@ -2643,7 +3507,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -2658,7 +3522,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -2672,9 +3536,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" + "source": "https://github.com/php-fig/http-message/tree/1.1" }, - "time": "2023-04-04T09:54:51+00:00" + "time": "2023-04-04T09:50:52+00:00" }, { "name": "psr/log", @@ -2728,25 +3592,25 @@ }, { "name": "psr/simple-cache", - "version": "3.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -2761,7 +3625,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "description": "Common interfaces for simple caching", @@ -2773,9 +3637,9 @@ "simple-cache" ], "support": { - "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + "source": "https://github.com/php-fig/simple-cache/tree/master" }, - "time": "2021-10-29T13:26:27+00:00" + "time": "2017-10-23T01:57:42+00:00" }, { "name": "psy/psysh", @@ -3078,25 +3942,190 @@ ], "time": "2023-04-15T23:01:58+00:00" }, + { + "name": "riverline/multipart-parser", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/Riverline/multipart-parser.git", + "reference": "2418bdfc2eab01e39bcffee808b1a365c166292a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Riverline/multipart-parser/zipball/2418bdfc2eab01e39bcffee808b1a365c166292a", + "reference": "2418bdfc2eab01e39bcffee808b1a365c166292a", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.6.0" + }, + "require-dev": { + "laminas/laminas-diactoros": "^1.8.7 || ^2.11.1", + "phpunit/phpunit": "^5.7 || ^9.0", + "psr/http-message": "^1.0", + "symfony/psr-http-message-bridge": "^1.1 || ^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Riverline\\MultiPartParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Cambien", + "email": "romain@cambien.net" + }, + { + "name": "Riverline", + "homepage": "http://www.riverline.fr" + } + ], + "description": "One class library to parse multipart content with encoding and charset support.", + "keywords": [ + "http", + "multipart", + "parser" + ], + "support": { + "issues": "https://github.com/Riverline/multipart-parser/issues", + "source": "https://github.com/Riverline/multipart-parser/tree/2.1.1" + }, + "time": "2023-04-28T18:53:59+00:00" + }, + { + "name": "rize/uri-template", + "version": "0.3.5", + "source": { + "type": "git", + "url": "https://github.com/rize/UriTemplate.git", + "reference": "5ed4ba8ea34af84485dea815d4b6b620794d1168" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rize/UriTemplate/zipball/5ed4ba8ea34af84485dea815d4b6b620794d1168", + "reference": "5ed4ba8ea34af84485dea815d4b6b620794d1168", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "Rize\\": "src/Rize" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marut K", + "homepage": "http://twitter.com/rezigned" + } + ], + "description": "PHP URI Template (RFC 6570) supports both expansion & extraction", + "keywords": [ + "RFC 6570", + "template", + "uri" + ], + "support": { + "issues": "https://github.com/rize/UriTemplate/issues", + "source": "https://github.com/rize/UriTemplate/tree/0.3.5" + }, + "funding": [ + { + "url": "https://www.paypal.me/rezigned", + "type": "custom" + }, + { + "url": "https://github.com/rezigned", + "type": "github" + }, + { + "url": "https://opencollective.com/rize-uri-template", + "type": "open_collective" + } + ], + "time": "2022-10-12T17:22:51+00:00" + }, + { + "name": "stella-maris/clock", + "version": "0.1.7", + "source": { + "type": "git", + "url": "https://github.com/stella-maris-solutions/clock.git", + "reference": "fa23ce16019289a18bb3446fdecd45befcdd94f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/stella-maris-solutions/clock/zipball/fa23ce16019289a18bb3446fdecd45befcdd94f8", + "reference": "fa23ce16019289a18bb3446fdecd45befcdd94f8", + "shasum": "" + }, + "require": { + "php": "^7.0|^8.0", + "psr/clock": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "StellaMaris\\Clock\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Heigl", + "role": "Maintainer" + } + ], + "description": "A pre-release of the proposed PSR-20 Clock-Interface", + "homepage": "https://gitlab.com/stella-maris/clock", + "keywords": [ + "clock", + "datetime", + "point in time", + "psr20" + ], + "support": { + "source": "https://github.com/stella-maris-solutions/clock/tree/0.1.7" + }, + "time": "2022-11-25T16:15:06+00:00" + }, { "name": "symfony/console", - "version": "v6.2.10", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "12288d9f4500f84a4d02254d4aa968b15488476f" + "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/12288d9f4500f84a4d02254d4aa968b15488476f", - "reference": "12288d9f4500f84a4d02254d4aa968b15488476f", + "url": "https://api.github.com/repos/symfony/console/zipball/8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", + "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/string": "^5.4|^6.0" }, "conflict": { @@ -3118,12 +4147,6 @@ "symfony/process": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, "type": "library", "autoload": { "psr-4": { @@ -3156,7 +4179,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.10" + "source": "https://github.com/symfony/console/tree/v6.3.0" }, "funding": [ { @@ -3172,7 +4195,7 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:37:43+00:00" + "time": "2023-05-29T12:49:39+00:00" }, { "name": "symfony/css-selector", @@ -3241,16 +4264,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { @@ -3259,7 +4282,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -3288,7 +4311,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -3304,7 +4327,7 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:25:55+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/error-handler", @@ -3379,24 +4402,25 @@ }, { "name": "symfony/event-dispatcher", - "version": "v6.2.8", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339" + "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/04046f35fd7d72f9646e721fc2ecb8f9c67d3339", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", + "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", @@ -3409,13 +4433,9 @@ "symfony/error-handler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/stopwatch": "^5.4|^6.0" }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, "type": "library", "autoload": { "psr-4": { @@ -3442,7 +4462,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.8" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.0" }, "funding": [ { @@ -3458,33 +4478,30 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2023-04-21T14:41:17+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -3521,7 +4538,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" }, "funding": [ { @@ -3537,20 +4554,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/finder", - "version": "v6.2.7", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" + "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", + "url": "https://api.github.com/repos/symfony/finder/zipball/d9b01ba073c44cef617c7907ce2419f8d00d75e2", + "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2", "shasum": "" }, "require": { @@ -3585,7 +4602,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.7" + "source": "https://github.com/symfony/finder/tree/v6.3.0" }, "funding": [ { @@ -3601,7 +4618,7 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:57:23+00:00" + "time": "2023-04-02T01:25:41+00:00" }, { "name": "symfony/http-foundation", @@ -4530,6 +5547,85 @@ ], "time": "2022-11-03T14:55:06+00:00" }, + { + "name": "symfony/polyfill-php81", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, { "name": "symfony/polyfill-uuid", "version": "v1.27.0", @@ -4614,16 +5710,16 @@ }, { "name": "symfony/process", - "version": "v6.2.10", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e" + "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", - "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", + "url": "https://api.github.com/repos/symfony/process/zipball/8741e3ed7fe2e91ec099e02446fb86667a0f1628", + "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628", "shasum": "" }, "require": { @@ -4655,7 +5751,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.2.10" + "source": "https://github.com/symfony/process/tree/v6.3.0" }, "funding": [ { @@ -4671,7 +5767,7 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:56:57+00:00" + "time": "2023-05-19T08:06:44+00:00" }, { "name": "symfony/routing", @@ -4763,16 +5859,16 @@ }, { "name": "symfony/service-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a" + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", "shasum": "" }, "require": { @@ -4782,13 +5878,10 @@ "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4828,7 +5921,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" }, "funding": [ { @@ -4844,20 +5937,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/string", - "version": "v6.2.8", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" + "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", + "url": "https://api.github.com/repos/symfony/string/zipball/f2e190ee75ff0f5eced645ec0be5c66fac81f51f", + "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f", "shasum": "" }, "require": { @@ -4868,13 +5961,13 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", + "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", @@ -4914,7 +6007,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.8" + "source": "https://github.com/symfony/string/tree/v6.3.0" }, "funding": [ { @@ -4930,7 +6023,7 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2023-03-21T21:06:29+00:00" }, { "name": "symfony/translation", @@ -5032,28 +6125,25 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", "shasum": "" }, "require": { "php": ">=8.1" }, - "suggest": { - "symfony/translation-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5093,7 +6183,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" }, "funding": [ { @@ -5109,7 +6199,7 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-30T17:17:10+00:00" }, { "name": "symfony/uid", @@ -6205,16 +7295,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.1", + "version": "10.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "884a0da7f9f46f28b2cb69134217fd810b793974" + "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/884a0da7f9f46f28b2cb69134217fd810b793974", - "reference": "884a0da7f9f46f28b2cb69134217fd810b793974", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/db1497ec8dd382e82c962f7abbe0320e4882ee4e", + "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e", "shasum": "" }, "require": { @@ -6271,7 +7361,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.1" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.2" }, "funding": [ { @@ -6279,7 +7369,7 @@ "type": "github" } ], - "time": "2023-04-17T12:15:40+00:00" + "time": "2023-05-22T09:04:27+00:00" }, { "name": "phpunit/php-file-iterator", @@ -6525,16 +7615,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.1.3", + "version": "10.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2379ebafc1737e71cdc84f402acb6b7f04198b9d" + "reference": "599b33294350e8f51163119d5670512f98b0490d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2379ebafc1737e71cdc84f402acb6b7f04198b9d", - "reference": "2379ebafc1737e71cdc84f402acb6b7f04198b9d", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/599b33294350e8f51163119d5670512f98b0490d", + "reference": "599b33294350e8f51163119d5670512f98b0490d", "shasum": "" }, "require": { @@ -6574,7 +7664,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "10.2-dev" } }, "autoload": { @@ -6606,7 +7696,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.1.3" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.2.1" }, "funding": [ { @@ -6622,7 +7712,7 @@ "type": "tidelift" } ], - "time": "2023-05-11T05:16:22+00:00" + "time": "2023-06-05T05:15:51+00:00" }, { "name": "sebastian/cli-parser", @@ -7842,16 +8932,16 @@ }, { "name": "symfony/yaml", - "version": "v6.2.10", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "61916f3861b1e9705b18cfde723921a71dd1559d" + "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/61916f3861b1e9705b18cfde723921a71dd1559d", - "reference": "61916f3861b1e9705b18cfde723921a71dd1559d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/a9a8337aa641ef2aa39c3e028f9107ec391e5927", + "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927", "shasum": "" }, "require": { @@ -7864,9 +8954,6 @@ "require-dev": { "symfony/console": "^5.4|^6.0" }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, "bin": [ "Resources/bin/yaml-lint" ], @@ -7896,7 +8983,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.2.10" + "source": "https://github.com/symfony/yaml/tree/v6.3.0" }, "funding": [ { @@ -7912,7 +8999,7 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:25:36+00:00" + "time": "2023-04-28T13:28:14+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/app.php b/config/app.php index 79956c8d..bfbb03ee 100644 --- a/config/app.php +++ b/config/app.php @@ -168,6 +168,7 @@ // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, + ])->toArray(), /* diff --git a/database.rules.json b/database.rules.json new file mode 100644 index 00000000..f54493db --- /dev/null +++ b/database.rules.json @@ -0,0 +1,7 @@ +{ + /* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */ + "rules": { + ".read": false, + ".write": false + } +} \ No newline at end of file diff --git a/node_modules/.vite/deps/_metadata.json b/node_modules/.vite/deps/_metadata.json index d5316caf..3fa7bbed 100644 --- a/node_modules/.vite/deps/_metadata.json +++ b/node_modules/.vite/deps/_metadata.json @@ -1,11 +1,11 @@ { - "hash": "6e7abff5", - "browserHash": "32d6e9e7", + "hash": "b3b8bd2e", + "browserHash": "fa6d0b29", "optimized": { "flowbite": { "src": "../../flowbite/lib/esm/index.js", "file": "flowbite.js", - "fileHash": "1f3f49bf", + "fileHash": "e0a91c0b", "needsInterop": false } }, diff --git a/public/404.html b/public/404.html new file mode 100644 index 00000000..829eda8f --- /dev/null +++ b/public/404.html @@ -0,0 +1,33 @@ + + + + + + Page Not Found + + + + +
+

404

+

Page Not Found

+

The specified file was not found on this website. Please check the URL for mistakes and try again.

+

Why am I seeing this?

+

This page was generated by the Firebase Command-Line Interface. To modify it, edit the 404.html file in your project's configured public directory.

+
+ + diff --git a/public/books/ebcca851-3bcb-49b7-af50-66a3de266d75.jpg b/public/books/ebcca851-3bcb-49b7-af50-66a3de266d75.jpg new file mode 100644 index 0000000000000000000000000000000000000000..73ea69e4a0d223adc969c50390d6b26119345fa8 GIT binary patch literal 44244 zcmbT7Wl$W!+u)br9^7>a4hb3@0>Oj3Cb+xqVj*a7cL}b`23g$Q-Q71paMv9F_paWn zx=(l4(=#5ViF92aFb?HxZhk%HO@UIs@0{|c( zzoPz!_J0+GH?LzvK}AEyzxW9s??9fO#Jl#KixBNH%YnV z4=%h{t~W?Xh)Aga;X-)h^|~YCAtBRoq2PZ~Lp5Z}q48TG}czt<@cmQ$0V^st*L=J;F|2z3Vfcq?; z;4XQr1%NwnKDQ?6Jue`Q_uI_PRQ-3dAQ^0N2MTM1G~RL?X<-Lu(qG8=5zGK8YsUB( zgwm+wtmLIBbUj^=tr?FQ2KQPBS8j%xA?T|ZPs|d;j18D$m!8OQD}NC_LnS`J_aVe` zUsCfQpjK0QciOf7w4qAIC3d*<(3lZ6J@ZVz&8#dzFE9CcTV)GVQ_Wv$9AZ}g&Fm?P zNM3cT=+rlKu`!8tx!zil-=ujJ-^v zo<9~h`qg~7Dx35a{c|W0)vJ|QO*^ME?|wik`>uz*BtKYG{5{0C&+k!Yaji*w`Gd_p z?Y)^gBBei#{z&t4-c~5eMQcUq4nE``0GN|La6hJA75azgXiu}bfli+5_)tKAzLt8} z+tSQ7$I2-yCb!5J^2>kb!dB;}SuW5$66d@uadt zfM`>da~_GBxV(9LO2nv47|ncb4hK-qWJS278RnECh^e?FCo0aW3&+b!jO}jX5Z-qXc_uOOMnleTFr7| zvmjaF6)?(QE9b#>+_wv~2hR?=_b8*a0Xnhw_6gmW+-v77@rYYaIaAJbl}c&!Xgj!( z%lH-)399txmFb=kt|dE1$8)FhG!C;oGB4@B<&N+l=2t}^Sr=DGNsA0p`Sm8_nPqn2 zKmsSfKutw$OafC{C<0(oxT3Bmfp=VlIao3!fr3m*sP4BAg_$*clUP; zmeHkRUW-zM8k)E{OQy+)x=5;8bPEQV)&#-QYpPGsFW7cr2A&%!q&rU$KjrBYEG$iN zMf_~Z3O{SKeit2+f*hq(V)s3!T}V7H=d`ui?Lnh9>V!kB?F$>cduj1+PP4+quDjG> zG0X0mt2gh%X{dQm5e-Jr6;tBa%hEnuB~u@tetqwKc@y1s&M}&6o^!&$UWpVhz2pqG zY-Q_fo?T~}b%ee{zm&Up3bKahTn9RA%idUSmHh-dL zDHTIWZ2F^7TxrYL z+~7*U-BL})^roJEp1d0<^4Gjh7Nz)oyJIm0a1HV0G!D>cFTi_1=DuX8_x2&WsO60Ma>&b?7(fEq1BR9*W3U z*pZlIzn{~=f6_6G&9E$T zL?g#-It|;aHYcaYbE>`wCH_o1zKnXAfBLw<0RS*fNgL_=i1PhiafgB>HV_K~ki;Rt z!TM~oNLq?erzQ;`R8x!qC@|+oet$h-MqnxGz;HSE!a7j>REim{pQaxwP#lyvpN4bE zH9H*%GcNS^Fm{#L$t^P7Fs?&7F>Mn%SKm$9bFH^KY|c_UxU9D5q?%}Ry-ifIaZFVN z-fO&B<-&|8E44#&u(^?vh}aS%#|*_@L4;-{9-BeRIxV z!cH<>cW@zQ_??>sv1GnAwXdOp#GaT8<5MkGum}7fV9uEL@MHDg>Ee`qr|>7&>b10Q zpIOI;k`gJkef7&j@JGAc21e(MTE!A4oPhSGh6D?<+HI%7*lXqC%Y65><9-LS8f8mV zjA{1zV|$nR!}VN&e^^%{-J|3wBfQu8zUkjtUXZD;9HUp?Ga$y~KHEl*%|Q;ATT)bb zMg}R(1oBl|@UvqkWM(-m5G?R0S;YBq!M*b$N>s2z$)BV$O1+_-<0^NW+nxH$3?uZ! zW(^pi(-)#X+jl3FTtB-oQ1&TtY)a8b%gPTS&lO1J$|BpVA0H)K0&r}H0`Lod52}Og zZ=oUyi0^v8MQv5*_E&Y44HX*VQUCSZi1X*m4@^uH1?o#?w7P_`7K`lq^Ocm@X+OlI zQ-xp5?+jh21&*Y2l2Koe+CBuWb}uOO%Kc&%efS5sKFs2Ll@xyGdSZOAygksJka0k} ztjGi#SNmPeL6Bqm7hOkfc?R=vD^}g(13kQQ%%%55Z!FTjF(2Ym z1+Xd^UwtkaapG_m7}L}@Z(N*go_%Vmrf-+o_P=ctg7?zcgs2WR&>Sz|@z(<78#q^Y zfJ8_c!I`0Cp-NWFj5a7!OTcaddW-kR^HpPeO12VBXpcVBc8SqU{GleCIDdU+%)`{! znm9X24`N?nuEQcNR9uD=8WmF~jvP$iIE&mjUEx&zuz7=FkqHqo8Vc~`{X+Udt|QWE z(>SW3j%@znv}|ek2?MuuU6xDKJcbgFmof+S+9u7<=wC-SB(W|xn8F~0j9F!MmOCIP zD(X2(d;ghEgoCeap}uWOZ9np;9diuHpvct(_-Um>9xCpG^h+WL{%PE9P29>UiojcW z^Psu6c0*r@QhT0@PJ$z?{v+j1j4V{)0gJ=HaU!?R*qm{DD7gC zn&@Ok>tE(yS~WapM+J&E)qKKZ9f0qNIFb3n2mzVai18|m)@ZJ*0Ope8n*t{ofY+l$ zt%0hv%yyFyr%p{{uy=smgqOIOxLoab24&@NXYt3IF*y&$VE?DUmp|oWsmMBlqFkEA zGSM%t;M=l{L(9z-rsmckn=gM7*0)PXh#r9Q;ZJ!(@Qn75&mb*zw*$iy=(gr`kdpU^ zlNBkWyiv>?*`ZyIcj=6_l><3PO>c9LUay|qB|va+yLDlJhLCrJ$fQ!?;78L%K2rlx z&y(KW^dIv`r3kX)kIj*3yCz91w-sqwjH>gwVk*r#oXe9a!ri2c0{$U32cv_4?OH+ZEd`w$o5gzrS~)* zd**-hm5uef@l;a;*$+(!92@hvI=L;DC`s~*+#2dxwt1sbt9DU0^||Tj?@l-|FhE88 zmS@fhYZ$~7cE?Hac`nU}##eM(AA-55*7bKkmPi?gyyuB1Uy$s}zO2BCUxB%2ctWaW zRLoY^tM?n^LS+PQDvvTR5$*%B-D}es!MxZcXUNPnPA-7+tXZ_P1@!M|H^C|eqJr@n@`%0v5o2HIY zu{WbBf*e&St~50)F}?gJoJls-L;_`IVjY6!`w`fUv#~|fXWZeid6UC~-awZIKf#(` zOAQS0`rW_ON#m@o?lpVxqeeugN6F_)lv$KV<(QkK&kZfsF7EaK_|{Kq>ngs9jbJlp zP?RO*D=xJTQZF2OhOwJCJ3SECv(?ZLzUR{U!aC7h`$54~_+ep^d?K(ggcQvn?*+j) zpz4m_dGxco$IG9qiXco%iVac@<(YAxh>QU(Z6N4$Q7e9HY1+947(C#j+uWZj+Wy7% z8CRLjlUT?-hb487u^@p=s2|1eC=}M(3`+{r27s%pN|evvv=g8iB>u2tjJp;V$6W6z zG-S-Cqc#3*%9XR;R$+2%F>`I=MoKN0#GT;kjANJKgWzH7gcMaP`70k9(BJ$_eRa4@ zslA1$$+LH*?`RTs0)48_9aEicV6VK}+D zJunK1*V`sR9*Wy_cwLT)w0OPwY`GUjUkqqF(6mhcnw!S-<%Q`OI~qH()=69|`Hw}tAyllx zJ7Zc1Yr4B}C5RDo)4u#xA*u+guT%5N0k?-{3G7~V_y%RD$Lcpxjc*Asdg9fbFz8v2 zaPWiqA0U|LSman;e3kF;!7C7Q4eD({rwDSRqf+u*4(O?{-csAk`3Ja|e3ⓈdZXR ztow@NDG^E+_8xbK4_7*DJH*R*^bkB;&f8> z&%LH@n+=?;x6lV6YTTz528Y zJxIh)a_9MQsNOo?tzydn>ojJW!K725{N{lkviX(SVI%5T;K*p$2H*)lQm=}S>A9?k zZ2lNgJvOmrXY);6ogF@1F#W{g1TVGTLCle>YT}KG3A!wiF9KOBqxi$38dwJqs_rD$ zhI(D%FWof^LyI=i-l_YhO*{b}bgEU%oxN$YEms#4RA?ZYZwAKvfp^}tAvwY(@v$uw zI$1|AMEq0LKBi(CLs1crm|E40bL|Cfpn#Yw;?~+^3DjGAu^Zt9DNGt>TXJ3{Hb6O! zA8V4n>hIKXfo~}Mfkvqjyq?oeMGOe31E``EDYK`N24tjJ<~Yfjm{k0MJR6*ocj0d< zag~!N4|GQIz6zD6hYaE2kv$fOsxXqBwoW#{OdDiS<C%j-JM@m z;UiLV$vIA(A386U>YMatZVQ>mw6wjl^DVxS%vbw*RZ4BG3CYClA^vD(2vlKg9aU2F z5Z)rb5jol}iKH-ZwkQbA*rOt3p{vcA+v8r<^>!RJG+Ik66N)?gg6Uu~NH#Fjrh5J{ zg0X#merNpKx!j|CA`{g1a)Q`+RRw&DzmXm^6pwD7EC5aF-PTWz4M3J&(KKA}l`8X& z(GZ>eY8m`p+;f18CK{9*1(T;xZo*?0R*i~^xt?t=aAEG!Go!iego_*MAZ(W@ZMug2 zjVPCrQQ3e)K+uiV2Yt4hY_6rGGF%U3aGq z93y=?Dp+tYHW+kDKQlG_u9KK}bT{+;>7=6=6HOSstE}B0-{$(elyJDY+9{%B^r0?`F$a5;Sc@tB%gBj%zjJ zYs1OJQmw$wj3q_PpzXHascJ>GCmEIe+v&^?z0*c1*m@IuEPHxjT!x2uD%}V+{nZ%C zBL5E{P4y2D+Dw%mWeQTt4P(#|2fE)>9j2cj2WifV+j9xq@HEaUvy?Oyx~gIn3F#gf?;vg^o#qjdgWpDZuRJfGIY@nS5AHqeiSyA}p{APx&O!`ZZIwx%MsnsZ zOCqoMW}snqSW^@n&gmJk?P2Fx z-=deYl*THvn$C#Clq{Vcm7ee0~WJaAm<^YgKHku zr6uKYbalGkO3||%1x^mWaY9Y!YZcbs&D#4dv!%a|cm8=DJx)=?)fPX*T)?5y)$NZT zo36s>ewJhGWB}S-`S``gNX`~8Ju`%CVvXp~pD1$7XsSA%loJ=`o40usRB3?uC@QUz zwDQG8z%09hr3U=Zqst9n*VIN_ba7;%vF13-v8 zrdc;npcNn}x7ZVk9X~*2`}b?xo|yl}d%hzX9odAr>=4Z9P*lRR)}4+b;9H#4r=IfL z@@Bkuglc-<)uagl1*Ju{4!{g-vudo+bliulhbf?zjpYSi;mfJWOj3eGf#=6wj^|98 zWs)E|+MKouI8CG&t3l)~pd-Od86yhL*cRLW!W^@qc)vyhvY=se^~|^@*jBpyv~}>y z9y9unXV%pO#J8V2?@Bl4*ydn@_!QIV z0Li{=L;}D|h@u~hdl{z=M_i%r;!E-cjB4pxQ(ewsHpjBrg6499Xzw2YzfcHV3oiIb z`42z@4hzk*TMGKH8#LWIvvb`Pu|556=)L2{1CfC3wAClr=8;4W`HbTr&4CNf)2lV2 zf}~gfeeSjm$9F@J?IOD$TWL*w!pv4cu=z^tDm?KIs~`Eo@hy#$(>Aie!N8HehbQ(p zkLKCItb63o--W$-AXDK8r=C;P$Y^8sa;loo{`W7}Uc}+m`l~B6_qO-9MQ6j=!UmRz zL98A(wpYx`gYYsUw?F>?79I{uqy|Ga*A6vFqYFOttgvBXl%EA-yWB-?qU&{ zT|C>(7r^A+Br}zO58K8)BdtLdTsf>6ANeeK`gAx(GdS}03rmTbN*pUx&E!%tnO1qn zW}{qLo3Pa=u1YhD6rNcb4;16(8GPz5wcxo&8jZtotWoFH6VxzH@+5hzr@4hhUk0Cf zL$2&KHuZISU5sVkLHja#XWOg-6xfMLXJuqN`opXOF}FR0{=UG$mAuuGtVZDI>8Lnk zXPAt%a_LxXehGe7*<_Elf5OOZ;4ookEPGBO@#q&+ikUq$7Y=o4pJ`2tHGXz6bT|%M zwq)+y0h~t+OZXOSlSUd03-=cV=)>JX9knM^v3kE--PYTf`oKVg!xwpNOg66F*i-V$ zj<-v&>>X#xf&_H2Da=EFw~Xp$O?mol zd>PH*vx<1nS50pNNflCb$M{cn7J7l6Y(qoGSI`JPIU>FlDw)O9x3W=JWP(pV3sbqZ zxqWh1kwXqAIcW0%wbGZs#M?CLT>Y!kx$0e=!lf&kFkcR`Kg!GcnNk>y9W24f&s`iK3R(FPA8+!L-W=NKc(U+R&cY*^p`hYhfX? zq4p zCT~E{Z=K}c+M`&wQS%7R8tqd_Og6G_3MXXgnpEFYuE?yYDz%WJNmEulrG{R}!EC@x zH%K+%X5YRd>UwBQrR*-k=PH9gKEhz151H^AZpn0+p85MU+=s3)?}nz6ELgw`Lv)fdgN(Ig`K5*Nxr_UZ@jg z+z7gH#vOMSyy^okWAkX(xy6u(vkbzI^nVH1^*xFX2VFGnGD+G&&c=g?CgOQBi89T6 zhsNCuEn#kOyOdt5JtSArF)&TKXGhDcl=ICD8@e5jYM0fv3WS&c$v{NHU^3iCg zz&D=Qv<0%QareO&$kP!t+&)$;c@2>`+Ph|8Z|Fg5a4Yo%)bxaHxoG&dCvgSl*yZUN zqq56ZkHUc$z6N6M^ocNh)ZDPWj2Q=A6O#HT*9XU)6nJ`UsGa%8$0`45mwzKRZr+D-OY$v3L!!F6ty?L!^X9!5au)!Kq(8BfkJ>?kx;m zrTbPp+cU=psdyFyD-}niV`v1-s<@GDmjenV<^MMAH$5w=v-U4=#88luR)OeaDei&_ zQ(N@%!duF#5eS$BZ=keyf%eslovMiLdqKSgaE+K?4`?2g{?ScghlUQABfJoEHzL7p zdpUC9Ta)tG-(>#%LYT~vy)GoedN<nOJBWP@z#MC6OJ!OxqrzbvFmqcGqK2 zt6PvDpe_Sq|Qbs_C3vTllkAjc0}&l)l=p*9nJ1oI)cKgfq{n5=#Pq}a)THI z4R9KTWA`<$@z%zW$n0IFHPYSf8WFd=G!t&du2i+#*t|S4h3>mo5A$*L-|QEo#WkQg zj_6VC^htj*>zJJ@BAw0~re%4`nB*NXlKG{gM`0eSX__t41LMp>>2_XVqy9p6?|u?t zY|THwYbQS~edNSpmc9O;2S~gO9WQ0XZhbA=KB`UAD6}d@dRVBo)RH@p2~tV>#=d%3 z)E=pV)e=_Ot`HyRuC)VqNX|b7zqhiCTa{)0sW+tquop$0U4R8cPI4GoV_Q9!ss4E9 zGpbI%O;=xqPdB^&#KPpi=Hcp*eUbp@4(jCI`8xXOp<-e12H*Yzh%9*7=Iz@6wnF@f z$XI|~WfUZ(qS$2Abx}R2@!F=c(ug@(Gg0>9!7rMCwU)-~;sG>0Qn%?WT_&a|Ej`ZI zj1|xWxgYYZMK`N5Y2tKi&vw|)f|*LoZzIVOQkQJh$ty=*Zk zd4jKF*p&x7L7{R*d$Ns0V@mSb3vx|V4+e)DwhXw5PErvb<;;1^$=n;31o#*Mm7%49Z$1l=bC`4WEH0KD5|!0D422a5jfuRx@8n9q{^V; zG%|oAY8tu&+9e(k^^O`p+++G^<|qy=_T6cfktr=@$g|6FSIXZKuC#sH5AKyb7CFPQ zjW8g+=OOrOtDUTHyo}oB-f!JkLmW0rb=X?p;>ujv zj*QA1UO9F#3o|64Y7@iA9zruBg1U;^7Va6x&kCbN*&%f!+V1M z6prEwg-@ugg0wd`71YS|7vtXMo2_XS{>jr%dNagw3^B+!E0bF!IiZasY(YgE1{_W6 zB`Fu)!FgHLoSkQAq7|?yr{mU7-{M+^9VgP3ZrX@%r`2>@OLs;kTsg(MCli*4SKhQPgDSPq1o?1HF6i<> zENs$|ctvv_LHyllV|e^+r~!>~0mLIk2ZcF>`Xi@2P3%8_aqC2n4#dO4ggv;hn!$Q=gCuM-c><@EjbG2IWRem#07Upj^i8}XQ_MhV`>}DxtaA zYI?QWoVN2#9Qg+wbEjZOj>bZW?-?R3NTlaC;36>HaHX931pgwz~bjb)FbH%KaQ zYLGFXvLpRF5Op;82Rc*+U!GLjjhl-5@A{GCA2oDEus-uQ32&hRe9|;(yYx9vmKx>}ujdk>Xy<_;G@Brk zhr^RG&7Lq0vG1#z`!7_(f0=rGkMVk$$DXLYOB3yZUTyEtR6I9OsDoa zh;d9A!t4-LUV}h3&sd<-%_c}w!E;N9GbW!H0+j?0iIciN;^dcgP9%jM63GjD75{8) zeAQ#iT)d5y*HmmX@b;Ou^aM~@Bn>Y2cbH0kRaV@!{wZ`a(9o}PkrJ2?z^Ox+ugdo zJj?JnE?~dluuZ=}zB&HKnzdNxmy19I{P2UIB|fFGDKh zA#IC1;c+R>1zD80`>zi%{2u@(XP$WWSZyhRw#PRz#$e{WJOEonjV~I$A=uC{L(0MD!EQL8~@^Sz_GJ}EO%Nr-eru>%?tT;0D|{*L8H9kD4zK@)$$+y z`un?QFPV_e28>Gz9dS0qp!k83*HDM8;?~-PeJ!9?Ean?F>=5sx(-AKyKhLhGkgZg@ z;X^f{CaG>W^QDamHHPTrEL^8`ga!r6fElu93i&MZ`Q|Ky*Q8?q)8JcDlmIPwEv z%Mu7Ak*J3l6*-kUxz{_^z=qb%d0)D7I6>5I6rw*+B9q+jo!F<^o(`@yEDPZ1TwxOI z^Db^8S-IrBWk=+99uV1X@W|ZY+x@UFaIrE_TE)~WR6Ll%#}sxPt8j1VNw*=j(KBhJ zEY+(s)xD3_9ma~b(siU&=l6D_$;y%~PFaW65;9Tv+@Y$cix{#pZZqWV-nbWyj&#QV zs57dSnJD_er6%(+0xFZ{KZL@-yrMkw14WcAx+Q~|J#y#+zPWEDsLw+uJhdTFiJxpG z!Jx`T@9SB#Y?*wRCR^vBq_I1X2~;!uZnv8DYQOmioAuH7jp!)h z?$fZ#z?N|^%i>mrFm*L*pQ4|P_qY0pH>3Rff*{lj2=84OcBJXHdvJ^xNUlnwCl_0+ zd*p-l=U=;TDMVT4tGAd_v=R<^)1~l7f-Z5kTgtlXoE7q$Ru6LVOlLcZ6N|dK#9PvG zSocz+EZY30qR-2gM;RCpzY5&t8nmAcgj=RcH8jC$7R%$LsJGDpiG!kl=KO)SV4MQ` zl<8Gj+w=Q`{_iH4@#C`7bvK^mrRmoeB@w^F_7MSAaNhZIS9vb!c)joANXeI|VeJA+ z&%dTtdq4~pb07>9o-wd;?v4+(j0!(m28o3@sNY%Ox*%yuo_fckN{#`Y^)Kq}*%&qXWe|Nag0T;2VB6tV5A zb&heQoE%a(-HZ60|5(Ifj2OpkB{UBU)pxqmTBw$qwHF)$8+@J}{0BJ6xCi6@)bD%B zXF1*HqR#6Me5#O{*@pCIGk>iYR~0ZnR^Q*sQ;?m;Z!R68#VB5=AN8#JBTjzdAiQ0$ zA=v`=+!3jHm~nb?j3l#&JJ~7VFhBggFUq-<$B`6o09CMQi$U7!e6kxnZguj!j9Qf= z@bYzsXwO%{7}SW?XBJBN5-WSssgjl}xfR2bC3nhfi(E&|On)T<1&PMS%s@oxUd?)x z{2zqoM*L(0vJly;nCE#%h=LT?i%N$u;Si>?Gtsq%>134&Dz9q$ih5Xu*5+U9|2sLaf%|NbP z_s!~lW`)GWmZ%=dug-%LHqN3e5rS>(%zc{LykyLd(Vzy(1&Tt+`Hb2RmK%HVwIxMh z*>ID%&WfRxmIj!stO}ag{4aEhy@`O!KCt_ISiH8jmCYuUMulkAQ@_|MREGgJTlC$i z6^rsb-k@T0#YoXeNqIt*J#^EMmy32e$kSz^$oq<5j6V+#xrSTF&u-d17f(K~%Q7>I z;(NL0&PtU(Y(hKjU{+MEBvs}4uUm_xzZ$72q0dY5s<&4!e@%1AGBAx;(DZ(Qif!<( z@8?u}Qj3va6yF)l_!bWIDdR?etb1<{F*v+<5RUUEa_SqoSu7uCUT;#IcH@n|f=JBV)O>I^mr#Jsf+U3qUEi+rP%4|Yj z-H~lxkBhn`qXLwEc0u#k0^gf;S4HAak$EH&qWbL9pk;sgf!z(IAi&1+~@??UbB z10^q(IKdiYs^fXL$|+HgBiVtWq>KlOaMQrp08!q%nYHwWy`;n;!G2p|qR%PP>gX%e z?fx*ip~DGV>XSabJp(q^^{^wusuEYM97k`%oaCk|hB!STg(8MQVU=RL?1Z&txeRBs zddeZXKNUxY__d2CL6*`R>2B{c(pU#X=KBhBzKGqIIx^KI_wsW?CZl$fsZb$S-icZf zY@P=4#5UgDh%ryI@62S&AZ}%7J6tT!yFq(95kqZ8Q-~jpJ2=FK1+nv5vK2%W$W*T! z*|N_WTX5g#Y2)jDM-X+HZno(gB&g2b#Q+D2!MK@OA

X$c^cLC0lz9C-9LAz*)ARq9R7W**ggbp89#lj<=Ndy(`-r z8h)UWx1k~Sm4Zk%JO~@`Iwhl6S5I!9=jvPL71*ZCYZx9@kavn%aeZJydQGtKdQE^? z_)&a*okZTBXZD-))?_ik^Yt~heMF=H3Ix|+R3 z?kRRhzu7L&IVqNBrVd+NZ|2-)pLd@tdMvOpMqGcy>5X^d=VqIEVHZc4K1K;;74gZ1 zQY9zq-_><^kh--m&dj7tzbbAXH0$fF8%$>3fD&`;a?}*vYIw~3u{&V13f+6rD}rc% z?oG~s{x*Z2UAf4+g(}mmABq-#1h`wv-c729VgQu)g3QjgxQ6b!>@0B zg^ML87prnzxOxBts8G>1WO}w}71x+rN_;gTT8SS~F*sAy5Jxvv1c$i!8K&ppP zrA|cng{gRDcm?IT#m58k70b|0$gpzZ&0CC}J$Tka6*RoE%AC_4LW0VKCf;3co3M1K z7%W#HI5Ai-UG4qtCQO(ng45xoZ*&g{;P6f-Yxbs{HRj@itA)1VmP;KQgCec9B(Cr? z+#mTh<%l|AF|2ySS(Bi1fHzr839rtwIeR&zxi)!$>DK%ud2ppHQRzbC)Nvf!@T}qx z)5*Dkc#OP~DTQ|pi=pO6SO99oxXjOD9#xB<_?&-R7h=6jII2czPGtFI*cL@}C;N)W z&*iB9Fr93l4DjtXxQP9lIZ8M5p}yT=VOzF~umS1t@i(@_N+oth|1;lg`Xv>I8m& zhxisWV5aI_{%R;Ljc3`Ox1%{RKi*cunj(D5oW%|>cyjw2{oGU( zvz1S@Oh*`^J|WIdmsx(MkcN=x*e!X}W*1()hIGin`(3EqmP*p+XXgBawQyX(aGQH@ld`uY-;^)X% zBX?g;7*V1Ha!4LO@jDv7HrVlVCdtwC5Z6CtiV^l9G^9qS8E?H1_}(US15NCmYZ3bq z&4F?+$^UuheV=~AZ*<`A{=Z;1O((0BGQ9^>_$5&-R+nY+xJ!Mjo^WkTYSQj?lgLQN zMpo5S_Vt8qgPrTSfsDk@E?K~9tiDt4L--tJc9wZtc7q7^hVb|DO;zY;+F8f@+Vz#o~K=cL3WX57# z+S`L`&$2ieaE>ne0RnCZ#zp*Y@;P<^c`DoQLRULq^s`Lj;)D7O>hDZUwn~FHEP@;F z{dEUL7NB~vR<>i5wp&TB)}Ht71?A=n2pU0M0}5B)#^rg&itqfk0`L_HHf;D^lPJW& zJOf|#n{yFFaJ0$tr>+{;oHvi*;@O@z?MMyDWK%-a7vup?^f6;2wcbiN`S zPjn?k^_ewms`W^yh>3|`_;vJ8v`^q;-?O;oxN*V2v)QS!y5NK7!-H>U&%Mq`6dzWf z509hjcq5wn4en&t=l=n?3crDZPM~epN6XSJ27u3?b)jc$dqaJ`K!>{tQ5>+2Xocdt z*2F4Yp$k^ZmyJXVHpDUaN~O_+y1(eKf5uIq){U_5tG$ed5sf ze}ERlx0X45Nl#j?IG`84)0Z(&$Xr=Vk_;)G$?dD*e91fF*5~)cInKu41Jezqwkd8=y@)cYFb1aS#vqykXIvsG0|qy&@~lGN3&t1k+`yDi**mf@917v*AJqB(08xXFoNNnP&;}X z{qN4>rzm-r?iK9C`!>K!@=aT8cP160R>WPebg!*sJQolNZ|0m24u<}1!i{kBD7MB+ zR85g_x++$eN)gNQfN0DPJr0EaX=gpRIQ_}TLA)|hB$JJseN&V~nC4qzd%3Xx%r@Ch z{Nz1*-GNmPeNDU)Dpd>%@8j|9HE~&~<}2FjSd0+GRByiE$k)VkAZvG9rBS##ee*<9 zb9NeRUfU6TAG%feyxJQ@)%c<{LmZ=>-aBxPzhIO&_A@lJ6!c?T3+2m$`@yqa<)p8o zog3+=dP~fgYQwjy3z+Aan<22{VFfxG8;Y?qo;Va0vS-%!$lgrGXQQPJGAn;Kk)wbo zf@?Y6mHSi9vM`%v_l3*IK&C_-jOXM5!Rv~nA`sV5Cww`(@X+%p5Y%|sx)tY}DL!te zaCm@8OLiYtWaftrDNDo$5#I(}4}~2Vh6Qt`kfjE!^>_$WEg!gH-JOKp>ty#>&=(U> zw2gtT$>xyr%AgX7%E1UxG;m{+?QhFUbE8wcppf=cDr9hdnbYn8gyk?k$XH`XIFEr6 zF6g*E_rpS-lA|929JoobWXNvKv4hq(>K%)8%SccijY2(;FUEe2f5MK^(J0ywoGF9{ z#;kXToF^Ahsj(1ALJ{S#cNY&c;Mfz`h51YJ-=>+Rs}!x zB{n=JZ#O^hIvdiDw=Nh$GTdnre1+24(eh`QF8J*1$RZb|s z1O5Y05^c2;*N5A3xc)k}9=`A!xYL38ig`A`oLv&R#P9x8Q5r&l1vn6b!r4l#_xO%t zdYEwPdx)LQo{we%3hQxJ^6m~}t!w0Khe4y|2r*?szs|7M||~>j$(Q@qn4L zDuTcH0=>1;uq;RQqo9nFJ}v9Z(mpcqP2G95G72g9L7UetINQ{%UY(m{x!{~?@MBG} z{}JNCbH)I9T8@h+jwg20TJFL*G`s90qaQL_fy{#iex6w<(sprmicRZ8;_jleo8d`b zIh(OQi->T5&#LxIrt2F4jZUe_c?HH9{Tz?7FU$V}^gs*0e3)OFOac|FfYDIvH`<7o zC{}U+Uvg`v@gAxZUr1QvF$2qeYnt%sHu}7{`?AlIjt5g)#T&sLfV7WH(uP=puz{b( zvi=&k+T@KJ{c$hy`(n5JLu%6Kmc}qnNzT!p#<@=c-3=?m@hhFEBXg2=jzx9GCXz({ zD7Zm%Vnz(aup{3!$mrJcH;66-$+0&s!|HM?rSa5e%K9mn?zm^jYVB>8&6yj} z*L)evI5IsZ#iF>HNmPPBARk)US!H(GVNkxJh~wt1#UC}_269RaZifN4W9ALHeBk{m z!-@XYAxJ?&+#hOwJh8jdo|icv{d(E6ox$9R?RQRIL9h|ppw#ak8BwjkmkZz4tXy32 z*Y&Jxi?9JX>F-ChvC~clUbU&0jf}x#Y&QeexkSBrZdfXY80%X4b=$%b;*Aa`w!N*+l&2>edZAded zp61?2Ol>dBe>%0Nc~=(GMDiH&0;yi6uU>dV&Vh_l^X37uj*c8CVcOz*J=}?P&UoGT=X;s^^_a3>*x+5bQM^a1uJ}2Br$de~H9DOS?T@pCrJ2JtBGC<Qx1o@SMjCU2=+*m}hbY6$GayqP0sXKP(j+Mny zM`R(P%wErPbp^@@fkH?G9@(!f@u&fWdHL1YF!bWRYj8x6dYbbu8`rw<^!BcG zA<74hYxbra=8-bo0s2>E;Y-Uq-3sy2VA~ui!02!*h4D_HVz^*4{5}1vwD^0X7_`fX z2*;lwZd2G(Pv0?`_fI|eg?|mz$cEZMBgZ3&0La_Yxjj2fcewM49fe5G70`If%j|w8 z)YBa&anl{^4(Cv73nj)u-Hr|`(3|&9Dlxo|r{mCJKMJ*}pk{rHgP_K8mEd}Zg{RfE z5s2Sxa^#iALVxVJ) zw}1YAynjoKJU`FTQrhA&UjjFdfrKJ(TK<(b^a=$<6TlUHW9=bc5hb5{{VKn zomX46vD9ON;zf=|O~7p@j(t9r=Dse}cHI&-?2+UsaCsU30PELADc@tuqM5|_n^7yM z&e=F5b|2jpkKxB_&kauG<%HPhkM7g_U1@S+Ta}M7NgxW@9Q>!>+O7CQPM1vZ{Hb_` z6XzD{4;Wuc@sih5-JbYN`(+8>(5rI+C8r1dHBqDZ05Zu#8y`N zluQ-bryyZR9B15D7pK5%lKMGD(#?hMp1zf&QPB-IJD&?%rn99OufJd!$#HloLUMFSN zbgM@neJ#Kxxa5IQ_!7tL_i9@o!_fZ#wON`5pq5ut+F!7No?Wqk2`mOjY}Zp^b8ijS zsypq(qPZ?9Bnn~I$YjV zLw6a$AC-1MiBq}OM{qsr#S=!lUBZU> z$QT&^0BBb<+bu;S1I_zOeSK?JOtBfx2SeZ9u(Z%)3hpqx9M@^#@Rz^{PWIYPI&q(R z=jD^=UowfaV*tnqCY2a1(iS^ogmph5o4DQ-ii`WD|>EHRV+0DOw6adPt^4syPj zs}b7Ufy|5#`Sz(LjsqS8n$=3jB&kcWop!0^uLthcb`kxZcr~qa6cR?ET#^PV2DgXF z3%#;CR7u>Z!L7`TXx2!!sOLTCI(svA{Oa36Ahsn*FP?_0i>V_yWdKnZp-pO1)a;r# zJ9qExUURIuhC;;gfzrF}Z&qI>GIIxawT$g^HSl{!qxzBQ?f& zsf5&0o>l48p@+>gks6=nWB?N!Tu%B=C#mh z(SK-og61dXL|d`b`@iE*-@^;brrV4(_R+^`Ba<%(A?UNWo%xtSjqzBk?3pk%1TZ z)RO8(D5V)}k6~NI7TL3*YXeW#Wl}&>g$I7o)K`1ssDtTpY737r6;1~|eQU)fzandC z6p+mz$-womTh?_ywdhX^ZYo?H5C?kej7*%5BJo9!_I|5lD-0I}`CNCc{T2gp0?Cf6 zo|&p26d8ZDv?$OJ8X^vUqPm|8Y2kE;7=e=?sr9b7D-{N9_(pHCT`4?p-SJ-0rs}IL zx}1&xAAj1scS^A#1B?U6>T9ylwI(WKB>mtz4@&Ea)S2pmxepGp zWnOy^=Us#iux7gAVNsj#m4?;afI#eO%TEJZBbAL#-10?crP4LKD*{yYti5kqiq6y` z2OldA06o67(6&7JJF;zC#j)61>=LSg!~Rj|(a$%b^bOyS?k-|$e9E#o;%~GPSDgBLeznhP zJ}0?AM1otP&)$%q=z7-)2Z*M#xlgvrW^SX)Rq6Uy1LNP?4^Qx{%#uZZ*l9=Zp^3ik zJy=%l8AYDW7NrIIo!V+f*v{s`_VligP4Md6O1YeQc_7A9Ao2CDmHapRRB0NVm{>JH zb{6@dgm(k8*RuFW<87{`slx~AgiqKpm{pYMBCO&X?mi5xmsuAguPpV@jfdai@1 z*=lwXL}Y-K1-WqD&-mAdYdXK$kDP^pZO$?Wern%^yiIdsCQPlgp#TJ5?+VGIRL^TR zi)SE218L{w7!>SOnsn)^X_8&w?pN8C;P&+T(%@8`5qc3~k@yuh1x0i6!bqekJCHn> z2mERmxC6iIP){*Xd93T3vNOs2g$7K$b9ka6azF2?&bYk=Pa~)It2+BoD+%QG>?<+# z5>)bkAy1*rC8(Okz-;n5p8nOt>$0D-9l6d&LtO@?cw0Q4zJj?eV&`NeoZ}<4VIjo8 zyqH|Z%Ez`jIj=qO9M1*T*on`WN62wqciM~jhbM+TtB%xU6Kc<#kh12vWOPNHSAgB& znPk*5ZMLw*&k3CI*NoRC@k3BPCDg6tu)O~OMusCCjc+HIigzBQ9179#4~YKHql-&o z@ysL*xTqr>`qzQlc=r2E)LJ&3&Xm#rF5J?|(I_K$J29vD)yTyJevH7!M zIYW>D`^-2!PfqpYS@Rt<%GN#{vXb?!5I}BKcQ9DS{BhKE?kl9Z)eIgVySiNNiGUb< z9;!P2HH+cfS%;4=FB#Or_S-`L02Y2vZ)(&{Jl$v)kT%jDLDZ4mYZ{xLgkFbJrrovm zj*l-VF~-f#dWGv+_w$`M{W365m_mG~9ld`FrQ!WNTj*#A8H(L@;GQtGr6s7l&@Gx! z8!{8u9on%u>K?P<`!-uf7a+%V<{hY{5LW~L0Iyt)=JmhSOyD4nSMu@Slh^dGL%QkUcM;EZ6pGo{*={;h7X5EEyO<&& znE)hUjyV4S8ji%RsCifh3x*)@4MO_WtXERpM-(X}g9m8<{&@DSR88+i5ek1+byHHNb-#f|irFfy3_>qx}<`ikB# zA;?`i=w0}V>IEQ(@JARutJ1tjd@MX0E4d3OnSNXnF_B(z;OG*4UVEI3NTZx*xbIs( z7B#Q3>C)MutD%PSBNGO1Fs#E~)bm zO7gVS&8PNC5=Wa7la|L}UWehU@X?M(-5P=uk@9 zk`+);$(-l4V$U}B{{ZXPN#Wu|@t^jG@~z@^Dd>7{0^v7{uMmNLzOHcJH7a!cW0+oCqvT*7#?+~tt9Q8InV%2;p1>Uu9 zdhIBlDE2C=4Y=p89_Fj-9|i6FMQ$0s)#k{oP$b9!EIq}2PjT?yPY^t%U@S3=+b(MM zmEmh7k0J;k$qIkeuW#kjyDW2D_zT2evrmcarDLaQvP~A?6w7xGNXI?LdeiVn!9O1O zW5jls)9A5Bd)*m`D-K3BL!7G0t45lYV|gnH8?HL(!8s}o*Nz-k#2f6m-tL5R+xyj*b8ucv9+>s0A2rEtZ(=Hb zZpX2#Tg$Y``MdfWmgVrL=xY-8aIAU#XddJ`mEsF?&vDwaR7&HPNep%Zw(l3^-GqWim56=U#(g3QnkD<1TIIKq?JxP`VO_B;axQ# z(WRZ^Qz*CGOD8!1_pV6__BlU^X=iJDBf}%H`3KBBzLnx0Fj-dWDBw`>I%Ugs2R*CN zd|#>?>Dk%NPT!QidsiQ?S^1iDv-M5M=;i$-%2X z4c(;iL+SdCAw;)l{ogH|t~uw{sc9PD*q6%PgCGcgd{mILSZlIhN0YienO;3R{uSs| zjiPcr&#HbIMR7ZeH9&4}!>O4-Esxo+fESrN!mb2UcLfHs;`C>r3$8 z#*x}bWr&{I9{KvZ0qnx zZ{a&U6Q4i7{0^vU7VV|!w!58+EL;ZQLmA%7p%gwROqizEeCTv?`%kk%OH70QJRiO)R2Y=#&rM zvnpr5Cm+taj~N)SM~aP*AcR$0vcnt>CUp zy42@2yM9mEyaRwo70+s3CT+V(T=G8Yt<$n1o~Ff)pnS}H-3?~zS1mJzT!t&bBi^a# z`m~JsJ8^^Bug>#aN~8rN7^t<*q-R^lA^XQag;_9hz{Ov-*oP954;?E=TSY1Yg^$*{ zAen^IXE2eoN~PR%L1Wy zXP%YXj#im!??$m%*_zxOtzl`JJ-vw%Tf!oo6SeYq;|H&{Yo)rE?JH7v-WgOxeDk2b5b!8CPMDPfzp3V^1&HB^mWSD@?(Q^t=B6 zmPorv_vg3cT;GV2Yo~K=p|QI;QpsAKs^PT?<;<{^@?F`BylP9zS}! zlhU_!!?q>Qss2^Nc$Lh0GdTYE6^x9e(Zt5{Yn~uf-}|MNlMFj#`d51eygGK3cN?a2 z11Q1vHOTl%Ij!!_&@%Gw8Twai<6A^;4O>Vv=d^BEXN>KxStfHiBj#TeB&)5+ir=^h zr*FP0zNqSL3>}?DYjaX%TWn3k&# z1M#ktOSnt8R5;6X$@r*U6eS$JjMXd#V0c zjGSYUj1m27*?tIkqAPo^6WPeXe{Cdo=mH;`cJ=Gq@At2osI4QanmFGT%=(YPjVejW zX$|?wZaNu7eIsdM_CFM9P{D0xy zK9#7goucZ~9kE+sS%A(m0O|h#0<5Y@G?A>XnBNs$Nj9mc+ZHB2JjTNuV{(ebjU&@M zVSVKdph5=+JwhJ!GioiXYL4Rv&zCm%7~Qz>pH9`0t~%%%)x@{w%aDabx8@lt2%sv>TKdZBSZF!n;8JymfQDn$5Gevt`}0fYq*3_lBy1VL+xIlui1&T zT}F98Btq`F`V(GMu(L+Yhi?Sesf9SInL(3CfX#r#PgditbUIa=YZ^85;FU3;BWTZ1 zYmkcIUulo$0{MJpzY6U%dxK@7+(!v2B#n4qrFwII>B9%_5qLVlE~9hyo>n;bDUfHJ zinHUd8?5?7ktVpB>3KX@OJN*PeK;;beuNjY)H~@y~kZq`l*&ti95g zg52JCs?u2)g0}-`CqA|H4v`6cKG1=l0sU*`Jrm5+{86NBZK~1&z;~~%{23S9bUQce z`@Hk@uIkFxIq>qjXJwpYkkD=R01v%-y@aAWFeBm0 zjAQ9pBcZaUk8E^>3oEf80rT=E8M@Fe$!h4`y-{0mH%J{nFtZmAscLra( zTExOg#nk*+3@lZyS8*IEkn_!AU3^Bcu~X+gxjg;(JwFQaPZL{si&WHAEiYuZEC>!` zBo0rtCYkWV#5#)ueXK<=I3zj|_3cC4=%b=N3SW(yY!VzxXrtO}e@fG^`2C_I4Bpu^ znc)q`UOtt|S$r0Lfo(6!(dwHr%T zI3FyzIW?~r*)Io~Yp%4Q^a%WaI`O;DfSR3;?=3H_q1%@EQO{1Ds)yM8SK(u@YH~;y z<-}2*{Pz{r5V`amGdlc^#nhj?#;(IVsT(bXy*pRVYva!p^fKQce=Gk0tyUoT!LMm7 zJoVHi0F2@=I(6+@G8(z`lzN1SK6^EYdeh%iwqz=|OXePk8shlm6STaUC(9Y}<>d9Mu*{GjJV+aN9G~;)T(dioWI-kjLnKt1@;ycnuB;%;J+8lRw5!|2% z?nxm~cF%vpsCaHxo-q`}f>@uJ=e2I#U2){V3Ph)XI#wjmHlF+A;{*6=S#USCOK6u* zd=>uyR(n^S-UVB^FniZksA>|mgXFjRy5eS?p5^jSTFOUUShKli+f1`>E@A%lIk3-A z$lg)SWZjLqiFK#*A|F%ytIm9LGroe+MUwtvoGIqJ>E!dEKSN$?;)~FX(U4etrvj&# z&FWR~%1dpiT8RS<%n!}lcn8|FZpg*0NbR)9S|Jc|B!{5e&33*3vpP1pr^_nsR=9+M z!vlvEXGZvKb7H@2x|%0g&PXc2;EaD-cA8GLTpC2@| zyYN-Mw-NIM_o*Msyl{>>{{X;gz9bhG-U+_2Re!WivDHTmer4(T8oQ!JC&Ukj8h({C zZ}R7P{{VZ);hc8=0D821Xdq2S-)e&zzyVNtoSO4q=F-)iJ)PW^TAzaBY=h^*vgG3! zX!D=eyFZC~LhDy@JR^2wL-HJFe{1Y+F#AMmeX@mGh|(!yD=eo(){KfQ|cEjsEo zyVM|JxROnr{Yb1*G^Ecay?A20k><`00LQKcZs}6bs)6P0C`lag$Qi1?5iDdHq^krw zm(5HS7~^GaT1s>~a;+MM-MbCPUMpmdmdm~?p562%feU4A*(J#Dv<^R7@=M+JQMZ$g zhblA4>0Yg?!8O&iP2`Z0p(Kw&1$oWgp*qd%36&plD+nq&e?BWWl6 ze6tn+bjKa*tb$h3WU_)>1(*zDo(3tN641=o@yy_b8-{Q_D>^&Bw`%tRj~27C4s+c9 z0EK#O-5d)^8vZ7}GFitOpOF}zN40aF8L+jy)l&BBf7wE^5{Cyk^sOHf!!50yy~`;P zO(xYRq2jsk61COb%hx|8m*7}0H{{SqlAY}}BueQDk-bZ!eiyiE{g}6Sy#A~+_tkOBK zveBNKXNVVZ>0Qo`d$#J?v+|5*k80qgiLN-0Bzso&pQ#8QD9Ia+I-hFhM}6*kCFZNP z5zorNfyHwAmWtZ489>UC2j0g@zXZQ)w@&yO;;kp{t-^cOu`1U*{_jhU+TK^e`F;KC z3UfI>y4$zk(!C<@M>E)5U>u)eUUT9t2Ko|OD5WDU(~2JEk07xV@4t9#} zEWAx=30VdjUxD!2Sj%yxMBi^fqCYl&mzKfL9)#DeN#oIQcCd^dzj)PW)#4+~E~GCQ zJu5atl0I|1gT-DKmMkr*?I$@QzV0giljF}CPjJf-vhu>@Wd?eWdiJUHEjs34B};Rb zKY26#E2!}0o|ABjRvT>XJt7{zO3Fq~Nb!w6o*T58!i7K&q6*eqSYVdkGzxZ*y*()-8EVJ*2@aVFi#}l_9Q5x{+SyL_ z4A((-?*0SXwsH!jdq)PR)vlwnQyv#M2L`2y9JZ|1%V@|8ZrDX|mvL>layk=TcDeqR zr*9k|yIh>s4IG4$$DZ|+jZ?8)60&Y@yN=YCFtx-FB4DZxb5^AWcnnCtF*)O{V$Qb~ z_IE>TW1jWTC3afWlHOI4DPtdbQ0BbjRDfM;<|oeIEFLSW(=|~9*Fr)8*^W(ecbb6y z-!dpx{n!-a2E^rKQcGk{E#l4)bCXf{KU0A8kF9K}HfQZpJFkeaTbt=6)3+D-0P{UD&3R{!H3oZ|c49oW ziw%MAU4M(UsG_zv0#JTsUZ)kpY770XZs<977#QUB&1uQXiT0e^5@<0%(6i6GY{)#l zzt+81z?RT>e@KS(ZUmQ)InP$~{40j=-imIZw1fkjaJ#Sue;>-dQ$yD(XX&Bshi+o3^T4Z^uT3_k6zWS` zM;_Ptj^Dg`{$j8^2W2j);;n^Q687pOO})cDIQ;90u4LJ+$JHMM5_>-nTIw&fTFA1- zq;hlS9^Zkkdh1jE(D6N_PIChx4S|FFNBk?%huORx@ZV3+_b9u!xn^Z?hr<_casKeH z6z~<(YO|T2hgq3G&UoAZ0N1W5t20RIi7zZj@l~Xf50X33&|vo7I{uaGdS(1%0dP-4 z_eXr!mzkBd=2svTxx(lD>h!xP)=erF2QEp-{7rK*T0Kj~)7#DA`=APE3H(F*;=X>= zhuAOWkyvGhP2d6z7iP+PsU!lib=}#AGXoUHr@sLNkxbts^>Y zt$Q)lZ{!afI}9<;J%v8}HT~+TR#hv=BkND_t>Rzmlg!yMG)Ej@=O9xx-C-;w{n=pK zLFu0LqB`^LUn@f_mL z{cOfY^2)=nLyooV-?QGMAiQg6P71_}$o~Lty75Z(XD$|2PUqMbHv$A18@kqpm1O#a zzIybHv5aQ3Ev?K$$)5&ZzbWGt(dhc6w}v2+EA9E1hhHde;<#3atrm0|K2?loumZKE zi!yB8zUVSRs;1qaJ z=Od9#xV}&AyEr-A!1nsp`>COaC4+9~r8l_VyBw~e@XFHti>g4m$5bYBDnfG&5f3e|58&rY*^=8^JZJ$4B zJ_fm(bTbA&GX3a}<6fcR-v+I%x)7_Kq;QAUx~VJ#asmfK>sKvqL@F1Yf$3Q`V&u#? z)@upFuwsCEVz1ed_i($X1;OU7-2VWiDH8J+a5~htQt8T;sS?N}+m3o?ibkrs@S}UoJnqhbKOjfvD=1OJ>2uoANpjdX~*>Lwv?i ze7-n6D;jHgcM{A<_Z6oc;K#Zy1~bhj$*%GNUtViAMy5l_9jfozHxENurt%BBOSLMw zJaR>9>Q*Zf5aZ_Kp{@ly=r7tFkKV|3{&XnZ=z_dV`^zR5*Ch@Vp2D&c$`rfvBq+xi z=DPVJA#OqY=!Bojyz)P_Y8U%~U$gDT4+k~V2pn~!(aii-@gyD|@NTbagd^NSS$4P| z#5-5YdTzgUZ>wC~$0Uj*U~&(=dUx#|;s~$r?BTR55iQ*$4!!sGuO+vU1&m=c<^|_H zE4~m`JUX?SXMJ_zi>*sa0!d_LFZ@lBT?dCR#MTpBzut*}0G>|*yuQO#-KVXi6Xu33 z(~MVrqr&k`3_~AhlbHu|#dB6lCuSC>GSv1D4{WisvbwW>#en&2BgD+ zn>~2#UVmq)#@bvEeAu^-_k48Xx*rYSrQMPla%K6lK)~x>6=r+X)zQcJ!$*4sk||E{ zBJbr$0B)s(4mb5=b=#=a(d{{S0a+XrtgQ5+4xkGQ|%T$h3sbnRXk zMglvt9B@AA{{RY?QL~=k#Md`>B}|PNQdIjdZ^Ec}X(pC&I4hNMGx&e?>l%$VT|Ht+ z;)$Na#CEcwAtbwIZM`wPe~o$vgmuriTr@k0jbki6Y>&J@#<))wY?jqY&zl;#2exo3 z{{X{DnP5kMzG84l{{VitX3A*#55$_SwU>r3A`&l{%&Y+i`^)|n^PS96-s)PU@`55s zox#r-+)wncP4S)F)7>mlyEIJ_!TR6zSN= zwYv~rO3>h;Tm$)52D^POu`ibjhGtL(-Z~uju7V3eZ9B%qHW#ijOQYzKM|P4Ol4Bzq zeXB()nm7#bev>VRn}03BvJI-=F$b~DWcZ6xhVXrv8Czp#fOFIT0IywUp?;~QU&9*t zWX8+E_BH3Wb}sjF%Oet{bMp_SbkkQce(B8WmJeZk7%9L}*YT*Jfu#`Z zW^ln!;~3|!;abf(Ba)P?ee>WAUR#YZ1gbpk&A}w`U25ubSp)W%(R0e~=Zg88;WxzD zwQE@AR*`aCZ1eNe@ULdmwQHSi(&k|*!3Gt?gq0)f+Pvw;$E!|9v}o5*>bhJi953$w z0DyYd=7!N|NEo(pk@NfgE6y}q*YacgJf#-{gl;iig{wTafXN|qpW-z!M(vuH7jaxp zw}7wixX2uTo@(4vCG1%TJZFmMrGNOAT%sSG^a^?HPSP&qwucT|?t#h0XwkJNp?>AQ z&nW`5?c`~oVU7u`8Sa*O4T$={`G94D~7hE5V-0Te>$gOaQPV?m3vZ^Wn3I%9nZZ}h$3<^TBJmcc;;P$ zCaY>QqFOsC1%^2MYJ~S@F~L23YdSm0E^ZbkELDd&ITbA!v^q<+W7?#)W^>cED_bg_ zarsrNL`6Tt(y?g4#J3a$halps>Q@oNvyqSwYSs-Hh~sW^>sgo9DKt{ZWKpyef+<+2 z`==v)aV(e9I*h6A54C4b7E4BqpPZcHr||{)>G6V#xR%CLOS>y+P1LKlZGQF``*-8IgLLS>&5Jx z##Ngu>+4t+QM|Gw#2l#ytx&kXHxM1?BR$%yMdC$v#50~z~Yo;fiTBXhl z;tj~v@ArZa4b%PadgR*Q$%qbmVzjSscij!=Jf5bjT@cEobgsCb9bH)ln(Jdfp7;xb zzc)(seLuu7%`^ZM>5c*PuQ-$`wE*L+fEbqg#tK3>-fMV0~-BuT1)kJ!_+G z*HK9{OPxCkXPtpn$INk#{{V$H&Ny@w^HIo|fHEoUM?I@Y!dg6c3~wY=EfjaCY{{Z1! zoxBqGiuX{7S9jUuDe@e3C)ep*vAa4Vk&gG9hn(b++;Bh7rB9>WOQzc!`{oi_#>H7< zA2G-PW2bUE*Fi6b{{Z0}uuI89t4K^_IRtk-zLmgR!7q&@5^ci&0IU7U+BoOG*1I7a zkv5H8OIWqk1FfP+o@Rg64_=+kV`|eKD@={w?>Q@#=bReb*Jg&+&eqU3?_-F>0UVM5 z9c#@zcXKk>LYqet{{ZZ!y*d!k^6O7il{Yi_MQ32#{{RTC`@yZIYxa`c7-TF0M%#`C zNcKL}=azPFHUk0=u@%yIZq1iY)Z$QgNq{*XhP^mM!N_lmJUIRq)TgAMqak@WEtf zCeq_*nG8w`aqHAq$9j&Q@FAKdEI1sIUWxG6#cYzKGI?soKmfykcDbv;KY1R78J}xt zek5VG3pQxk00(-ES9PU$tXhE$@p&W}C(A*PZ%X*gc$)tJOTSx);)$Yp0o?iM57xbx z!X7M(#5PGJk|Mb+#A?8Bed~oQ9*TM%^KYw14xtH?ako6OfHG?Cp|08NW{D+G0X%{J zHO6>b#CGo@!em^tWA3-5Y|pFP+BMe446=eGET`oj)wE-Asi=}@y5xG^sMc2D)?kIn zkN`2q_}2ZNt+82{or-Wq1$n)niL9-4Hi9|S+Nxz`DBFqSj-S$vAH;Gt`DPKIS0G>> zn5|St?UCw_ufsfB6gW7?Dk=*bh7*yW;qy^Pc;2N=}vZcgqPv2!D z^QO@*vO3u(l=LuURxcd!2>1h*DVuV}4Jnim7?3T}cJf#~=%WIZ<4F-mTE@D)5A&K3UZYzh>wZA7@xt=nu<}e(Cj?{98G2a{HHs&lg@^hSVT=9@4 zz1*$Jp(Nw2ah@Xa(6iNZn7puqlC9RT^i59hRhoQ8hBuR{@xl6R61nYHbO~`Mnw%=PIr>#;?aj&9 z0X_Jxhr-%1lGb5{&i?>W>08?IGlW}rMxK>%e_?XhK57W2AgBNnjQ8TZeILhW+VG{@ zNb!X{Bx~37uRfmAXzwG7Y1)zj)OyzatNn)TxB#}?VY#mh5|Qp<+egs;0`Webs}VFY z&MeYGva5g?oxQpD6`S!If3!@J*yc2aGMZ#`@*p>I2h_U>s}Pvx$QyR<}_!5{=z${m74ML9r^+Rz~k^0K8FRRRR&K*-ZkJFAQv$DszxA{VRYPt;N2fE%d0O85dwD zBxjD<&tqEqJE1muev_!oy7jcPv+Px1e8xEYr@5~0;fmX}?!P{g4=l5 zj7GqA_U-FlTKjbUK^nk>fG;a=@~-ZEJM^xPUe;Rb@>@16VvL3gRAZ;FUiHDreI>T5 z8brk{ie-}kl6n6C>sO~vDCMamBU$ko)HSPMq^N>sSpb(g`G;Rlm4V}1^tsxq7l{Gk zv)Y$Z@}bq7!lfE%n6W(M?*9Pm);6y?eWjz27AnIy>C(L_DI|GSZ*sTWzRPeEZaB|e zRr?)6acOtuEP;s&re#Z;mu|pW5YyTIyK3Z@g#wt10KBMy1}N&{huJaWR&@B_emW7mE+cv zK81d*oLdDsL>W0hTI+&MHPqy)?sYdZ!DD52F4)9~GQ9!(E0ZyeR^ZOe6p|mGoAs`P zP%-K@FXgEllbzo6%Exflw=Zs_sZW=u73fg6Et%!ki*i;rE^i`^FDb$|Ir)gI{vM5D zx=CYjm~8yKcCJfQk^JI>{Ma1!t?fPw%S$$pOqswV132U9SyhIIT^q-9=zS2`U-)|2 zWsV6Z5dG)c&6>-e^HT8ruIn$g6$b!7SqD9ORbPj53!Nt1PnUlwdFjq;xoGU+vma@N zq)puvpYavu+gl!`H_f6bcpu_b;zcW5Jn_o1e5PBX8>eiF^ouVXe{1QtQa#Vvn%Wa5 z&2y7E!Q;25zgqFM(`~OOKVgf=8;Cw(J%2MsrF(az+nAD2xdj^v2qPZiw~TprGp`B7 zo$j6ESfV3XmSp|lF@I-0!1;gL{XIL^Zx4y=ZJs-EcW*MxH6qVkDrD(5E9m?$=Qd#e3UXjg`#vNw9AD zB99q7`+C;N6U`&*9S>YG>GJNA2Y=o&bl_J{rRwQ&BXzh^Ew;0fCUN!j=xgR(7vq+f zaih-!FkdCpN%Bb1$Fy|M@qK$$j|%*4`z$^qhG)8YCQXnPiaa61jGleRttN=)XVtb^ z)OXkNf2664W7NIVD zh}<$J#NgxCIqqvFj)grBdhs8P;I<{i@$3pRe$W8xT!r7n>nL0)ng-lY{JpJs{r>=s zCh-P?IEG0Q;J8(35kLSCduF(awL7DC63s6Ct%HRgy!NJ`*qqO9)jlo7ZGAX}&}Wa5 z@DAR>vh=SXUFs3+X=Yf-IVRwdUPFG5B&|A-6_0+sD$S3HjlH3QBI_w_!M3RsoEjQ; zI_v)c7F;R3cbY)No-jHF;*K+IdAX}kVagLQd5+wI-MXMRBDwsg-9CaDdw zDkx6+_`Xz(h#y##0SpKuxWu9HH&eLh52 zjg&Fn^BujbAlMYUG0BGGJQH2SUL0L*5=$_Vd0-*)SoQsCrBX3gXKor7j-)KM|CL|DrJWm3OG6Z zKN^0gqn!&%p2+R<=ESP#Nl-F6=jdtEjG57UZemL`QbDLYlrGA|ZX-FttVkgj7O1ZV zW62=0T*=cAWg! zz{ei7ZuwfqOFWEuhm7;-{xwrc)8$VV*;|!;u8iD|_FK2%T?daW#k3lHioC>*#{(S# z*M|gmN-w#CeSWY=SdbW;bUu~O>$-dCdAoJmsGt%^Ba@EbTIlR_ldajsFeDR}z+K%5 z6z>*U{{U%eQ$iC3w(=Jzh6cSFXC$Ee0i7yh)t)`Bf2ZEsyniqZN$u2%SnSaxVo3)c zwRYmcqPq})S+|wW-bXmB`>3b0zLYR>ybqg!+Pk4E9CM`mktF%OP}~i@s%?JlEbP40 zIola;m{kp9QHdP+K?C4pX~C>5W$rF?*~w`!<(v$YU9{cV!%~}FOV++97Z$EEpK$b3 zUVVQjnhSjeUDLeSqkNY8r>#oX4Rl*s;kY|DxW?a1R%eQIU+nAFlH6~LYLAgHx%?{ji-)uFR+fV1$yEB2#d%+bFRc9SjWk&scqDq)blQxG^4o4< z{{T$b{{TwxTMzj68`{nedex*JDpWuJ2<^h!{*vUki)0(4@%6q)8mHS-z}B(HRwJe5z2*^ zZ{8gTwRz;%47W=g0#NnI;z{c52Xho{h%P*8&)$IQU=`h9EA-&Br$K6`lKPqe#yg-_3nj+|$)u6FXq;^Z?r z$@{#MkWcyPPEs*(IbGNBNLeC6I&y#d^y@af)7LE;1Dx`6?dw|W1IorUh_M{-Ggilk zCuq&%`JPl~X$3xC#QrstWhj{PYEoUx0ua0Ni~xF^Q6`^r_Nf`801@gdt+w!*X5Qdq z_+-bFJ&knw4~O8?FCWVM&oQX3a`x38>kz7i+;~C9TGACPi&XiKGP<(4v|$L0U>tHq zbeeC0UP}{pQccR`c#(12{A;cL$b)K`A&r~;sK#q@!VoRW>jorv7MsxVqMdk8{*>W?F?^ZXvG?KJza-Ji-@)4Jg2^^1V^377< zNjYMB4uZWG#Ol*4FwatW`d5}}VcJrP32Y9P>CxEvyi(LJrZHPIiG#I!)t?SnKB5|S zQ^JS&NEHp8zuO{c8Rgp3Bx7W3Kn2lt5RCGr{;aeq3 z^E{bRxf_G;UH-r0Q*Wj%qy{!CAZ#)=d)FBalh{~UOSy-bqda1*-rEbS6>xVsZo?tR;1I7rM~Uue$b>2 zG5-MT>t1x?dN5|EfXr8V%f`%bA!EnYX}9|HI=oLJxH~>h6ps1t^{G4+r8b>-Zr(=P z(Xw(dI*$JUg?aXwG`7}v3hv~Y3Hgckr5SSQQ;peEU%&J2+%6B4?c3k~0Igac9VvAJ zeV~<1q=LS?s}A1Ed+W>M727UIz|T@^Su}ga)1pY$XxK3%s*rk`)y$ql-Jr0JFB@s| z6vC`b4s-q2sl0n-y2~Y%)uWK89fk#B_=n<7i**B-ZXKrD0)rC)_p28B$5s;B!x5D4 zblRiKJ#Z_}jBI@y$+3NnZwAUOVOZQ{L~H;b?^VrW+B<7kVg^P!AA05NJVhKpe8Z>r zPpv;x)_&UyDv)!J;m3OEj)Xju7Wy0&+{t60^RYrdhvutSnm^lO^V?zF&pFLi z)U=u9x)VmAy0K-;3}-cV7`0}yQRT(Z_aEb1CSg327P=mJaixi`mw}DF^HjCh7SSv~ z5UivSJJ(kRi>p1-pDHe&-XG&sb?*u4_j^=BA0UsuKgPQ0&c_W*j~4nI2g$X77|6v` zwy|haYcjVztF8Y4g>kHZ&jkMfzpG9k4mF?o;Gg&PYtoH$x}J3Se;E24&CEfzIKbFB z%~H6xXpD12Lc2F7*1IXb8|y6#0Rm?q^VMp5Z-v^+TgF=5I2r!{T(z>qEADd7Ag@k5 z)e+9FqaEG9+3u00mpR|iVx{oxQO9t6)GrqPRC-hz?u)4Cy0MMpL4*hI1J<;3(Qy@o z?&_cn5=D1Te9%1FR9z|Zv#rwnF4E8Tn`VwE+=dEC$QiEBOqJ~J{HYG|6r7Hg&Ujk$ zeT*GG;O*~SC8+Z?L;mG_?OXF7NT9hcXkI(q%N)5TBp77JCY|<%v^OV$f}I2b3rz8QtBRI^4u{aoRP(3U1*@nB`+HQKIkVVx?M)d z-2&uwBcZH&FAZ$Ij&)YtgyZHI=xe4jCQ&&pLrc4k@+qyRSdnDj%Z^9{9CW5$YPWIR zGpvjU1E8+%{{Tq2n;}phzr-swJR^BC^BC#<@m*1w$tawauB&J@C}fV-RUjUH@O|o8 zH4@Es2x7A5Xva>!<6X$`EXe~qApjrw=qj^#MU?WV{`(Z=BPSD&(Ibi(%#y@kC`TVr zTG89w{{UspZq5ojGu>kmGAGILB(+vGB>&Vld3420y~UbmqGKJHvLGFoc63ASvau)9|Itc2a_| z%_f%{jgJ=RUP!Bh+R@Ac2mf=~@=ht?i2gobK(#OKqKTiOfHT z?;(yC6UGFKxDI&zD>D6VY?v&Q2Fq>YyPZwbeWZCj4Zq5{j}mDqGsb>z^?>#EsA;pN zHZbnPLviG@25e^|rDp0nCCCC#H8zk=IsX6(>TkR~93Po;TO^2RRw_EKZUHutYf@m1#d3J%2f_OC9vjex~^6!b^VVinnM zMF8p%$Oa=<<$Y>z63HQ&CXKeBkdi&B=AUKdKxD^E9<^TX6LRDp#I#;@H z+xUn3X2Qx8E`|je-;Q(X`BuVR2yGQgv0!?N^V@ezN3{`?kiZ?^TI_$fQWyYc8*}~B zT$6#<23*m#nIwW#%K~45K=iHcR_f;V!o{JSC)t;Do3Zl@4xf>(IWH1;U1B+6c*v~{ zJ)}!{Rlot00~P1aCwv*z=^iXH+9kK|1dEm|K*wMHy>d69tw~nN2cAB(*d>5uWP>wDPmq7X=aRr$VAgZ_D<&c$6GezxL0PALf85L29v zJJq@3OX3JcQ6EC1{Q6aRBw-m>Mv)2T;17{~iT?mSMO=#MHW;FT%Q)NSD98uY)FgjE zyi_9W(Ezq7(aEV6M^3pvQ&t9@aTH=n7>LgS%8;b{8j9JC#AW=K2o5(9$LCjLMTvv^ zBV@VUjJN|M8K%cB)C=YwJ?LCNo94jw+fT@48+ZGzdjA0R>7w16<_N+*&yEk!)`@6k zI?*An&KSljjci~Q@d)0-Np{{V2;C*a_-+QNW^Aypqz1s#|l7!bKb{Y+35$ z!?JaGPTX$wu6N{P7z-L(NeGREYQX29rly96{ZZcMqJmllEsTj=18w%PlD) zb-5c#r&JwJAN_jLHzH9obdL(jGcNcW_J4=z2se)nU{kn&BZf&+~r~=qp3) z*374LL#KMTd2C|Q^OmjPYlxWbhEAiTe$~xK;d|A(LFG-1e|PI&PU?Dnn-BF0-!SR) zu1)mYMV(LB`*p#r+++L zo(^j47Oi-sDB68ZOC(RGLQBdYf-oto1=`%kGS3goD>)r-#Md*dYGH$njxsvYsQ97Q z{{RfKGHo1jT)pCvzC96|L-1rSly|++&sEv$YG!rX?WVvlu%V;+oyauPu!C+KUS{>@!SSJNN}36|kgaR&>Q117j9WOqQ))2$k)C(Ji(6M7bVZNbQia9!4@LG?ET;(!XbK z0{C0TzXTEF zR7gjkfx+7L{eRl8G4P*_mqh)Vd{yD?$#3GDtx+y5EdeVt$GY1rq;|qd-?6RVgx?aD z!@~OIw~8);&epLAaNs~_ziRV?!DnJ0{kx2{2k#B5Xa(1ySPimk%3t^ZcWNC z0Ki!D_?po{TIW<%d-7S|(VnB@zks?wj{Y8KGimWm`rWpYKF{V{Y>&=p(2ViZBDfnL zg|k?Ab4<{6Sise6-#051xj~Xh!SBNg$N0DLFy5!ayPpYOol@gPv|sI8TX|U)DMG`9 zlcsrB9r_yd9arPOhjrhE-XDhc?#9E!u});Yv`yY*V=s-z9E=q`d)4yCQw1zcB9cwr zmb^#ets~&nr$N$MXyauUIGGHGEO2@M0D#s8r|{FmpAt2l8f^(K9WGAoQ_qyA?;L`5 zXSd#__?~ZuUm1b8)%X@!g*7ZTS8L?_9XC!Ol8+*Ky-w4z~XQ_04OTyc=yLWf>rGUd0NUAI~|x>EatY zuMEcUTiX$jm@o6MO0-u<1g9NwUT5IBnt1IIml)an>)y28AujagL7eUzWMqv$Vgwjm{Uz90A8#qME~85f#)+X2*aRxb>}4B24dXZtbRV<(BF?is^Ky z5220-$`*R z5u9f{6X`+O62`Twt%a16NN|gc;Ag4DVE+JaUNjHp6#G1@mBRD1{{Z!>`GNKlQ_cSX zVYvpSvhehGFZQL8npjA200U_~cK($t()yUt>T+J9+Udj@;`y9NFgE`Hk|@-z4Cq>a z`1{}ur{%}_&30o?jyP6(sMg5I##KP))AXQ03ZJpVws@Q7Gm-NH>H1bo**y%qJ2bV@ z+D6DCFnaq}5w25t<70PE4Nq?h+@cAcjOBk5G5w`-j`WI4%i@TrHwV?E5P z8?UiTXx%rmo|*KoR`BKHYj!bOgPnn->5t;a^{*nmjESRAKh-u5>HZbh_*+taGTAOW zGO}_{_rLnpjZIA=bQY1wNV=7Yl@8Ebu0P2&Q&O6JMpO~+K@lO2GoSN{zk715-b`5q zhIt?7(w`DNq+dQUDDD1z>&;ape@48+4Jj3E;)Yvfis}(Q+@G7)qK?uVcu0yRj_WyD zfaOQ0^Ze@QF_Xq>Q)~#%KU&pPk=XJ0Wf8N$BZ3)h99c51>z$ovY;`}c=Tu}%Y1_?s zRjwHP@}8~!c&VCDCRmT%W3<%&0AYZ3Kb>f*Naa}UEQ<5NVt#9DRJNP6gQ%v@2bid^ zIDip}G5lxNt$mgO*#2}Fp#!0-=93StVHr(yh{CIRk%>C9cWRdQ;XpCQn1_R~9y3gp z6t)24HFnm{+^^28PJ0?_nVm4k;UZ@lBxLy<#+c=OXjD$WjG4h`qc47 zY}Uv&w*%InvUAkr$7WPLn~YB>@r2I$%VH<{i`uj7EgJMNWFd2dxN%*VieQ0nT0jro zQP#QpZAD|>7|+aoE4mToN8y>gBUYo5H#|9O4V}yj@+d5z9-ZsnJT`#1MVVY+oGHzC z1-wmhG{`H zW2xK_9GMiH6Q1?YY4Mi2iedK$UtX2fLjz2T%Zy_@(PPuDlp3*m7+}>v^KAUrJeOgf zmCN|6!O@F3UL{DU3N|=HkfOBd2<_jz)Mb?wfgF za%FiiPenbd#*eE{6YXy?epAUf?_Q;iV>n>zBIoeqb@UdRG~!>+sy$x+n`F#t!kGwPB!p*FJt2b>og}B5w`A zZzC|KB-_U3KJ*l$V-Dk7kWc0Pig#VbcY()Vy(vx6d=-t9p55!Q8as<$EN$FVZ(jJS z)_xJ3&d%WoBeR+f3fBG_x{}52+Uz1LZ79ll>Ham-=y2KE#-qqd8wrT0 z>L`~F7e6WV_O2_$_vRV)A;-!OPkPClC!xvshBCLlad65Rn{VS>#<_j=h(aJSkb39Z zw6&c~?mLO^&{sEib{$SL`BqHlsLpoqF@VHhEs%FtH!(6Sr$2Ke>sz<(QHvg!6@=Va z-oMnpA!v=I+Kd8rm3D$WVJ%f@N9usF8c9s_5+Xmhh8 zP?5Gc8EvB+cc$sHJ()-HUSBf<3OZLyZKGSTRhdaF2SzoeVP~g6(yJt&yBuJecQTQe zd37vyo^(;k8}7#gnxMAQv@T|1!1MD8-Ll!*^JvO$~tp;$4MgSS=GhDut zs!eoC76cYOy{iSHCR(!P=m|XXV=|Ax^cXk)~l#)W{%jdse@+y@Gtl7wbmMI(xAW@s@7UNMQkHx^SLKGYo|UPMz;(VQMQkpXG-Lp zp?e~wI+YdK9*3;U70V5(RdLDBt$L<|tfaPUBC_tu9A><)PBGftNp5Y#tZ<%S9sO&# z@b;TL2&?8ZFFb8Ei(N>iDMm-V_(xP>EGr;TjCnlzSEE{Mam0Z}!Y~IQ*O2L&{5G&E z{g4L$VYguP`d6U%TIxMYBxZ;MwNEEKYNGCX6PuRjr1){;ya9;-kaz>$o35tg=F)Rp+yQ%cg z*1JC<6mOXk&(gB>eLg$1A~@DI!wtcGYKl{eGp;ol?jr$NcV{>N)D5GV?HsE<{NMmb zwL4Gn^w7*%-KA2v#>4AfjkIybGS+xZ^OeBCntfg;Q_d+E=%wXKN5DF&6AC@WbwL#yU_#X%aQHv`gg)OJ|-%Vy&RH znrB?#u{`~2VjYs{?+#SlGi7G}AUNas{&kmmD7FPyhdhqBsFSfPU5;BQ?u+7ARr$w=L7Vtn?{$hi?3R| z%yt5P^>a5CvfF}LNFL_8=hUK8`_xhX`wGX`Z*8T7`9eJ8{niJyWXvb2!E3sLEwe7+ zyN)^as&_+Wkx%*RnXLU*-sa-#Xc7e4Iofesl2|p|Fh1`rM1T-S-mM|A=gn$Ib8C$c zP6Ig|YNh4M+FN`GMhu~6Yd*Di z8z60<;FLK2bz@NQWz-v{0%9LMSXIvoTkl7U&KB|(05RZ>D|=9qdvuNyBi#i%cMd`K zrOuH&j$0mnw$G=+1e=wC?rTY|qx(7B{iC#DNXHCdU0kAJM&6p=-D$=?SQVm>M zdYH-*i`3VS?Qq)&ZYr(3w-*|dDo3A}JRhY)WERkp^DMc?8LKkuG1wnHEpkuGl{o&D zr=UgH>~uLMhUPSN!V{8n?OpeUw9zEHNz=OhKain-7B=R)URN& zwrKBV42TPDbMs=jYNM_$=cVdi4N0RHUpWrJe}^CEit;^D!SroPIQ9?+fA(#7j#(P6wX$XScdo z(H1zq>0SML9(g_cSDf2g&Gw{_C+=%hoGo00p4h3`p$p>$5t$PsoQRmd$$F-QGfWJRV=wg%YHq995$_F(y*M#M{ zJEKQo)9)y$t@L>;Vs9~7agL-Km$^L(7WQcqm0_H5!K*j-KVXEE%Jl7;t$C)&E13~V zQgfV&#MO5+We*2~Thln|iFBp3?u0dtM^sb`kK>Izp3>vHa+YHeqT3<0-2b6$<$CqHLSe}OBO)s-iVVC3z`720?T z%>A7>KXE&X&Kn(4JugIZNctb=T?$LG<~D4V9dTJYC7}#BJr93+-~P`s%!`A_^%c;J z%9@45a;d;Q`qw3@+X+~ZJC6R<+TG}^s&E^>aa{fWpCU2BlgR2vrE3s4m(kti0Sbog zl4*~j+%Hy-^FQHT1I0WCc#LuCMLi_Am#k~}fBNc)>T|JJOAk`Nfva*zJcd~^RP_S2 zX10}vO84~@nR{wl76cK~q4%KbhQ#(_-Q&PU=ml2PG`OW=LiIh^`c&FQq6rid!0X1ZTt#Z7pl$MiFswN1 zUTxxw%jMlCksdyF&VTy#&r@>g>~lK&(%41|F#Fi~MtfHgsd$xI$<=p<$mFQUTI!~P z>s?}oA;-<~5Iwt^%DV7)($AeQnxTDJNayKU6wf`pmG7MM>(pYYPiSC|amV0mbHo3iJdO? z06y^_tz33E>TX@tETXoTcw7?QiK*k%jJAGKl0Izm1#^14$bm^6TDE*Gf8=d<+6T-! z8cgJ5+9iN%o#X?D&sx*HxfaYo$ic-+4u<#Trd4gA^;QC|>Grnv^1M>JDHtBV(z21! z1D2mrOWDo5o0)OD7{zmN*j{Sa%M4ORBW5Z?@%<~%_02NYJBF2HbI^1D0P3!DQt$?~ zrLXplt(!>{V|izlFf;9td)AP4BC^!R);u*HiwtivsdmpO#PTaPI7RKUl0SEzhl5^) z;h!1lj~iKQH!Ep0YO(E(Hz#*OG65BG^2bcnZka8vB$5mQ8yG(QMRi`=oK0$Z=7SH~ zZdFJ3i0A2D-JOJj+<;U7zO{4x7#iZ=8ee+PZxkQ#RxGfj}X96I`_!(@f`N z)vh$XN=WzcsyZk=aBH&C^$GP$xQws4Ia9zLv)ZWY)=93h^0LfGY%d)KJJ(dUNoA!> z%1LlR0R9!{Pjj(sXLzqpfh^#WQw$N%+ZwR3dsa(81go!oK9HO>|*E%JgwhF}2b22B)KOuiGk zCr|L!^5HdEQD>12>7MHMe{dK{LT z#!Wp-631cWoYx1f%^Z2H%@{4%zP*jwf#Kf52oKfOg2 z(?5iYUlG~(sa81KXbbmx3{_QQ_EX9GqKYfSe-ZR>_)L2;TUBs*8^>R*dL$95u0nu) zg%np?_)c}XVcCnQB$4Tw^$!84`!swHxRg;@!(*yPs_1GmI2{l3u8BYsp#vOIMRX%F zNqGl6{c42pM#q@c{Zvs!YY;K@duUfrnU*9BG00J#qOcGEybN(g6-4zY-%9Jz*mKzX zRz906&8ov3j?RP}s~m&D?L`zFP}u71ZQ>IQMuX-b!Ygt_QEa$SIrO564CZ;>sm(#IWW zqOvKTd#n?@^Xpj~LuVi#trSpX$LQAaKB$4BLN=bNJu8XvAQ5VRAldUb-Q&F!RmWqF zrsgI5jQ(EcC+6;JwD6^@GFq$G}N zMRQa-X_}rDi5_p66#R#%_Z50~V{GbJl|8e?6jz@u&c22gwu-hg5TG9|`2*Ux{Z2=V V!`94li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-name:fa-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-name:fa-beat-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-name:fa-spin;animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0)}}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"0"}.fa-1:before{content:"1"}.fa-2:before{content:"2"}.fa-3:before{content:"3"}.fa-4:before{content:"4"}.fa-5:before{content:"5"}.fa-6:before{content:"6"}.fa-7:before{content:"7"}.fa-8:before{content:"8"}.fa-9:before{content:"9"}.fa-fill-drip:before{content:""}.fa-arrows-to-circle:before{content:""}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:""}.fa-at:before{content:"@"}.fa-trash-alt:before,.fa-trash-can:before{content:""}.fa-text-height:before{content:""}.fa-user-times:before,.fa-user-xmark:before{content:""}.fa-stethoscope:before{content:""}.fa-comment-alt:before,.fa-message:before{content:""}.fa-info:before{content:""}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:""}.fa-explosion:before{content:""}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:""}.fa-wave-square:before{content:""}.fa-ring:before{content:""}.fa-building-un:before{content:""}.fa-dice-three:before{content:""}.fa-calendar-alt:before,.fa-calendar-days:before{content:""}.fa-anchor-circle-check:before{content:""}.fa-building-circle-arrow-right:before{content:""}.fa-volleyball-ball:before,.fa-volleyball:before{content:""}.fa-arrows-up-to-line:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-circle-minus:before,.fa-minus-circle:before{content:""}.fa-door-open:before{content:""}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:""}.fa-atom:before{content:""}.fa-soap:before{content:""}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:""}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:""}.fa-bridge-circle-check:before{content:""}.fa-pump-medical:before{content:""}.fa-fingerprint:before{content:""}.fa-hand-point-right:before{content:""}.fa-magnifying-glass-location:before,.fa-search-location:before{content:""}.fa-forward-step:before,.fa-step-forward:before{content:""}.fa-face-smile-beam:before,.fa-smile-beam:before{content:""}.fa-flag-checkered:before{content:""}.fa-football-ball:before,.fa-football:before{content:""}.fa-school-circle-exclamation:before{content:""}.fa-crop:before{content:""}.fa-angle-double-down:before,.fa-angles-down:before{content:""}.fa-users-rectangle:before{content:""}.fa-people-roof:before{content:""}.fa-people-line:before{content:""}.fa-beer-mug-empty:before,.fa-beer:before{content:""}.fa-diagram-predecessor:before{content:""}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:""}.fa-burn:before,.fa-fire-flame-simple:before{content:""}.fa-male:before,.fa-person:before{content:""}.fa-laptop:before{content:""}.fa-file-csv:before{content:""}.fa-menorah:before{content:""}.fa-truck-plane:before{content:""}.fa-record-vinyl:before{content:""}.fa-face-grin-stars:before,.fa-grin-stars:before{content:""}.fa-bong:before{content:""}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:""}.fa-arrow-down-up-across-line:before{content:""}.fa-spoon:before,.fa-utensil-spoon:before{content:""}.fa-jar-wheat:before{content:""}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:""}.fa-file-circle-exclamation:before{content:""}.fa-circle-h:before,.fa-hospital-symbol:before{content:""}.fa-pager:before{content:""}.fa-address-book:before,.fa-contact-book:before{content:""}.fa-strikethrough:before{content:""}.fa-k:before{content:"K"}.fa-landmark-flag:before{content:""}.fa-pencil-alt:before,.fa-pencil:before{content:""}.fa-backward:before{content:""}.fa-caret-right:before{content:""}.fa-comments:before{content:""}.fa-file-clipboard:before,.fa-paste:before{content:""}.fa-code-pull-request:before{content:""}.fa-clipboard-list:before{content:""}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:""}.fa-user-check:before{content:""}.fa-vial-virus:before{content:""}.fa-sheet-plastic:before{content:""}.fa-blog:before{content:""}.fa-user-ninja:before{content:""}.fa-person-arrow-up-from-line:before{content:""}.fa-scroll-torah:before,.fa-torah:before{content:""}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:""}.fa-toggle-off:before{content:""}.fa-archive:before,.fa-box-archive:before{content:""}.fa-person-drowning:before{content:""}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:""}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:""}.fa-spray-can:before{content:""}.fa-truck-monster:before{content:""}.fa-w:before{content:"W"}.fa-earth-africa:before,.fa-globe-africa:before{content:""}.fa-rainbow:before{content:""}.fa-circle-notch:before{content:""}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:""}.fa-paw:before{content:""}.fa-cloud:before{content:""}.fa-trowel-bricks:before{content:""}.fa-face-flushed:before,.fa-flushed:before{content:""}.fa-hospital-user:before{content:""}.fa-tent-arrow-left-right:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-binoculars:before{content:""}.fa-microphone-slash:before{content:""}.fa-box-tissue:before{content:""}.fa-motorcycle:before{content:""}.fa-bell-concierge:before,.fa-concierge-bell:before{content:""}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:""}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:""}.fa-mars-and-venus-burst:before{content:""}.fa-caret-square-right:before,.fa-square-caret-right:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-sun-plant-wilt:before{content:""}.fa-toilets-portable:before{content:""}.fa-hockey-puck:before{content:""}.fa-table:before{content:""}.fa-magnifying-glass-arrow-right:before{content:""}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:""}.fa-users-slash:before{content:""}.fa-clover:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-star-and-crescent:before{content:""}.fa-house-fire:before{content:""}.fa-minus-square:before,.fa-square-minus:before{content:""}.fa-helicopter:before{content:""}.fa-compass:before{content:""}.fa-caret-square-down:before,.fa-square-caret-down:before{content:""}.fa-file-circle-question:before{content:""}.fa-laptop-code:before{content:""}.fa-swatchbook:before{content:""}.fa-prescription-bottle:before{content:""}.fa-bars:before,.fa-navicon:before{content:""}.fa-people-group:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-heart-broken:before,.fa-heart-crack:before{content:""}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:""}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:""}.fa-film:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-people-robbery:before{content:""}.fa-lightbulb:before{content:""}.fa-caret-left:before{content:""}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:""}.fa-school-circle-xmark:before{content:""}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:""}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:""}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-headphones-alt:before,.fa-headphones-simple:before{content:""}.fa-sitemap:before{content:""}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:""}.fa-memory:before{content:""}.fa-road-spikes:before{content:""}.fa-fire-burner:before{content:""}.fa-flag:before{content:""}.fa-hanukiah:before{content:""}.fa-feather:before{content:""}.fa-volume-down:before,.fa-volume-low:before{content:""}.fa-comment-slash:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-compress:before{content:""}.fa-wheat-alt:before,.fa-wheat-awn:before{content:""}.fa-ankh:before{content:""}.fa-hands-holding-child:before{content:""}.fa-asterisk:before{content:"*"}.fa-check-square:before,.fa-square-check:before{content:""}.fa-peseta-sign:before{content:""}.fa-header:before,.fa-heading:before{content:""}.fa-ghost:before{content:""}.fa-list-squares:before,.fa-list:before{content:""}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:""}.fa-cart-plus:before{content:""}.fa-gamepad:before{content:""}.fa-circle-dot:before,.fa-dot-circle:before{content:""}.fa-dizzy:before,.fa-face-dizzy:before{content:""}.fa-egg:before{content:""}.fa-house-medical-circle-xmark:before{content:""}.fa-campground:before{content:""}.fa-folder-plus:before{content:""}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:""}.fa-paint-brush:before,.fa-paintbrush:before{content:""}.fa-lock:before{content:""}.fa-gas-pump:before{content:""}.fa-hot-tub-person:before,.fa-hot-tub:before{content:""}.fa-map-location:before,.fa-map-marked:before{content:""}.fa-house-flood-water:before{content:""}.fa-tree:before{content:""}.fa-bridge-lock:before{content:""}.fa-sack-dollar:before{content:""}.fa-edit:before,.fa-pen-to-square:before{content:""}.fa-car-side:before{content:""}.fa-share-alt:before,.fa-share-nodes:before{content:""}.fa-heart-circle-minus:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-microscope:before{content:""}.fa-sink:before{content:""}.fa-bag-shopping:before,.fa-shopping-bag:before{content:""}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:""}.fa-mitten:before{content:""}.fa-person-rays:before{content:""}.fa-users:before{content:""}.fa-eye-slash:before{content:""}.fa-flask-vial:before{content:""}.fa-hand-paper:before,.fa-hand:before{content:""}.fa-om:before{content:""}.fa-worm:before{content:""}.fa-house-circle-xmark:before{content:""}.fa-plug:before{content:""}.fa-chevron-up:before{content:""}.fa-hand-spock:before{content:""}.fa-stopwatch:before{content:""}.fa-face-kiss:before,.fa-kiss:before{content:""}.fa-bridge-circle-xmark:before{content:""}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:""}.fa-chess-bishop:before{content:""}.fa-face-grin-wink:before,.fa-grin-wink:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:""}.fa-road-circle-check:before{content:""}.fa-dice-five:before{content:""}.fa-rss-square:before,.fa-square-rss:before{content:""}.fa-land-mine-on:before{content:""}.fa-i-cursor:before{content:""}.fa-stamp:before{content:""}.fa-stairs:before{content:""}.fa-i:before{content:"I"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:""}.fa-pills:before{content:""}.fa-face-grin-wide:before,.fa-grin-alt:before{content:""}.fa-tooth:before{content:""}.fa-v:before{content:"V"}.fa-bangladeshi-taka-sign:before{content:""}.fa-bicycle:before{content:""}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:""}.fa-head-side-cough-slash:before{content:""}.fa-ambulance:before,.fa-truck-medical:before{content:""}.fa-wheat-awn-circle-exclamation:before{content:""}.fa-snowman:before{content:""}.fa-mortar-pestle:before{content:""}.fa-road-barrier:before{content:""}.fa-school:before{content:""}.fa-igloo:before{content:""}.fa-joint:before{content:""}.fa-angle-right:before{content:""}.fa-horse:before{content:""}.fa-q:before{content:"Q"}.fa-g:before{content:"G"}.fa-notes-medical:before{content:""}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-dong-sign:before{content:""}.fa-capsules:before{content:""}.fa-poo-bolt:before,.fa-poo-storm:before{content:""}.fa-face-frown-open:before,.fa-frown-open:before{content:""}.fa-hand-point-up:before{content:""}.fa-money-bill:before{content:""}.fa-bookmark:before{content:""}.fa-align-justify:before{content:""}.fa-umbrella-beach:before{content:""}.fa-helmet-un:before{content:""}.fa-bullseye:before{content:""}.fa-bacon:before{content:""}.fa-hand-point-down:before{content:""}.fa-arrow-up-from-bracket:before{content:""}.fa-folder-blank:before,.fa-folder:before{content:""}.fa-file-medical-alt:before,.fa-file-waveform:before{content:""}.fa-radiation:before{content:""}.fa-chart-simple:before{content:""}.fa-mars-stroke:before{content:""}.fa-vial:before{content:""}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:""}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:""}.fa-e:before{content:"E"}.fa-pen-alt:before,.fa-pen-clip:before{content:""}.fa-bridge-circle-exclamation:before{content:""}.fa-user:before{content:""}.fa-school-circle-check:before{content:""}.fa-dumpster:before{content:""}.fa-shuttle-van:before,.fa-van-shuttle:before{content:""}.fa-building-user:before{content:""}.fa-caret-square-left:before,.fa-square-caret-left:before{content:""}.fa-highlighter:before{content:""}.fa-key:before{content:""}.fa-bullhorn:before{content:""}.fa-globe:before{content:""}.fa-synagogue:before{content:""}.fa-person-half-dress:before{content:""}.fa-road-bridge:before{content:""}.fa-location-arrow:before{content:""}.fa-c:before{content:"C"}.fa-tablet-button:before{content:""}.fa-building-lock:before{content:""}.fa-pizza-slice:before{content:""}.fa-money-bill-wave:before{content:""}.fa-area-chart:before,.fa-chart-area:before{content:""}.fa-house-flag:before{content:""}.fa-person-circle-minus:before{content:""}.fa-ban:before,.fa-cancel:before{content:""}.fa-camera-rotate:before{content:""}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:""}.fa-star:before{content:""}.fa-repeat:before{content:""}.fa-cross:before{content:""}.fa-box:before{content:""}.fa-venus-mars:before{content:""}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:""}.fa-expand-arrows-alt:before,.fa-maximize:before{content:""}.fa-charging-station:before{content:""}.fa-shapes:before,.fa-triangle-circle-square:before{content:""}.fa-random:before,.fa-shuffle:before{content:""}.fa-person-running:before,.fa-running:before{content:""}.fa-mobile-retro:before{content:""}.fa-grip-lines-vertical:before{content:""}.fa-spider:before{content:""}.fa-hands-bound:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-plane-circle-exclamation:before{content:""}.fa-x-ray:before{content:""}.fa-spell-check:before{content:""}.fa-slash:before{content:""}.fa-computer-mouse:before,.fa-mouse:before{content:""}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:""}.fa-shop-slash:before,.fa-store-alt-slash:before{content:""}.fa-server:before{content:""}.fa-virus-covid-slash:before{content:""}.fa-shop-lock:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-blender-phone:before{content:""}.fa-building-wheat:before{content:""}.fa-person-breastfeeding:before{content:""}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:""}.fa-venus:before{content:""}.fa-passport:before{content:""}.fa-heart-pulse:before,.fa-heartbeat:before{content:""}.fa-people-carry-box:before,.fa-people-carry:before{content:""}.fa-temperature-high:before{content:""}.fa-microchip:before{content:""}.fa-crown:before{content:""}.fa-weight-hanging:before{content:""}.fa-xmarks-lines:before{content:""}.fa-file-prescription:before{content:""}.fa-weight-scale:before,.fa-weight:before{content:""}.fa-user-friends:before,.fa-user-group:before{content:""}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:""}.fa-chess-knight:before{content:""}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:""}.fa-wheelchair:before{content:""}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:""}.fa-toggle-on:before{content:""}.fa-person-walking:before,.fa-walking:before{content:""}.fa-l:before{content:"L"}.fa-fire:before{content:""}.fa-bed-pulse:before,.fa-procedures:before{content:""}.fa-shuttle-space:before,.fa-space-shuttle:before{content:""}.fa-face-laugh:before,.fa-laugh:before{content:""}.fa-folder-open:before{content:""}.fa-heart-circle-plus:before{content:""}.fa-code-fork:before{content:""}.fa-city:before{content:""}.fa-microphone-alt:before,.fa-microphone-lines:before{content:""}.fa-pepper-hot:before{content:""}.fa-unlock:before{content:""}.fa-colon-sign:before{content:""}.fa-headset:before{content:""}.fa-store-slash:before{content:""}.fa-road-circle-xmark:before{content:""}.fa-user-minus:before{content:""}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:""}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:""}.fa-clipboard:before{content:""}.fa-house-circle-exclamation:before{content:""}.fa-file-arrow-up:before,.fa-file-upload:before{content:""}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:""}.fa-bath:before,.fa-bathtub:before{content:""}.fa-underline:before{content:""}.fa-user-edit:before,.fa-user-pen:before{content:""}.fa-signature:before{content:""}.fa-stroopwafel:before{content:""}.fa-bold:before{content:""}.fa-anchor-lock:before{content:""}.fa-building-ngo:before{content:""}.fa-manat-sign:before{content:""}.fa-not-equal:before{content:""}.fa-border-style:before,.fa-border-top-left:before{content:""}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:""}.fa-jedi:before{content:""}.fa-poll:before,.fa-square-poll-vertical:before{content:""}.fa-mug-hot:before{content:""}.fa-battery-car:before,.fa-car-battery:before{content:""}.fa-gift:before{content:""}.fa-dice-two:before{content:""}.fa-chess-queen:before{content:""}.fa-glasses:before{content:""}.fa-chess-board:before{content:""}.fa-building-circle-check:before{content:""}.fa-person-chalkboard:before{content:""}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:""}.fa-hand-back-fist:before,.fa-hand-rock:before{content:""}.fa-caret-square-up:before,.fa-square-caret-up:before{content:""}.fa-cloud-showers-water:before{content:""}.fa-bar-chart:before,.fa-chart-bar:before{content:""}.fa-hands-bubbles:before,.fa-hands-wash:before{content:""}.fa-less-than-equal:before{content:""}.fa-train:before{content:""}.fa-eye-low-vision:before,.fa-low-vision:before{content:""}.fa-crow:before{content:""}.fa-sailboat:before{content:""}.fa-window-restore:before{content:""}.fa-plus-square:before,.fa-square-plus:before{content:""}.fa-torii-gate:before{content:""}.fa-frog:before{content:""}.fa-bucket:before{content:""}.fa-image:before{content:""}.fa-microphone:before{content:""}.fa-cow:before{content:""}.fa-caret-up:before{content:""}.fa-screwdriver:before{content:""}.fa-folder-closed:before{content:""}.fa-house-tsunami:before{content:""}.fa-square-nfi:before{content:""}.fa-arrow-up-from-ground-water:before{content:""}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:""}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:""}.fa-columns:before,.fa-table-columns:before{content:""}.fa-lemon:before{content:""}.fa-head-side-mask:before{content:""}.fa-handshake:before{content:""}.fa-gem:before{content:""}.fa-dolly-box:before,.fa-dolly:before{content:""}.fa-smoking:before{content:""}.fa-compress-arrows-alt:before,.fa-minimize:before{content:""}.fa-monument:before{content:""}.fa-snowplow:before{content:""}.fa-angle-double-right:before,.fa-angles-right:before{content:""}.fa-cannabis:before{content:""}.fa-circle-play:before,.fa-play-circle:before{content:""}.fa-tablets:before{content:""}.fa-ethernet:before{content:""}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:""}.fa-chair:before{content:""}.fa-check-circle:before,.fa-circle-check:before{content:""}.fa-circle-stop:before,.fa-stop-circle:before{content:""}.fa-compass-drafting:before,.fa-drafting-compass:before{content:""}.fa-plate-wheat:before{content:""}.fa-icicles:before{content:""}.fa-person-shelter:before{content:""}.fa-neuter:before{content:""}.fa-id-badge:before{content:""}.fa-marker:before{content:""}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:""}.fa-helicopter-symbol:before{content:""}.fa-universal-access:before{content:""}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:""}.fa-lari-sign:before{content:""}.fa-volcano:before{content:""}.fa-person-walking-dashed-line-arrow-right:before{content:""}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:""}.fa-viruses:before{content:""}.fa-square-person-confined:before{content:""}.fa-user-tie:before{content:""}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:""}.fa-tent-arrow-down-to-line:before{content:""}.fa-certificate:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-suitcase:before{content:""}.fa-person-skating:before,.fa-skating:before{content:""}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:""}.fa-camera-retro:before{content:""}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:""}.fa-arrow-right-to-file:before,.fa-file-import:before{content:""}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:""}.fa-box-open:before{content:""}.fa-scroll:before{content:""}.fa-spa:before{content:""}.fa-location-pin-lock:before{content:""}.fa-pause:before{content:""}.fa-hill-avalanche:before{content:""}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-bomb:before{content:""}.fa-registered:before{content:""}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:""}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:""}.fa-subscript:before{content:""}.fa-diamond-turn-right:before,.fa-directions:before{content:""}.fa-burst:before{content:""}.fa-house-laptop:before,.fa-laptop-house:before{content:""}.fa-face-tired:before,.fa-tired:before{content:""}.fa-money-bills:before{content:""}.fa-smog:before{content:""}.fa-crutch:before{content:""}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:""}.fa-palette:before{content:""}.fa-arrows-turn-right:before{content:""}.fa-vest:before{content:""}.fa-ferry:before{content:""}.fa-arrows-down-to-people:before{content:""}.fa-seedling:before,.fa-sprout:before{content:""}.fa-arrows-alt-h:before,.fa-left-right:before{content:""}.fa-boxes-packing:before{content:""}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:""}.fa-group-arrows-rotate:before{content:""}.fa-bowl-food:before{content:""}.fa-candy-cane:before{content:""}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:""}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:""}.fa-remove-format:before,.fa-text-slash:before{content:""}.fa-face-smile-wink:before,.fa-smile-wink:before{content:""}.fa-file-word:before{content:""}.fa-file-powerpoint:before{content:""}.fa-arrows-h:before,.fa-arrows-left-right:before{content:""}.fa-house-lock:before{content:""}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:""}.fa-children:before{content:""}.fa-blackboard:before,.fa-chalkboard:before{content:""}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:""}.fa-envelope-open:before{content:""}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:""}.fa-mattress-pillow:before{content:""}.fa-guarani-sign:before{content:""}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-cruzeiro-sign:before{content:""}.fa-greater-than-equal:before{content:""}.fa-shield-alt:before,.fa-shield-halved:before{content:""}.fa-atlas:before,.fa-book-atlas:before{content:""}.fa-virus:before{content:""}.fa-envelope-circle-check:before{content:""}.fa-layer-group:before{content:""}.fa-arrows-to-dot:before{content:""}.fa-archway:before{content:""}.fa-heart-circle-check:before{content:""}.fa-house-chimney-crack:before,.fa-house-damage:before{content:""}.fa-file-archive:before,.fa-file-zipper:before{content:""}.fa-square:before{content:""}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:""}.fa-couch:before{content:""}.fa-cedi-sign:before{content:""}.fa-italic:before{content:""}.fa-church:before{content:""}.fa-comments-dollar:before{content:""}.fa-democrat:before{content:""}.fa-z:before{content:"Z"}.fa-person-skiing:before,.fa-skiing:before{content:""}.fa-road-lock:before{content:""}.fa-a:before{content:"A"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:""}.fa-feather-alt:before,.fa-feather-pointed:before{content:""}.fa-p:before{content:"P"}.fa-snowflake:before{content:""}.fa-newspaper:before{content:""}.fa-ad:before,.fa-rectangle-ad:before{content:""}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:""}.fa-filter-circle-xmark:before{content:""}.fa-locust:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:""}.fa-person-dress-burst:before{content:""}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:""}.fa-vector-square:before{content:""}.fa-bread-slice:before{content:""}.fa-language:before{content:""}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:""}.fa-filter:before{content:""}.fa-question:before{content:"?"}.fa-file-signature:before{content:""}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:""}.fa-house-chimney-user:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-puzzle-piece:before{content:""}.fa-money-check:before{content:""}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:""}.fa-code:before{content:""}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:""}.fa-building-circle-exclamation:before{content:""}.fa-magnifying-glass-chart:before{content:""}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:""}.fa-cubes-stacked:before{content:""}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:""}.fa-virus-covid:before{content:""}.fa-austral-sign:before{content:""}.fa-f:before{content:"F"}.fa-leaf:before{content:""}.fa-road:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-person-circle-plus:before{content:""}.fa-chart-pie:before,.fa-pie-chart:before{content:""}.fa-bolt-lightning:before{content:""}.fa-sack-xmark:before{content:""}.fa-file-excel:before{content:""}.fa-file-contract:before{content:""}.fa-fish-fins:before{content:""}.fa-building-flag:before{content:""}.fa-face-grin-beam:before,.fa-grin-beam:before{content:""}.fa-object-ungroup:before{content:""}.fa-poop:before{content:""}.fa-location-pin:before,.fa-map-marker:before{content:""}.fa-kaaba:before{content:""}.fa-toilet-paper:before{content:""}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:""}.fa-eject:before{content:""}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:""}.fa-plane-circle-check:before{content:""}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:""}.fa-object-group:before{content:""}.fa-chart-line:before,.fa-line-chart:before{content:""}.fa-mask-ventilator:before{content:""}.fa-arrow-right:before{content:""}.fa-map-signs:before,.fa-signs-post:before{content:""}.fa-cash-register:before{content:""}.fa-person-circle-question:before{content:""}.fa-h:before{content:"H"}.fa-tarp:before{content:""}.fa-screwdriver-wrench:before,.fa-tools:before{content:""}.fa-arrows-to-eye:before{content:""}.fa-plug-circle-bolt:before{content:""}.fa-heart:before{content:""}.fa-mars-and-venus:before{content:""}.fa-home-user:before,.fa-house-user:before{content:""}.fa-dumpster-fire:before{content:""}.fa-house-crack:before{content:""}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:""}.fa-face-surprise:before,.fa-surprise:before{content:""}.fa-bottle-water:before{content:""}.fa-circle-pause:before,.fa-pause-circle:before{content:""}.fa-toilet-paper-slash:before{content:""}.fa-apple-alt:before,.fa-apple-whole:before{content:""}.fa-kitchen-set:before{content:""}.fa-r:before{content:"R"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-cube:before{content:""}.fa-bitcoin-sign:before{content:""}.fa-shield-dog:before{content:""}.fa-solar-panel:before{content:""}.fa-lock-open:before{content:""}.fa-elevator:before{content:""}.fa-money-bill-transfer:before{content:""}.fa-money-bill-trend-up:before{content:""}.fa-house-flood-water-circle-arrow-right:before{content:""}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:""}.fa-circle:before{content:""}.fa-backward-fast:before,.fa-fast-backward:before{content:""}.fa-recycle:before{content:""}.fa-user-astronaut:before{content:""}.fa-plane-slash:before{content:""}.fa-trademark:before{content:""}.fa-basketball-ball:before,.fa-basketball:before{content:""}.fa-satellite-dish:before{content:""}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:""}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:""}.fa-volume-high:before,.fa-volume-up:before{content:""}.fa-users-rays:before{content:""}.fa-wallet:before{content:""}.fa-clipboard-check:before{content:""}.fa-file-audio:before{content:""}.fa-burger:before,.fa-hamburger:before{content:""}.fa-wrench:before{content:""}.fa-bugs:before{content:""}.fa-rupee-sign:before,.fa-rupee:before{content:""}.fa-file-image:before{content:""}.fa-circle-question:before,.fa-question-circle:before{content:""}.fa-plane-departure:before{content:""}.fa-handshake-slash:before{content:""}.fa-book-bookmark:before{content:""}.fa-code-branch:before{content:""}.fa-hat-cowboy:before{content:""}.fa-bridge:before{content:""}.fa-phone-alt:before,.fa-phone-flip:before{content:""}.fa-truck-front:before{content:""}.fa-cat:before{content:""}.fa-anchor-circle-exclamation:before{content:""}.fa-truck-field:before{content:""}.fa-route:before{content:""}.fa-clipboard-question:before{content:""}.fa-panorama:before{content:""}.fa-comment-medical:before{content:""}.fa-teeth-open:before{content:""}.fa-file-circle-minus:before{content:""}.fa-tags:before{content:""}.fa-wine-glass:before{content:""}.fa-fast-forward:before,.fa-forward-fast:before{content:""}.fa-face-meh-blank:before,.fa-meh-blank:before{content:""}.fa-parking:before,.fa-square-parking:before{content:""}.fa-house-signal:before{content:""}.fa-bars-progress:before,.fa-tasks-alt:before{content:""}.fa-faucet-drip:before{content:""}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:""}.fa-ban-smoking:before,.fa-smoking-ban:before{content:""}.fa-terminal:before{content:""}.fa-mobile-button:before{content:""}.fa-house-medical-flag:before{content:""}.fa-basket-shopping:before,.fa-shopping-basket:before{content:""}.fa-tape:before{content:""}.fa-bus-alt:before,.fa-bus-simple:before{content:""}.fa-eye:before{content:""}.fa-face-sad-cry:before,.fa-sad-cry:before{content:""}.fa-audio-description:before{content:""}.fa-person-military-to-person:before{content:""}.fa-file-shield:before{content:""}.fa-user-slash:before{content:""}.fa-pen:before{content:""}.fa-tower-observation:before{content:""}.fa-file-code:before{content:""}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:""}.fa-bus:before{content:""}.fa-heart-circle-xmark:before{content:""}.fa-home-lg:before,.fa-house-chimney:before{content:""}.fa-window-maximize:before{content:""}.fa-face-frown:before,.fa-frown:before{content:""}.fa-prescription:before{content:""}.fa-shop:before,.fa-store-alt:before{content:""}.fa-floppy-disk:before,.fa-save:before{content:""}.fa-vihara:before{content:""}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-comment-dots:before,.fa-commenting:before{content:""}.fa-plant-wilt:before{content:""}.fa-diamond:before{content:""}.fa-face-grin-squint:before,.fa-grin-squint:before{content:""}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:""}.fa-bacterium:before{content:""}.fa-hand-pointer:before{content:""}.fa-drum-steelpan:before{content:""}.fa-hand-scissors:before{content:""}.fa-hands-praying:before,.fa-praying-hands:before{content:""}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:""}.fa-biohazard:before{content:""}.fa-location-crosshairs:before,.fa-location:before{content:""}.fa-mars-double:before{content:""}.fa-child-dress:before{content:""}.fa-users-between-lines:before{content:""}.fa-lungs-virus:before{content:""}.fa-face-grin-tears:before,.fa-grin-tears:before{content:""}.fa-phone:before{content:""}.fa-calendar-times:before,.fa-calendar-xmark:before{content:""}.fa-child-reaching:before{content:""}.fa-head-side-virus:before{content:""}.fa-user-cog:before,.fa-user-gear:before{content:""}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:""}.fa-door-closed:before{content:""}.fa-shield-virus:before{content:""}.fa-dice-six:before{content:""}.fa-mosquito-net:before{content:""}.fa-bridge-water:before{content:""}.fa-person-booth:before{content:""}.fa-text-width:before{content:""}.fa-hat-wizard:before{content:""}.fa-pen-fancy:before{content:""}.fa-digging:before,.fa-person-digging:before{content:""}.fa-trash:before{content:""}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:""}.fa-book-medical:before{content:""}.fa-poo:before{content:""}.fa-quote-right-alt:before,.fa-quote-right:before{content:""}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:""}.fa-cubes:before{content:""}.fa-divide:before{content:""}.fa-tenge-sign:before,.fa-tenge:before{content:""}.fa-headphones:before{content:""}.fa-hands-holding:before{content:""}.fa-hands-clapping:before{content:""}.fa-republican:before{content:""}.fa-arrow-left:before{content:""}.fa-person-circle-xmark:before{content:""}.fa-ruler:before{content:""}.fa-align-left:before{content:""}.fa-dice-d6:before{content:""}.fa-restroom:before{content:""}.fa-j:before{content:"J"}.fa-users-viewfinder:before{content:""}.fa-file-video:before{content:""}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:""}.fa-table-cells:before,.fa-th:before{content:""}.fa-file-pdf:before{content:""}.fa-bible:before,.fa-book-bible:before{content:""}.fa-o:before{content:"O"}.fa-medkit:before,.fa-suitcase-medical:before{content:""}.fa-user-secret:before{content:""}.fa-otter:before{content:""}.fa-female:before,.fa-person-dress:before{content:""}.fa-comment-dollar:before{content:""}.fa-briefcase-clock:before,.fa-business-time:before{content:""}.fa-table-cells-large:before,.fa-th-large:before{content:""}.fa-book-tanakh:before,.fa-tanakh:before{content:""}.fa-phone-volume:before,.fa-volume-control-phone:before{content:""}.fa-hat-cowboy-side:before{content:""}.fa-clipboard-user:before{content:""}.fa-child:before{content:""}.fa-lira-sign:before{content:""}.fa-satellite:before{content:""}.fa-plane-lock:before{content:""}.fa-tag:before{content:""}.fa-comment:before{content:""}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:""}.fa-envelope:before{content:""}.fa-angle-double-up:before,.fa-angles-up:before{content:""}.fa-paperclip:before{content:""}.fa-arrow-right-to-city:before{content:""}.fa-ribbon:before{content:""}.fa-lungs:before{content:""}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:""}.fa-litecoin-sign:before{content:""}.fa-border-none:before{content:""}.fa-circle-nodes:before{content:""}.fa-parachute-box:before{content:""}.fa-indent:before{content:""}.fa-truck-field-un:before{content:""}.fa-hourglass-empty:before,.fa-hourglass:before{content:""}.fa-mountain:before{content:""}.fa-user-doctor:before,.fa-user-md:before{content:""}.fa-circle-info:before,.fa-info-circle:before{content:""}.fa-cloud-meatball:before{content:""}.fa-camera-alt:before,.fa-camera:before{content:""}.fa-square-virus:before{content:""}.fa-meteor:before{content:""}.fa-car-on:before{content:""}.fa-sleigh:before{content:""}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:""}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:""}.fa-water:before{content:""}.fa-calendar-check:before{content:""}.fa-braille:before{content:""}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:""}.fa-landmark:before{content:""}.fa-truck:before{content:""}.fa-crosshairs:before{content:""}.fa-person-cane:before{content:""}.fa-tent:before{content:""}.fa-vest-patches:before{content:""}.fa-check-double:before{content:""}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:""}.fa-money-bill-wheat:before{content:""}.fa-cookie:before{content:""}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:""}.fa-hard-drive:before,.fa-hdd:before{content:""}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:""}.fa-dumbbell:before{content:""}.fa-list-alt:before,.fa-rectangle-list:before{content:""}.fa-tarp-droplet:before{content:""}.fa-house-medical-circle-check:before{content:""}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:""}.fa-calendar-plus:before{content:""}.fa-plane-arrival:before{content:""}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:""}.fa-subway:before,.fa-train-subway:before{content:""}.fa-chart-gantt:before{content:""}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:""}.fa-crop-alt:before,.fa-crop-simple:before{content:""}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:""}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:""}.fa-dna:before{content:""}.fa-virus-slash:before{content:""}.fa-minus:before,.fa-subtract:before{content:""}.fa-chess:before{content:""}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:""}.fa-plug-circle-check:before{content:""}.fa-street-view:before{content:""}.fa-franc-sign:before{content:""}.fa-volume-off:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-droplet-slash:before,.fa-tint-slash:before{content:""}.fa-mosque:before{content:""}.fa-mosquito:before{content:""}.fa-star-of-david:before{content:""}.fa-person-military-rifle:before{content:""}.fa-cart-shopping:before,.fa-shopping-cart:before{content:""}.fa-vials:before{content:""}.fa-plug-circle-plus:before{content:""}.fa-place-of-worship:before{content:""}.fa-grip-vertical:before{content:""}.fa-arrow-turn-up:before,.fa-level-up:before{content:""}.fa-u:before{content:"U"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:""}.fa-clock-four:before,.fa-clock:before{content:""}.fa-backward-step:before,.fa-step-backward:before{content:""}.fa-pallet:before{content:""}.fa-faucet:before{content:""}.fa-baseball-bat-ball:before{content:""}.fa-s:before{content:"S"}.fa-timeline:before{content:""}.fa-keyboard:before{content:""}.fa-caret-down:before{content:""}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:""}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:""}.fa-plane-up:before{content:""}.fa-piggy-bank:before{content:""}.fa-battery-3:before,.fa-battery-half:before{content:""}.fa-mountain-city:before{content:""}.fa-coins:before{content:""}.fa-khanda:before{content:""}.fa-sliders-h:before,.fa-sliders:before{content:""}.fa-folder-tree:before{content:""}.fa-network-wired:before{content:""}.fa-map-pin:before{content:""}.fa-hamsa:before{content:""}.fa-cent-sign:before{content:""}.fa-flask:before{content:""}.fa-person-pregnant:before{content:""}.fa-wand-sparkles:before{content:""}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:""}.fa-ticket:before{content:""}.fa-power-off:before{content:""}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:""}.fa-flag-usa:before{content:""}.fa-laptop-file:before{content:""}.fa-teletype:before,.fa-tty:before{content:""}.fa-diagram-next:before{content:""}.fa-person-rifle:before{content:""}.fa-house-medical-circle-exclamation:before{content:""}.fa-closed-captioning:before{content:""}.fa-hiking:before,.fa-person-hiking:before{content:""}.fa-venus-double:before{content:""}.fa-images:before{content:""}.fa-calculator:before{content:""}.fa-people-pulling:before{content:""}.fa-n:before{content:"N"}.fa-cable-car:before,.fa-tram:before{content:""}.fa-cloud-rain:before{content:""}.fa-building-circle-xmark:before{content:""}.fa-ship:before{content:""}.fa-arrows-down-to-line:before{content:""}.fa-download:before{content:""}.fa-face-grin:before,.fa-grin:before{content:""}.fa-backspace:before,.fa-delete-left:before{content:""}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:""}.fa-file-circle-check:before{content:""}.fa-forward:before{content:""}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-face-meh:before,.fa-meh:before{content:""}.fa-align-center:before{content:""}.fa-book-dead:before,.fa-book-skull:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-heart-circle-exclamation:before{content:""}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:""}.fa-calendar-week:before{content:""}.fa-laptop-medical:before{content:""}.fa-b:before{content:"B"}.fa-file-medical:before{content:""}.fa-dice-one:before{content:""}.fa-kiwi-bird:before{content:""}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:""}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:""}.fa-cutlery:before,.fa-utensils:before{content:""}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:""}.fa-mill-sign:before{content:""}.fa-bowl-rice:before{content:""}.fa-skull:before{content:""}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:""}.fa-truck-pickup:before{content:""}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:""}.fa-stop:before{content:""}.fa-code-merge:before{content:""}.fa-upload:before{content:""}.fa-hurricane:before{content:""}.fa-mound:before{content:""}.fa-toilet-portable:before{content:""}.fa-compact-disc:before{content:""}.fa-file-arrow-down:before,.fa-file-download:before{content:""}.fa-caravan:before{content:""}.fa-shield-cat:before{content:""}.fa-bolt:before,.fa-zap:before{content:""}.fa-glass-water:before{content:""}.fa-oil-well:before{content:""}.fa-vault:before{content:""}.fa-mars:before{content:""}.fa-toilet:before{content:""}.fa-plane-circle-xmark:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:""}.fa-sun:before{content:""}.fa-guitar:before{content:""}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:""}.fa-horse-head:before{content:""}.fa-bore-hole:before{content:""}.fa-industry:before{content:""}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:""}.fa-arrows-turn-to-dots:before{content:""}.fa-florin-sign:before{content:""}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:""}.fa-less-than:before{content:"<"}.fa-angle-down:before{content:""}.fa-car-tunnel:before{content:""}.fa-head-side-cough:before{content:""}.fa-grip-lines:before{content:""}.fa-thumbs-down:before{content:""}.fa-user-lock:before{content:""}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:""}.fa-anchor-circle-xmark:before{content:""}.fa-ellipsis-h:before,.fa-ellipsis:before{content:""}.fa-chess-pawn:before{content:""}.fa-first-aid:before,.fa-kit-medical:before{content:""}.fa-person-through-window:before{content:""}.fa-toolbox:before{content:""}.fa-hands-holding-circle:before{content:""}.fa-bug:before{content:""}.fa-credit-card-alt:before,.fa-credit-card:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-hand-holding-hand:before{content:""}.fa-book-open-reader:before,.fa-book-reader:before{content:""}.fa-mountain-sun:before{content:""}.fa-arrows-left-right-to-line:before{content:""}.fa-dice-d20:before{content:""}.fa-truck-droplet:before{content:""}.fa-file-circle-xmark:before{content:""}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:""}.fa-medal:before{content:""}.fa-bed:before{content:""}.fa-h-square:before,.fa-square-h:before{content:""}.fa-podcast:before{content:""}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:""}.fa-bell:before{content:""}.fa-superscript:before{content:""}.fa-plug-circle-xmark:before{content:""}.fa-star-of-life:before{content:""}.fa-phone-slash:before{content:""}.fa-paint-roller:before{content:""}.fa-hands-helping:before,.fa-handshake-angle:before{content:""}.fa-location-dot:before,.fa-map-marker-alt:before{content:""}.fa-file:before{content:""}.fa-greater-than:before{content:">"}.fa-person-swimming:before,.fa-swimmer:before{content:""}.fa-arrow-down:before{content:""}.fa-droplet:before,.fa-tint:before{content:""}.fa-eraser:before{content:""}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:""}.fa-person-burst:before{content:""}.fa-dove:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-socks:before{content:""}.fa-inbox:before{content:""}.fa-section:before{content:""}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:""}.fa-envelope-open-text:before{content:""}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:""}.fa-wine-bottle:before{content:""}.fa-chess-rook:before{content:""}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:""}.fa-dharmachakra:before{content:""}.fa-hotdog:before{content:""}.fa-blind:before,.fa-person-walking-with-cane:before{content:""}.fa-drum:before{content:""}.fa-ice-cream:before{content:""}.fa-heart-circle-bolt:before{content:""}.fa-fax:before{content:""}.fa-paragraph:before{content:""}.fa-check-to-slot:before,.fa-vote-yea:before{content:""}.fa-star-half:before{content:""}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:""}.fa-tree-city:before{content:""}.fa-play:before{content:""}.fa-font:before{content:""}.fa-rupiah-sign:before{content:""}.fa-magnifying-glass:before,.fa-search:before{content:""}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:""}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:""}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:""}.fa-naira-sign:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-walkie-talkie:before{content:""}.fa-file-edit:before,.fa-file-pen:before{content:""}.fa-receipt:before{content:""}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-person-circle-exclamation:before{content:""}.fa-chevron-down:before{content:""}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-skull-crossbones:before{content:""}.fa-code-compare:before{content:""}.fa-list-dots:before,.fa-list-ul:before{content:""}.fa-school-lock:before{content:""}.fa-tower-cell:before{content:""}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:""}.fa-ranking-star:before{content:""}.fa-chess-king:before{content:""}.fa-person-harassing:before{content:""}.fa-brazilian-real-sign:before{content:""}.fa-landmark-alt:before,.fa-landmark-dome:before{content:""}.fa-arrow-up:before{content:""}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:""}.fa-shrimp:before{content:""}.fa-list-check:before,.fa-tasks:before{content:""}.fa-jug-detergent:before{content:""}.fa-circle-user:before,.fa-user-circle:before{content:""}.fa-user-shield:before{content:""}.fa-wind:before{content:""}.fa-car-burst:before,.fa-car-crash:before{content:""}.fa-y:before{content:"Y"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:""}.fa-shipping-fast:before,.fa-truck-fast:before{content:""}.fa-fish:before{content:""}.fa-user-graduate:before{content:""}.fa-adjust:before,.fa-circle-half-stroke:before{content:""}.fa-clapperboard:before{content:""}.fa-circle-radiation:before,.fa-radiation-alt:before{content:""}.fa-baseball-ball:before,.fa-baseball:before{content:""}.fa-jet-fighter-up:before{content:""}.fa-diagram-project:before,.fa-project-diagram:before{content:""}.fa-copy:before{content:""}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:""}.fa-hand-sparkles:before{content:""}.fa-grip-horizontal:before,.fa-grip:before{content:""}.fa-share-from-square:before,.fa-share-square:before{content:""}.fa-child-combatant:before,.fa-child-rifle:before{content:""}.fa-gun:before{content:""}.fa-phone-square:before,.fa-square-phone:before{content:""}.fa-add:before,.fa-plus:before{content:"+"}.fa-expand:before{content:""}.fa-computer:before{content:""}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:""}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:""}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:""}.fa-peso-sign:before{content:""}.fa-building-shield:before{content:""}.fa-baby:before{content:""}.fa-users-line:before{content:""}.fa-quote-left-alt:before,.fa-quote-left:before{content:""}.fa-tractor:before{content:""}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:""}.fa-arrow-down-up-lock:before{content:""}.fa-lines-leaning:before{content:""}.fa-ruler-combined:before{content:""}.fa-copyright:before{content:""}.fa-equals:before{content:"="}.fa-blender:before{content:""}.fa-teeth:before{content:""}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:""}.fa-map:before{content:""}.fa-rocket:before{content:""}.fa-photo-film:before,.fa-photo-video:before{content:""}.fa-folder-minus:before{content:""}.fa-store:before{content:""}.fa-arrow-trend-up:before{content:""}.fa-plug-circle-minus:before{content:""}.fa-sign-hanging:before,.fa-sign:before{content:""}.fa-bezier-curve:before{content:""}.fa-bell-slash:before{content:""}.fa-tablet-android:before,.fa-tablet:before{content:""}.fa-school-flag:before{content:""}.fa-fill:before{content:""}.fa-angle-up:before{content:""}.fa-drumstick-bite:before{content:""}.fa-holly-berry:before{content:""}.fa-chevron-left:before{content:""}.fa-bacteria:before{content:""}.fa-hand-lizard:before{content:""}.fa-notdef:before{content:""}.fa-disease:before{content:""}.fa-briefcase-medical:before{content:""}.fa-genderless:before{content:""}.fa-chevron-right:before{content:""}.fa-retweet:before{content:""}.fa-car-alt:before,.fa-car-rear:before{content:""}.fa-pump-soap:before{content:""}.fa-video-slash:before{content:""}.fa-battery-2:before,.fa-battery-quarter:before{content:""}.fa-radio:before{content:""}.fa-baby-carriage:before,.fa-carriage-baby:before{content:""}.fa-traffic-light:before{content:""}.fa-thermometer:before{content:""}.fa-vr-cardboard:before{content:""}.fa-hand-middle-finger:before{content:""}.fa-percent:before,.fa-percentage:before{content:"%"}.fa-truck-moving:before{content:""}.fa-glass-water-droplet:before{content:""}.fa-display:before{content:""}.fa-face-smile:before,.fa-smile:before{content:""}.fa-thumb-tack:before,.fa-thumbtack:before{content:""}.fa-trophy:before{content:""}.fa-person-praying:before,.fa-pray:before{content:""}.fa-hammer:before{content:""}.fa-hand-peace:before{content:""}.fa-rotate:before,.fa-sync-alt:before{content:""}.fa-spinner:before{content:""}.fa-robot:before{content:""}.fa-peace:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-warehouse:before{content:""}.fa-arrow-up-right-dots:before{content:""}.fa-splotch:before{content:""}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:""}.fa-dice-four:before{content:""}.fa-sim-card:before{content:""}.fa-transgender-alt:before,.fa-transgender:before{content:""}.fa-mercury:before{content:""}.fa-arrow-turn-down:before,.fa-level-down:before{content:""}.fa-person-falling-burst:before{content:""}.fa-award:before{content:""}.fa-ticket-alt:before,.fa-ticket-simple:before{content:""}.fa-building:before{content:""}.fa-angle-double-left:before,.fa-angles-left:before{content:""}.fa-qrcode:before{content:""}.fa-clock-rotate-left:before,.fa-history:before{content:""}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:""}.fa-arrow-right-from-file:before,.fa-file-export:before{content:""}.fa-shield-blank:before,.fa-shield:before{content:""}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:""}.fa-house-medical:before{content:""}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:""}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:""}.fa-house-chimney-window:before{content:""}.fa-pen-nib:before{content:""}.fa-tent-arrow-turn-left:before{content:""}.fa-tents:before{content:""}.fa-magic:before,.fa-wand-magic:before{content:""}.fa-dog:before{content:""}.fa-carrot:before{content:""}.fa-moon:before{content:""}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:""}.fa-cheese:before{content:""}.fa-yin-yang:before{content:""}.fa-music:before{content:""}.fa-code-commit:before{content:""}.fa-temperature-low:before{content:""}.fa-biking:before,.fa-person-biking:before{content:""}.fa-broom:before{content:""}.fa-shield-heart:before{content:""}.fa-gopuram:before{content:""}.fa-earth-oceania:before,.fa-globe-oceania:before{content:""}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:""}.fa-hashtag:before{content:"#"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:""}.fa-oil-can:before{content:""}.fa-t:before{content:"T"}.fa-hippo:before{content:""}.fa-chart-column:before{content:""}.fa-infinity:before{content:""}.fa-vial-circle-check:before{content:""}.fa-person-arrow-down-to-line:before{content:""}.fa-voicemail:before{content:""}.fa-fan:before{content:""}.fa-person-walking-luggage:before{content:""}.fa-arrows-alt-v:before,.fa-up-down:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-calendar:before{content:""}.fa-trailer:before{content:""}.fa-bahai:before,.fa-haykal:before{content:""}.fa-sd-card:before{content:""}.fa-dragon:before{content:""}.fa-shoe-prints:before{content:""}.fa-circle-plus:before,.fa-plus-circle:before{content:""}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:""}.fa-hand-holding:before{content:""}.fa-plug-circle-exclamation:before{content:""}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:""}.fa-clone:before{content:""}.fa-person-walking-arrow-loop-left:before{content:""}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:""}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:""}.fa-tornado:before{content:""}.fa-file-circle-plus:before{content:""}.fa-book-quran:before,.fa-quran:before{content:""}.fa-anchor:before{content:""}.fa-border-all:before{content:""}.fa-angry:before,.fa-face-angry:before{content:""}.fa-cookie-bite:before{content:""}.fa-arrow-trend-down:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-draw-polygon:before{content:""}.fa-balance-scale:before,.fa-scale-balanced:before{content:""}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:""}.fa-shower:before{content:""}.fa-desktop-alt:before,.fa-desktop:before{content:""}.fa-m:before{content:"M"}.fa-table-list:before,.fa-th-list:before{content:""}.fa-comment-sms:before,.fa-sms:before{content:""}.fa-book:before{content:""}.fa-user-plus:before{content:""}.fa-check:before{content:""}.fa-battery-4:before,.fa-battery-three-quarters:before{content:""}.fa-house-circle-check:before{content:""}.fa-angle-left:before{content:""}.fa-diagram-successor:before{content:""}.fa-truck-arrow-right:before{content:""}.fa-arrows-split-up-and-left:before{content:""}.fa-fist-raised:before,.fa-hand-fist:before{content:""}.fa-cloud-moon:before{content:""}.fa-briefcase:before{content:""}.fa-person-falling:before{content:""}.fa-image-portrait:before,.fa-portrait:before{content:""}.fa-user-tag:before{content:""}.fa-rug:before{content:""}.fa-earth-europe:before,.fa-globe-europe:before{content:""}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:""}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-baht-sign:before{content:""}.fa-book-open:before{content:""}.fa-book-journal-whills:before,.fa-journal-whills:before{content:""}.fa-handcuffs:before{content:""}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:""}.fa-database:before{content:""}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:""}.fa-bottle-droplet:before{content:""}.fa-mask-face:before{content:""}.fa-hill-rockslide:before{content:""}.fa-exchange-alt:before,.fa-right-left:before{content:""}.fa-paper-plane:before{content:""}.fa-road-circle-exclamation:before{content:""}.fa-dungeon:before{content:""}.fa-align-right:before{content:""}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:""}.fa-life-ring:before{content:""}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:""}.fa-calendar-day:before{content:""}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:""}.fa-arrows-up-down:before,.fa-arrows-v:before{content:""}.fa-face-grimace:before,.fa-grimace:before{content:""}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:""}.fa-level-down-alt:before,.fa-turn-down:before{content:""}.fa-person-walking-arrow-right:before{content:""}.fa-envelope-square:before,.fa-square-envelope:before{content:""}.fa-dice:before{content:""}.fa-bowling-ball:before{content:""}.fa-brain:before{content:""}.fa-band-aid:before,.fa-bandage:before{content:""}.fa-calendar-minus:before{content:""}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:""}.fa-gifts:before{content:""}.fa-hotel:before{content:""}.fa-earth-asia:before,.fa-globe-asia:before{content:""}.fa-id-card-alt:before,.fa-id-card-clip:before{content:""}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:""}.fa-thumbs-up:before{content:""}.fa-user-clock:before{content:""}.fa-allergies:before,.fa-hand-dots:before{content:""}.fa-file-invoice:before{content:""}.fa-window-minimize:before{content:""}.fa-coffee:before,.fa-mug-saucer:before{content:""}.fa-brush:before{content:""}.fa-mask:before{content:""}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:""}.fa-ruler-vertical:before{content:""}.fa-user-alt:before,.fa-user-large:before{content:""}.fa-train-tram:before{content:""}.fa-user-nurse:before{content:""}.fa-syringe:before{content:""}.fa-cloud-sun:before{content:""}.fa-stopwatch-20:before{content:""}.fa-square-full:before{content:""}.fa-magnet:before{content:""}.fa-jar:before{content:""}.fa-note-sticky:before,.fa-sticky-note:before{content:""}.fa-bug-slash:before{content:""}.fa-arrow-up-from-water-pump:before{content:""}.fa-bone:before{content:""}.fa-user-injured:before{content:""}.fa-face-sad-tear:before,.fa-sad-tear:before{content:""}.fa-plane:before{content:""}.fa-tent-arrows-down:before{content:""}.fa-exclamation:before{content:"!"}.fa-arrows-spin:before{content:""}.fa-print:before{content:""}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:""}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"$"}.fa-x:before{content:"X"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:""}.fa-users-cog:before,.fa-users-gear:before{content:""}.fa-person-military-pointing:before{content:""}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:""}.fa-umbrella:before{content:""}.fa-trowel:before{content:""}.fa-d:before{content:"D"}.fa-stapler:before{content:""}.fa-masks-theater:before,.fa-theater-masks:before{content:""}.fa-kip-sign:before{content:""}.fa-hand-point-left:before{content:""}.fa-handshake-alt:before,.fa-handshake-simple:before{content:""}.fa-fighter-jet:before,.fa-jet-fighter:before{content:""}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:""}.fa-barcode:before{content:""}.fa-plus-minus:before{content:""}.fa-video-camera:before,.fa-video:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-hand-holding-medical:before{content:""}.fa-person-circle-check:before{content:""}.fa-level-up-alt:before,.fa-turn-up:before{content:""}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(/build/assets/fa-brands-400-74833209.woff2) format("woff2"),url(/build/assets/fa-brands-400-20c4a58b.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:""}.fa-hooli:before{content:""}.fa-yelp:before{content:""}.fa-cc-visa:before{content:""}.fa-lastfm:before{content:""}.fa-shopware:before{content:""}.fa-creative-commons-nc:before{content:""}.fa-aws:before{content:""}.fa-redhat:before{content:""}.fa-yoast:before{content:""}.fa-cloudflare:before{content:""}.fa-ups:before{content:""}.fa-wpexplorer:before{content:""}.fa-dyalog:before{content:""}.fa-bity:before{content:""}.fa-stackpath:before{content:""}.fa-buysellads:before{content:""}.fa-first-order:before{content:""}.fa-modx:before{content:""}.fa-guilded:before{content:""}.fa-vnv:before{content:""}.fa-js-square:before,.fa-square-js:before{content:""}.fa-microsoft:before{content:""}.fa-qq:before{content:""}.fa-orcid:before{content:""}.fa-java:before{content:""}.fa-invision:before{content:""}.fa-creative-commons-pd-alt:before{content:""}.fa-centercode:before{content:""}.fa-glide-g:before{content:""}.fa-drupal:before{content:""}.fa-hire-a-helper:before{content:""}.fa-creative-commons-by:before{content:""}.fa-unity:before{content:""}.fa-whmcs:before{content:""}.fa-rocketchat:before{content:""}.fa-vk:before{content:""}.fa-untappd:before{content:""}.fa-mailchimp:before{content:""}.fa-css3-alt:before{content:""}.fa-reddit-square:before,.fa-square-reddit:before{content:""}.fa-vimeo-v:before{content:""}.fa-contao:before{content:""}.fa-square-font-awesome:before{content:""}.fa-deskpro:before{content:""}.fa-sistrix:before{content:""}.fa-instagram-square:before,.fa-square-instagram:before{content:""}.fa-battle-net:before{content:""}.fa-the-red-yeti:before{content:""}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:""}.fa-edge:before{content:""}.fa-napster:before{content:""}.fa-snapchat-square:before,.fa-square-snapchat:before{content:""}.fa-google-plus-g:before{content:""}.fa-artstation:before{content:""}.fa-markdown:before{content:""}.fa-sourcetree:before{content:""}.fa-google-plus:before{content:""}.fa-diaspora:before{content:""}.fa-foursquare:before{content:""}.fa-stack-overflow:before{content:""}.fa-github-alt:before{content:""}.fa-phoenix-squadron:before{content:""}.fa-pagelines:before{content:""}.fa-algolia:before{content:""}.fa-red-river:before{content:""}.fa-creative-commons-sa:before{content:""}.fa-safari:before{content:""}.fa-google:before{content:""}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:""}.fa-atlassian:before{content:""}.fa-linkedin-in:before{content:""}.fa-digital-ocean:before{content:""}.fa-nimblr:before{content:""}.fa-chromecast:before{content:""}.fa-evernote:before{content:""}.fa-hacker-news:before{content:""}.fa-creative-commons-sampling:before{content:""}.fa-adversal:before{content:""}.fa-creative-commons:before{content:""}.fa-watchman-monitoring:before{content:""}.fa-fonticons:before{content:""}.fa-weixin:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-codepen:before{content:""}.fa-git-alt:before{content:""}.fa-lyft:before{content:""}.fa-rev:before{content:""}.fa-windows:before{content:""}.fa-wizards-of-the-coast:before{content:""}.fa-square-viadeo:before,.fa-viadeo-square:before{content:""}.fa-meetup:before{content:""}.fa-centos:before{content:""}.fa-adn:before{content:""}.fa-cloudsmith:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-dribbble-square:before,.fa-square-dribbble:before{content:""}.fa-codiepie:before{content:""}.fa-node:before{content:""}.fa-mix:before{content:""}.fa-steam:before{content:""}.fa-cc-apple-pay:before{content:""}.fa-scribd:before{content:""}.fa-openid:before{content:""}.fa-instalod:before{content:""}.fa-expeditedssl:before{content:""}.fa-sellcast:before{content:""}.fa-square-twitter:before,.fa-twitter-square:before{content:""}.fa-r-project:before{content:""}.fa-delicious:before{content:""}.fa-freebsd:before{content:""}.fa-vuejs:before{content:""}.fa-accusoft:before{content:""}.fa-ioxhost:before{content:""}.fa-fonticons-fi:before{content:""}.fa-app-store:before{content:""}.fa-cc-mastercard:before{content:""}.fa-itunes-note:before{content:""}.fa-golang:before{content:""}.fa-kickstarter:before{content:""}.fa-grav:before{content:""}.fa-weibo:before{content:""}.fa-uncharted:before{content:""}.fa-firstdraft:before{content:""}.fa-square-youtube:before,.fa-youtube-square:before{content:""}.fa-wikipedia-w:before{content:""}.fa-rendact:before,.fa-wpressr:before{content:""}.fa-angellist:before{content:""}.fa-galactic-republic:before{content:""}.fa-nfc-directional:before{content:""}.fa-skype:before{content:""}.fa-joget:before{content:""}.fa-fedora:before{content:""}.fa-stripe-s:before{content:""}.fa-meta:before{content:""}.fa-laravel:before{content:""}.fa-hotjar:before{content:""}.fa-bluetooth-b:before{content:""}.fa-sticker-mule:before{content:""}.fa-creative-commons-zero:before{content:""}.fa-hips:before{content:""}.fa-behance:before{content:""}.fa-reddit:before{content:""}.fa-discord:before{content:""}.fa-chrome:before{content:""}.fa-app-store-ios:before{content:""}.fa-cc-discover:before{content:""}.fa-wpbeginner:before{content:""}.fa-confluence:before{content:""}.fa-mdb:before{content:""}.fa-dochub:before{content:""}.fa-accessible-icon:before{content:""}.fa-ebay:before{content:""}.fa-amazon:before{content:""}.fa-unsplash:before{content:""}.fa-yarn:before{content:""}.fa-square-steam:before,.fa-steam-square:before{content:""}.fa-500px:before{content:""}.fa-square-vimeo:before,.fa-vimeo-square:before{content:""}.fa-asymmetrik:before{content:""}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:""}.fa-gratipay:before{content:""}.fa-apple:before{content:""}.fa-hive:before{content:""}.fa-gitkraken:before{content:""}.fa-keybase:before{content:""}.fa-apple-pay:before{content:""}.fa-padlet:before{content:""}.fa-amazon-pay:before{content:""}.fa-github-square:before,.fa-square-github:before{content:""}.fa-stumbleupon:before{content:""}.fa-fedex:before{content:""}.fa-phoenix-framework:before{content:""}.fa-shopify:before{content:""}.fa-neos:before{content:""}.fa-hackerrank:before{content:""}.fa-researchgate:before{content:""}.fa-swift:before{content:""}.fa-angular:before{content:""}.fa-speakap:before{content:""}.fa-angrycreative:before{content:""}.fa-y-combinator:before{content:""}.fa-empire:before{content:""}.fa-envira:before{content:""}.fa-gitlab-square:before,.fa-square-gitlab:before{content:""}.fa-studiovinari:before{content:""}.fa-pied-piper:before{content:""}.fa-wordpress:before{content:""}.fa-product-hunt:before{content:""}.fa-firefox:before{content:""}.fa-linode:before{content:""}.fa-goodreads:before{content:""}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:""}.fa-jsfiddle:before{content:""}.fa-sith:before{content:""}.fa-themeisle:before{content:""}.fa-page4:before{content:""}.fa-hashnode:before{content:""}.fa-react:before{content:""}.fa-cc-paypal:before{content:""}.fa-squarespace:before{content:""}.fa-cc-stripe:before{content:""}.fa-creative-commons-share:before{content:""}.fa-bitcoin:before{content:""}.fa-keycdn:before{content:""}.fa-opera:before{content:""}.fa-itch-io:before{content:""}.fa-umbraco:before{content:""}.fa-galactic-senate:before{content:""}.fa-ubuntu:before{content:""}.fa-draft2digital:before{content:""}.fa-stripe:before{content:""}.fa-houzz:before{content:""}.fa-gg:before{content:""}.fa-dhl:before{content:""}.fa-pinterest-square:before,.fa-square-pinterest:before{content:""}.fa-xing:before{content:""}.fa-blackberry:before{content:""}.fa-creative-commons-pd:before{content:""}.fa-playstation:before{content:""}.fa-quinscape:before{content:""}.fa-less:before{content:""}.fa-blogger-b:before{content:""}.fa-opencart:before{content:""}.fa-vine:before{content:""}.fa-paypal:before{content:""}.fa-gitlab:before{content:""}.fa-typo3:before{content:""}.fa-reddit-alien:before{content:""}.fa-yahoo:before{content:""}.fa-dailymotion:before{content:""}.fa-affiliatetheme:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-bootstrap:before{content:""}.fa-odnoklassniki:before{content:""}.fa-nfc-symbol:before{content:""}.fa-ethereum:before{content:""}.fa-speaker-deck:before{content:""}.fa-creative-commons-nc-eu:before{content:""}.fa-patreon:before{content:""}.fa-avianex:before{content:""}.fa-ello:before{content:""}.fa-gofore:before{content:""}.fa-bimobject:before{content:""}.fa-facebook-f:before{content:""}.fa-google-plus-square:before,.fa-square-google-plus:before{content:""}.fa-mandalorian:before{content:""}.fa-first-order-alt:before{content:""}.fa-osi:before{content:""}.fa-google-wallet:before{content:""}.fa-d-and-d-beyond:before{content:""}.fa-periscope:before{content:""}.fa-fulcrum:before{content:""}.fa-cloudscale:before{content:""}.fa-forumbee:before{content:""}.fa-mizuni:before{content:""}.fa-schlix:before{content:""}.fa-square-xing:before,.fa-xing-square:before{content:""}.fa-bandcamp:before{content:""}.fa-wpforms:before{content:""}.fa-cloudversify:before{content:""}.fa-usps:before{content:""}.fa-megaport:before{content:""}.fa-magento:before{content:""}.fa-spotify:before{content:""}.fa-optin-monster:before{content:""}.fa-fly:before{content:""}.fa-aviato:before{content:""}.fa-itunes:before{content:""}.fa-cuttlefish:before{content:""}.fa-blogger:before{content:""}.fa-flickr:before{content:""}.fa-viber:before{content:""}.fa-soundcloud:before{content:""}.fa-digg:before{content:""}.fa-tencent-weibo:before{content:""}.fa-symfony:before{content:""}.fa-maxcdn:before{content:""}.fa-etsy:before{content:""}.fa-facebook-messenger:before{content:""}.fa-audible:before{content:""}.fa-think-peaks:before{content:""}.fa-bilibili:before{content:""}.fa-erlang:before{content:""}.fa-cotton-bureau:before{content:""}.fa-dashcube:before{content:""}.fa-42-group:before,.fa-innosoft:before{content:""}.fa-stack-exchange:before{content:""}.fa-elementor:before{content:""}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:""}.fa-creative-commons-nd:before{content:""}.fa-palfed:before{content:""}.fa-superpowers:before{content:""}.fa-resolving:before{content:""}.fa-xbox:before{content:""}.fa-searchengin:before{content:""}.fa-tiktok:before{content:""}.fa-facebook-square:before,.fa-square-facebook:before{content:""}.fa-renren:before{content:""}.fa-linux:before{content:""}.fa-glide:before{content:""}.fa-linkedin:before{content:""}.fa-hubspot:before{content:""}.fa-deploydog:before{content:""}.fa-twitch:before{content:""}.fa-ravelry:before{content:""}.fa-mixer:before{content:""}.fa-lastfm-square:before,.fa-square-lastfm:before{content:""}.fa-vimeo:before{content:""}.fa-mendeley:before{content:""}.fa-uniregistry:before{content:""}.fa-figma:before{content:""}.fa-creative-commons-remix:before{content:""}.fa-cc-amazon-pay:before{content:""}.fa-dropbox:before{content:""}.fa-instagram:before{content:""}.fa-cmplid:before{content:""}.fa-facebook:before{content:""}.fa-gripfire:before{content:""}.fa-jedi-order:before{content:""}.fa-uikit:before{content:""}.fa-fort-awesome-alt:before{content:""}.fa-phabricator:before{content:""}.fa-ussunnah:before{content:""}.fa-earlybirds:before{content:""}.fa-trade-federation:before{content:""}.fa-autoprefixer:before{content:""}.fa-whatsapp:before{content:""}.fa-slideshare:before{content:""}.fa-google-play:before{content:""}.fa-viadeo:before{content:""}.fa-line:before{content:""}.fa-google-drive:before{content:""}.fa-servicestack:before{content:""}.fa-simplybuilt:before{content:""}.fa-bitbucket:before{content:""}.fa-imdb:before{content:""}.fa-deezer:before{content:""}.fa-raspberry-pi:before{content:""}.fa-jira:before{content:""}.fa-docker:before{content:""}.fa-screenpal:before{content:""}.fa-bluetooth:before{content:""}.fa-gitter:before{content:""}.fa-d-and-d:before{content:""}.fa-microblog:before{content:""}.fa-cc-diners-club:before{content:""}.fa-gg-circle:before{content:""}.fa-pied-piper-hat:before{content:""}.fa-kickstarter-k:before{content:""}.fa-yandex:before{content:""}.fa-readme:before{content:""}.fa-html5:before{content:""}.fa-sellsy:before{content:""}.fa-sass:before{content:""}.fa-wirsindhandwerk:before,.fa-wsh:before{content:""}.fa-buromobelexperte:before{content:""}.fa-salesforce:before{content:""}.fa-octopus-deploy:before{content:""}.fa-medapps:before{content:""}.fa-ns8:before{content:""}.fa-pinterest-p:before{content:""}.fa-apper:before{content:""}.fa-fort-awesome:before{content:""}.fa-waze:before{content:""}.fa-cc-jcb:before{content:""}.fa-snapchat-ghost:before,.fa-snapchat:before{content:""}.fa-fantasy-flight-games:before{content:""}.fa-rust:before{content:""}.fa-wix:before{content:""}.fa-behance-square:before,.fa-square-behance:before{content:""}.fa-supple:before{content:""}.fa-rebel:before{content:""}.fa-css3:before{content:""}.fa-staylinked:before{content:""}.fa-kaggle:before{content:""}.fa-space-awesome:before{content:""}.fa-deviantart:before{content:""}.fa-cpanel:before{content:""}.fa-goodreads-g:before{content:""}.fa-git-square:before,.fa-square-git:before{content:""}.fa-square-tumblr:before,.fa-tumblr-square:before{content:""}.fa-trello:before{content:""}.fa-creative-commons-nc-jp:before{content:""}.fa-get-pocket:before{content:""}.fa-perbyte:before{content:""}.fa-grunt:before{content:""}.fa-weebly:before{content:""}.fa-connectdevelop:before{content:""}.fa-leanpub:before{content:""}.fa-black-tie:before{content:""}.fa-themeco:before{content:""}.fa-python:before{content:""}.fa-android:before{content:""}.fa-bots:before{content:""}.fa-free-code-camp:before{content:""}.fa-hornbill:before{content:""}.fa-js:before{content:""}.fa-ideal:before{content:""}.fa-git:before{content:""}.fa-dev:before{content:""}.fa-sketch:before{content:""}.fa-yandex-international:before{content:""}.fa-cc-amex:before{content:""}.fa-uber:before{content:""}.fa-github:before{content:""}.fa-php:before{content:""}.fa-alipay:before{content:""}.fa-youtube:before{content:""}.fa-skyatlas:before{content:""}.fa-firefox-browser:before{content:""}.fa-replyd:before{content:""}.fa-suse:before{content:""}.fa-jenkins:before{content:""}.fa-twitter:before{content:""}.fa-rockrms:before{content:""}.fa-pinterest:before{content:""}.fa-buffer:before{content:""}.fa-npm:before{content:""}.fa-yammer:before{content:""}.fa-btc:before{content:""}.fa-dribbble:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-internet-explorer:before{content:""}.fa-stubber:before{content:""}.fa-telegram-plane:before,.fa-telegram:before{content:""}.fa-old-republic:before{content:""}.fa-odysee:before{content:""}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:""}.fa-node-js:before{content:""}.fa-edge-legacy:before{content:""}.fa-slack-hash:before,.fa-slack:before{content:""}.fa-medrt:before{content:""}.fa-usb:before{content:""}.fa-tumblr:before{content:""}.fa-vaadin:before{content:""}.fa-quora:before{content:""}.fa-reacteurope:before{content:""}.fa-medium-m:before,.fa-medium:before{content:""}.fa-amilia:before{content:""}.fa-mixcloud:before{content:""}.fa-flipboard:before{content:""}.fa-viacoin:before{content:""}.fa-critical-role:before{content:""}.fa-sitrox:before{content:""}.fa-discourse:before{content:""}.fa-joomla:before{content:""}.fa-mastodon:before{content:""}.fa-airbnb:before{content:""}.fa-wolf-pack-battalion:before{content:""}.fa-buy-n-large:before{content:""}.fa-gulp:before{content:""}.fa-creative-commons-sampling-plus:before{content:""}.fa-strava:before{content:""}.fa-ember:before{content:""}.fa-canadian-maple-leaf:before{content:""}.fa-teamspeak:before{content:""}.fa-pushed:before{content:""}.fa-wordpress-simple:before{content:""}.fa-nutritionix:before{content:""}.fa-wodu:before{content:""}.fa-google-pay:before{content:""}.fa-intercom:before{content:""}.fa-zhihu:before{content:""}.fa-korvue:before{content:""}.fa-pix:before{content:""}.fa-steam-symbol:before{content:""}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(/build/assets/fa-regular-400-8e7e5ea1.woff2) format("woff2"),url(/build/assets/fa-regular-400-528d022d.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(/build/assets/fa-solid-900-7152a693.woff2) format("woff2"),url(/build/assets/fa-solid-900-67a65763.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(/build/assets/fa-brands-400-74833209.woff2) format("woff2"),url(/build/assets/fa-brands-400-20c4a58b.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(/build/assets/fa-solid-900-7152a693.woff2) format("woff2"),url(/build/assets/fa-solid-900-67a65763.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(/build/assets/fa-regular-400-8e7e5ea1.woff2) format("woff2"),url(/build/assets/fa-regular-400-528d022d.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/build/assets/fa-solid-900-7152a693.woff2) format("woff2"),url(/build/assets/fa-solid-900-67a65763.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/build/assets/fa-brands-400-74833209.woff2) format("woff2"),url(/build/assets/fa-brands-400-20c4a58b.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/build/assets/fa-regular-400-8e7e5ea1.woff2) format("woff2"),url(/build/assets/fa-regular-400-528d022d.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:FontAwesome;font-display:block;src:url(/build/assets/fa-v4compatibility-694a17c3.woff2) format("woff2"),url(/build/assets/fa-v4compatibility-0515a423.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}/*! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com + */*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #1C64F2;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#1c64f2}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}select:not([size]){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple]{background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#1c64f2;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #1C64F2;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked,.dark [type=checkbox]:checked,.dark [type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px auto inherit}input[type=file]::file-selector-button{color:#fff;background:#1F2937;border:0;font-weight:500;font-size:.875rem;cursor:pointer;padding:.625rem 1rem .625rem 2rem;-webkit-margin-start:-1rem;margin-inline-start:-1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}input[type=file]::file-selector-button:hover{background:#374151}.dark input[type=file]::file-selector-button{color:#fff;background:#4B5563}.dark input[type=file]::file-selector-button:hover{background:#6B7280}input[type=range]::-webkit-slider-thumb{height:1.25rem;width:1.25rem;background:#1C64F2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-webkit-slider-thumb{background:#9CA3AF}.dark input[type=range]:disabled::-webkit-slider-thumb{background:#6B7280}input[type=range]:focus::-webkit-slider-thumb{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1px;--tw-ring-color: rgb(164 202 254 / var(--tw-ring-opacity))}input[type=range]::-moz-range-thumb{height:1.25rem;width:1.25rem;background:#1C64F2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-moz-range-thumb{background:#9CA3AF}.dark input[type=range]:disabled::-moz-range-thumb{background:#6B7280}input[type=range]::-moz-range-progress{background:#3F83F8}input[type=range]::-ms-fill-lower{background:#3F83F8}.toggle-bg:after{content:"";position:absolute;top:.125rem;left:.125rem;background:white;border-color:#d1d5db;border-width:1px;border-radius:9999px;height:1.25rem;width:1.25rem;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;box-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color)}input:checked+.toggle-bg:after{transform:translate(100%);border-color:#fff}input:checked+.toggle-bg{background:#1C64F2;border-color:#1c64f2}.tooltip-arrow,.tooltip-arrow:before{position:absolute;width:8px;height:8px;background:inherit}.tooltip-arrow{visibility:hidden}.tooltip-arrow:before{content:"";visibility:visible;transform:rotate(45deg)}[data-tooltip-style^=light]+.tooltip>.tooltip-arrow:before{border-style:solid;border-color:#e5e7eb}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px;border-right-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px;border-right-width:1px}.tooltip[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px}.tooltip[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px}.tooltip[data-popper-placement^=left]>.tooltip-arrow{right:-4px}.tooltip[data-popper-placement^=right]>.tooltip-arrow{left:-4px}.tooltip.invisible>.tooltip-arrow:before{visibility:hidden}[data-popper-arrow],[data-popper-arrow]:before{position:absolute;width:8px;height:8px;background:inherit}[data-popper-arrow]{visibility:hidden}[data-popper-arrow]:before{content:"";visibility:visible;transform:rotate(45deg)}[data-popper-arrow]:after{content:"";visibility:visible;transform:rotate(45deg);position:absolute;width:9px;height:9px;background:inherit}[role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#4b5563}[role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#4b5563}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:before{border-bottom-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:after{border-bottom-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:before{border-bottom-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:after{border-bottom-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:before{border-top-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:after{border-top-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:before{border-top-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:after{border-top-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]{bottom:-5px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]{top:-5px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]{right:-5px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]{left:-5px}[role=tooltip].invisible>[data-popper-arrow]:before{visibility:hidden}[role=tooltip].invisible>[data-popper-arrow]:after{visibility:hidden}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(63 131 248 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(63 131 248 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0px}.bottom-0{bottom:0px}.bottom-\[60px\]{bottom:60px}.left-0{left:0px}.right-0{right:0px}.right-2{right:.5rem}.right-2\.5{right:.625rem}.top-0{top:0px}.top-3{top:.75rem}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.mx-7{margin-left:1.75rem;margin-right:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-auto{margin-top:auto;margin-bottom:auto}.-ml-px{margin-left:-1px}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-10{margin-top:2.5rem}.mt-14{margin-top:3.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-36{height:9rem}.h-4{height:1rem}.h-44{height:11rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-\[calc\(100\%-1rem\)\]{height:calc(100% - 1rem)}.h-full{height:100%}.max-h-full{max-height:100%}.max-h-screen{max-height:100vh}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-24{width:6rem}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-64{width:16rem}.w-96{width:24rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-full{--tw-translate-y: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(243 244 246 / var(--tw-divide-opacity))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-0{border-width:0px}.border-4{border-width:4px}.border-b-2{border-bottom-width:2px}.border-black{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(28 100 242 / var(--tw-border-opacity))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(26 86 219 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(240 82 82 / var(--tw-border-opacity))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(26 86 219 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-neutral-200{--tw-bg-opacity: 1;background-color:rgb(229 229 229 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(240 82 82 / var(--tw-bg-opacity))}.bg-red-700{--tw-bg-opacity: 1;background-color:rgb(200 30 30 / var(--tw-bg-opacity))}.bg-sky-600{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-white\/50{background-color:#ffffff80}.bg-opacity-40{--tw-bg-opacity: .4}.bg-opacity-5{--tw-bg-opacity: .05}.bg-opacity-50{--tw-bg-opacity: .5}.bg-gradient-to-l{background-image:linear-gradient(to left,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-cyan-500{--tw-gradient-from: #06b6d4 var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-300{--tw-gradient-from: #D1D5DB var(--tw-gradient-from-position);--tw-gradient-to: rgb(209 213 219 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-400{--tw-gradient-from: #F98080 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 128 128 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-blue-500{--tw-gradient-to: #3F83F8 var(--tw-gradient-to-position)}.to-gray-400{--tw-gradient-to: #9CA3AF var(--tw-gradient-to-position)}.to-red-600{--tw-gradient-to: #E02424 var(--tw-gradient-to-position)}.to-slate-400{--tw-gradient-to: #94a3b8 var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-fixed{background-attachment:fixed}.fill-red-600{fill:#e02424}.stroke-red-600{stroke:#e02424}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pt-2{padding-top:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.text-blue-600{--tw-text-opacity: 1;color:rgb(28 100 242 / var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 66 159 / var(--tw-text-opacity))}.text-blue-950{--tw-text-opacity: 1;color:rgb(23 37 84 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-50{--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-green-600{--tw-text-opacity: 1;color:rgb(5 122 85 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(240 82 82 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(224 36 36 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(200 30 30 / var(--tw-text-opacity))}.text-sky-600{--tw-text-opacity: 1;color:rgb(2 132 199 / var(--tw-text-opacity))}.text-slate-50{--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-yellow-300{--tw-text-opacity: 1;color:rgb(250 202 21 / var(--tw-text-opacity))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring-gray-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}.\[text-shadow\:_0_2px_0_rgb\(202_138_4\/_60\%\)\]{text-shadow:0 2px 0 rgb(202 138 4/ 60%)}label{transition:all .2s ease}.rating input:not(:checked)~label:hover,.rating input:not(:checked)~label:hover~label{color:#fdd935}.rating input::checked~label{color:#fdd935}.rating input#star5:checked~label{color:#fdd935;text-shadow:0 0 20px rgb(253,205,45)}.rating input#star4:checked~label{color:#fdd935;text-shadow:0 0 20px rgb(253,205,45)}.rating input#star3:checked~label{color:#fdd935;text-shadow:0 0 20px rgb(253,205,45)}.rating input#star2:checked~label{color:#fdd935;text-shadow:0 0 20px rgb(253,205,45)}.rating input#star1:checked~label{color:#fdd935;text-shadow:0 0 20px rgb(253,205,45)}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-black:hover{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.hover\:bg-blue-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 66 159 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-red-800:hover{--tw-bg-opacity: 1;background-color:rgb(155 28 28 / var(--tw-bg-opacity))}.hover\:bg-sky-700:hover{--tw-bg-opacity: 1;background-color:rgb(3 105 161 / var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.hover\:bg-gradient-to-l:hover{background-image:linear-gradient(to left,var(--tw-gradient-stops))}.hover\:bg-gradient-to-r:hover{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.hover\:from-cyan-600:hover{--tw-gradient-from: #0891b2 var(--tw-gradient-from-position);--tw-gradient-to: rgb(8 145 178 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-gray-400:hover{--tw-gradient-from: #9CA3AF var(--tw-gradient-from-position);--tw-gradient-to: rgb(156 163 175 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-red-500:hover{--tw-gradient-from: #F05252 var(--tw-gradient-from-position);--tw-gradient-to: rgb(240 82 82 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:to-blue-600:hover{--tw-gradient-to: #1C64F2 var(--tw-gradient-to-position)}.hover\:to-gray-500:hover{--tw-gradient-to: #6B7280 var(--tw-gradient-to-position)}.hover\:to-red-700:hover{--tw-gradient-to: #C81E1E var(--tw-gradient-to-position)}.hover\:fill-red-600:hover{fill:#e02424}.hover\:stroke-red-600:hover{stroke:#e02424}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(28 100 242 / var(--tw-text-opacity))}.hover\:text-blue-800:hover{--tw-text-opacity: 1;color:rgb(30 66 159 / var(--tw-text-opacity))}.hover\:text-gray-400:hover{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-sky-700:hover{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity))}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-black:hover{--tw-shadow-color: #000000;--tw-shadow: var(--tw-shadow-colored)}.focus\:z-10:focus{z-index:10}.focus\:border-blue-300:focus{--tw-border-opacity: 1;border-color:rgb(164 202 254 / var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-4:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-300:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(164 202 254 / var(--tw-ring-opacity))}.focus\:ring-gray-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(229 231 235 / var(--tw-ring-opacity))}.focus\:ring-red-300:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 180 180 / var(--tw-ring-opacity))}.active\:bg-gray-100:active{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.active\:text-gray-500:active{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.active\:text-gray-700:active{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.disabled\:border-gray-200:disabled{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.disabled\:bg-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}:is(.dark .dark\:divide-gray-600)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(75 85 99 / var(--tw-divide-opacity))}:is(.dark .dark\:border-blue-500){--tw-border-opacity: 1;border-color:rgb(63 131 248 / var(--tw-border-opacity))}:is(.dark .dark\:border-gray-600){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}:is(.dark .dark\:border-gray-700){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity))}:is(.dark .dark\:border-transparent){border-color:transparent}:is(.dark .dark\:bg-blue-600){--tw-bg-opacity: 1;background-color:rgb(28 100 242 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-600){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800\/50){background-color:#1f293780}:is(.dark .dark\:bg-red-600){--tw-bg-opacity: 1;background-color:rgb(224 36 36 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-opacity-80){--tw-bg-opacity: .8}:is(.dark .dark\:text-blue-500){--tw-text-opacity: 1;color:rgb(63 131 248 / var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}:is(.dark .dark\:text-gray-400){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}:is(.dark .dark\:hover\:bg-blue-700:hover){--tw-bg-opacity: 1;background-color:rgb(26 86 219 / var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-gray-600:hover){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-gray-800:hover){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-red-700:hover){--tw-bg-opacity: 1;background-color:rgb(200 30 30 / var(--tw-bg-opacity))}:is(.dark .dark\:hover\:text-blue-500:hover){--tw-text-opacity: 1;color:rgb(63 131 248 / var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-300:hover){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-white:hover){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}:is(.dark .dark\:focus\:ring-red-800:focus){--tw-ring-opacity: 1;--tw-ring-color: rgb(155 28 28 / var(--tw-ring-opacity))}@media (min-width: 640px){.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:flex-1{flex:1 1 0%}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}}@media (min-width: 768px){.md\:inset-0{inset:0px}.md\:flex{display:flex}.md\:w-4\/12{width:33.333333%}.md\:w-6\/12{width:50%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:items-center{align-items:center}.md\:gap-4{gap:1rem}}@media (min-width: 1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width: 1280px){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (min-width: 1536px){.\32xl\:w-96{width:24rem}} diff --git a/public/build/assets/app-94c96da9.js b/public/build/assets/app-94c96da9.js new file mode 100644 index 00000000..0a03e3b0 --- /dev/null +++ b/public/build/assets/app-94c96da9.js @@ -0,0 +1 @@ +var Ge=function(){function i(t,e){e===void 0&&(e=[]),this._eventType=t,this._eventFunctions=e}return i.prototype.init=function(){var t=this;this._eventFunctions.forEach(function(e){typeof window<"u"&&window.addEventListener(t._eventType,e)})},i}(),It=globalThis&&globalThis.__assign||function(){return It=Object.assign||function(i){for(var t,e=1,r=arguments.length;e"u")return!1;var t=D(i).ShadowRoot;return i instanceof t||i instanceof ShadowRoot}function pi(i){var t=i.state;Object.keys(t.elements).forEach(function(e){var r=t.styles[e]||{},n=t.attributes[e]||{},o=t.elements[e];!j(o)||!R(o)||(Object.assign(o.style,r),Object.keys(n).forEach(function(s){var a=n[s];a===!1?o.removeAttribute(s):o.setAttribute(s,a===!0?"":a)}))})}function hi(i){var t=i.state,e={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,e.popper),t.styles=e,t.elements.arrow&&Object.assign(t.elements.arrow.style,e.arrow),function(){Object.keys(t.elements).forEach(function(r){var n=t.elements[r],o=t.attributes[r]||{},s=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:e[r]),a=s.reduce(function(l,d){return l[d]="",l},{});!j(n)||!R(n)||(Object.assign(n.style,a),Object.keys(o).forEach(function(l){n.removeAttribute(l)}))})}}const vi={name:"applyStyles",enabled:!0,phase:"write",fn:pi,effect:hi,requires:["computeStyles"]};function M(i){return i.split("-")[0]}var tt=Math.max,Bt=Math.min,ot=Math.round;function Xt(){var i=navigator.userAgentData;return i!=null&&i.brands&&Array.isArray(i.brands)?i.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function Ie(){return!/^((?!chrome|android).)*safari/i.test(Xt())}function st(i,t,e){t===void 0&&(t=!1),e===void 0&&(e=!1);var r=i.getBoundingClientRect(),n=1,o=1;t&&j(i)&&(n=i.offsetWidth>0&&ot(r.width)/i.offsetWidth||1,o=i.offsetHeight>0&&ot(r.height)/i.offsetHeight||1);var s=et(i)?D(i):window,a=s.visualViewport,l=!Ie()&&e,d=(r.left+(l&&a?a.offsetLeft:0))/n,c=(r.top+(l&&a?a.offsetTop:0))/o,v=r.width/n,y=r.height/o;return{width:v,height:y,top:c,right:d+v,bottom:c+y,left:d,x:d,y:c}}function Qt(i){var t=st(i),e=i.offsetWidth,r=i.offsetHeight;return Math.abs(t.width-e)<=1&&(e=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:i.offsetLeft,y:i.offsetTop,width:e,height:r}}function De(i,t){var e=t.getRootNode&&t.getRootNode();if(i.contains(t))return!0;if(e&&Jt(e)){var r=t;do{if(r&&i.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function V(i){return D(i).getComputedStyle(i)}function gi(i){return["table","td","th"].indexOf(R(i))>=0}function F(i){return((et(i)?i.ownerDocument:i.document)||window.document).documentElement}function zt(i){return R(i)==="html"?i:i.assignedSlot||i.parentNode||(Jt(i)?i.host:null)||F(i)}function ge(i){return!j(i)||V(i).position==="fixed"?null:i.offsetParent}function mi(i){var t=/firefox/i.test(Xt()),e=/Trident/i.test(Xt());if(e&&j(i)){var r=V(i);if(r.position==="fixed")return null}var n=zt(i);for(Jt(n)&&(n=n.host);j(n)&&["html","body"].indexOf(R(n))<0;){var o=V(n);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||t&&o.willChange==="filter"||t&&o.filter&&o.filter!=="none")return n;n=n.parentNode}return null}function mt(i){for(var t=D(i),e=ge(i);e&&gi(e)&&V(e).position==="static";)e=ge(e);return e&&(R(e)==="html"||R(e)==="body"&&V(e).position==="static")?t:e||mi(i)||t}function Zt(i){return["top","bottom"].indexOf(i)>=0?"x":"y"}function ut(i,t,e){return tt(i,Bt(t,e))}function yi(i,t,e){var r=ut(i,t,e);return r>e?e:r}function je(){return{top:0,right:0,bottom:0,left:0}}function Se(i){return Object.assign({},je(),i)}function Be(i,t){return t.reduce(function(e,r){return e[r]=i,e},{})}var _i=function(t,e){return t=typeof t=="function"?t(Object.assign({},e.rects,{placement:e.placement})):t,Se(typeof t!="number"?t:Be(t,gt))};function bi(i){var t,e=i.state,r=i.name,n=i.options,o=e.elements.arrow,s=e.modifiersData.popperOffsets,a=M(e.placement),l=Zt(a),d=[P,B].indexOf(a)>=0,c=d?"height":"width";if(!(!o||!s)){var v=_i(n.padding,e),y=Qt(o),u=l==="y"?C:P,b=l==="y"?S:B,h=e.rects.reference[c]+e.rects.reference[l]-s[l]-e.rects.popper[c],p=s[l]-e.rects.reference[l],_=mt(o),E=_?l==="y"?_.clientHeight||0:_.clientWidth||0:0,L=h/2-p/2,f=v[u],g=E-y[c]-v[b],m=E/2-y[c]/2+L,w=ut(f,m,g),x=l;e.modifiersData[r]=(t={},t[x]=w,t.centerOffset=w-m,t)}}function wi(i){var t=i.state,e=i.options,r=e.element,n=r===void 0?"[data-popper-arrow]":r;n!=null&&(typeof n=="string"&&(n=t.elements.popper.querySelector(n),!n)||De(t.elements.popper,n)&&(t.elements.arrow=n))}const Ei={name:"arrow",enabled:!0,phase:"main",fn:bi,effect:wi,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function at(i){return i.split("-")[1]}var Li={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ai(i,t){var e=i.x,r=i.y,n=t.devicePixelRatio||1;return{x:ot(e*n)/n||0,y:ot(r*n)/n||0}}function me(i){var t,e=i.popper,r=i.popperRect,n=i.placement,o=i.variation,s=i.offsets,a=i.position,l=i.gpuAcceleration,d=i.adaptive,c=i.roundOffsets,v=i.isFixed,y=s.x,u=y===void 0?0:y,b=s.y,h=b===void 0?0:b,p=typeof c=="function"?c({x:u,y:h}):{x:u,y:h};u=p.x,h=p.y;var _=s.hasOwnProperty("x"),E=s.hasOwnProperty("y"),L=P,f=C,g=window;if(d){var m=mt(e),w="clientHeight",x="clientWidth";if(m===D(e)&&(m=F(e),V(m).position!=="static"&&a==="absolute"&&(w="scrollHeight",x="scrollWidth")),m=m,n===C||(n===P||n===B)&&o===ht){f=S;var O=v&&m===g&&g.visualViewport?g.visualViewport.height:m[w];h-=O-r.height,h*=l?1:-1}if(n===P||(n===C||n===S)&&o===ht){L=B;var A=v&&m===g&&g.visualViewport?g.visualViewport.width:m[x];u-=A-r.width,u*=l?1:-1}}var k=Object.assign({position:a},d&&Li),H=c===!0?Ai({x:u,y:h},D(e)):{x:u,y:h};if(u=H.x,h=H.y,l){var T;return Object.assign({},k,(T={},T[f]=E?"0":"",T[L]=_?"0":"",T.transform=(g.devicePixelRatio||1)<=1?"translate("+u+"px, "+h+"px)":"translate3d("+u+"px, "+h+"px, 0)",T))}return Object.assign({},k,(t={},t[f]=E?h+"px":"",t[L]=_?u+"px":"",t.transform="",t))}function Oi(i){var t=i.state,e=i.options,r=e.gpuAcceleration,n=r===void 0?!0:r,o=e.adaptive,s=o===void 0?!0:o,a=e.roundOffsets,l=a===void 0?!0:a,d={placement:M(t.placement),variation:at(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:n,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,me(Object.assign({},d,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,me(Object.assign({},d,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const xi={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Oi,data:{}};var Lt={passive:!0};function ki(i){var t=i.state,e=i.instance,r=i.options,n=r.scroll,o=n===void 0?!0:n,s=r.resize,a=s===void 0?!0:s,l=D(t.elements.popper),d=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&d.forEach(function(c){c.addEventListener("scroll",e.update,Lt)}),a&&l.addEventListener("resize",e.update,Lt),function(){o&&d.forEach(function(c){c.removeEventListener("scroll",e.update,Lt)}),a&&l.removeEventListener("resize",e.update,Lt)}}const Ti={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:ki,data:{}};var Ci={left:"right",right:"left",bottom:"top",top:"bottom"};function Pt(i){return i.replace(/left|right|bottom|top/g,function(t){return Ci[t]})}var Pi={start:"end",end:"start"};function ye(i){return i.replace(/start|end/g,function(t){return Pi[t]})}function te(i){var t=D(i),e=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:e,scrollTop:r}}function ee(i){return st(F(i)).left+te(i).scrollLeft}function Ii(i,t){var e=D(i),r=F(i),n=e.visualViewport,o=r.clientWidth,s=r.clientHeight,a=0,l=0;if(n){o=n.width,s=n.height;var d=Ie();(d||!d&&t==="fixed")&&(a=n.offsetLeft,l=n.offsetTop)}return{width:o,height:s,x:a+ee(i),y:l}}function Di(i){var t,e=F(i),r=te(i),n=(t=i.ownerDocument)==null?void 0:t.body,o=tt(e.scrollWidth,e.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),s=tt(e.scrollHeight,e.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),a=-r.scrollLeft+ee(i),l=-r.scrollTop;return V(n||e).direction==="rtl"&&(a+=tt(e.clientWidth,n?n.clientWidth:0)-o),{width:o,height:s,x:a,y:l}}function ie(i){var t=V(i),e=t.overflow,r=t.overflowX,n=t.overflowY;return/auto|scroll|overlay|hidden/.test(e+n+r)}function He(i){return["html","body","#document"].indexOf(R(i))>=0?i.ownerDocument.body:j(i)&&ie(i)?i:He(zt(i))}function ft(i,t){var e;t===void 0&&(t=[]);var r=He(i),n=r===((e=i.ownerDocument)==null?void 0:e.body),o=D(r),s=n?[o].concat(o.visualViewport||[],ie(r)?r:[]):r,a=t.concat(s);return n?a:a.concat(ft(zt(s)))}function Yt(i){return Object.assign({},i,{left:i.x,top:i.y,right:i.x+i.width,bottom:i.y+i.height})}function ji(i,t){var e=st(i,!1,t==="fixed");return e.top=e.top+i.clientTop,e.left=e.left+i.clientLeft,e.bottom=e.top+i.clientHeight,e.right=e.left+i.clientWidth,e.width=i.clientWidth,e.height=i.clientHeight,e.x=e.left,e.y=e.top,e}function _e(i,t,e){return t===Ce?Yt(Ii(i,e)):et(t)?ji(t,e):Yt(Di(F(i)))}function Si(i){var t=ft(zt(i)),e=["absolute","fixed"].indexOf(V(i).position)>=0,r=e&&j(i)?mt(i):i;return et(r)?t.filter(function(n){return et(n)&&De(n,r)&&R(n)!=="body"}):[]}function Bi(i,t,e,r){var n=t==="clippingParents"?Si(i):[].concat(t),o=[].concat(n,[e]),s=o[0],a=o.reduce(function(l,d){var c=_e(i,d,r);return l.top=tt(c.top,l.top),l.right=Bt(c.right,l.right),l.bottom=Bt(c.bottom,l.bottom),l.left=tt(c.left,l.left),l},_e(i,s,r));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function qe(i){var t=i.reference,e=i.element,r=i.placement,n=r?M(r):null,o=r?at(r):null,s=t.x+t.width/2-e.width/2,a=t.y+t.height/2-e.height/2,l;switch(n){case C:l={x:s,y:t.y-e.height};break;case S:l={x:s,y:t.y+t.height};break;case B:l={x:t.x+t.width,y:a};break;case P:l={x:t.x-e.width,y:a};break;default:l={x:t.x,y:t.y}}var d=n?Zt(n):null;if(d!=null){var c=d==="y"?"height":"width";switch(o){case nt:l[d]=l[d]-(t[c]/2-e[c]/2);break;case ht:l[d]=l[d]+(t[c]/2-e[c]/2);break}}return l}function vt(i,t){t===void 0&&(t={});var e=t,r=e.placement,n=r===void 0?i.placement:r,o=e.strategy,s=o===void 0?i.strategy:o,a=e.boundary,l=a===void 0?ei:a,d=e.rootBoundary,c=d===void 0?Ce:d,v=e.elementContext,y=v===void 0?dt:v,u=e.altBoundary,b=u===void 0?!1:u,h=e.padding,p=h===void 0?0:h,_=Se(typeof p!="number"?p:Be(p,gt)),E=y===dt?ii:dt,L=i.rects.popper,f=i.elements[b?E:y],g=Bi(et(f)?f:f.contextElement||F(i.elements.popper),l,c,s),m=st(i.elements.reference),w=qe({reference:m,element:L,strategy:"absolute",placement:n}),x=Yt(Object.assign({},L,w)),O=y===dt?x:m,A={top:g.top-O.top+_.top,bottom:O.bottom-g.bottom+_.bottom,left:g.left-O.left+_.left,right:O.right-g.right+_.right},k=i.modifiersData.offset;if(y===dt&&k){var H=k[n];Object.keys(A).forEach(function(T){var X=[B,S].indexOf(T)>=0?1:-1,Y=[C,S].indexOf(T)>=0?"y":"x";A[T]+=H[Y]*X})}return A}function Hi(i,t){t===void 0&&(t={});var e=t,r=e.placement,n=e.boundary,o=e.rootBoundary,s=e.padding,a=e.flipVariations,l=e.allowedAutoPlacements,d=l===void 0?Pe:l,c=at(r),v=c?a?ve:ve.filter(function(b){return at(b)===c}):gt,y=v.filter(function(b){return d.indexOf(b)>=0});y.length===0&&(y=v);var u=y.reduce(function(b,h){return b[h]=vt(i,{placement:h,boundary:n,rootBoundary:o,padding:s})[M(h)],b},{});return Object.keys(u).sort(function(b,h){return u[b]-u[h]})}function qi(i){if(M(i)===Gt)return[];var t=Pt(i);return[ye(i),t,ye(t)]}function Mi(i){var t=i.state,e=i.options,r=i.name;if(!t.modifiersData[r]._skip){for(var n=e.mainAxis,o=n===void 0?!0:n,s=e.altAxis,a=s===void 0?!0:s,l=e.fallbackPlacements,d=e.padding,c=e.boundary,v=e.rootBoundary,y=e.altBoundary,u=e.flipVariations,b=u===void 0?!0:u,h=e.allowedAutoPlacements,p=t.options.placement,_=M(p),E=_===p,L=l||(E||!b?[Pt(p)]:qi(p)),f=[p].concat(L).reduce(function(it,z){return it.concat(M(z)===Gt?Hi(t,{placement:z,boundary:c,rootBoundary:v,padding:d,flipVariations:b,allowedAutoPlacements:h}):z)},[]),g=t.rects.reference,m=t.rects.popper,w=new Map,x=!0,O=f[0],A=0;A=0,Y=X?"width":"height",I=vt(t,{placement:k,boundary:c,rootBoundary:v,altBoundary:y,padding:d}),q=X?T?B:P:T?S:C;g[Y]>m[Y]&&(q=Pt(q));var yt=Pt(q),K=[];if(o&&K.push(I[H]<=0),a&&K.push(I[q]<=0,I[yt]<=0),K.every(function(it){return it})){O=k,x=!1;break}w.set(k,K)}if(x)for(var _t=b?3:1,Wt=function(z){var ct=f.find(function(wt){var U=w.get(wt);if(U)return U.slice(0,z).every(function($t){return $t})});if(ct)return O=ct,"break"},lt=_t;lt>0;lt--){var bt=Wt(lt);if(bt==="break")break}t.placement!==O&&(t.modifiersData[r]._skip=!0,t.placement=O,t.reset=!0)}}const Ri={name:"flip",enabled:!0,phase:"main",fn:Mi,requiresIfExists:["offset"],data:{_skip:!1}};function be(i,t,e){return e===void 0&&(e={x:0,y:0}),{top:i.top-t.height-e.y,right:i.right-t.width+e.x,bottom:i.bottom-t.height+e.y,left:i.left-t.width-e.x}}function we(i){return[C,B,S,P].some(function(t){return i[t]>=0})}function Vi(i){var t=i.state,e=i.name,r=t.rects.reference,n=t.rects.popper,o=t.modifiersData.preventOverflow,s=vt(t,{elementContext:"reference"}),a=vt(t,{altBoundary:!0}),l=be(s,r),d=be(a,n,o),c=we(l),v=we(d);t.modifiersData[e]={referenceClippingOffsets:l,popperEscapeOffsets:d,isReferenceHidden:c,hasPopperEscaped:v},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":v})}const zi={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Vi};function Wi(i,t,e){var r=M(i),n=[P,C].indexOf(r)>=0?-1:1,o=typeof e=="function"?e(Object.assign({},t,{placement:i})):e,s=o[0],a=o[1];return s=s||0,a=(a||0)*n,[P,B].indexOf(r)>=0?{x:a,y:s}:{x:s,y:a}}function $i(i){var t=i.state,e=i.options,r=i.name,n=e.offset,o=n===void 0?[0,0]:n,s=Pe.reduce(function(c,v){return c[v]=Wi(v,t.rects,o),c},{}),a=s[t.placement],l=a.x,d=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=d),t.modifiersData[r]=s}const Ni={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:$i};function Fi(i){var t=i.state,e=i.name;t.modifiersData[e]=qe({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const Xi={name:"popperOffsets",enabled:!0,phase:"read",fn:Fi,data:{}};function Yi(i){return i==="x"?"y":"x"}function Ki(i){var t=i.state,e=i.options,r=i.name,n=e.mainAxis,o=n===void 0?!0:n,s=e.altAxis,a=s===void 0?!1:s,l=e.boundary,d=e.rootBoundary,c=e.altBoundary,v=e.padding,y=e.tether,u=y===void 0?!0:y,b=e.tetherOffset,h=b===void 0?0:b,p=vt(t,{boundary:l,rootBoundary:d,padding:v,altBoundary:c}),_=M(t.placement),E=at(t.placement),L=!E,f=Zt(_),g=Yi(f),m=t.modifiersData.popperOffsets,w=t.rects.reference,x=t.rects.popper,O=typeof h=="function"?h(Object.assign({},t.rects,{placement:t.placement})):h,A=typeof O=="number"?{mainAxis:O,altAxis:O}:Object.assign({mainAxis:0,altAxis:0},O),k=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,H={x:0,y:0};if(m){if(o){var T,X=f==="y"?C:P,Y=f==="y"?S:B,I=f==="y"?"height":"width",q=m[f],yt=q+p[X],K=q-p[Y],_t=u?-x[I]/2:0,Wt=E===nt?w[I]:x[I],lt=E===nt?-x[I]:-w[I],bt=t.elements.arrow,it=u&&bt?Qt(bt):{width:0,height:0},z=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:je(),ct=z[X],wt=z[Y],U=ut(0,w[I],it[I]),$t=L?w[I]/2-_t-U-ct-A.mainAxis:Wt-U-ct-A.mainAxis,Ne=L?-w[I]/2+_t+U+wt+A.mainAxis:lt+U+wt+A.mainAxis,Nt=t.elements.arrow&&mt(t.elements.arrow),Fe=Nt?f==="y"?Nt.clientTop||0:Nt.clientLeft||0:0,ne=(T=k==null?void 0:k[f])!=null?T:0,Xe=q+$t-ne-Fe,Ye=q+Ne-ne,oe=ut(u?Bt(yt,Xe):yt,q,u?tt(K,Ye):K);m[f]=oe,H[f]=oe-q}if(a){var se,Ke=f==="x"?C:P,Ue=f==="x"?S:B,G=m[g],Et=g==="y"?"height":"width",ae=G+p[Ke],le=G-p[Ue],Ft=[C,P].indexOf(_)!==-1,ce=(se=k==null?void 0:k[g])!=null?se:0,de=Ft?ae:G-w[Et]-x[Et]-ce+A.altAxis,ue=Ft?G+w[Et]+x[Et]-ce-A.altAxis:le,fe=u&&Ft?yi(de,G,ue):ut(u?de:ae,G,u?ue:le);m[g]=fe,H[g]=fe-G}t.modifiersData[r]=H}}const Ui={name:"preventOverflow",enabled:!0,phase:"main",fn:Ki,requiresIfExists:["offset"]};function Gi(i){return{scrollLeft:i.scrollLeft,scrollTop:i.scrollTop}}function Ji(i){return i===D(i)||!j(i)?te(i):Gi(i)}function Qi(i){var t=i.getBoundingClientRect(),e=ot(t.width)/i.offsetWidth||1,r=ot(t.height)/i.offsetHeight||1;return e!==1||r!==1}function Zi(i,t,e){e===void 0&&(e=!1);var r=j(t),n=j(t)&&Qi(t),o=F(t),s=st(i,n,e),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!e)&&((R(t)!=="body"||ie(o))&&(a=Ji(t)),j(t)?(l=st(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=ee(o))),{x:s.left+a.scrollLeft-l.x,y:s.top+a.scrollTop-l.y,width:s.width,height:s.height}}function tr(i){var t=new Map,e=new Set,r=[];i.forEach(function(o){t.set(o.name,o)});function n(o){e.add(o.name);var s=[].concat(o.requires||[],o.requiresIfExists||[]);s.forEach(function(a){if(!e.has(a)){var l=t.get(a);l&&n(l)}}),r.push(o)}return i.forEach(function(o){e.has(o.name)||n(o)}),r}function er(i){var t=tr(i);return fi.reduce(function(e,r){return e.concat(t.filter(function(n){return n.phase===r}))},[])}function ir(i){var t;return function(){return t||(t=new Promise(function(e){Promise.resolve().then(function(){t=void 0,e(i())})})),t}}function rr(i){var t=i.reduce(function(e,r){var n=e[r.name];return e[r.name]=n?Object.assign({},n,r,{options:Object.assign({},n.options,r.options),data:Object.assign({},n.data,r.data)}):r,e},{});return Object.keys(t).map(function(e){return t[e]})}var Ee={placement:"bottom",modifiers:[],strategy:"absolute"};function Le(){for(var i=arguments.length,t=new Array(i),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 Ge)=x~O9rX{ literal 0 HcmV?d00001 diff --git a/public/build/assets/fa-brands-400-74833209.woff2 b/public/build/assets/fa-brands-400-74833209.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..71e31852689289b8d7b94ce0541953df40f76500 GIT binary patch literal 108020 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 literal 0 HcmV?d00001 diff --git a/public/build/assets/fa-regular-400-8e7e5ea1.woff2 b/public/build/assets/fa-regular-400-8e7e5ea1.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7f021680b9f71711d5029c2199c42b131bb2cc5c GIT binary patch literal 24948 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 literal 0 HcmV?d00001 diff --git a/public/build/assets/fa-solid-900-7152a693.woff2 b/public/build/assets/fa-solid-900-7152a693.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5c16cd3e8a008bdcbed97022c005278971f810c2 GIT binary patch literal 150124 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

    gcuh(yM)5x$wXlMQz` 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 DW9(%e literal 0 HcmV?d00001 diff --git a/public/build/assets/fa-v4compatibility-0515a423.ttf b/public/build/assets/fa-v4compatibility-0515a423.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ab6ae22482929b542e5e73060736e9687a97acfd GIT binary patch literal 10172 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 OATL4XY${dQ=Kle}q)K!E literal 0 HcmV?d00001 diff --git a/public/build/assets/fa-v4compatibility-694a17c3.woff2 b/public/build/assets/fa-v4compatibility-694a17c3.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9027e38bcd1a01fe6207346ad5d1d9473f1ac5f0 GIT binary patch literal 4564 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 literal 0 HcmV?d00001 diff --git a/public/build/manifest.json b/public/build/manifest.json new file mode 100644 index 00000000..d8f350c9 --- /dev/null +++ b/public/build/manifest.json @@ -0,0 +1,44 @@ +{ + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf": { + "file": "assets/fa-brands-400-20c4a58b.ttf", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2": { + "file": "assets/fa-brands-400-74833209.woff2", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf": { + "file": "assets/fa-regular-400-528d022d.ttf", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2": { + "file": "assets/fa-regular-400-8e7e5ea1.woff2", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf": { + "file": "assets/fa-solid-900-67a65763.ttf", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2": { + "file": "assets/fa-solid-900-7152a693.woff2", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf": { + "file": "assets/fa-v4compatibility-0515a423.ttf", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2": { + "file": "assets/fa-v4compatibility-694a17c3.woff2", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2" + }, + "resources/css/app.css": { + "file": "assets/app-4b1c64a9.css", + "isEntry": true, + "src": "resources/css/app.css" + }, + "resources/js/app.js": { + "file": "assets/app-94c96da9.js", + "isEntry": true, + "src": "resources/js/app.js" + } +} \ No newline at end of file diff --git a/public/hot b/public/hot deleted file mode 100644 index f762bcfc..00000000 --- a/public/hot +++ /dev/null @@ -1 +0,0 @@ -http://[::1]:5173 \ No newline at end of file diff --git a/public/index.html b/public/index.html new file mode 100644 index 00000000..a839d050 --- /dev/null +++ b/public/index.html @@ -0,0 +1,89 @@ + + + + + + Welcome to Firebase Hosting + + + + + + + + + + + + + + + + + + + +

    +

    Firebase SDK Loading…

    + + + + diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 7f4df6f8..9b794d4c 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -50,4 +50,5 @@ -@endsection \ No newline at end of file +@endsection + diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index cba83db2..687b57b1 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -11,7 +11,6 @@ 'App\\Http\\Controllers\\BookController' => $baseDir . '/app/Http/Controllers/BookController.php', 'App\\Http\\Controllers\\Controller' => $baseDir . '/app/Http/Controllers/Controller.php', 'App\\Http\\Controllers\\HomeController' => $baseDir . '/app/Http/Controllers/HomeController.php', - 'App\\Http\\Controllers\\ImageController' => $baseDir . '/app/Http/Controllers/ImageController.php', 'App\\Http\\Controllers\\LibValorationController' => $baseDir . '/app/Http/Controllers/LibValorationController.php', 'App\\Http\\Controllers\\LibraryController' => $baseDir . '/app/Http/Controllers/LibraryController.php', 'App\\Http\\Controllers\\LoanController' => $baseDir . '/app/Http/Controllers/LoanController.php', @@ -866,8 +865,227 @@ 'Faker\\Provider\\zh_TW\\Text' => $vendorDir . '/fakerphp/faker/src/Faker/Provider/zh_TW/Text.php', 'Faker\\UniqueGenerator' => $vendorDir . '/fakerphp/faker/src/Faker/UniqueGenerator.php', 'Faker\\ValidGenerator' => $vendorDir . '/fakerphp/faker/src/Faker/ValidGenerator.php', + 'Fig\\Http\\Message\\RequestMethodInterface' => $vendorDir . '/fig/http-message-util/src/RequestMethodInterface.php', + 'Fig\\Http\\Message\\StatusCodeInterface' => $vendorDir . '/fig/http-message-util/src/StatusCodeInterface.php', + 'Firebase\\Auth\\Token\\Cache\\InMemoryCache' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Cache/InMemoryCache.php', + 'Firebase\\Auth\\Token\\ConvertsDates' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/ConvertsDates.php', + 'Firebase\\Auth\\Token\\Domain\\Generator' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Domain/Generator.php', + 'Firebase\\Auth\\Token\\Domain\\KeyStore' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Domain/KeyStore.php', + 'Firebase\\Auth\\Token\\Domain\\Verifier' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Domain/Verifier.php', + 'Firebase\\Auth\\Token\\Exception\\ExpiredToken' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Exception/ExpiredToken.php', + 'Firebase\\Auth\\Token\\Exception\\InvalidSignature' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Exception/InvalidSignature.php', + 'Firebase\\Auth\\Token\\Exception\\InvalidToken' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Exception/InvalidToken.php', + 'Firebase\\Auth\\Token\\Exception\\IssuedInTheFuture' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Exception/IssuedInTheFuture.php', + 'Firebase\\Auth\\Token\\Exception\\UnknownKey' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Exception/UnknownKey.php', + 'Firebase\\Auth\\Token\\Generator' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Generator.php', + 'Firebase\\Auth\\Token\\Handler' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Handler.php', + 'Firebase\\Auth\\Token\\HttpKeyStore' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/HttpKeyStore.php', + 'Firebase\\Auth\\Token\\TenantAwareGenerator' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/TenantAwareGenerator.php', + 'Firebase\\Auth\\Token\\TenantAwareVerifier' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/TenantAwareVerifier.php', + 'Firebase\\Auth\\Token\\Verifier' => $vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Verifier.php', + 'Firebase\\JWT\\BeforeValidException' => $vendorDir . '/firebase/php-jwt/src/BeforeValidException.php', + 'Firebase\\JWT\\CachedKeySet' => $vendorDir . '/firebase/php-jwt/src/CachedKeySet.php', + 'Firebase\\JWT\\ExpiredException' => $vendorDir . '/firebase/php-jwt/src/ExpiredException.php', + 'Firebase\\JWT\\JWK' => $vendorDir . '/firebase/php-jwt/src/JWK.php', + 'Firebase\\JWT\\JWT' => $vendorDir . '/firebase/php-jwt/src/JWT.php', + 'Firebase\\JWT\\Key' => $vendorDir . '/firebase/php-jwt/src/Key.php', + 'Firebase\\JWT\\SignatureInvalidException' => $vendorDir . '/firebase/php-jwt/src/SignatureInvalidException.php', 'Fruitcake\\Cors\\CorsService' => $vendorDir . '/fruitcake/php-cors/src/CorsService.php', 'Fruitcake\\Cors\\Exceptions\\InvalidOptionException' => $vendorDir . '/fruitcake/php-cors/src/Exceptions/InvalidOptionException.php', + 'Google\\Auth\\AccessToken' => $vendorDir . '/google/auth/src/AccessToken.php', + 'Google\\Auth\\ApplicationDefaultCredentials' => $vendorDir . '/google/auth/src/ApplicationDefaultCredentials.php', + 'Google\\Auth\\CacheTrait' => $vendorDir . '/google/auth/src/CacheTrait.php', + 'Google\\Auth\\Cache\\InvalidArgumentException' => $vendorDir . '/google/auth/src/Cache/InvalidArgumentException.php', + 'Google\\Auth\\Cache\\Item' => $vendorDir . '/google/auth/src/Cache/Item.php', + 'Google\\Auth\\Cache\\MemoryCacheItemPool' => $vendorDir . '/google/auth/src/Cache/MemoryCacheItemPool.php', + 'Google\\Auth\\Cache\\SysVCacheItemPool' => $vendorDir . '/google/auth/src/Cache/SysVCacheItemPool.php', + 'Google\\Auth\\Cache\\TypedItem' => $vendorDir . '/google/auth/src/Cache/TypedItem.php', + 'Google\\Auth\\CredentialsLoader' => $vendorDir . '/google/auth/src/CredentialsLoader.php', + 'Google\\Auth\\Credentials\\AppIdentityCredentials' => $vendorDir . '/google/auth/src/Credentials/AppIdentityCredentials.php', + 'Google\\Auth\\Credentials\\GCECredentials' => $vendorDir . '/google/auth/src/Credentials/GCECredentials.php', + 'Google\\Auth\\Credentials\\IAMCredentials' => $vendorDir . '/google/auth/src/Credentials/IAMCredentials.php', + 'Google\\Auth\\Credentials\\ImpersonatedServiceAccountCredentials' => $vendorDir . '/google/auth/src/Credentials/ImpersonatedServiceAccountCredentials.php', + 'Google\\Auth\\Credentials\\InsecureCredentials' => $vendorDir . '/google/auth/src/Credentials/InsecureCredentials.php', + 'Google\\Auth\\Credentials\\ServiceAccountCredentials' => $vendorDir . '/google/auth/src/Credentials/ServiceAccountCredentials.php', + 'Google\\Auth\\Credentials\\ServiceAccountJwtAccessCredentials' => $vendorDir . '/google/auth/src/Credentials/ServiceAccountJwtAccessCredentials.php', + 'Google\\Auth\\Credentials\\UserRefreshCredentials' => $vendorDir . '/google/auth/src/Credentials/UserRefreshCredentials.php', + 'Google\\Auth\\FetchAuthTokenCache' => $vendorDir . '/google/auth/src/FetchAuthTokenCache.php', + 'Google\\Auth\\FetchAuthTokenInterface' => $vendorDir . '/google/auth/src/FetchAuthTokenInterface.php', + 'Google\\Auth\\GCECache' => $vendorDir . '/google/auth/src/GCECache.php', + 'Google\\Auth\\GetQuotaProjectInterface' => $vendorDir . '/google/auth/src/GetQuotaProjectInterface.php', + 'Google\\Auth\\HttpHandler\\Guzzle6HttpHandler' => $vendorDir . '/google/auth/src/HttpHandler/Guzzle6HttpHandler.php', + 'Google\\Auth\\HttpHandler\\Guzzle7HttpHandler' => $vendorDir . '/google/auth/src/HttpHandler/Guzzle7HttpHandler.php', + 'Google\\Auth\\HttpHandler\\HttpClientCache' => $vendorDir . '/google/auth/src/HttpHandler/HttpClientCache.php', + 'Google\\Auth\\HttpHandler\\HttpHandlerFactory' => $vendorDir . '/google/auth/src/HttpHandler/HttpHandlerFactory.php', + 'Google\\Auth\\Iam' => $vendorDir . '/google/auth/src/Iam.php', + 'Google\\Auth\\IamSignerTrait' => $vendorDir . '/google/auth/src/IamSignerTrait.php', + 'Google\\Auth\\Middleware\\AuthTokenMiddleware' => $vendorDir . '/google/auth/src/Middleware/AuthTokenMiddleware.php', + 'Google\\Auth\\Middleware\\ProxyAuthTokenMiddleware' => $vendorDir . '/google/auth/src/Middleware/ProxyAuthTokenMiddleware.php', + 'Google\\Auth\\Middleware\\ScopedAccessTokenMiddleware' => $vendorDir . '/google/auth/src/Middleware/ScopedAccessTokenMiddleware.php', + 'Google\\Auth\\Middleware\\SimpleMiddleware' => $vendorDir . '/google/auth/src/Middleware/SimpleMiddleware.php', + 'Google\\Auth\\OAuth2' => $vendorDir . '/google/auth/src/OAuth2.php', + 'Google\\Auth\\ProjectIdProviderInterface' => $vendorDir . '/google/auth/src/ProjectIdProviderInterface.php', + 'Google\\Auth\\ServiceAccountSignerTrait' => $vendorDir . '/google/auth/src/ServiceAccountSignerTrait.php', + 'Google\\Auth\\SignBlobInterface' => $vendorDir . '/google/auth/src/SignBlobInterface.php', + 'Google\\Auth\\UpdateMetadataInterface' => $vendorDir . '/google/auth/src/UpdateMetadataInterface.php', + 'Google\\CRC32\\Builtin' => $vendorDir . '/google/crc32/src/Builtin.php', + 'Google\\CRC32\\CRC32' => $vendorDir . '/google/crc32/src/CRC32.php', + 'Google\\CRC32\\CRCInterface' => $vendorDir . '/google/crc32/src/CRCInterface.php', + 'Google\\CRC32\\CRCTrait' => $vendorDir . '/google/crc32/src/CRCTrait.php', + 'Google\\CRC32\\Google' => $vendorDir . '/google/crc32/src/Google.php', + 'Google\\CRC32\\PHP' => $vendorDir . '/google/crc32/src/PHP.php', + 'Google\\CRC32\\PHPSlicedBy4' => $vendorDir . '/google/crc32/src/PHPSlicedBy4.php', + 'Google\\CRC32\\Table' => $vendorDir . '/google/crc32/src/Table.php', + 'Google\\Cloud\\Core\\AnonymousCredentials' => $vendorDir . '/google/cloud-core/src/AnonymousCredentials.php', + 'Google\\Cloud\\Core\\ArrayTrait' => $vendorDir . '/google/cloud-core/src/ArrayTrait.php', + 'Google\\Cloud\\Core\\Batch\\BatchDaemon' => $vendorDir . '/google/cloud-core/src/Batch/BatchDaemon.php', + 'Google\\Cloud\\Core\\Batch\\BatchDaemonTrait' => $vendorDir . '/google/cloud-core/src/Batch/BatchDaemonTrait.php', + 'Google\\Cloud\\Core\\Batch\\BatchJob' => $vendorDir . '/google/cloud-core/src/Batch/BatchJob.php', + 'Google\\Cloud\\Core\\Batch\\BatchRunner' => $vendorDir . '/google/cloud-core/src/Batch/BatchRunner.php', + 'Google\\Cloud\\Core\\Batch\\BatchTrait' => $vendorDir . '/google/cloud-core/src/Batch/BatchTrait.php', + 'Google\\Cloud\\Core\\Batch\\ClosureSerializerInterface' => $vendorDir . '/google/cloud-core/src/Batch/ClosureSerializerInterface.php', + 'Google\\Cloud\\Core\\Batch\\ConfigStorageInterface' => $vendorDir . '/google/cloud-core/src/Batch/ConfigStorageInterface.php', + 'Google\\Cloud\\Core\\Batch\\HandleFailureTrait' => $vendorDir . '/google/cloud-core/src/Batch/HandleFailureTrait.php', + 'Google\\Cloud\\Core\\Batch\\InMemoryConfigStorage' => $vendorDir . '/google/cloud-core/src/Batch/InMemoryConfigStorage.php', + 'Google\\Cloud\\Core\\Batch\\InterruptTrait' => $vendorDir . '/google/cloud-core/src/Batch/InterruptTrait.php', + 'Google\\Cloud\\Core\\Batch\\JobConfig' => $vendorDir . '/google/cloud-core/src/Batch/JobConfig.php', + 'Google\\Cloud\\Core\\Batch\\JobInterface' => $vendorDir . '/google/cloud-core/src/Batch/JobInterface.php', + 'Google\\Cloud\\Core\\Batch\\JobTrait' => $vendorDir . '/google/cloud-core/src/Batch/JobTrait.php', + 'Google\\Cloud\\Core\\Batch\\OpisClosureSerializer' => $vendorDir . '/google/cloud-core/src/Batch/OpisClosureSerializer.php', + 'Google\\Cloud\\Core\\Batch\\ProcessItemInterface' => $vendorDir . '/google/cloud-core/src/Batch/ProcessItemInterface.php', + 'Google\\Cloud\\Core\\Batch\\QueueOverflowException' => $vendorDir . '/google/cloud-core/src/Batch/QueueOverflowException.php', + 'Google\\Cloud\\Core\\Batch\\Retry' => $vendorDir . '/google/cloud-core/src/Batch/Retry.php', + 'Google\\Cloud\\Core\\Batch\\SerializableClientTrait' => $vendorDir . '/google/cloud-core/src/Batch/SerializableClientTrait.php', + 'Google\\Cloud\\Core\\Batch\\SimpleJob' => $vendorDir . '/google/cloud-core/src/Batch/SimpleJob.php', + 'Google\\Cloud\\Core\\Batch\\SimpleJobTrait' => $vendorDir . '/google/cloud-core/src/Batch/SimpleJobTrait.php', + 'Google\\Cloud\\Core\\Batch\\SysvConfigStorage' => $vendorDir . '/google/cloud-core/src/Batch/SysvConfigStorage.php', + 'Google\\Cloud\\Core\\Batch\\SysvProcessor' => $vendorDir . '/google/cloud-core/src/Batch/SysvProcessor.php', + 'Google\\Cloud\\Core\\Blob' => $vendorDir . '/google/cloud-core/src/Blob.php', + 'Google\\Cloud\\Core\\CallTrait' => $vendorDir . '/google/cloud-core/src/CallTrait.php', + 'Google\\Cloud\\Core\\ClientTrait' => $vendorDir . '/google/cloud-core/src/ClientTrait.php', + 'Google\\Cloud\\Core\\Compute\\Metadata' => $vendorDir . '/google/cloud-core/src/Compute/Metadata.php', + 'Google\\Cloud\\Core\\Compute\\Metadata\\Readers\\HttpHandlerReader' => $vendorDir . '/google/cloud-core/src/Compute/Metadata/Readers/HttpHandlerReader.php', + 'Google\\Cloud\\Core\\Compute\\Metadata\\Readers\\ReaderInterface' => $vendorDir . '/google/cloud-core/src/Compute/Metadata/Readers/ReaderInterface.php', + 'Google\\Cloud\\Core\\Compute\\Metadata\\Readers\\StreamReader' => $vendorDir . '/google/cloud-core/src/Compute/Metadata/Readers/StreamReader.php', + 'Google\\Cloud\\Core\\ConcurrencyControlTrait' => $vendorDir . '/google/cloud-core/src/ConcurrencyControlTrait.php', + 'Google\\Cloud\\Core\\DebugInfoTrait' => $vendorDir . '/google/cloud-core/src/DebugInfoTrait.php', + 'Google\\Cloud\\Core\\Duration' => $vendorDir . '/google/cloud-core/src/Duration.php', + 'Google\\Cloud\\Core\\EmulatorTrait' => $vendorDir . '/google/cloud-core/src/EmulatorTrait.php', + 'Google\\Cloud\\Core\\Exception\\AbortedException' => $vendorDir . '/google/cloud-core/src/Exception/AbortedException.php', + 'Google\\Cloud\\Core\\Exception\\BadRequestException' => $vendorDir . '/google/cloud-core/src/Exception/BadRequestException.php', + 'Google\\Cloud\\Core\\Exception\\ConflictException' => $vendorDir . '/google/cloud-core/src/Exception/ConflictException.php', + 'Google\\Cloud\\Core\\Exception\\DeadlineExceededException' => $vendorDir . '/google/cloud-core/src/Exception/DeadlineExceededException.php', + 'Google\\Cloud\\Core\\Exception\\FailedPreconditionException' => $vendorDir . '/google/cloud-core/src/Exception/FailedPreconditionException.php', + 'Google\\Cloud\\Core\\Exception\\GoogleException' => $vendorDir . '/google/cloud-core/src/Exception/GoogleException.php', + 'Google\\Cloud\\Core\\Exception\\NotFoundException' => $vendorDir . '/google/cloud-core/src/Exception/NotFoundException.php', + 'Google\\Cloud\\Core\\Exception\\ServerException' => $vendorDir . '/google/cloud-core/src/Exception/ServerException.php', + 'Google\\Cloud\\Core\\Exception\\ServiceException' => $vendorDir . '/google/cloud-core/src/Exception/ServiceException.php', + 'Google\\Cloud\\Core\\ExponentialBackoff' => $vendorDir . '/google/cloud-core/src/ExponentialBackoff.php', + 'Google\\Cloud\\Core\\GeoPoint' => $vendorDir . '/google/cloud-core/src/GeoPoint.php', + 'Google\\Cloud\\Core\\GrpcRequestWrapper' => $vendorDir . '/google/cloud-core/src/GrpcRequestWrapper.php', + 'Google\\Cloud\\Core\\GrpcTrait' => $vendorDir . '/google/cloud-core/src/GrpcTrait.php', + 'Google\\Cloud\\Core\\Iam\\Iam' => $vendorDir . '/google/cloud-core/src/Iam/Iam.php', + 'Google\\Cloud\\Core\\Iam\\IamConnectionInterface' => $vendorDir . '/google/cloud-core/src/Iam/IamConnectionInterface.php', + 'Google\\Cloud\\Core\\Iam\\PolicyBuilder' => $vendorDir . '/google/cloud-core/src/Iam/PolicyBuilder.php', + 'Google\\Cloud\\Core\\InsecureCredentialsWrapper' => $vendorDir . '/google/cloud-core/src/InsecureCredentialsWrapper.php', + 'Google\\Cloud\\Core\\Int64' => $vendorDir . '/google/cloud-core/src/Int64.php', + 'Google\\Cloud\\Core\\Iterator\\ItemIterator' => $vendorDir . '/google/cloud-core/src/Iterator/ItemIterator.php', + 'Google\\Cloud\\Core\\Iterator\\ItemIteratorTrait' => $vendorDir . '/google/cloud-core/src/Iterator/ItemIteratorTrait.php', + 'Google\\Cloud\\Core\\Iterator\\PageIterator' => $vendorDir . '/google/cloud-core/src/Iterator/PageIterator.php', + 'Google\\Cloud\\Core\\Iterator\\PageIteratorTrait' => $vendorDir . '/google/cloud-core/src/Iterator/PageIteratorTrait.php', + 'Google\\Cloud\\Core\\JsonTrait' => $vendorDir . '/google/cloud-core/src/JsonTrait.php', + 'Google\\Cloud\\Core\\Lock\\FlockLock' => $vendorDir . '/google/cloud-core/src/Lock/FlockLock.php', + 'Google\\Cloud\\Core\\Lock\\LockInterface' => $vendorDir . '/google/cloud-core/src/Lock/LockInterface.php', + 'Google\\Cloud\\Core\\Lock\\LockTrait' => $vendorDir . '/google/cloud-core/src/Lock/LockTrait.php', + 'Google\\Cloud\\Core\\Lock\\SemaphoreLock' => $vendorDir . '/google/cloud-core/src/Lock/SemaphoreLock.php', + 'Google\\Cloud\\Core\\Lock\\SymfonyLockAdapter' => $vendorDir . '/google/cloud-core/src/Lock/SymfonyLockAdapter.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexFormatter' => $vendorDir . '/google/cloud-core/src/Logger/AppEngineFlexFormatter.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexFormatterV2' => $vendorDir . '/google/cloud-core/src/Logger/AppEngineFlexFormatterV2.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexFormatterV3' => $vendorDir . '/google/cloud-core/src/Logger/AppEngineFlexFormatterV3.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexHandler' => $vendorDir . '/google/cloud-core/src/Logger/AppEngineFlexHandler.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexHandlerFactory' => $vendorDir . '/google/cloud-core/src/Logger/AppEngineFlexHandlerFactory.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexHandlerV2' => $vendorDir . '/google/cloud-core/src/Logger/AppEngineFlexHandlerV2.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexHandlerV3' => $vendorDir . '/google/cloud-core/src/Logger/AppEngineFlexHandlerV3.php', + 'Google\\Cloud\\Core\\Logger\\FormatterTrait' => $vendorDir . '/google/cloud-core/src/Logger/FormatterTrait.php', + 'Google\\Cloud\\Core\\LongRunning\\LROTrait' => $vendorDir . '/google/cloud-core/src/LongRunning/LROTrait.php', + 'Google\\Cloud\\Core\\LongRunning\\LongRunningConnectionInterface' => $vendorDir . '/google/cloud-core/src/LongRunning/LongRunningConnectionInterface.php', + 'Google\\Cloud\\Core\\LongRunning\\LongRunningOperation' => $vendorDir . '/google/cloud-core/src/LongRunning/LongRunningOperation.php', + 'Google\\Cloud\\Core\\LongRunning\\OperationResponseTrait' => $vendorDir . '/google/cloud-core/src/LongRunning/OperationResponseTrait.php', + 'Google\\Cloud\\Core\\PhpArray' => $vendorDir . '/google/cloud-core/src/PhpArray.php', + 'Google\\Cloud\\Core\\Report\\CloudRunMetadataProvider' => $vendorDir . '/google/cloud-core/src/Report/CloudRunMetadataProvider.php', + 'Google\\Cloud\\Core\\Report\\EmptyMetadataProvider' => $vendorDir . '/google/cloud-core/src/Report/EmptyMetadataProvider.php', + 'Google\\Cloud\\Core\\Report\\GAEFlexMetadataProvider' => $vendorDir . '/google/cloud-core/src/Report/GAEFlexMetadataProvider.php', + 'Google\\Cloud\\Core\\Report\\GAEMetadataProvider' => $vendorDir . '/google/cloud-core/src/Report/GAEMetadataProvider.php', + 'Google\\Cloud\\Core\\Report\\GAEStandardMetadataProvider' => $vendorDir . '/google/cloud-core/src/Report/GAEStandardMetadataProvider.php', + 'Google\\Cloud\\Core\\Report\\MetadataProviderInterface' => $vendorDir . '/google/cloud-core/src/Report/MetadataProviderInterface.php', + 'Google\\Cloud\\Core\\Report\\MetadataProviderUtils' => $vendorDir . '/google/cloud-core/src/Report/MetadataProviderUtils.php', + 'Google\\Cloud\\Core\\Report\\SimpleMetadataProvider' => $vendorDir . '/google/cloud-core/src/Report/SimpleMetadataProvider.php', + 'Google\\Cloud\\Core\\RequestBuilder' => $vendorDir . '/google/cloud-core/src/RequestBuilder.php', + 'Google\\Cloud\\Core\\RequestWrapper' => $vendorDir . '/google/cloud-core/src/RequestWrapper.php', + 'Google\\Cloud\\Core\\RequestWrapperTrait' => $vendorDir . '/google/cloud-core/src/RequestWrapperTrait.php', + 'Google\\Cloud\\Core\\RestTrait' => $vendorDir . '/google/cloud-core/src/RestTrait.php', + 'Google\\Cloud\\Core\\Retry' => $vendorDir . '/google/cloud-core/src/Retry.php', + 'Google\\Cloud\\Core\\RetryDeciderTrait' => $vendorDir . '/google/cloud-core/src/RetryDeciderTrait.php', + 'Google\\Cloud\\Core\\ServiceBuilder' => $vendorDir . '/google/cloud-core/src/ServiceBuilder.php', + 'Google\\Cloud\\Core\\SysvTrait' => $vendorDir . '/google/cloud-core/src/SysvTrait.php', + 'Google\\Cloud\\Core\\Testing\\ArrayHasSameValuesToken' => $vendorDir . '/google/cloud-core/src/Testing/ArrayHasSameValuesToken.php', + 'Google\\Cloud\\Core\\Testing\\CheckForClassTrait' => $vendorDir . '/google/cloud-core/src/Testing/CheckForClassTrait.php', + 'Google\\Cloud\\Core\\Testing\\DatastoreOperationRefreshTrait' => $vendorDir . '/google/cloud-core/src/Testing/DatastoreOperationRefreshTrait.php', + 'Google\\Cloud\\Core\\Testing\\FileListFilterIterator' => $vendorDir . '/google/cloud-core/src/Testing/FileListFilterIterator.php', + 'Google\\Cloud\\Core\\Testing\\GcTestListener' => $vendorDir . '/google/cloud-core/src/Testing/GcTestListener.php', + 'Google\\Cloud\\Core\\Testing\\GrpcTestTrait' => $vendorDir . '/google/cloud-core/src/Testing/GrpcTestTrait.php', + 'Google\\Cloud\\Core\\Testing\\KeyPairGenerateTrait' => $vendorDir . '/google/cloud-core/src/Testing/KeyPairGenerateTrait.php', + 'Google\\Cloud\\Core\\Testing\\Lock\\MockValues' => $vendorDir . '/google/cloud-core/src/Testing/Lock/MockValues.php', + 'Google\\Cloud\\Core\\Testing\\Reflection\\DescriptionFactory' => $vendorDir . '/google/cloud-core/src/Testing/Reflection/DescriptionFactory.php', + 'Google\\Cloud\\Core\\Testing\\Reflection\\ReflectionHandlerFactory' => $vendorDir . '/google/cloud-core/src/Testing/Reflection/ReflectionHandlerFactory.php', + 'Google\\Cloud\\Core\\Testing\\Reflection\\ReflectionHandlerV5' => $vendorDir . '/google/cloud-core/src/Testing/Reflection/ReflectionHandlerV5.php', + 'Google\\Cloud\\Core\\Testing\\RegexFileFilter' => $vendorDir . '/google/cloud-core/src/Testing/RegexFileFilter.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Container' => $vendorDir . '/google/cloud-core/src/Testing/Snippet/Container.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Coverage\\Coverage' => $vendorDir . '/google/cloud-core/src/Testing/Snippet/Coverage/Coverage.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Coverage\\ExcludeFilter' => $vendorDir . '/google/cloud-core/src/Testing/Snippet/Coverage/ExcludeFilter.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Coverage\\Scanner' => $vendorDir . '/google/cloud-core/src/Testing/Snippet/Coverage/Scanner.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Coverage\\ScannerInterface' => $vendorDir . '/google/cloud-core/src/Testing/Snippet/Coverage/ScannerInterface.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Fixtures' => $vendorDir . '/google/cloud-core/src/Testing/Snippet/Fixtures.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Parser\\InvokeResult' => $vendorDir . '/google/cloud-core/src/Testing/Snippet/Parser/InvokeResult.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Parser\\Parser' => $vendorDir . '/google/cloud-core/src/Testing/Snippet/Parser/Parser.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Parser\\Snippet' => $vendorDir . '/google/cloud-core/src/Testing/Snippet/Parser/Snippet.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\SnippetTestCase' => $vendorDir . '/google/cloud-core/src/Testing/Snippet/SnippetTestCase.php', + 'Google\\Cloud\\Core\\Testing\\StubTrait' => $vendorDir . '/google/cloud-core/src/Testing/StubTrait.php', + 'Google\\Cloud\\Core\\Testing\\System\\DeletionQueue' => $vendorDir . '/google/cloud-core/src/Testing/System/DeletionQueue.php', + 'Google\\Cloud\\Core\\Testing\\System\\KeyManager' => $vendorDir . '/google/cloud-core/src/Testing/System/KeyManager.php', + 'Google\\Cloud\\Core\\Testing\\System\\SystemTestCase' => $vendorDir . '/google/cloud-core/src/Testing/System/SystemTestCase.php', + 'Google\\Cloud\\Core\\Testing\\TestHelpers' => $vendorDir . '/google/cloud-core/src/Testing/TestHelpers.php', + 'Google\\Cloud\\Core\\TimeTrait' => $vendorDir . '/google/cloud-core/src/TimeTrait.php', + 'Google\\Cloud\\Core\\Timestamp' => $vendorDir . '/google/cloud-core/src/Timestamp.php', + 'Google\\Cloud\\Core\\TimestampTrait' => $vendorDir . '/google/cloud-core/src/TimestampTrait.php', + 'Google\\Cloud\\Core\\Upload\\AbstractUploader' => $vendorDir . '/google/cloud-core/src/Upload/AbstractUploader.php', + 'Google\\Cloud\\Core\\Upload\\MultipartUploader' => $vendorDir . '/google/cloud-core/src/Upload/MultipartUploader.php', + 'Google\\Cloud\\Core\\Upload\\ResumableUploader' => $vendorDir . '/google/cloud-core/src/Upload/ResumableUploader.php', + 'Google\\Cloud\\Core\\Upload\\SignedUrlUploader' => $vendorDir . '/google/cloud-core/src/Upload/SignedUrlUploader.php', + 'Google\\Cloud\\Core\\Upload\\StreamableUploader' => $vendorDir . '/google/cloud-core/src/Upload/StreamableUploader.php', + 'Google\\Cloud\\Core\\UriTrait' => $vendorDir . '/google/cloud-core/src/UriTrait.php', + 'Google\\Cloud\\Core\\ValidateTrait' => $vendorDir . '/google/cloud-core/src/ValidateTrait.php', + 'Google\\Cloud\\Core\\ValueMapperTrait' => $vendorDir . '/google/cloud-core/src/ValueMapperTrait.php', + 'Google\\Cloud\\Core\\WhitelistTrait' => $vendorDir . '/google/cloud-core/src/WhitelistTrait.php', + 'Google\\Cloud\\Storage\\Acl' => $vendorDir . '/google/cloud-storage/src/Acl.php', + 'Google\\Cloud\\Storage\\Bucket' => $vendorDir . '/google/cloud-storage/src/Bucket.php', + 'Google\\Cloud\\Storage\\Connection\\ConnectionInterface' => $vendorDir . '/google/cloud-storage/src/Connection/ConnectionInterface.php', + 'Google\\Cloud\\Storage\\Connection\\IamBucket' => $vendorDir . '/google/cloud-storage/src/Connection/IamBucket.php', + 'Google\\Cloud\\Storage\\Connection\\Rest' => $vendorDir . '/google/cloud-storage/src/Connection/Rest.php', + 'Google\\Cloud\\Storage\\Connection\\RetryTrait' => $vendorDir . '/google/cloud-storage/src/Connection/RetryTrait.php', + 'Google\\Cloud\\Storage\\CreatedHmacKey' => $vendorDir . '/google/cloud-storage/src/CreatedHmacKey.php', + 'Google\\Cloud\\Storage\\EncryptionTrait' => $vendorDir . '/google/cloud-storage/src/EncryptionTrait.php', + 'Google\\Cloud\\Storage\\HmacKey' => $vendorDir . '/google/cloud-storage/src/HmacKey.php', + 'Google\\Cloud\\Storage\\Lifecycle' => $vendorDir . '/google/cloud-storage/src/Lifecycle.php', + 'Google\\Cloud\\Storage\\Notification' => $vendorDir . '/google/cloud-storage/src/Notification.php', + 'Google\\Cloud\\Storage\\ObjectIterator' => $vendorDir . '/google/cloud-storage/src/ObjectIterator.php', + 'Google\\Cloud\\Storage\\ObjectPageIterator' => $vendorDir . '/google/cloud-storage/src/ObjectPageIterator.php', + 'Google\\Cloud\\Storage\\ReadStream' => $vendorDir . '/google/cloud-storage/src/ReadStream.php', + 'Google\\Cloud\\Storage\\SigningHelper' => $vendorDir . '/google/cloud-storage/src/SigningHelper.php', + 'Google\\Cloud\\Storage\\StorageClient' => $vendorDir . '/google/cloud-storage/src/StorageClient.php', + 'Google\\Cloud\\Storage\\StorageObject' => $vendorDir . '/google/cloud-storage/src/StorageObject.php', + 'Google\\Cloud\\Storage\\StreamWrapper' => $vendorDir . '/google/cloud-storage/src/StreamWrapper.php', + 'Google\\Cloud\\Storage\\WriteStream' => $vendorDir . '/google/cloud-storage/src/WriteStream.php', 'GrahamCampbell\\ResultType\\Error' => $vendorDir . '/graham-campbell/result-type/src/Error.php', 'GrahamCampbell\\ResultType\\Result' => $vendorDir . '/graham-campbell/result-type/src/Result.php', 'GrahamCampbell\\ResultType\\Success' => $vendorDir . '/graham-campbell/result-type/src/Success.php', @@ -2348,6 +2566,282 @@ 'Intervention\\Image\\Point' => $vendorDir . '/intervention/image/src/Intervention/Image/Point.php', 'Intervention\\Image\\Response' => $vendorDir . '/intervention/image/src/Intervention/Image/Response.php', 'Intervention\\Image\\Size' => $vendorDir . '/intervention/image/src/Intervention/Image/Size.php', + 'JmesPath\\AstRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/AstRuntime.php', + 'JmesPath\\CompilerRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/CompilerRuntime.php', + 'JmesPath\\DebugRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/DebugRuntime.php', + 'JmesPath\\Env' => $vendorDir . '/mtdowling/jmespath.php/src/Env.php', + 'JmesPath\\FnDispatcher' => $vendorDir . '/mtdowling/jmespath.php/src/FnDispatcher.php', + 'JmesPath\\Lexer' => $vendorDir . '/mtdowling/jmespath.php/src/Lexer.php', + 'JmesPath\\Parser' => $vendorDir . '/mtdowling/jmespath.php/src/Parser.php', + 'JmesPath\\SyntaxErrorException' => $vendorDir . '/mtdowling/jmespath.php/src/SyntaxErrorException.php', + 'JmesPath\\TreeCompiler' => $vendorDir . '/mtdowling/jmespath.php/src/TreeCompiler.php', + 'JmesPath\\TreeInterpreter' => $vendorDir . '/mtdowling/jmespath.php/src/TreeInterpreter.php', + 'JmesPath\\Utils' => $vendorDir . '/mtdowling/jmespath.php/src/Utils.php', + 'Kreait\\Clock\\FrozenClock' => $vendorDir . '/kreait/clock/src/Clock/FrozenClock.php', + 'Kreait\\Clock\\SystemClock' => $vendorDir . '/kreait/clock/src/Clock/SystemClock.php', + 'Kreait\\Firebase\\Auth' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth.php', + 'Kreait\\Firebase\\Auth\\ActionCodeSettings' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/ActionCodeSettings.php', + 'Kreait\\Firebase\\Auth\\ActionCodeSettings\\RawActionCodeSettings' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/ActionCodeSettings/RawActionCodeSettings.php', + 'Kreait\\Firebase\\Auth\\ActionCodeSettings\\ValidatedActionCodeSettings' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/ActionCodeSettings/ValidatedActionCodeSettings.php', + 'Kreait\\Firebase\\Auth\\ApiClient' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/ApiClient.php', + 'Kreait\\Firebase\\Auth\\CreateActionLink' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/CreateActionLink.php', + 'Kreait\\Firebase\\Auth\\CreateActionLink\\ApiRequest' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/CreateActionLink/ApiRequest.php', + 'Kreait\\Firebase\\Auth\\CreateActionLink\\FailedToCreateActionLink' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/CreateActionLink/FailedToCreateActionLink.php', + 'Kreait\\Firebase\\Auth\\CreateActionLink\\GuzzleApiClientHandler' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/CreateActionLink/GuzzleApiClientHandler.php', + 'Kreait\\Firebase\\Auth\\CreateActionLink\\Handler' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/CreateActionLink/Handler.php', + 'Kreait\\Firebase\\Auth\\CreateSessionCookie' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/CreateSessionCookie.php', + 'Kreait\\Firebase\\Auth\\CreateSessionCookie\\ApiRequest' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/CreateSessionCookie/ApiRequest.php', + 'Kreait\\Firebase\\Auth\\CreateSessionCookie\\FailedToCreateSessionCookie' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/CreateSessionCookie/FailedToCreateSessionCookie.php', + 'Kreait\\Firebase\\Auth\\CreateSessionCookie\\GuzzleApiClientHandler' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/CreateSessionCookie/GuzzleApiClientHandler.php', + 'Kreait\\Firebase\\Auth\\CreateSessionCookie\\Handler' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/CreateSessionCookie/Handler.php', + 'Kreait\\Firebase\\Auth\\CustomTokenViaGoogleIam' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/CustomTokenViaGoogleIam.php', + 'Kreait\\Firebase\\Auth\\DeleteUsersRequest' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/DeleteUsersRequest.php', + 'Kreait\\Firebase\\Auth\\DeleteUsersResult' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/DeleteUsersResult.php', + 'Kreait\\Firebase\\Auth\\DisabledLegacyCustomTokenGenerator' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/DisabledLegacyCustomTokenGenerator.php', + 'Kreait\\Firebase\\Auth\\DisabledLegacyIdTokenVerifier' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/DisabledLegacyIdTokenVerifier.php', + 'Kreait\\Firebase\\Auth\\IdTokenVerifier' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/IdTokenVerifier.php', + 'Kreait\\Firebase\\Auth\\IsTenantAware' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/IsTenantAware.php', + 'Kreait\\Firebase\\Auth\\SendActionLink' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SendActionLink.php', + 'Kreait\\Firebase\\Auth\\SendActionLink\\ApiRequest' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SendActionLink/ApiRequest.php', + 'Kreait\\Firebase\\Auth\\SendActionLink\\FailedToSendActionLink' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SendActionLink/FailedToSendActionLink.php', + 'Kreait\\Firebase\\Auth\\SendActionLink\\GuzzleApiClientHandler' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SendActionLink/GuzzleApiClientHandler.php', + 'Kreait\\Firebase\\Auth\\SendActionLink\\Handler' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SendActionLink/Handler.php', + 'Kreait\\Firebase\\Auth\\SignIn' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SignIn.php', + 'Kreait\\Firebase\\Auth\\SignInAnonymously' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SignInAnonymously.php', + 'Kreait\\Firebase\\Auth\\SignInResult' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SignInResult.php', + 'Kreait\\Firebase\\Auth\\SignInWithCustomToken' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SignInWithCustomToken.php', + 'Kreait\\Firebase\\Auth\\SignInWithEmailAndOobCode' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SignInWithEmailAndOobCode.php', + 'Kreait\\Firebase\\Auth\\SignInWithEmailAndPassword' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SignInWithEmailAndPassword.php', + 'Kreait\\Firebase\\Auth\\SignInWithIdpCredentials' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SignInWithIdpCredentials.php', + 'Kreait\\Firebase\\Auth\\SignInWithRefreshToken' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SignInWithRefreshToken.php', + 'Kreait\\Firebase\\Auth\\SignIn\\FailedToSignIn' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SignIn/FailedToSignIn.php', + 'Kreait\\Firebase\\Auth\\SignIn\\GuzzleHandler' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SignIn/GuzzleHandler.php', + 'Kreait\\Firebase\\Auth\\SignIn\\Handler' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/SignIn/Handler.php', + 'Kreait\\Firebase\\Auth\\TenantId' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/TenantId.php', + 'Kreait\\Firebase\\Auth\\UserInfo' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/UserInfo.php', + 'Kreait\\Firebase\\Auth\\UserMetaData' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/UserMetaData.php', + 'Kreait\\Firebase\\Auth\\UserRecord' => $vendorDir . '/kreait/firebase-php/src/Firebase/Auth/UserRecord.php', + 'Kreait\\Firebase\\Contract\\Auth' => $vendorDir . '/kreait/firebase-php/src/Firebase/Contract/Auth.php', + 'Kreait\\Firebase\\Contract\\Database' => $vendorDir . '/kreait/firebase-php/src/Firebase/Contract/Database.php', + 'Kreait\\Firebase\\Contract\\DynamicLinks' => $vendorDir . '/kreait/firebase-php/src/Firebase/Contract/DynamicLinks.php', + 'Kreait\\Firebase\\Contract\\Firestore' => $vendorDir . '/kreait/firebase-php/src/Firebase/Contract/Firestore.php', + 'Kreait\\Firebase\\Contract\\Messaging' => $vendorDir . '/kreait/firebase-php/src/Firebase/Contract/Messaging.php', + 'Kreait\\Firebase\\Contract\\RemoteConfig' => $vendorDir . '/kreait/firebase-php/src/Firebase/Contract/RemoteConfig.php', + 'Kreait\\Firebase\\Contract\\Storage' => $vendorDir . '/kreait/firebase-php/src/Firebase/Contract/Storage.php', + 'Kreait\\Firebase\\Database' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database.php', + 'Kreait\\Firebase\\Database\\ApiClient' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/ApiClient.php', + 'Kreait\\Firebase\\Database\\Query' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query.php', + 'Kreait\\Firebase\\Database\\Query\\Filter' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Filter.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\EndAt' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/EndAt.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\EndBefore' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/EndBefore.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\EqualTo' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/EqualTo.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\LimitToFirst' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/LimitToFirst.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\LimitToLast' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/LimitToLast.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\Shallow' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/Shallow.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\StartAfter' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/StartAfter.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\StartAt' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/StartAt.php', + 'Kreait\\Firebase\\Database\\Query\\Modifier' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Modifier.php', + 'Kreait\\Firebase\\Database\\Query\\ModifierTrait' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/ModifierTrait.php', + 'Kreait\\Firebase\\Database\\Query\\Sorter' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Sorter.php', + 'Kreait\\Firebase\\Database\\Query\\Sorter\\OrderByChild' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Sorter/OrderByChild.php', + 'Kreait\\Firebase\\Database\\Query\\Sorter\\OrderByKey' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Sorter/OrderByKey.php', + 'Kreait\\Firebase\\Database\\Query\\Sorter\\OrderByValue' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Query/Sorter/OrderByValue.php', + 'Kreait\\Firebase\\Database\\Reference' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Reference.php', + 'Kreait\\Firebase\\Database\\Reference\\Validator' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Reference/Validator.php', + 'Kreait\\Firebase\\Database\\RuleSet' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/RuleSet.php', + 'Kreait\\Firebase\\Database\\Snapshot' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Snapshot.php', + 'Kreait\\Firebase\\Database\\Transaction' => $vendorDir . '/kreait/firebase-php/src/Firebase/Database/Transaction.php', + 'Kreait\\Firebase\\DynamicLink' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\AnalyticsInfo' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/AnalyticsInfo.php', + 'Kreait\\Firebase\\DynamicLink\\AnalyticsInfo\\GooglePlayAnalytics' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/AnalyticsInfo/GooglePlayAnalytics.php', + 'Kreait\\Firebase\\DynamicLink\\AnalyticsInfo\\ITunesConnectAnalytics' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/AnalyticsInfo/ITunesConnectAnalytics.php', + 'Kreait\\Firebase\\DynamicLink\\AndroidInfo' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/AndroidInfo.php', + 'Kreait\\Firebase\\DynamicLink\\CreateDynamicLink' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/CreateDynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\CreateDynamicLink\\ApiRequest' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/CreateDynamicLink/ApiRequest.php', + 'Kreait\\Firebase\\DynamicLink\\CreateDynamicLink\\FailedToCreateDynamicLink' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/CreateDynamicLink/FailedToCreateDynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\CreateDynamicLink\\GuzzleApiClientHandler' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/CreateDynamicLink/GuzzleApiClientHandler.php', + 'Kreait\\Firebase\\DynamicLink\\CreateDynamicLink\\Handler' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/CreateDynamicLink/Handler.php', + 'Kreait\\Firebase\\DynamicLink\\DynamicLinkStatistics' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/DynamicLinkStatistics.php', + 'Kreait\\Firebase\\DynamicLink\\EventStatistics' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/EventStatistics.php', + 'Kreait\\Firebase\\DynamicLink\\GetStatisticsForDynamicLink' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/GetStatisticsForDynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\GetStatisticsForDynamicLink\\ApiRequest' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/GetStatisticsForDynamicLink/ApiRequest.php', + 'Kreait\\Firebase\\DynamicLink\\GetStatisticsForDynamicLink\\FailedToGetStatisticsForDynamicLink' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/GetStatisticsForDynamicLink/FailedToGetStatisticsForDynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\GetStatisticsForDynamicLink\\GuzzleApiClientHandler' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/GetStatisticsForDynamicLink/GuzzleApiClientHandler.php', + 'Kreait\\Firebase\\DynamicLink\\GetStatisticsForDynamicLink\\Handler' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/GetStatisticsForDynamicLink/Handler.php', + 'Kreait\\Firebase\\DynamicLink\\IOSInfo' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/IOSInfo.php', + 'Kreait\\Firebase\\DynamicLink\\NavigationInfo' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/NavigationInfo.php', + 'Kreait\\Firebase\\DynamicLink\\ShortenLongDynamicLink' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/ShortenLongDynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\ShortenLongDynamicLink\\ApiRequest' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/ShortenLongDynamicLink/ApiRequest.php', + 'Kreait\\Firebase\\DynamicLink\\ShortenLongDynamicLink\\FailedToShortenLongDynamicLink' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/ShortenLongDynamicLink/FailedToShortenLongDynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\ShortenLongDynamicLink\\GuzzleApiClientHandler' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/ShortenLongDynamicLink/GuzzleApiClientHandler.php', + 'Kreait\\Firebase\\DynamicLink\\ShortenLongDynamicLink\\Handler' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/ShortenLongDynamicLink/Handler.php', + 'Kreait\\Firebase\\DynamicLink\\SocialMetaTagInfo' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLink/SocialMetaTagInfo.php', + 'Kreait\\Firebase\\DynamicLinks' => $vendorDir . '/kreait/firebase-php/src/Firebase/DynamicLinks.php', + 'Kreait\\Firebase\\Exception\\AuthApiExceptionConverter' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/AuthApiExceptionConverter.php', + 'Kreait\\Firebase\\Exception\\AuthException' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/AuthException.php', + 'Kreait\\Firebase\\Exception\\Auth\\ApiConnectionFailed' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/ApiConnectionFailed.php', + 'Kreait\\Firebase\\Exception\\Auth\\AuthError' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/AuthError.php', + 'Kreait\\Firebase\\Exception\\Auth\\CredentialsMismatch' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/CredentialsMismatch.php', + 'Kreait\\Firebase\\Exception\\Auth\\EmailExists' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/EmailExists.php', + 'Kreait\\Firebase\\Exception\\Auth\\EmailNotFound' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/EmailNotFound.php', + 'Kreait\\Firebase\\Exception\\Auth\\ExpiredOobCode' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/ExpiredOobCode.php', + 'Kreait\\Firebase\\Exception\\Auth\\InvalidCustomToken' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/InvalidCustomToken.php', + 'Kreait\\Firebase\\Exception\\Auth\\InvalidOobCode' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/InvalidOobCode.php', + 'Kreait\\Firebase\\Exception\\Auth\\InvalidPassword' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/InvalidPassword.php', + 'Kreait\\Firebase\\Exception\\Auth\\MissingPassword' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/MissingPassword.php', + 'Kreait\\Firebase\\Exception\\Auth\\OperationNotAllowed' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/OperationNotAllowed.php', + 'Kreait\\Firebase\\Exception\\Auth\\PhoneNumberExists' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/PhoneNumberExists.php', + 'Kreait\\Firebase\\Exception\\Auth\\ProviderLinkFailed' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/ProviderLinkFailed.php', + 'Kreait\\Firebase\\Exception\\Auth\\RevokedIdToken' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/RevokedIdToken.php', + 'Kreait\\Firebase\\Exception\\Auth\\UserDisabled' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/UserDisabled.php', + 'Kreait\\Firebase\\Exception\\Auth\\UserNotFound' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/UserNotFound.php', + 'Kreait\\Firebase\\Exception\\Auth\\WeakPassword' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Auth/WeakPassword.php', + 'Kreait\\Firebase\\Exception\\DatabaseApiExceptionConverter' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/DatabaseApiExceptionConverter.php', + 'Kreait\\Firebase\\Exception\\DatabaseException' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/DatabaseException.php', + 'Kreait\\Firebase\\Exception\\Database\\ApiConnectionFailed' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Database/ApiConnectionFailed.php', + 'Kreait\\Firebase\\Exception\\Database\\DatabaseError' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Database/DatabaseError.php', + 'Kreait\\Firebase\\Exception\\Database\\DatabaseNotFound' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Database/DatabaseNotFound.php', + 'Kreait\\Firebase\\Exception\\Database\\PermissionDenied' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Database/PermissionDenied.php', + 'Kreait\\Firebase\\Exception\\Database\\PreconditionFailed' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Database/PreconditionFailed.php', + 'Kreait\\Firebase\\Exception\\Database\\ReferenceHasNotBeenSnapshotted' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Database/ReferenceHasNotBeenSnapshotted.php', + 'Kreait\\Firebase\\Exception\\Database\\TransactionFailed' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Database/TransactionFailed.php', + 'Kreait\\Firebase\\Exception\\Database\\UnsupportedQuery' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Database/UnsupportedQuery.php', + 'Kreait\\Firebase\\Exception\\FirebaseException' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/FirebaseException.php', + 'Kreait\\Firebase\\Exception\\HasErrors' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/HasErrors.php', + 'Kreait\\Firebase\\Exception\\InvalidArgumentException' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/InvalidArgumentException.php', + 'Kreait\\Firebase\\Exception\\LogicException' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/LogicException.php', + 'Kreait\\Firebase\\Exception\\MessagingApiExceptionConverter' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/MessagingApiExceptionConverter.php', + 'Kreait\\Firebase\\Exception\\MessagingException' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/MessagingException.php', + 'Kreait\\Firebase\\Exception\\Messaging\\ApiConnectionFailed' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Messaging/ApiConnectionFailed.php', + 'Kreait\\Firebase\\Exception\\Messaging\\AuthenticationError' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Messaging/AuthenticationError.php', + 'Kreait\\Firebase\\Exception\\Messaging\\InvalidArgument' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Messaging/InvalidArgument.php', + 'Kreait\\Firebase\\Exception\\Messaging\\InvalidMessage' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Messaging/InvalidMessage.php', + 'Kreait\\Firebase\\Exception\\Messaging\\MessagingError' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Messaging/MessagingError.php', + 'Kreait\\Firebase\\Exception\\Messaging\\NotFound' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Messaging/NotFound.php', + 'Kreait\\Firebase\\Exception\\Messaging\\QuotaExceeded' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Messaging/QuotaExceeded.php', + 'Kreait\\Firebase\\Exception\\Messaging\\ServerError' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Messaging/ServerError.php', + 'Kreait\\Firebase\\Exception\\Messaging\\ServerUnavailable' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/Messaging/ServerUnavailable.php', + 'Kreait\\Firebase\\Exception\\OutOfRangeException' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/OutOfRangeException.php', + 'Kreait\\Firebase\\Exception\\RemoteConfigApiExceptionConverter' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfigApiExceptionConverter.php', + 'Kreait\\Firebase\\Exception\\RemoteConfigException' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfigException.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\ApiConnectionFailed' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/ApiConnectionFailed.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\OperationAborted' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/OperationAborted.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\PermissionDenied' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/PermissionDenied.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\RemoteConfigError' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/RemoteConfigError.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\ValidationFailed' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/ValidationFailed.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\VersionMismatch' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/VersionMismatch.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\VersionNotFound' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/VersionNotFound.php', + 'Kreait\\Firebase\\Exception\\RuntimeException' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/RuntimeException.php', + 'Kreait\\Firebase\\Exception\\ServiceAccountDiscoveryFailed' => $vendorDir . '/kreait/firebase-php/src/Firebase/Exception/ServiceAccountDiscoveryFailed.php', + 'Kreait\\Firebase\\Factory' => $vendorDir . '/kreait/firebase-php/src/Firebase/Factory.php', + 'Kreait\\Firebase\\Firestore' => $vendorDir . '/kreait/firebase-php/src/Firebase/Firestore.php', + 'Kreait\\Firebase\\Http\\ErrorResponseParser' => $vendorDir . '/kreait/firebase-php/src/Firebase/Http/ErrorResponseParser.php', + 'Kreait\\Firebase\\Http\\HasSubRequests' => $vendorDir . '/kreait/firebase-php/src/Firebase/Http/HasSubRequests.php', + 'Kreait\\Firebase\\Http\\HasSubResponses' => $vendorDir . '/kreait/firebase-php/src/Firebase/Http/HasSubResponses.php', + 'Kreait\\Firebase\\Http\\HttpClientOptions' => $vendorDir . '/kreait/firebase-php/src/Firebase/Http/HttpClientOptions.php', + 'Kreait\\Firebase\\Http\\Middleware' => $vendorDir . '/kreait/firebase-php/src/Firebase/Http/Middleware.php', + 'Kreait\\Firebase\\Http\\RequestWithSubRequests' => $vendorDir . '/kreait/firebase-php/src/Firebase/Http/RequestWithSubRequests.php', + 'Kreait\\Firebase\\Http\\Requests' => $vendorDir . '/kreait/firebase-php/src/Firebase/Http/Requests.php', + 'Kreait\\Firebase\\Http\\ResponseWithSubResponses' => $vendorDir . '/kreait/firebase-php/src/Firebase/Http/ResponseWithSubResponses.php', + 'Kreait\\Firebase\\Http\\Responses' => $vendorDir . '/kreait/firebase-php/src/Firebase/Http/Responses.php', + 'Kreait\\Firebase\\Http\\WrappedPsr7Request' => $vendorDir . '/kreait/firebase-php/src/Firebase/Http/WrappedPsr7Request.php', + 'Kreait\\Firebase\\Http\\WrappedPsr7Response' => $vendorDir . '/kreait/firebase-php/src/Firebase/Http/WrappedPsr7Response.php', + 'Kreait\\Firebase\\JWT\\Action\\CreateCustomToken' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/CreateCustomToken.php', + 'Kreait\\Firebase\\JWT\\Action\\CreateCustomToken\\Handler' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/CreateCustomToken/Handler.php', + 'Kreait\\Firebase\\JWT\\Action\\CreateCustomToken\\WithFirebaseJWT' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/CreateCustomToken/WithFirebaseJWT.php', + 'Kreait\\Firebase\\JWT\\Action\\CreateCustomToken\\WithHandlerDiscovery' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/CreateCustomToken/WithHandlerDiscovery.php', + 'Kreait\\Firebase\\JWT\\Action\\CreateCustomToken\\WithLcobucciJWT' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/CreateCustomToken/WithLcobucciJWT.php', + 'Kreait\\Firebase\\JWT\\Action\\CreateCustomToken\\WithLcobucciV3JWT' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/CreateCustomToken/WithLcobucciV3JWT.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys\\Handler' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys/Handler.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys\\WithGuzzle6' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys/WithGuzzle6.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys\\WithHandlerDiscovery' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys/WithHandlerDiscovery.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys\\WithPsr16SimpleCache' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys/WithPsr16SimpleCache.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys\\WithPsr6Cache' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys/WithPsr6Cache.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys\\WithStreamContext' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys/WithStreamContext.php', + 'Kreait\\Firebase\\JWT\\Action\\VerifyIdToken' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/VerifyIdToken.php', + 'Kreait\\Firebase\\JWT\\Action\\VerifyIdToken\\Handler' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/VerifyIdToken/Handler.php', + 'Kreait\\Firebase\\JWT\\Action\\VerifyIdToken\\WithFirebaseJWT' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/VerifyIdToken/WithFirebaseJWT.php', + 'Kreait\\Firebase\\JWT\\Action\\VerifyIdToken\\WithHandlerDiscovery' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/VerifyIdToken/WithHandlerDiscovery.php', + 'Kreait\\Firebase\\JWT\\Action\\VerifyIdToken\\WithLcobucciJWT' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/VerifyIdToken/WithLcobucciJWT.php', + 'Kreait\\Firebase\\JWT\\Action\\VerifyIdToken\\WithLcobucciV3JWT' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Action/VerifyIdToken/WithLcobucciV3JWT.php', + 'Kreait\\Firebase\\JWT\\Cache\\InMemoryCache' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Cache/InMemoryCache.php', + 'Kreait\\Firebase\\JWT\\Contract\\Expirable' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Contract/Expirable.php', + 'Kreait\\Firebase\\JWT\\Contract\\ExpirableTrait' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Contract/ExpirableTrait.php', + 'Kreait\\Firebase\\JWT\\Contract\\Keys' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Contract/Keys.php', + 'Kreait\\Firebase\\JWT\\Contract\\KeysTrait' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Contract/KeysTrait.php', + 'Kreait\\Firebase\\JWT\\Contract\\Token' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Contract/Token.php', + 'Kreait\\Firebase\\JWT\\CustomTokenGenerator' => $vendorDir . '/kreait/firebase-tokens/src/JWT/CustomTokenGenerator.php', + 'Kreait\\Firebase\\JWT\\Error\\CustomTokenCreationFailed' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Error/CustomTokenCreationFailed.php', + 'Kreait\\Firebase\\JWT\\Error\\DiscoveryFailed' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Error/DiscoveryFailed.php', + 'Kreait\\Firebase\\JWT\\Error\\FetchingGooglePublicKeysFailed' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Error/FetchingGooglePublicKeysFailed.php', + 'Kreait\\Firebase\\JWT\\Error\\IdTokenVerificationFailed' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Error/IdTokenVerificationFailed.php', + 'Kreait\\Firebase\\JWT\\GooglePublicKeys' => $vendorDir . '/kreait/firebase-tokens/src/JWT/GooglePublicKeys.php', + 'Kreait\\Firebase\\JWT\\IdTokenVerifier' => $vendorDir . '/kreait/firebase-tokens/src/JWT/IdTokenVerifier.php', + 'Kreait\\Firebase\\JWT\\Keys\\ExpiringKeys' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Keys/ExpiringKeys.php', + 'Kreait\\Firebase\\JWT\\Keys\\StaticKeys' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Keys/StaticKeys.php', + 'Kreait\\Firebase\\JWT\\Token' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Token.php', + 'Kreait\\Firebase\\JWT\\Value\\Duration' => $vendorDir . '/kreait/firebase-tokens/src/JWT/Value/Duration.php', + 'Kreait\\Firebase\\Messaging' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging.php', + 'Kreait\\Firebase\\Messaging\\AndroidConfig' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/AndroidConfig.php', + 'Kreait\\Firebase\\Messaging\\ApiClient' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/ApiClient.php', + 'Kreait\\Firebase\\Messaging\\ApnsConfig' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/ApnsConfig.php', + 'Kreait\\Firebase\\Messaging\\AppInstance' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/AppInstance.php', + 'Kreait\\Firebase\\Messaging\\AppInstanceApiClient' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/AppInstanceApiClient.php', + 'Kreait\\Firebase\\Messaging\\CloudMessage' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/CloudMessage.php', + 'Kreait\\Firebase\\Messaging\\Condition' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/Condition.php', + 'Kreait\\Firebase\\Messaging\\FcmOptions' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/FcmOptions.php', + 'Kreait\\Firebase\\Messaging\\Http\\Request\\MessageRequest' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/Http/Request/MessageRequest.php', + 'Kreait\\Firebase\\Messaging\\Http\\Request\\SendMessage' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/Http/Request/SendMessage.php', + 'Kreait\\Firebase\\Messaging\\Http\\Request\\SendMessageToTokens' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/Http/Request/SendMessageToTokens.php', + 'Kreait\\Firebase\\Messaging\\Http\\Request\\SendMessages' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/Http/Request/SendMessages.php', + 'Kreait\\Firebase\\Messaging\\Http\\Request\\ValidateMessage' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/Http/Request/ValidateMessage.php', + 'Kreait\\Firebase\\Messaging\\Message' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/Message.php', + 'Kreait\\Firebase\\Messaging\\MessageData' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/MessageData.php', + 'Kreait\\Firebase\\Messaging\\MessageTarget' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/MessageTarget.php', + 'Kreait\\Firebase\\Messaging\\Messages' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/Messages.php', + 'Kreait\\Firebase\\Messaging\\MulticastSendReport' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/MulticastSendReport.php', + 'Kreait\\Firebase\\Messaging\\Notification' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/Notification.php', + 'Kreait\\Firebase\\Messaging\\RawMessageFromArray' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/RawMessageFromArray.php', + 'Kreait\\Firebase\\Messaging\\RegistrationToken' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/RegistrationToken.php', + 'Kreait\\Firebase\\Messaging\\RegistrationTokens' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/RegistrationTokens.php', + 'Kreait\\Firebase\\Messaging\\SendReport' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/SendReport.php', + 'Kreait\\Firebase\\Messaging\\Topic' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/Topic.php', + 'Kreait\\Firebase\\Messaging\\TopicSubscription' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/TopicSubscription.php', + 'Kreait\\Firebase\\Messaging\\TopicSubscriptions' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/TopicSubscriptions.php', + 'Kreait\\Firebase\\Messaging\\WebPushConfig' => $vendorDir . '/kreait/firebase-php/src/Firebase/Messaging/WebPushConfig.php', + 'Kreait\\Firebase\\Project\\ProjectId' => $vendorDir . '/kreait/firebase-php/src/Firebase/Project/ProjectId.php', + 'Kreait\\Firebase\\RemoteConfig' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig.php', + 'Kreait\\Firebase\\RemoteConfig\\ApiClient' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/ApiClient.php', + 'Kreait\\Firebase\\RemoteConfig\\Condition' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/Condition.php', + 'Kreait\\Firebase\\RemoteConfig\\ConditionalValue' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/ConditionalValue.php', + 'Kreait\\Firebase\\RemoteConfig\\DefaultValue' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/DefaultValue.php', + 'Kreait\\Firebase\\RemoteConfig\\FindVersions' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/FindVersions.php', + 'Kreait\\Firebase\\RemoteConfig\\Parameter' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/Parameter.php', + 'Kreait\\Firebase\\RemoteConfig\\ParameterGroup' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/ParameterGroup.php', + 'Kreait\\Firebase\\RemoteConfig\\TagColor' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/TagColor.php', + 'Kreait\\Firebase\\RemoteConfig\\Template' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/Template.php', + 'Kreait\\Firebase\\RemoteConfig\\UpdateOrigin' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/UpdateOrigin.php', + 'Kreait\\Firebase\\RemoteConfig\\UpdateType' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/UpdateType.php', + 'Kreait\\Firebase\\RemoteConfig\\User' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/User.php', + 'Kreait\\Firebase\\RemoteConfig\\Version' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/Version.php', + 'Kreait\\Firebase\\RemoteConfig\\VersionNumber' => $vendorDir . '/kreait/firebase-php/src/Firebase/RemoteConfig/VersionNumber.php', + 'Kreait\\Firebase\\Request' => $vendorDir . '/kreait/firebase-php/src/Firebase/Request.php', + 'Kreait\\Firebase\\Request\\CreateUser' => $vendorDir . '/kreait/firebase-php/src/Firebase/Request/CreateUser.php', + 'Kreait\\Firebase\\Request\\EditUserTrait' => $vendorDir . '/kreait/firebase-php/src/Firebase/Request/EditUserTrait.php', + 'Kreait\\Firebase\\Request\\UpdateUser' => $vendorDir . '/kreait/firebase-php/src/Firebase/Request/UpdateUser.php', + 'Kreait\\Firebase\\ServiceAccount' => $vendorDir . '/kreait/firebase-php/src/Firebase/ServiceAccount.php', + 'Kreait\\Firebase\\Storage' => $vendorDir . '/kreait/firebase-php/src/Firebase/Storage.php', + 'Kreait\\Firebase\\Util' => $vendorDir . '/kreait/firebase-php/src/Firebase/Util.php', + 'Kreait\\Firebase\\Util\\DT' => $vendorDir . '/kreait/firebase-php/src/Firebase/Util/DT.php', + 'Kreait\\Firebase\\Util\\Deprecation' => $vendorDir . '/kreait/firebase-php/src/Firebase/Util/Deprecation.php', + 'Kreait\\Firebase\\Util\\JSON' => $vendorDir . '/kreait/firebase-php/src/Firebase/Util/JSON.php', + 'Kreait\\Firebase\\Value\\ClearTextPassword' => $vendorDir . '/kreait/firebase-php/src/Firebase/Value/ClearTextPassword.php', + 'Kreait\\Firebase\\Value\\Email' => $vendorDir . '/kreait/firebase-php/src/Firebase/Value/Email.php', + 'Kreait\\Firebase\\Value\\PhoneNumber' => $vendorDir . '/kreait/firebase-php/src/Firebase/Value/PhoneNumber.php', + 'Kreait\\Firebase\\Value\\Provider' => $vendorDir . '/kreait/firebase-php/src/Firebase/Value/Provider.php', + 'Kreait\\Firebase\\Value\\Uid' => $vendorDir . '/kreait/firebase-php/src/Firebase/Value/Uid.php', + 'Kreait\\Firebase\\Value\\Url' => $vendorDir . '/kreait/firebase-php/src/Firebase/Value/Url.php', 'Laravel\\Sail\\Console\\AddCommand' => $vendorDir . '/laravel/sail/src/Console/AddCommand.php', 'Laravel\\Sail\\Console\\Concerns\\InteractsWithDockerComposeServices' => $vendorDir . '/laravel/sail/src/Console/Concerns/InteractsWithDockerComposeServices.php', 'Laravel\\Sail\\Console\\InstallCommand' => $vendorDir . '/laravel/sail/src/Console/InstallCommand.php', @@ -2390,6 +2884,69 @@ 'Laravel\\Tinker\\Console\\TinkerCommand' => $vendorDir . '/laravel/tinker/src/Console/TinkerCommand.php', 'Laravel\\Tinker\\TinkerCaster' => $vendorDir . '/laravel/tinker/src/TinkerCaster.php', 'Laravel\\Tinker\\TinkerServiceProvider' => $vendorDir . '/laravel/tinker/src/TinkerServiceProvider.php', + 'Lcobucci\\Clock\\Clock' => $vendorDir . '/lcobucci/clock/src/Clock.php', + 'Lcobucci\\Clock\\FrozenClock' => $vendorDir . '/lcobucci/clock/src/FrozenClock.php', + 'Lcobucci\\Clock\\SystemClock' => $vendorDir . '/lcobucci/clock/src/SystemClock.php', + 'Lcobucci\\JWT\\Builder' => $vendorDir . '/lcobucci/jwt/src/Builder.php', + 'Lcobucci\\JWT\\ClaimsFormatter' => $vendorDir . '/lcobucci/jwt/src/ClaimsFormatter.php', + 'Lcobucci\\JWT\\Configuration' => $vendorDir . '/lcobucci/jwt/src/Configuration.php', + 'Lcobucci\\JWT\\Decoder' => $vendorDir . '/lcobucci/jwt/src/Decoder.php', + 'Lcobucci\\JWT\\Encoder' => $vendorDir . '/lcobucci/jwt/src/Encoder.php', + 'Lcobucci\\JWT\\Encoding\\CannotDecodeContent' => $vendorDir . '/lcobucci/jwt/src/Encoding/CannotDecodeContent.php', + 'Lcobucci\\JWT\\Encoding\\CannotEncodeContent' => $vendorDir . '/lcobucci/jwt/src/Encoding/CannotEncodeContent.php', + 'Lcobucci\\JWT\\Encoding\\ChainedFormatter' => $vendorDir . '/lcobucci/jwt/src/Encoding/ChainedFormatter.php', + 'Lcobucci\\JWT\\Encoding\\JoseEncoder' => $vendorDir . '/lcobucci/jwt/src/Encoding/JoseEncoder.php', + 'Lcobucci\\JWT\\Encoding\\MicrosecondBasedDateConversion' => $vendorDir . '/lcobucci/jwt/src/Encoding/MicrosecondBasedDateConversion.php', + 'Lcobucci\\JWT\\Encoding\\UnifyAudience' => $vendorDir . '/lcobucci/jwt/src/Encoding/UnifyAudience.php', + 'Lcobucci\\JWT\\Exception' => $vendorDir . '/lcobucci/jwt/src/Exception.php', + 'Lcobucci\\JWT\\Parser' => $vendorDir . '/lcobucci/jwt/src/Parser.php', + 'Lcobucci\\JWT\\Signer' => $vendorDir . '/lcobucci/jwt/src/Signer.php', + 'Lcobucci\\JWT\\Signer\\CannotSignPayload' => $vendorDir . '/lcobucci/jwt/src/Signer/CannotSignPayload.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa' => $vendorDir . '/lcobucci/jwt/src/Signer/Ecdsa.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa\\ConversionFailed' => $vendorDir . '/lcobucci/jwt/src/Signer/Ecdsa/ConversionFailed.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa\\MultibyteStringConverter' => $vendorDir . '/lcobucci/jwt/src/Signer/Ecdsa/MultibyteStringConverter.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa\\Sha256' => $vendorDir . '/lcobucci/jwt/src/Signer/Ecdsa/Sha256.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa\\Sha384' => $vendorDir . '/lcobucci/jwt/src/Signer/Ecdsa/Sha384.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa\\Sha512' => $vendorDir . '/lcobucci/jwt/src/Signer/Ecdsa/Sha512.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa\\SignatureConverter' => $vendorDir . '/lcobucci/jwt/src/Signer/Ecdsa/SignatureConverter.php', + 'Lcobucci\\JWT\\Signer\\Hmac' => $vendorDir . '/lcobucci/jwt/src/Signer/Hmac.php', + 'Lcobucci\\JWT\\Signer\\Hmac\\Sha256' => $vendorDir . '/lcobucci/jwt/src/Signer/Hmac/Sha256.php', + 'Lcobucci\\JWT\\Signer\\Hmac\\Sha384' => $vendorDir . '/lcobucci/jwt/src/Signer/Hmac/Sha384.php', + 'Lcobucci\\JWT\\Signer\\Hmac\\Sha512' => $vendorDir . '/lcobucci/jwt/src/Signer/Hmac/Sha512.php', + 'Lcobucci\\JWT\\Signer\\InvalidKeyProvided' => $vendorDir . '/lcobucci/jwt/src/Signer/InvalidKeyProvided.php', + 'Lcobucci\\JWT\\Signer\\Key' => $vendorDir . '/lcobucci/jwt/src/Signer/Key.php', + 'Lcobucci\\JWT\\Signer\\Key\\FileCouldNotBeRead' => $vendorDir . '/lcobucci/jwt/src/Signer/Key/FileCouldNotBeRead.php', + 'Lcobucci\\JWT\\Signer\\Key\\InMemory' => $vendorDir . '/lcobucci/jwt/src/Signer/Key/InMemory.php', + 'Lcobucci\\JWT\\Signer\\Key\\LocalFileReference' => $vendorDir . '/lcobucci/jwt/src/Signer/Key/LocalFileReference.php', + 'Lcobucci\\JWT\\Signer\\None' => $vendorDir . '/lcobucci/jwt/src/Signer/None.php', + 'Lcobucci\\JWT\\Signer\\OpenSSL' => $vendorDir . '/lcobucci/jwt/src/Signer/OpenSSL.php', + 'Lcobucci\\JWT\\Signer\\Rsa' => $vendorDir . '/lcobucci/jwt/src/Signer/Rsa.php', + 'Lcobucci\\JWT\\Signer\\Rsa\\Sha256' => $vendorDir . '/lcobucci/jwt/src/Signer/Rsa/Sha256.php', + 'Lcobucci\\JWT\\Signer\\Rsa\\Sha384' => $vendorDir . '/lcobucci/jwt/src/Signer/Rsa/Sha384.php', + 'Lcobucci\\JWT\\Signer\\Rsa\\Sha512' => $vendorDir . '/lcobucci/jwt/src/Signer/Rsa/Sha512.php', + 'Lcobucci\\JWT\\Token' => $vendorDir . '/lcobucci/jwt/src/Token.php', + 'Lcobucci\\JWT\\Token\\Builder' => $vendorDir . '/lcobucci/jwt/src/Token/Builder.php', + 'Lcobucci\\JWT\\Token\\DataSet' => $vendorDir . '/lcobucci/jwt/src/Token/DataSet.php', + 'Lcobucci\\JWT\\Token\\InvalidTokenStructure' => $vendorDir . '/lcobucci/jwt/src/Token/InvalidTokenStructure.php', + 'Lcobucci\\JWT\\Token\\Parser' => $vendorDir . '/lcobucci/jwt/src/Token/Parser.php', + 'Lcobucci\\JWT\\Token\\Plain' => $vendorDir . '/lcobucci/jwt/src/Token/Plain.php', + 'Lcobucci\\JWT\\Token\\RegisteredClaimGiven' => $vendorDir . '/lcobucci/jwt/src/Token/RegisteredClaimGiven.php', + 'Lcobucci\\JWT\\Token\\RegisteredClaims' => $vendorDir . '/lcobucci/jwt/src/Token/RegisteredClaims.php', + 'Lcobucci\\JWT\\Token\\Signature' => $vendorDir . '/lcobucci/jwt/src/Token/Signature.php', + 'Lcobucci\\JWT\\Token\\UnsupportedHeaderFound' => $vendorDir . '/lcobucci/jwt/src/Token/UnsupportedHeaderFound.php', + 'Lcobucci\\JWT\\Validation\\Constraint' => $vendorDir . '/lcobucci/jwt/src/Validation/Constraint.php', + 'Lcobucci\\JWT\\Validation\\ConstraintViolation' => $vendorDir . '/lcobucci/jwt/src/Validation/ConstraintViolation.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\IdentifiedBy' => $vendorDir . '/lcobucci/jwt/src/Validation/Constraint/IdentifiedBy.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\IssuedBy' => $vendorDir . '/lcobucci/jwt/src/Validation/Constraint/IssuedBy.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\LeewayCannotBeNegative' => $vendorDir . '/lcobucci/jwt/src/Validation/Constraint/LeewayCannotBeNegative.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\PermittedFor' => $vendorDir . '/lcobucci/jwt/src/Validation/Constraint/PermittedFor.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\RelatedTo' => $vendorDir . '/lcobucci/jwt/src/Validation/Constraint/RelatedTo.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\SignedWith' => $vendorDir . '/lcobucci/jwt/src/Validation/Constraint/SignedWith.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\ValidAt' => $vendorDir . '/lcobucci/jwt/src/Validation/Constraint/ValidAt.php', + 'Lcobucci\\JWT\\Validation\\NoConstraintsGiven' => $vendorDir . '/lcobucci/jwt/src/Validation/NoConstraintsGiven.php', + 'Lcobucci\\JWT\\Validation\\RequiredConstraintsViolated' => $vendorDir . '/lcobucci/jwt/src/Validation/RequiredConstraintsViolated.php', + 'Lcobucci\\JWT\\Validation\\Validator' => $vendorDir . '/lcobucci/jwt/src/Validation/Validator.php', + 'Lcobucci\\JWT\\Validator' => $vendorDir . '/lcobucci/jwt/src/Validator.php', 'League\\CommonMark\\CommonMarkConverter' => $vendorDir . '/league/commonmark/src/CommonMarkConverter.php', 'League\\CommonMark\\ConverterInterface' => $vendorDir . '/league/commonmark/src/ConverterInterface.php', 'League\\CommonMark\\Delimiter\\Delimiter' => $vendorDir . '/league/commonmark/src/Delimiter/Delimiter.php', @@ -3055,6 +3612,7 @@ 'PHPUnit\\Event\\Code\\ClassMethod' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ClassMethod.php', 'PHPUnit\\Event\\Code\\ComparisonFailure' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ComparisonFailure.php', 'PHPUnit\\Event\\Code\\ComparisonFailureBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php', + 'PHPUnit\\Event\\Code\\NoTestCaseObjectOnCallStackException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/NoTestCaseObjectOnCallStackException.php', 'PHPUnit\\Event\\Code\\Phpt' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/Phpt.php', 'PHPUnit\\Event\\Code\\Test' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/Test.php', 'PHPUnit\\Event\\Code\\TestCollection' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestCollection.php', @@ -3180,6 +3738,10 @@ 'PHPUnit\\Event\\Test\\ComparatorRegisteredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegisteredSubscriber.php', 'PHPUnit\\Event\\Test\\ConsideredRisky' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRisky.php', 'PHPUnit\\Event\\Test\\ConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRiskySubscriber.php', + 'PHPUnit\\Event\\Test\\DataProviderMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalled.php', + 'PHPUnit\\Event\\Test\\DataProviderMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalledSubscriber.php', + 'PHPUnit\\Event\\Test\\DataProviderMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinished.php', + 'PHPUnit\\Event\\Test\\DataProviderMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinishedSubscriber.php', 'PHPUnit\\Event\\Test\\DeprecationTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php', 'PHPUnit\\Event\\Test\\DeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggeredSubscriber.php', 'PHPUnit\\Event\\Test\\ErrorTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php', @@ -3600,9 +4162,7 @@ 'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php', 'PHPUnit\\Metadata\\Version\\Requirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/Requirement.php', 'PHPUnit\\Runner\\ClassCannotBeFoundException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php', - 'PHPUnit\\Runner\\ClassCannotBeInstantiatedException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeInstantiatedException.php', - 'PHPUnit\\Runner\\ClassDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExistException.php', - 'PHPUnit\\Runner\\ClassDoesNotImplementExtensionInterfaceException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotImplementExtensionInterfaceException.php', + 'PHPUnit\\Runner\\ClassDoesNotExtendTestCaseException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php', 'PHPUnit\\Runner\\ClassIsAbstractException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php', 'PHPUnit\\Runner\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Runner/CodeCoverage.php', 'PHPUnit\\Runner\\DirectoryCannotBeCreatedException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/DirectoryCannotBeCreatedException.php', @@ -3622,7 +4182,6 @@ 'PHPUnit\\Runner\\InvalidOrderException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php', 'PHPUnit\\Runner\\InvalidPhptFileException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php', 'PHPUnit\\Runner\\NoIgnoredEventException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/NoIgnoredEventException.php', - 'PHPUnit\\Runner\\NoTestCaseObjectOnCallStackException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/NoTestCaseObjectOnCallStackException.php', 'PHPUnit\\Runner\\ParameterDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php', 'PHPUnit\\Runner\\PhptExternalFileCannotBeLoadedException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php', 'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php', @@ -3769,6 +4328,7 @@ 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestRunnerExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php', 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php', 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php', + 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredErrorSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php', 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php', 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php', @@ -3855,7 +4415,6 @@ 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetector' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php', 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaFinder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php', 'PHPUnit\\TextUI\\XmlConfiguration\\SnapshotNodeList' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Source' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Source.php', 'PHPUnit\\TextUI\\XmlConfiguration\\SuccessfulSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php', 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php', 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php', @@ -4209,6 +4768,11 @@ 'PhpParser\\PrettyPrinterAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php', 'PhpParser\\PrettyPrinter\\Standard' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php', 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', + 'Psr\\Cache\\CacheException' => $vendorDir . '/psr/cache/src/CacheException.php', + 'Psr\\Cache\\CacheItemInterface' => $vendorDir . '/psr/cache/src/CacheItemInterface.php', + 'Psr\\Cache\\CacheItemPoolInterface' => $vendorDir . '/psr/cache/src/CacheItemPoolInterface.php', + 'Psr\\Cache\\InvalidArgumentException' => $vendorDir . '/psr/cache/src/InvalidArgumentException.php', + 'Psr\\Clock\\ClockInterface' => $vendorDir . '/psr/clock/src/ClockInterface.php', 'Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php', 'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php', 'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php', @@ -4590,6 +5154,22 @@ 'Ramsey\\Uuid\\UuidInterface' => $vendorDir . '/ramsey/uuid/src/UuidInterface.php', 'Ramsey\\Uuid\\Validator\\GenericValidator' => $vendorDir . '/ramsey/uuid/src/Validator/GenericValidator.php', 'Ramsey\\Uuid\\Validator\\ValidatorInterface' => $vendorDir . '/ramsey/uuid/src/Validator/ValidatorInterface.php', + 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', + 'Riverline\\MultiPartParser\\Converters\\Globals' => $vendorDir . '/riverline/multipart-parser/src/Converters/Globals.php', + 'Riverline\\MultiPartParser\\Converters\\HttpFoundation' => $vendorDir . '/riverline/multipart-parser/src/Converters/HttpFoundation.php', + 'Riverline\\MultiPartParser\\Converters\\PSR7' => $vendorDir . '/riverline/multipart-parser/src/Converters/PSR7.php', + 'Riverline\\MultiPartParser\\Part' => $vendorDir . '/riverline/multipart-parser/src/Part.php', + 'Riverline\\MultiPartParser\\StreamedPart' => $vendorDir . '/riverline/multipart-parser/src/StreamedPart.php', + 'Rize\\UriTemplate' => $vendorDir . '/rize/uri-template/src/Rize/UriTemplate.php', + 'Rize\\UriTemplate\\Node\\Abstraction' => $vendorDir . '/rize/uri-template/src/Rize/UriTemplate/Node/Abstraction.php', + 'Rize\\UriTemplate\\Node\\Expression' => $vendorDir . '/rize/uri-template/src/Rize/UriTemplate/Node/Expression.php', + 'Rize\\UriTemplate\\Node\\Literal' => $vendorDir . '/rize/uri-template/src/Rize/UriTemplate/Node/Literal.php', + 'Rize\\UriTemplate\\Node\\Variable' => $vendorDir . '/rize/uri-template/src/Rize/UriTemplate/Node/Variable.php', + 'Rize\\UriTemplate\\Operator\\Abstraction' => $vendorDir . '/rize/uri-template/src/Rize/UriTemplate/Operator/Abstraction.php', + 'Rize\\UriTemplate\\Operator\\Named' => $vendorDir . '/rize/uri-template/src/Rize/UriTemplate/Operator/Named.php', + 'Rize\\UriTemplate\\Operator\\UnNamed' => $vendorDir . '/rize/uri-template/src/Rize/UriTemplate/Operator/UnNamed.php', + 'Rize\\UriTemplate\\Parser' => $vendorDir . '/rize/uri-template/src/Rize/UriTemplate/Parser.php', + 'Rize\\UriTemplate\\UriTemplate' => $vendorDir . '/rize/uri-template/src/Rize/UriTemplate/UriTemplate.php', 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php', 'SebastianBergmann\\CliParser\\Exception' => $vendorDir . '/sebastian/cli-parser/src/exceptions/Exception.php', 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php', @@ -4943,6 +5523,7 @@ 'Spatie\\LaravelIgnition\\Support\\StringComparator' => $vendorDir . '/spatie/laravel-ignition/src/Support/StringComparator.php', 'Spatie\\LaravelIgnition\\Views\\BladeSourceMapCompiler' => $vendorDir . '/spatie/laravel-ignition/src/Views/BladeSourceMapCompiler.php', 'Spatie\\LaravelIgnition\\Views\\ViewExceptionMapper' => $vendorDir . '/spatie/laravel-ignition/src/Views/ViewExceptionMapper.php', + 'StellaMaris\\Clock\\ClockInterface' => $vendorDir . '/stella-maris/clock/src/ClockInterface.php', 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', 'Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php', 'Symfony\\Component\\Console\\Attribute\\AsCommand' => $vendorDir . '/symfony/console/Attribute/AsCommand.php', @@ -4974,6 +5555,7 @@ 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php', 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php', 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => $vendorDir . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php', 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php', 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php', 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => $vendorDir . '/symfony/console/EventListener/ErrorListener.php', @@ -5852,6 +6434,7 @@ 'Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php', 'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php', 'Symfony\\Polyfill\\Php80\\PhpToken' => $vendorDir . '/symfony/polyfill-php80/PhpToken.php', + 'Symfony\\Polyfill\\Php81\\Php81' => $vendorDir . '/symfony/polyfill-php81/Php81.php', 'Symfony\\Polyfill\\Uuid\\Uuid' => $vendorDir . '/symfony/polyfill-uuid/Uuid.php', 'Termwind\\Actions\\StyleToMethod' => $vendorDir . '/nunomaduro/termwind/src/Actions/StyleToMethod.php', 'Termwind\\Components\\Anchor' => $vendorDir . '/nunomaduro/termwind/src/Components/Anchor.php', diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index feb725eb..3a1f44d2 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -8,24 +8,27 @@ return array( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', + '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', + 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', + '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', - '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', + '27592325262b385204a263c2ab632d6e' => $vendorDir . '/kreait/clock/src/Clock.php', + 'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php', '3bd81c9b8fcc150b69d8b63b4d2ccf23' => $vendorDir . '/spatie/flare-client-php/src/helpers.php', '35a6ad97d21e794e7e22a17d806652e4' => $vendorDir . '/nunomaduro/termwind/src/Functions.php', '09f6b20656683369174dd6fa83b7e5fb' => $vendorDir . '/symfony/polyfill-uuid/bootstrap.php', 'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php', - 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', + 'b067bc7112e384b61c701452d53a14a8' => $vendorDir . '/mtdowling/jmespath.php/src/JmesPath.php', '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', '801c31d8ed748cfa537fa45402288c95' => $vendorDir . '/psy/psysh/src/functions.php', - 'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', + '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', '265b4faa2b3a9766332744949e83bf97' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/helpers.php', 'c7a3c339e7e14b60e06a2d7fcce9476b' => $vendorDir . '/laravel/framework/src/Illuminate/Events/functions.php', 'f0906e6318348a765ffb6eb24e0d0938' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/helpers.php', diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 936b1ff7..4b96f7f3 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -13,6 +13,7 @@ 'Tests\\' => array($baseDir . '/tests'), 'Termwind\\' => array($vendorDir . '/nunomaduro/termwind/src'), 'Symfony\\Polyfill\\Uuid\\' => array($vendorDir . '/symfony/polyfill-uuid'), + 'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'), 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'), 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), @@ -39,10 +40,13 @@ 'Symfony\\Component\\ErrorHandler\\' => array($vendorDir . '/symfony/error-handler'), 'Symfony\\Component\\CssSelector\\' => array($vendorDir . '/symfony/css-selector'), 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), + 'StellaMaris\\Clock\\' => array($vendorDir . '/stella-maris/clock/src'), 'Spatie\\LaravelIgnition\\' => array($vendorDir . '/spatie/laravel-ignition/src'), 'Spatie\\Ignition\\' => array($vendorDir . '/spatie/ignition/src'), 'Spatie\\FlareClient\\' => array($vendorDir . '/spatie/flare-client-php/src'), 'Spatie\\Backtrace\\' => array($vendorDir . '/spatie/backtrace/src'), + 'Rize\\' => array($vendorDir . '/rize/uri-template/src/Rize'), + 'Riverline\\MultiPartParser\\' => array($vendorDir . '/riverline/multipart-parser/src'), 'Ramsey\\Uuid\\' => array($vendorDir . '/ramsey/uuid/src'), 'Ramsey\\Collection\\' => array($vendorDir . '/ramsey/collection/src'), 'Psy\\' => array($vendorDir . '/psy/psysh/src'), @@ -52,6 +56,8 @@ 'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'), 'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'), 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), + 'Psr\\Clock\\' => array($vendorDir . '/psr/clock/src'), + 'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'), 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'), 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'), 'NunoMaduro\\Collision\\' => array($vendorDir . '/nunomaduro/collision/src'), @@ -61,10 +67,16 @@ 'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'), 'League\\Config\\' => array($vendorDir . '/league/config/src'), 'League\\CommonMark\\' => array($vendorDir . '/league/commonmark/src'), + 'Lcobucci\\JWT\\' => array($vendorDir . '/lcobucci/jwt/src'), + 'Lcobucci\\Clock\\' => array($vendorDir . '/lcobucci/clock/src'), 'Laravel\\Tinker\\' => array($vendorDir . '/laravel/tinker/src'), 'Laravel\\SerializableClosure\\' => array($vendorDir . '/laravel/serializable-closure/src'), 'Laravel\\Sanctum\\' => array($vendorDir . '/laravel/sanctum/src'), 'Laravel\\Sail\\' => array($vendorDir . '/laravel/sail/src'), + 'Kreait\\Firebase\\JWT\\' => array($vendorDir . '/kreait/firebase-tokens/src/JWT'), + 'Kreait\\Firebase\\' => array($vendorDir . '/kreait/firebase-php/src/Firebase'), + 'Kreait\\Clock\\' => array($vendorDir . '/kreait/clock/src/Clock'), + 'JmesPath\\' => array($vendorDir . '/mtdowling/jmespath.php/src'), 'Intervention\\Image\\' => array($vendorDir . '/intervention/image/src/Intervention/Image'), 'Illuminate\\Support\\' => array($vendorDir . '/laravel/framework/src/Illuminate/Macroable', $vendorDir . '/laravel/framework/src/Illuminate/Collections', $vendorDir . '/laravel/framework/src/Illuminate/Conditionable'), 'Illuminate\\' => array($vendorDir . '/laravel/framework/src/Illuminate'), @@ -73,7 +85,14 @@ 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), 'GrahamCampbell\\ResultType\\' => array($vendorDir . '/graham-campbell/result-type/src'), + 'Google\\Cloud\\Storage\\' => array($vendorDir . '/google/cloud-storage/src'), + 'Google\\Cloud\\Core\\' => array($vendorDir . '/google/cloud-core/src'), + 'Google\\CRC32\\' => array($vendorDir . '/google/crc32/src'), + 'Google\\Auth\\' => array($vendorDir . '/google/auth/src'), 'Fruitcake\\Cors\\' => array($vendorDir . '/fruitcake/php-cors/src'), + 'Firebase\\JWT\\' => array($vendorDir . '/firebase/php-jwt/src'), + 'Firebase\\Auth\\Token\\' => array($vendorDir . '/kreait/firebase-tokens/src/Firebase/Auth/Token'), + 'Fig\\Http\\Message\\' => array($vendorDir . '/fig/http-message-util/src'), 'Faker\\' => array($vendorDir . '/fakerphp/faker/src/Faker'), 'Egulias\\EmailValidator\\' => array($vendorDir . '/egulias/email-validator/src'), 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 2ba31719..6a4d21b1 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -9,24 +9,27 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea public static $files = array ( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', + '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', + 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', + '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', - '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', + '27592325262b385204a263c2ab632d6e' => __DIR__ . '/..' . '/kreait/clock/src/Clock.php', + 'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php', '3bd81c9b8fcc150b69d8b63b4d2ccf23' => __DIR__ . '/..' . '/spatie/flare-client-php/src/helpers.php', '35a6ad97d21e794e7e22a17d806652e4' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Functions.php', '09f6b20656683369174dd6fa83b7e5fb' => __DIR__ . '/..' . '/symfony/polyfill-uuid/bootstrap.php', 'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php', - 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', + 'b067bc7112e384b61c701452d53a14a8' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/JmesPath.php', '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', '801c31d8ed748cfa537fa45402288c95' => __DIR__ . '/..' . '/psy/psysh/src/functions.php', - 'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', + '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php', '265b4faa2b3a9766332744949e83bf97' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/helpers.php', 'c7a3c339e7e14b60e06a2d7fcce9476b' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Events/functions.php', 'f0906e6318348a765ffb6eb24e0d0938' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/helpers.php', @@ -55,6 +58,7 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'S' => array ( 'Symfony\\Polyfill\\Uuid\\' => 22, + 'Symfony\\Polyfill\\Php81\\' => 23, 'Symfony\\Polyfill\\Php80\\' => 23, 'Symfony\\Polyfill\\Php72\\' => 23, 'Symfony\\Polyfill\\Mbstring\\' => 26, @@ -81,6 +85,7 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'Symfony\\Component\\ErrorHandler\\' => 31, 'Symfony\\Component\\CssSelector\\' => 30, 'Symfony\\Component\\Console\\' => 26, + 'StellaMaris\\Clock\\' => 18, 'Spatie\\LaravelIgnition\\' => 23, 'Spatie\\Ignition\\' => 16, 'Spatie\\FlareClient\\' => 19, @@ -88,6 +93,8 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea ), 'R' => array ( + 'Rize\\' => 5, + 'Riverline\\MultiPartParser\\' => 26, 'Ramsey\\Uuid\\' => 12, 'Ramsey\\Collection\\' => 18, ), @@ -100,6 +107,8 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'Psr\\Http\\Client\\' => 16, 'Psr\\EventDispatcher\\' => 20, 'Psr\\Container\\' => 14, + 'Psr\\Clock\\' => 10, + 'Psr\\Cache\\' => 10, 'PhpParser\\' => 10, 'PhpOption\\' => 10, ), @@ -118,11 +127,23 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'League\\Flysystem\\' => 17, 'League\\Config\\' => 14, 'League\\CommonMark\\' => 18, + 'Lcobucci\\JWT\\' => 13, + 'Lcobucci\\Clock\\' => 15, 'Laravel\\Tinker\\' => 15, 'Laravel\\SerializableClosure\\' => 28, 'Laravel\\Sanctum\\' => 16, 'Laravel\\Sail\\' => 13, ), + 'K' => + array ( + 'Kreait\\Firebase\\JWT\\' => 20, + 'Kreait\\Firebase\\' => 16, + 'Kreait\\Clock\\' => 13, + ), + 'J' => + array ( + 'JmesPath\\' => 9, + ), 'I' => array ( 'Intervention\\Image\\' => 19, @@ -136,10 +157,17 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'GuzzleHttp\\Promise\\' => 19, 'GuzzleHttp\\' => 11, 'GrahamCampbell\\ResultType\\' => 26, + 'Google\\Cloud\\Storage\\' => 21, + 'Google\\Cloud\\Core\\' => 18, + 'Google\\CRC32\\' => 13, + 'Google\\Auth\\' => 12, ), 'F' => array ( 'Fruitcake\\Cors\\' => 15, + 'Firebase\\JWT\\' => 13, + 'Firebase\\Auth\\Token\\' => 20, + 'Fig\\Http\\Message\\' => 17, 'Faker\\' => 6, ), 'E' => @@ -200,6 +228,10 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-uuid', ), + 'Symfony\\Polyfill\\Php81\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-php81', + ), 'Symfony\\Polyfill\\Php80\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', @@ -304,6 +336,10 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea array ( 0 => __DIR__ . '/..' . '/symfony/console', ), + 'StellaMaris\\Clock\\' => + array ( + 0 => __DIR__ . '/..' . '/stella-maris/clock/src', + ), 'Spatie\\LaravelIgnition\\' => array ( 0 => __DIR__ . '/..' . '/spatie/laravel-ignition/src', @@ -320,6 +356,14 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea array ( 0 => __DIR__ . '/..' . '/spatie/backtrace/src', ), + 'Rize\\' => + array ( + 0 => __DIR__ . '/..' . '/rize/uri-template/src/Rize', + ), + 'Riverline\\MultiPartParser\\' => + array ( + 0 => __DIR__ . '/..' . '/riverline/multipart-parser/src', + ), 'Ramsey\\Uuid\\' => array ( 0 => __DIR__ . '/..' . '/ramsey/uuid/src', @@ -357,6 +401,14 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea array ( 0 => __DIR__ . '/..' . '/psr/container/src', ), + 'Psr\\Clock\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/clock/src', + ), + 'Psr\\Cache\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/cache/src', + ), 'PhpParser\\' => array ( 0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser', @@ -393,6 +445,14 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea array ( 0 => __DIR__ . '/..' . '/league/commonmark/src', ), + 'Lcobucci\\JWT\\' => + array ( + 0 => __DIR__ . '/..' . '/lcobucci/jwt/src', + ), + 'Lcobucci\\Clock\\' => + array ( + 0 => __DIR__ . '/..' . '/lcobucci/clock/src', + ), 'Laravel\\Tinker\\' => array ( 0 => __DIR__ . '/..' . '/laravel/tinker/src', @@ -409,6 +469,22 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea array ( 0 => __DIR__ . '/..' . '/laravel/sail/src', ), + 'Kreait\\Firebase\\JWT\\' => + array ( + 0 => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT', + ), + 'Kreait\\Firebase\\' => + array ( + 0 => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase', + ), + 'Kreait\\Clock\\' => + array ( + 0 => __DIR__ . '/..' . '/kreait/clock/src/Clock', + ), + 'JmesPath\\' => + array ( + 0 => __DIR__ . '/..' . '/mtdowling/jmespath.php/src', + ), 'Intervention\\Image\\' => array ( 0 => __DIR__ . '/..' . '/intervention/image/src/Intervention/Image', @@ -443,10 +519,38 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea array ( 0 => __DIR__ . '/..' . '/graham-campbell/result-type/src', ), + 'Google\\Cloud\\Storage\\' => + array ( + 0 => __DIR__ . '/..' . '/google/cloud-storage/src', + ), + 'Google\\Cloud\\Core\\' => + array ( + 0 => __DIR__ . '/..' . '/google/cloud-core/src', + ), + 'Google\\CRC32\\' => + array ( + 0 => __DIR__ . '/..' . '/google/crc32/src', + ), + 'Google\\Auth\\' => + array ( + 0 => __DIR__ . '/..' . '/google/auth/src', + ), 'Fruitcake\\Cors\\' => array ( 0 => __DIR__ . '/..' . '/fruitcake/php-cors/src', ), + 'Firebase\\JWT\\' => + array ( + 0 => __DIR__ . '/..' . '/firebase/php-jwt/src', + ), + 'Firebase\\Auth\\Token\\' => + array ( + 0 => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token', + ), + 'Fig\\Http\\Message\\' => + array ( + 0 => __DIR__ . '/..' . '/fig/http-message-util/src', + ), 'Faker\\' => array ( 0 => __DIR__ . '/..' . '/fakerphp/faker/src/Faker', @@ -520,7 +624,6 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'App\\Http\\Controllers\\BookController' => __DIR__ . '/../..' . '/app/Http/Controllers/BookController.php', 'App\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/app/Http/Controllers/Controller.php', 'App\\Http\\Controllers\\HomeController' => __DIR__ . '/../..' . '/app/Http/Controllers/HomeController.php', - 'App\\Http\\Controllers\\ImageController' => __DIR__ . '/../..' . '/app/Http/Controllers/ImageController.php', 'App\\Http\\Controllers\\LibValorationController' => __DIR__ . '/../..' . '/app/Http/Controllers/LibValorationController.php', 'App\\Http\\Controllers\\LibraryController' => __DIR__ . '/../..' . '/app/Http/Controllers/LibraryController.php', 'App\\Http\\Controllers\\LoanController' => __DIR__ . '/../..' . '/app/Http/Controllers/LoanController.php', @@ -1375,8 +1478,227 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'Faker\\Provider\\zh_TW\\Text' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/Provider/zh_TW/Text.php', 'Faker\\UniqueGenerator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/UniqueGenerator.php', 'Faker\\ValidGenerator' => __DIR__ . '/..' . '/fakerphp/faker/src/Faker/ValidGenerator.php', + 'Fig\\Http\\Message\\RequestMethodInterface' => __DIR__ . '/..' . '/fig/http-message-util/src/RequestMethodInterface.php', + 'Fig\\Http\\Message\\StatusCodeInterface' => __DIR__ . '/..' . '/fig/http-message-util/src/StatusCodeInterface.php', + 'Firebase\\Auth\\Token\\Cache\\InMemoryCache' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Cache/InMemoryCache.php', + 'Firebase\\Auth\\Token\\ConvertsDates' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/ConvertsDates.php', + 'Firebase\\Auth\\Token\\Domain\\Generator' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Domain/Generator.php', + 'Firebase\\Auth\\Token\\Domain\\KeyStore' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Domain/KeyStore.php', + 'Firebase\\Auth\\Token\\Domain\\Verifier' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Domain/Verifier.php', + 'Firebase\\Auth\\Token\\Exception\\ExpiredToken' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Exception/ExpiredToken.php', + 'Firebase\\Auth\\Token\\Exception\\InvalidSignature' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Exception/InvalidSignature.php', + 'Firebase\\Auth\\Token\\Exception\\InvalidToken' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Exception/InvalidToken.php', + 'Firebase\\Auth\\Token\\Exception\\IssuedInTheFuture' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Exception/IssuedInTheFuture.php', + 'Firebase\\Auth\\Token\\Exception\\UnknownKey' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Exception/UnknownKey.php', + 'Firebase\\Auth\\Token\\Generator' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Generator.php', + 'Firebase\\Auth\\Token\\Handler' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Handler.php', + 'Firebase\\Auth\\Token\\HttpKeyStore' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/HttpKeyStore.php', + 'Firebase\\Auth\\Token\\TenantAwareGenerator' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/TenantAwareGenerator.php', + 'Firebase\\Auth\\Token\\TenantAwareVerifier' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/TenantAwareVerifier.php', + 'Firebase\\Auth\\Token\\Verifier' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/Firebase/Auth/Token/Verifier.php', + 'Firebase\\JWT\\BeforeValidException' => __DIR__ . '/..' . '/firebase/php-jwt/src/BeforeValidException.php', + 'Firebase\\JWT\\CachedKeySet' => __DIR__ . '/..' . '/firebase/php-jwt/src/CachedKeySet.php', + 'Firebase\\JWT\\ExpiredException' => __DIR__ . '/..' . '/firebase/php-jwt/src/ExpiredException.php', + 'Firebase\\JWT\\JWK' => __DIR__ . '/..' . '/firebase/php-jwt/src/JWK.php', + 'Firebase\\JWT\\JWT' => __DIR__ . '/..' . '/firebase/php-jwt/src/JWT.php', + 'Firebase\\JWT\\Key' => __DIR__ . '/..' . '/firebase/php-jwt/src/Key.php', + 'Firebase\\JWT\\SignatureInvalidException' => __DIR__ . '/..' . '/firebase/php-jwt/src/SignatureInvalidException.php', 'Fruitcake\\Cors\\CorsService' => __DIR__ . '/..' . '/fruitcake/php-cors/src/CorsService.php', 'Fruitcake\\Cors\\Exceptions\\InvalidOptionException' => __DIR__ . '/..' . '/fruitcake/php-cors/src/Exceptions/InvalidOptionException.php', + 'Google\\Auth\\AccessToken' => __DIR__ . '/..' . '/google/auth/src/AccessToken.php', + 'Google\\Auth\\ApplicationDefaultCredentials' => __DIR__ . '/..' . '/google/auth/src/ApplicationDefaultCredentials.php', + 'Google\\Auth\\CacheTrait' => __DIR__ . '/..' . '/google/auth/src/CacheTrait.php', + 'Google\\Auth\\Cache\\InvalidArgumentException' => __DIR__ . '/..' . '/google/auth/src/Cache/InvalidArgumentException.php', + 'Google\\Auth\\Cache\\Item' => __DIR__ . '/..' . '/google/auth/src/Cache/Item.php', + 'Google\\Auth\\Cache\\MemoryCacheItemPool' => __DIR__ . '/..' . '/google/auth/src/Cache/MemoryCacheItemPool.php', + 'Google\\Auth\\Cache\\SysVCacheItemPool' => __DIR__ . '/..' . '/google/auth/src/Cache/SysVCacheItemPool.php', + 'Google\\Auth\\Cache\\TypedItem' => __DIR__ . '/..' . '/google/auth/src/Cache/TypedItem.php', + 'Google\\Auth\\CredentialsLoader' => __DIR__ . '/..' . '/google/auth/src/CredentialsLoader.php', + 'Google\\Auth\\Credentials\\AppIdentityCredentials' => __DIR__ . '/..' . '/google/auth/src/Credentials/AppIdentityCredentials.php', + 'Google\\Auth\\Credentials\\GCECredentials' => __DIR__ . '/..' . '/google/auth/src/Credentials/GCECredentials.php', + 'Google\\Auth\\Credentials\\IAMCredentials' => __DIR__ . '/..' . '/google/auth/src/Credentials/IAMCredentials.php', + 'Google\\Auth\\Credentials\\ImpersonatedServiceAccountCredentials' => __DIR__ . '/..' . '/google/auth/src/Credentials/ImpersonatedServiceAccountCredentials.php', + 'Google\\Auth\\Credentials\\InsecureCredentials' => __DIR__ . '/..' . '/google/auth/src/Credentials/InsecureCredentials.php', + 'Google\\Auth\\Credentials\\ServiceAccountCredentials' => __DIR__ . '/..' . '/google/auth/src/Credentials/ServiceAccountCredentials.php', + 'Google\\Auth\\Credentials\\ServiceAccountJwtAccessCredentials' => __DIR__ . '/..' . '/google/auth/src/Credentials/ServiceAccountJwtAccessCredentials.php', + 'Google\\Auth\\Credentials\\UserRefreshCredentials' => __DIR__ . '/..' . '/google/auth/src/Credentials/UserRefreshCredentials.php', + 'Google\\Auth\\FetchAuthTokenCache' => __DIR__ . '/..' . '/google/auth/src/FetchAuthTokenCache.php', + 'Google\\Auth\\FetchAuthTokenInterface' => __DIR__ . '/..' . '/google/auth/src/FetchAuthTokenInterface.php', + 'Google\\Auth\\GCECache' => __DIR__ . '/..' . '/google/auth/src/GCECache.php', + 'Google\\Auth\\GetQuotaProjectInterface' => __DIR__ . '/..' . '/google/auth/src/GetQuotaProjectInterface.php', + 'Google\\Auth\\HttpHandler\\Guzzle6HttpHandler' => __DIR__ . '/..' . '/google/auth/src/HttpHandler/Guzzle6HttpHandler.php', + 'Google\\Auth\\HttpHandler\\Guzzle7HttpHandler' => __DIR__ . '/..' . '/google/auth/src/HttpHandler/Guzzle7HttpHandler.php', + 'Google\\Auth\\HttpHandler\\HttpClientCache' => __DIR__ . '/..' . '/google/auth/src/HttpHandler/HttpClientCache.php', + 'Google\\Auth\\HttpHandler\\HttpHandlerFactory' => __DIR__ . '/..' . '/google/auth/src/HttpHandler/HttpHandlerFactory.php', + 'Google\\Auth\\Iam' => __DIR__ . '/..' . '/google/auth/src/Iam.php', + 'Google\\Auth\\IamSignerTrait' => __DIR__ . '/..' . '/google/auth/src/IamSignerTrait.php', + 'Google\\Auth\\Middleware\\AuthTokenMiddleware' => __DIR__ . '/..' . '/google/auth/src/Middleware/AuthTokenMiddleware.php', + 'Google\\Auth\\Middleware\\ProxyAuthTokenMiddleware' => __DIR__ . '/..' . '/google/auth/src/Middleware/ProxyAuthTokenMiddleware.php', + 'Google\\Auth\\Middleware\\ScopedAccessTokenMiddleware' => __DIR__ . '/..' . '/google/auth/src/Middleware/ScopedAccessTokenMiddleware.php', + 'Google\\Auth\\Middleware\\SimpleMiddleware' => __DIR__ . '/..' . '/google/auth/src/Middleware/SimpleMiddleware.php', + 'Google\\Auth\\OAuth2' => __DIR__ . '/..' . '/google/auth/src/OAuth2.php', + 'Google\\Auth\\ProjectIdProviderInterface' => __DIR__ . '/..' . '/google/auth/src/ProjectIdProviderInterface.php', + 'Google\\Auth\\ServiceAccountSignerTrait' => __DIR__ . '/..' . '/google/auth/src/ServiceAccountSignerTrait.php', + 'Google\\Auth\\SignBlobInterface' => __DIR__ . '/..' . '/google/auth/src/SignBlobInterface.php', + 'Google\\Auth\\UpdateMetadataInterface' => __DIR__ . '/..' . '/google/auth/src/UpdateMetadataInterface.php', + 'Google\\CRC32\\Builtin' => __DIR__ . '/..' . '/google/crc32/src/Builtin.php', + 'Google\\CRC32\\CRC32' => __DIR__ . '/..' . '/google/crc32/src/CRC32.php', + 'Google\\CRC32\\CRCInterface' => __DIR__ . '/..' . '/google/crc32/src/CRCInterface.php', + 'Google\\CRC32\\CRCTrait' => __DIR__ . '/..' . '/google/crc32/src/CRCTrait.php', + 'Google\\CRC32\\Google' => __DIR__ . '/..' . '/google/crc32/src/Google.php', + 'Google\\CRC32\\PHP' => __DIR__ . '/..' . '/google/crc32/src/PHP.php', + 'Google\\CRC32\\PHPSlicedBy4' => __DIR__ . '/..' . '/google/crc32/src/PHPSlicedBy4.php', + 'Google\\CRC32\\Table' => __DIR__ . '/..' . '/google/crc32/src/Table.php', + 'Google\\Cloud\\Core\\AnonymousCredentials' => __DIR__ . '/..' . '/google/cloud-core/src/AnonymousCredentials.php', + 'Google\\Cloud\\Core\\ArrayTrait' => __DIR__ . '/..' . '/google/cloud-core/src/ArrayTrait.php', + 'Google\\Cloud\\Core\\Batch\\BatchDaemon' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/BatchDaemon.php', + 'Google\\Cloud\\Core\\Batch\\BatchDaemonTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/BatchDaemonTrait.php', + 'Google\\Cloud\\Core\\Batch\\BatchJob' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/BatchJob.php', + 'Google\\Cloud\\Core\\Batch\\BatchRunner' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/BatchRunner.php', + 'Google\\Cloud\\Core\\Batch\\BatchTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/BatchTrait.php', + 'Google\\Cloud\\Core\\Batch\\ClosureSerializerInterface' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/ClosureSerializerInterface.php', + 'Google\\Cloud\\Core\\Batch\\ConfigStorageInterface' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/ConfigStorageInterface.php', + 'Google\\Cloud\\Core\\Batch\\HandleFailureTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/HandleFailureTrait.php', + 'Google\\Cloud\\Core\\Batch\\InMemoryConfigStorage' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/InMemoryConfigStorage.php', + 'Google\\Cloud\\Core\\Batch\\InterruptTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/InterruptTrait.php', + 'Google\\Cloud\\Core\\Batch\\JobConfig' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/JobConfig.php', + 'Google\\Cloud\\Core\\Batch\\JobInterface' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/JobInterface.php', + 'Google\\Cloud\\Core\\Batch\\JobTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/JobTrait.php', + 'Google\\Cloud\\Core\\Batch\\OpisClosureSerializer' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/OpisClosureSerializer.php', + 'Google\\Cloud\\Core\\Batch\\ProcessItemInterface' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/ProcessItemInterface.php', + 'Google\\Cloud\\Core\\Batch\\QueueOverflowException' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/QueueOverflowException.php', + 'Google\\Cloud\\Core\\Batch\\Retry' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/Retry.php', + 'Google\\Cloud\\Core\\Batch\\SerializableClientTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/SerializableClientTrait.php', + 'Google\\Cloud\\Core\\Batch\\SimpleJob' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/SimpleJob.php', + 'Google\\Cloud\\Core\\Batch\\SimpleJobTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/SimpleJobTrait.php', + 'Google\\Cloud\\Core\\Batch\\SysvConfigStorage' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/SysvConfigStorage.php', + 'Google\\Cloud\\Core\\Batch\\SysvProcessor' => __DIR__ . '/..' . '/google/cloud-core/src/Batch/SysvProcessor.php', + 'Google\\Cloud\\Core\\Blob' => __DIR__ . '/..' . '/google/cloud-core/src/Blob.php', + 'Google\\Cloud\\Core\\CallTrait' => __DIR__ . '/..' . '/google/cloud-core/src/CallTrait.php', + 'Google\\Cloud\\Core\\ClientTrait' => __DIR__ . '/..' . '/google/cloud-core/src/ClientTrait.php', + 'Google\\Cloud\\Core\\Compute\\Metadata' => __DIR__ . '/..' . '/google/cloud-core/src/Compute/Metadata.php', + 'Google\\Cloud\\Core\\Compute\\Metadata\\Readers\\HttpHandlerReader' => __DIR__ . '/..' . '/google/cloud-core/src/Compute/Metadata/Readers/HttpHandlerReader.php', + 'Google\\Cloud\\Core\\Compute\\Metadata\\Readers\\ReaderInterface' => __DIR__ . '/..' . '/google/cloud-core/src/Compute/Metadata/Readers/ReaderInterface.php', + 'Google\\Cloud\\Core\\Compute\\Metadata\\Readers\\StreamReader' => __DIR__ . '/..' . '/google/cloud-core/src/Compute/Metadata/Readers/StreamReader.php', + 'Google\\Cloud\\Core\\ConcurrencyControlTrait' => __DIR__ . '/..' . '/google/cloud-core/src/ConcurrencyControlTrait.php', + 'Google\\Cloud\\Core\\DebugInfoTrait' => __DIR__ . '/..' . '/google/cloud-core/src/DebugInfoTrait.php', + 'Google\\Cloud\\Core\\Duration' => __DIR__ . '/..' . '/google/cloud-core/src/Duration.php', + 'Google\\Cloud\\Core\\EmulatorTrait' => __DIR__ . '/..' . '/google/cloud-core/src/EmulatorTrait.php', + 'Google\\Cloud\\Core\\Exception\\AbortedException' => __DIR__ . '/..' . '/google/cloud-core/src/Exception/AbortedException.php', + 'Google\\Cloud\\Core\\Exception\\BadRequestException' => __DIR__ . '/..' . '/google/cloud-core/src/Exception/BadRequestException.php', + 'Google\\Cloud\\Core\\Exception\\ConflictException' => __DIR__ . '/..' . '/google/cloud-core/src/Exception/ConflictException.php', + 'Google\\Cloud\\Core\\Exception\\DeadlineExceededException' => __DIR__ . '/..' . '/google/cloud-core/src/Exception/DeadlineExceededException.php', + 'Google\\Cloud\\Core\\Exception\\FailedPreconditionException' => __DIR__ . '/..' . '/google/cloud-core/src/Exception/FailedPreconditionException.php', + 'Google\\Cloud\\Core\\Exception\\GoogleException' => __DIR__ . '/..' . '/google/cloud-core/src/Exception/GoogleException.php', + 'Google\\Cloud\\Core\\Exception\\NotFoundException' => __DIR__ . '/..' . '/google/cloud-core/src/Exception/NotFoundException.php', + 'Google\\Cloud\\Core\\Exception\\ServerException' => __DIR__ . '/..' . '/google/cloud-core/src/Exception/ServerException.php', + 'Google\\Cloud\\Core\\Exception\\ServiceException' => __DIR__ . '/..' . '/google/cloud-core/src/Exception/ServiceException.php', + 'Google\\Cloud\\Core\\ExponentialBackoff' => __DIR__ . '/..' . '/google/cloud-core/src/ExponentialBackoff.php', + 'Google\\Cloud\\Core\\GeoPoint' => __DIR__ . '/..' . '/google/cloud-core/src/GeoPoint.php', + 'Google\\Cloud\\Core\\GrpcRequestWrapper' => __DIR__ . '/..' . '/google/cloud-core/src/GrpcRequestWrapper.php', + 'Google\\Cloud\\Core\\GrpcTrait' => __DIR__ . '/..' . '/google/cloud-core/src/GrpcTrait.php', + 'Google\\Cloud\\Core\\Iam\\Iam' => __DIR__ . '/..' . '/google/cloud-core/src/Iam/Iam.php', + 'Google\\Cloud\\Core\\Iam\\IamConnectionInterface' => __DIR__ . '/..' . '/google/cloud-core/src/Iam/IamConnectionInterface.php', + 'Google\\Cloud\\Core\\Iam\\PolicyBuilder' => __DIR__ . '/..' . '/google/cloud-core/src/Iam/PolicyBuilder.php', + 'Google\\Cloud\\Core\\InsecureCredentialsWrapper' => __DIR__ . '/..' . '/google/cloud-core/src/InsecureCredentialsWrapper.php', + 'Google\\Cloud\\Core\\Int64' => __DIR__ . '/..' . '/google/cloud-core/src/Int64.php', + 'Google\\Cloud\\Core\\Iterator\\ItemIterator' => __DIR__ . '/..' . '/google/cloud-core/src/Iterator/ItemIterator.php', + 'Google\\Cloud\\Core\\Iterator\\ItemIteratorTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Iterator/ItemIteratorTrait.php', + 'Google\\Cloud\\Core\\Iterator\\PageIterator' => __DIR__ . '/..' . '/google/cloud-core/src/Iterator/PageIterator.php', + 'Google\\Cloud\\Core\\Iterator\\PageIteratorTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Iterator/PageIteratorTrait.php', + 'Google\\Cloud\\Core\\JsonTrait' => __DIR__ . '/..' . '/google/cloud-core/src/JsonTrait.php', + 'Google\\Cloud\\Core\\Lock\\FlockLock' => __DIR__ . '/..' . '/google/cloud-core/src/Lock/FlockLock.php', + 'Google\\Cloud\\Core\\Lock\\LockInterface' => __DIR__ . '/..' . '/google/cloud-core/src/Lock/LockInterface.php', + 'Google\\Cloud\\Core\\Lock\\LockTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Lock/LockTrait.php', + 'Google\\Cloud\\Core\\Lock\\SemaphoreLock' => __DIR__ . '/..' . '/google/cloud-core/src/Lock/SemaphoreLock.php', + 'Google\\Cloud\\Core\\Lock\\SymfonyLockAdapter' => __DIR__ . '/..' . '/google/cloud-core/src/Lock/SymfonyLockAdapter.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexFormatter' => __DIR__ . '/..' . '/google/cloud-core/src/Logger/AppEngineFlexFormatter.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexFormatterV2' => __DIR__ . '/..' . '/google/cloud-core/src/Logger/AppEngineFlexFormatterV2.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexFormatterV3' => __DIR__ . '/..' . '/google/cloud-core/src/Logger/AppEngineFlexFormatterV3.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexHandler' => __DIR__ . '/..' . '/google/cloud-core/src/Logger/AppEngineFlexHandler.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexHandlerFactory' => __DIR__ . '/..' . '/google/cloud-core/src/Logger/AppEngineFlexHandlerFactory.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexHandlerV2' => __DIR__ . '/..' . '/google/cloud-core/src/Logger/AppEngineFlexHandlerV2.php', + 'Google\\Cloud\\Core\\Logger\\AppEngineFlexHandlerV3' => __DIR__ . '/..' . '/google/cloud-core/src/Logger/AppEngineFlexHandlerV3.php', + 'Google\\Cloud\\Core\\Logger\\FormatterTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Logger/FormatterTrait.php', + 'Google\\Cloud\\Core\\LongRunning\\LROTrait' => __DIR__ . '/..' . '/google/cloud-core/src/LongRunning/LROTrait.php', + 'Google\\Cloud\\Core\\LongRunning\\LongRunningConnectionInterface' => __DIR__ . '/..' . '/google/cloud-core/src/LongRunning/LongRunningConnectionInterface.php', + 'Google\\Cloud\\Core\\LongRunning\\LongRunningOperation' => __DIR__ . '/..' . '/google/cloud-core/src/LongRunning/LongRunningOperation.php', + 'Google\\Cloud\\Core\\LongRunning\\OperationResponseTrait' => __DIR__ . '/..' . '/google/cloud-core/src/LongRunning/OperationResponseTrait.php', + 'Google\\Cloud\\Core\\PhpArray' => __DIR__ . '/..' . '/google/cloud-core/src/PhpArray.php', + 'Google\\Cloud\\Core\\Report\\CloudRunMetadataProvider' => __DIR__ . '/..' . '/google/cloud-core/src/Report/CloudRunMetadataProvider.php', + 'Google\\Cloud\\Core\\Report\\EmptyMetadataProvider' => __DIR__ . '/..' . '/google/cloud-core/src/Report/EmptyMetadataProvider.php', + 'Google\\Cloud\\Core\\Report\\GAEFlexMetadataProvider' => __DIR__ . '/..' . '/google/cloud-core/src/Report/GAEFlexMetadataProvider.php', + 'Google\\Cloud\\Core\\Report\\GAEMetadataProvider' => __DIR__ . '/..' . '/google/cloud-core/src/Report/GAEMetadataProvider.php', + 'Google\\Cloud\\Core\\Report\\GAEStandardMetadataProvider' => __DIR__ . '/..' . '/google/cloud-core/src/Report/GAEStandardMetadataProvider.php', + 'Google\\Cloud\\Core\\Report\\MetadataProviderInterface' => __DIR__ . '/..' . '/google/cloud-core/src/Report/MetadataProviderInterface.php', + 'Google\\Cloud\\Core\\Report\\MetadataProviderUtils' => __DIR__ . '/..' . '/google/cloud-core/src/Report/MetadataProviderUtils.php', + 'Google\\Cloud\\Core\\Report\\SimpleMetadataProvider' => __DIR__ . '/..' . '/google/cloud-core/src/Report/SimpleMetadataProvider.php', + 'Google\\Cloud\\Core\\RequestBuilder' => __DIR__ . '/..' . '/google/cloud-core/src/RequestBuilder.php', + 'Google\\Cloud\\Core\\RequestWrapper' => __DIR__ . '/..' . '/google/cloud-core/src/RequestWrapper.php', + 'Google\\Cloud\\Core\\RequestWrapperTrait' => __DIR__ . '/..' . '/google/cloud-core/src/RequestWrapperTrait.php', + 'Google\\Cloud\\Core\\RestTrait' => __DIR__ . '/..' . '/google/cloud-core/src/RestTrait.php', + 'Google\\Cloud\\Core\\Retry' => __DIR__ . '/..' . '/google/cloud-core/src/Retry.php', + 'Google\\Cloud\\Core\\RetryDeciderTrait' => __DIR__ . '/..' . '/google/cloud-core/src/RetryDeciderTrait.php', + 'Google\\Cloud\\Core\\ServiceBuilder' => __DIR__ . '/..' . '/google/cloud-core/src/ServiceBuilder.php', + 'Google\\Cloud\\Core\\SysvTrait' => __DIR__ . '/..' . '/google/cloud-core/src/SysvTrait.php', + 'Google\\Cloud\\Core\\Testing\\ArrayHasSameValuesToken' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/ArrayHasSameValuesToken.php', + 'Google\\Cloud\\Core\\Testing\\CheckForClassTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/CheckForClassTrait.php', + 'Google\\Cloud\\Core\\Testing\\DatastoreOperationRefreshTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/DatastoreOperationRefreshTrait.php', + 'Google\\Cloud\\Core\\Testing\\FileListFilterIterator' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/FileListFilterIterator.php', + 'Google\\Cloud\\Core\\Testing\\GcTestListener' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/GcTestListener.php', + 'Google\\Cloud\\Core\\Testing\\GrpcTestTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/GrpcTestTrait.php', + 'Google\\Cloud\\Core\\Testing\\KeyPairGenerateTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/KeyPairGenerateTrait.php', + 'Google\\Cloud\\Core\\Testing\\Lock\\MockValues' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Lock/MockValues.php', + 'Google\\Cloud\\Core\\Testing\\Reflection\\DescriptionFactory' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Reflection/DescriptionFactory.php', + 'Google\\Cloud\\Core\\Testing\\Reflection\\ReflectionHandlerFactory' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Reflection/ReflectionHandlerFactory.php', + 'Google\\Cloud\\Core\\Testing\\Reflection\\ReflectionHandlerV5' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Reflection/ReflectionHandlerV5.php', + 'Google\\Cloud\\Core\\Testing\\RegexFileFilter' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/RegexFileFilter.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Container' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Snippet/Container.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Coverage\\Coverage' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Snippet/Coverage/Coverage.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Coverage\\ExcludeFilter' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Snippet/Coverage/ExcludeFilter.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Coverage\\Scanner' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Snippet/Coverage/Scanner.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Coverage\\ScannerInterface' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Snippet/Coverage/ScannerInterface.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Fixtures' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Snippet/Fixtures.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Parser\\InvokeResult' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Snippet/Parser/InvokeResult.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Parser\\Parser' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Snippet/Parser/Parser.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\Parser\\Snippet' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Snippet/Parser/Snippet.php', + 'Google\\Cloud\\Core\\Testing\\Snippet\\SnippetTestCase' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/Snippet/SnippetTestCase.php', + 'Google\\Cloud\\Core\\Testing\\StubTrait' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/StubTrait.php', + 'Google\\Cloud\\Core\\Testing\\System\\DeletionQueue' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/System/DeletionQueue.php', + 'Google\\Cloud\\Core\\Testing\\System\\KeyManager' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/System/KeyManager.php', + 'Google\\Cloud\\Core\\Testing\\System\\SystemTestCase' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/System/SystemTestCase.php', + 'Google\\Cloud\\Core\\Testing\\TestHelpers' => __DIR__ . '/..' . '/google/cloud-core/src/Testing/TestHelpers.php', + 'Google\\Cloud\\Core\\TimeTrait' => __DIR__ . '/..' . '/google/cloud-core/src/TimeTrait.php', + 'Google\\Cloud\\Core\\Timestamp' => __DIR__ . '/..' . '/google/cloud-core/src/Timestamp.php', + 'Google\\Cloud\\Core\\TimestampTrait' => __DIR__ . '/..' . '/google/cloud-core/src/TimestampTrait.php', + 'Google\\Cloud\\Core\\Upload\\AbstractUploader' => __DIR__ . '/..' . '/google/cloud-core/src/Upload/AbstractUploader.php', + 'Google\\Cloud\\Core\\Upload\\MultipartUploader' => __DIR__ . '/..' . '/google/cloud-core/src/Upload/MultipartUploader.php', + 'Google\\Cloud\\Core\\Upload\\ResumableUploader' => __DIR__ . '/..' . '/google/cloud-core/src/Upload/ResumableUploader.php', + 'Google\\Cloud\\Core\\Upload\\SignedUrlUploader' => __DIR__ . '/..' . '/google/cloud-core/src/Upload/SignedUrlUploader.php', + 'Google\\Cloud\\Core\\Upload\\StreamableUploader' => __DIR__ . '/..' . '/google/cloud-core/src/Upload/StreamableUploader.php', + 'Google\\Cloud\\Core\\UriTrait' => __DIR__ . '/..' . '/google/cloud-core/src/UriTrait.php', + 'Google\\Cloud\\Core\\ValidateTrait' => __DIR__ . '/..' . '/google/cloud-core/src/ValidateTrait.php', + 'Google\\Cloud\\Core\\ValueMapperTrait' => __DIR__ . '/..' . '/google/cloud-core/src/ValueMapperTrait.php', + 'Google\\Cloud\\Core\\WhitelistTrait' => __DIR__ . '/..' . '/google/cloud-core/src/WhitelistTrait.php', + 'Google\\Cloud\\Storage\\Acl' => __DIR__ . '/..' . '/google/cloud-storage/src/Acl.php', + 'Google\\Cloud\\Storage\\Bucket' => __DIR__ . '/..' . '/google/cloud-storage/src/Bucket.php', + 'Google\\Cloud\\Storage\\Connection\\ConnectionInterface' => __DIR__ . '/..' . '/google/cloud-storage/src/Connection/ConnectionInterface.php', + 'Google\\Cloud\\Storage\\Connection\\IamBucket' => __DIR__ . '/..' . '/google/cloud-storage/src/Connection/IamBucket.php', + 'Google\\Cloud\\Storage\\Connection\\Rest' => __DIR__ . '/..' . '/google/cloud-storage/src/Connection/Rest.php', + 'Google\\Cloud\\Storage\\Connection\\RetryTrait' => __DIR__ . '/..' . '/google/cloud-storage/src/Connection/RetryTrait.php', + 'Google\\Cloud\\Storage\\CreatedHmacKey' => __DIR__ . '/..' . '/google/cloud-storage/src/CreatedHmacKey.php', + 'Google\\Cloud\\Storage\\EncryptionTrait' => __DIR__ . '/..' . '/google/cloud-storage/src/EncryptionTrait.php', + 'Google\\Cloud\\Storage\\HmacKey' => __DIR__ . '/..' . '/google/cloud-storage/src/HmacKey.php', + 'Google\\Cloud\\Storage\\Lifecycle' => __DIR__ . '/..' . '/google/cloud-storage/src/Lifecycle.php', + 'Google\\Cloud\\Storage\\Notification' => __DIR__ . '/..' . '/google/cloud-storage/src/Notification.php', + 'Google\\Cloud\\Storage\\ObjectIterator' => __DIR__ . '/..' . '/google/cloud-storage/src/ObjectIterator.php', + 'Google\\Cloud\\Storage\\ObjectPageIterator' => __DIR__ . '/..' . '/google/cloud-storage/src/ObjectPageIterator.php', + 'Google\\Cloud\\Storage\\ReadStream' => __DIR__ . '/..' . '/google/cloud-storage/src/ReadStream.php', + 'Google\\Cloud\\Storage\\SigningHelper' => __DIR__ . '/..' . '/google/cloud-storage/src/SigningHelper.php', + 'Google\\Cloud\\Storage\\StorageClient' => __DIR__ . '/..' . '/google/cloud-storage/src/StorageClient.php', + 'Google\\Cloud\\Storage\\StorageObject' => __DIR__ . '/..' . '/google/cloud-storage/src/StorageObject.php', + 'Google\\Cloud\\Storage\\StreamWrapper' => __DIR__ . '/..' . '/google/cloud-storage/src/StreamWrapper.php', + 'Google\\Cloud\\Storage\\WriteStream' => __DIR__ . '/..' . '/google/cloud-storage/src/WriteStream.php', 'GrahamCampbell\\ResultType\\Error' => __DIR__ . '/..' . '/graham-campbell/result-type/src/Error.php', 'GrahamCampbell\\ResultType\\Result' => __DIR__ . '/..' . '/graham-campbell/result-type/src/Result.php', 'GrahamCampbell\\ResultType\\Success' => __DIR__ . '/..' . '/graham-campbell/result-type/src/Success.php', @@ -2857,6 +3179,282 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'Intervention\\Image\\Point' => __DIR__ . '/..' . '/intervention/image/src/Intervention/Image/Point.php', 'Intervention\\Image\\Response' => __DIR__ . '/..' . '/intervention/image/src/Intervention/Image/Response.php', 'Intervention\\Image\\Size' => __DIR__ . '/..' . '/intervention/image/src/Intervention/Image/Size.php', + 'JmesPath\\AstRuntime' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/AstRuntime.php', + 'JmesPath\\CompilerRuntime' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/CompilerRuntime.php', + 'JmesPath\\DebugRuntime' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/DebugRuntime.php', + 'JmesPath\\Env' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/Env.php', + 'JmesPath\\FnDispatcher' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/FnDispatcher.php', + 'JmesPath\\Lexer' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/Lexer.php', + 'JmesPath\\Parser' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/Parser.php', + 'JmesPath\\SyntaxErrorException' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/SyntaxErrorException.php', + 'JmesPath\\TreeCompiler' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/TreeCompiler.php', + 'JmesPath\\TreeInterpreter' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/TreeInterpreter.php', + 'JmesPath\\Utils' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/Utils.php', + 'Kreait\\Clock\\FrozenClock' => __DIR__ . '/..' . '/kreait/clock/src/Clock/FrozenClock.php', + 'Kreait\\Clock\\SystemClock' => __DIR__ . '/..' . '/kreait/clock/src/Clock/SystemClock.php', + 'Kreait\\Firebase\\Auth' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth.php', + 'Kreait\\Firebase\\Auth\\ActionCodeSettings' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/ActionCodeSettings.php', + 'Kreait\\Firebase\\Auth\\ActionCodeSettings\\RawActionCodeSettings' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/ActionCodeSettings/RawActionCodeSettings.php', + 'Kreait\\Firebase\\Auth\\ActionCodeSettings\\ValidatedActionCodeSettings' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/ActionCodeSettings/ValidatedActionCodeSettings.php', + 'Kreait\\Firebase\\Auth\\ApiClient' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/ApiClient.php', + 'Kreait\\Firebase\\Auth\\CreateActionLink' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/CreateActionLink.php', + 'Kreait\\Firebase\\Auth\\CreateActionLink\\ApiRequest' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/CreateActionLink/ApiRequest.php', + 'Kreait\\Firebase\\Auth\\CreateActionLink\\FailedToCreateActionLink' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/CreateActionLink/FailedToCreateActionLink.php', + 'Kreait\\Firebase\\Auth\\CreateActionLink\\GuzzleApiClientHandler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/CreateActionLink/GuzzleApiClientHandler.php', + 'Kreait\\Firebase\\Auth\\CreateActionLink\\Handler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/CreateActionLink/Handler.php', + 'Kreait\\Firebase\\Auth\\CreateSessionCookie' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/CreateSessionCookie.php', + 'Kreait\\Firebase\\Auth\\CreateSessionCookie\\ApiRequest' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/CreateSessionCookie/ApiRequest.php', + 'Kreait\\Firebase\\Auth\\CreateSessionCookie\\FailedToCreateSessionCookie' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/CreateSessionCookie/FailedToCreateSessionCookie.php', + 'Kreait\\Firebase\\Auth\\CreateSessionCookie\\GuzzleApiClientHandler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/CreateSessionCookie/GuzzleApiClientHandler.php', + 'Kreait\\Firebase\\Auth\\CreateSessionCookie\\Handler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/CreateSessionCookie/Handler.php', + 'Kreait\\Firebase\\Auth\\CustomTokenViaGoogleIam' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/CustomTokenViaGoogleIam.php', + 'Kreait\\Firebase\\Auth\\DeleteUsersRequest' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/DeleteUsersRequest.php', + 'Kreait\\Firebase\\Auth\\DeleteUsersResult' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/DeleteUsersResult.php', + 'Kreait\\Firebase\\Auth\\DisabledLegacyCustomTokenGenerator' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/DisabledLegacyCustomTokenGenerator.php', + 'Kreait\\Firebase\\Auth\\DisabledLegacyIdTokenVerifier' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/DisabledLegacyIdTokenVerifier.php', + 'Kreait\\Firebase\\Auth\\IdTokenVerifier' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/IdTokenVerifier.php', + 'Kreait\\Firebase\\Auth\\IsTenantAware' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/IsTenantAware.php', + 'Kreait\\Firebase\\Auth\\SendActionLink' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SendActionLink.php', + 'Kreait\\Firebase\\Auth\\SendActionLink\\ApiRequest' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SendActionLink/ApiRequest.php', + 'Kreait\\Firebase\\Auth\\SendActionLink\\FailedToSendActionLink' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SendActionLink/FailedToSendActionLink.php', + 'Kreait\\Firebase\\Auth\\SendActionLink\\GuzzleApiClientHandler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SendActionLink/GuzzleApiClientHandler.php', + 'Kreait\\Firebase\\Auth\\SendActionLink\\Handler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SendActionLink/Handler.php', + 'Kreait\\Firebase\\Auth\\SignIn' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SignIn.php', + 'Kreait\\Firebase\\Auth\\SignInAnonymously' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SignInAnonymously.php', + 'Kreait\\Firebase\\Auth\\SignInResult' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SignInResult.php', + 'Kreait\\Firebase\\Auth\\SignInWithCustomToken' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SignInWithCustomToken.php', + 'Kreait\\Firebase\\Auth\\SignInWithEmailAndOobCode' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SignInWithEmailAndOobCode.php', + 'Kreait\\Firebase\\Auth\\SignInWithEmailAndPassword' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SignInWithEmailAndPassword.php', + 'Kreait\\Firebase\\Auth\\SignInWithIdpCredentials' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SignInWithIdpCredentials.php', + 'Kreait\\Firebase\\Auth\\SignInWithRefreshToken' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SignInWithRefreshToken.php', + 'Kreait\\Firebase\\Auth\\SignIn\\FailedToSignIn' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SignIn/FailedToSignIn.php', + 'Kreait\\Firebase\\Auth\\SignIn\\GuzzleHandler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SignIn/GuzzleHandler.php', + 'Kreait\\Firebase\\Auth\\SignIn\\Handler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/SignIn/Handler.php', + 'Kreait\\Firebase\\Auth\\TenantId' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/TenantId.php', + 'Kreait\\Firebase\\Auth\\UserInfo' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/UserInfo.php', + 'Kreait\\Firebase\\Auth\\UserMetaData' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/UserMetaData.php', + 'Kreait\\Firebase\\Auth\\UserRecord' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Auth/UserRecord.php', + 'Kreait\\Firebase\\Contract\\Auth' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Contract/Auth.php', + 'Kreait\\Firebase\\Contract\\Database' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Contract/Database.php', + 'Kreait\\Firebase\\Contract\\DynamicLinks' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Contract/DynamicLinks.php', + 'Kreait\\Firebase\\Contract\\Firestore' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Contract/Firestore.php', + 'Kreait\\Firebase\\Contract\\Messaging' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Contract/Messaging.php', + 'Kreait\\Firebase\\Contract\\RemoteConfig' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Contract/RemoteConfig.php', + 'Kreait\\Firebase\\Contract\\Storage' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Contract/Storage.php', + 'Kreait\\Firebase\\Database' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database.php', + 'Kreait\\Firebase\\Database\\ApiClient' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/ApiClient.php', + 'Kreait\\Firebase\\Database\\Query' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query.php', + 'Kreait\\Firebase\\Database\\Query\\Filter' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Filter.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\EndAt' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/EndAt.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\EndBefore' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/EndBefore.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\EqualTo' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/EqualTo.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\LimitToFirst' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/LimitToFirst.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\LimitToLast' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/LimitToLast.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\Shallow' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/Shallow.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\StartAfter' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/StartAfter.php', + 'Kreait\\Firebase\\Database\\Query\\Filter\\StartAt' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Filter/StartAt.php', + 'Kreait\\Firebase\\Database\\Query\\Modifier' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Modifier.php', + 'Kreait\\Firebase\\Database\\Query\\ModifierTrait' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/ModifierTrait.php', + 'Kreait\\Firebase\\Database\\Query\\Sorter' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Sorter.php', + 'Kreait\\Firebase\\Database\\Query\\Sorter\\OrderByChild' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Sorter/OrderByChild.php', + 'Kreait\\Firebase\\Database\\Query\\Sorter\\OrderByKey' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Sorter/OrderByKey.php', + 'Kreait\\Firebase\\Database\\Query\\Sorter\\OrderByValue' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Query/Sorter/OrderByValue.php', + 'Kreait\\Firebase\\Database\\Reference' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Reference.php', + 'Kreait\\Firebase\\Database\\Reference\\Validator' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Reference/Validator.php', + 'Kreait\\Firebase\\Database\\RuleSet' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/RuleSet.php', + 'Kreait\\Firebase\\Database\\Snapshot' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Snapshot.php', + 'Kreait\\Firebase\\Database\\Transaction' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Database/Transaction.php', + 'Kreait\\Firebase\\DynamicLink' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\AnalyticsInfo' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/AnalyticsInfo.php', + 'Kreait\\Firebase\\DynamicLink\\AnalyticsInfo\\GooglePlayAnalytics' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/AnalyticsInfo/GooglePlayAnalytics.php', + 'Kreait\\Firebase\\DynamicLink\\AnalyticsInfo\\ITunesConnectAnalytics' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/AnalyticsInfo/ITunesConnectAnalytics.php', + 'Kreait\\Firebase\\DynamicLink\\AndroidInfo' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/AndroidInfo.php', + 'Kreait\\Firebase\\DynamicLink\\CreateDynamicLink' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/CreateDynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\CreateDynamicLink\\ApiRequest' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/CreateDynamicLink/ApiRequest.php', + 'Kreait\\Firebase\\DynamicLink\\CreateDynamicLink\\FailedToCreateDynamicLink' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/CreateDynamicLink/FailedToCreateDynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\CreateDynamicLink\\GuzzleApiClientHandler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/CreateDynamicLink/GuzzleApiClientHandler.php', + 'Kreait\\Firebase\\DynamicLink\\CreateDynamicLink\\Handler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/CreateDynamicLink/Handler.php', + 'Kreait\\Firebase\\DynamicLink\\DynamicLinkStatistics' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/DynamicLinkStatistics.php', + 'Kreait\\Firebase\\DynamicLink\\EventStatistics' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/EventStatistics.php', + 'Kreait\\Firebase\\DynamicLink\\GetStatisticsForDynamicLink' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/GetStatisticsForDynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\GetStatisticsForDynamicLink\\ApiRequest' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/GetStatisticsForDynamicLink/ApiRequest.php', + 'Kreait\\Firebase\\DynamicLink\\GetStatisticsForDynamicLink\\FailedToGetStatisticsForDynamicLink' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/GetStatisticsForDynamicLink/FailedToGetStatisticsForDynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\GetStatisticsForDynamicLink\\GuzzleApiClientHandler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/GetStatisticsForDynamicLink/GuzzleApiClientHandler.php', + 'Kreait\\Firebase\\DynamicLink\\GetStatisticsForDynamicLink\\Handler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/GetStatisticsForDynamicLink/Handler.php', + 'Kreait\\Firebase\\DynamicLink\\IOSInfo' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/IOSInfo.php', + 'Kreait\\Firebase\\DynamicLink\\NavigationInfo' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/NavigationInfo.php', + 'Kreait\\Firebase\\DynamicLink\\ShortenLongDynamicLink' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/ShortenLongDynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\ShortenLongDynamicLink\\ApiRequest' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/ShortenLongDynamicLink/ApiRequest.php', + 'Kreait\\Firebase\\DynamicLink\\ShortenLongDynamicLink\\FailedToShortenLongDynamicLink' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/ShortenLongDynamicLink/FailedToShortenLongDynamicLink.php', + 'Kreait\\Firebase\\DynamicLink\\ShortenLongDynamicLink\\GuzzleApiClientHandler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/ShortenLongDynamicLink/GuzzleApiClientHandler.php', + 'Kreait\\Firebase\\DynamicLink\\ShortenLongDynamicLink\\Handler' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/ShortenLongDynamicLink/Handler.php', + 'Kreait\\Firebase\\DynamicLink\\SocialMetaTagInfo' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLink/SocialMetaTagInfo.php', + 'Kreait\\Firebase\\DynamicLinks' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/DynamicLinks.php', + 'Kreait\\Firebase\\Exception\\AuthApiExceptionConverter' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/AuthApiExceptionConverter.php', + 'Kreait\\Firebase\\Exception\\AuthException' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/AuthException.php', + 'Kreait\\Firebase\\Exception\\Auth\\ApiConnectionFailed' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/ApiConnectionFailed.php', + 'Kreait\\Firebase\\Exception\\Auth\\AuthError' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/AuthError.php', + 'Kreait\\Firebase\\Exception\\Auth\\CredentialsMismatch' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/CredentialsMismatch.php', + 'Kreait\\Firebase\\Exception\\Auth\\EmailExists' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/EmailExists.php', + 'Kreait\\Firebase\\Exception\\Auth\\EmailNotFound' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/EmailNotFound.php', + 'Kreait\\Firebase\\Exception\\Auth\\ExpiredOobCode' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/ExpiredOobCode.php', + 'Kreait\\Firebase\\Exception\\Auth\\InvalidCustomToken' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/InvalidCustomToken.php', + 'Kreait\\Firebase\\Exception\\Auth\\InvalidOobCode' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/InvalidOobCode.php', + 'Kreait\\Firebase\\Exception\\Auth\\InvalidPassword' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/InvalidPassword.php', + 'Kreait\\Firebase\\Exception\\Auth\\MissingPassword' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/MissingPassword.php', + 'Kreait\\Firebase\\Exception\\Auth\\OperationNotAllowed' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/OperationNotAllowed.php', + 'Kreait\\Firebase\\Exception\\Auth\\PhoneNumberExists' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/PhoneNumberExists.php', + 'Kreait\\Firebase\\Exception\\Auth\\ProviderLinkFailed' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/ProviderLinkFailed.php', + 'Kreait\\Firebase\\Exception\\Auth\\RevokedIdToken' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/RevokedIdToken.php', + 'Kreait\\Firebase\\Exception\\Auth\\UserDisabled' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/UserDisabled.php', + 'Kreait\\Firebase\\Exception\\Auth\\UserNotFound' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/UserNotFound.php', + 'Kreait\\Firebase\\Exception\\Auth\\WeakPassword' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Auth/WeakPassword.php', + 'Kreait\\Firebase\\Exception\\DatabaseApiExceptionConverter' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/DatabaseApiExceptionConverter.php', + 'Kreait\\Firebase\\Exception\\DatabaseException' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/DatabaseException.php', + 'Kreait\\Firebase\\Exception\\Database\\ApiConnectionFailed' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Database/ApiConnectionFailed.php', + 'Kreait\\Firebase\\Exception\\Database\\DatabaseError' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Database/DatabaseError.php', + 'Kreait\\Firebase\\Exception\\Database\\DatabaseNotFound' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Database/DatabaseNotFound.php', + 'Kreait\\Firebase\\Exception\\Database\\PermissionDenied' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Database/PermissionDenied.php', + 'Kreait\\Firebase\\Exception\\Database\\PreconditionFailed' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Database/PreconditionFailed.php', + 'Kreait\\Firebase\\Exception\\Database\\ReferenceHasNotBeenSnapshotted' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Database/ReferenceHasNotBeenSnapshotted.php', + 'Kreait\\Firebase\\Exception\\Database\\TransactionFailed' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Database/TransactionFailed.php', + 'Kreait\\Firebase\\Exception\\Database\\UnsupportedQuery' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Database/UnsupportedQuery.php', + 'Kreait\\Firebase\\Exception\\FirebaseException' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/FirebaseException.php', + 'Kreait\\Firebase\\Exception\\HasErrors' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/HasErrors.php', + 'Kreait\\Firebase\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/InvalidArgumentException.php', + 'Kreait\\Firebase\\Exception\\LogicException' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/LogicException.php', + 'Kreait\\Firebase\\Exception\\MessagingApiExceptionConverter' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/MessagingApiExceptionConverter.php', + 'Kreait\\Firebase\\Exception\\MessagingException' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/MessagingException.php', + 'Kreait\\Firebase\\Exception\\Messaging\\ApiConnectionFailed' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Messaging/ApiConnectionFailed.php', + 'Kreait\\Firebase\\Exception\\Messaging\\AuthenticationError' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Messaging/AuthenticationError.php', + 'Kreait\\Firebase\\Exception\\Messaging\\InvalidArgument' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Messaging/InvalidArgument.php', + 'Kreait\\Firebase\\Exception\\Messaging\\InvalidMessage' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Messaging/InvalidMessage.php', + 'Kreait\\Firebase\\Exception\\Messaging\\MessagingError' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Messaging/MessagingError.php', + 'Kreait\\Firebase\\Exception\\Messaging\\NotFound' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Messaging/NotFound.php', + 'Kreait\\Firebase\\Exception\\Messaging\\QuotaExceeded' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Messaging/QuotaExceeded.php', + 'Kreait\\Firebase\\Exception\\Messaging\\ServerError' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Messaging/ServerError.php', + 'Kreait\\Firebase\\Exception\\Messaging\\ServerUnavailable' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/Messaging/ServerUnavailable.php', + 'Kreait\\Firebase\\Exception\\OutOfRangeException' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/OutOfRangeException.php', + 'Kreait\\Firebase\\Exception\\RemoteConfigApiExceptionConverter' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfigApiExceptionConverter.php', + 'Kreait\\Firebase\\Exception\\RemoteConfigException' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfigException.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\ApiConnectionFailed' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/ApiConnectionFailed.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\OperationAborted' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/OperationAborted.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\PermissionDenied' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/PermissionDenied.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\RemoteConfigError' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/RemoteConfigError.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\ValidationFailed' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/ValidationFailed.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\VersionMismatch' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/VersionMismatch.php', + 'Kreait\\Firebase\\Exception\\RemoteConfig\\VersionNotFound' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/RemoteConfig/VersionNotFound.php', + 'Kreait\\Firebase\\Exception\\RuntimeException' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/RuntimeException.php', + 'Kreait\\Firebase\\Exception\\ServiceAccountDiscoveryFailed' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Exception/ServiceAccountDiscoveryFailed.php', + 'Kreait\\Firebase\\Factory' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Factory.php', + 'Kreait\\Firebase\\Firestore' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Firestore.php', + 'Kreait\\Firebase\\Http\\ErrorResponseParser' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Http/ErrorResponseParser.php', + 'Kreait\\Firebase\\Http\\HasSubRequests' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Http/HasSubRequests.php', + 'Kreait\\Firebase\\Http\\HasSubResponses' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Http/HasSubResponses.php', + 'Kreait\\Firebase\\Http\\HttpClientOptions' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Http/HttpClientOptions.php', + 'Kreait\\Firebase\\Http\\Middleware' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Http/Middleware.php', + 'Kreait\\Firebase\\Http\\RequestWithSubRequests' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Http/RequestWithSubRequests.php', + 'Kreait\\Firebase\\Http\\Requests' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Http/Requests.php', + 'Kreait\\Firebase\\Http\\ResponseWithSubResponses' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Http/ResponseWithSubResponses.php', + 'Kreait\\Firebase\\Http\\Responses' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Http/Responses.php', + 'Kreait\\Firebase\\Http\\WrappedPsr7Request' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Http/WrappedPsr7Request.php', + 'Kreait\\Firebase\\Http\\WrappedPsr7Response' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Http/WrappedPsr7Response.php', + 'Kreait\\Firebase\\JWT\\Action\\CreateCustomToken' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/CreateCustomToken.php', + 'Kreait\\Firebase\\JWT\\Action\\CreateCustomToken\\Handler' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/CreateCustomToken/Handler.php', + 'Kreait\\Firebase\\JWT\\Action\\CreateCustomToken\\WithFirebaseJWT' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/CreateCustomToken/WithFirebaseJWT.php', + 'Kreait\\Firebase\\JWT\\Action\\CreateCustomToken\\WithHandlerDiscovery' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/CreateCustomToken/WithHandlerDiscovery.php', + 'Kreait\\Firebase\\JWT\\Action\\CreateCustomToken\\WithLcobucciJWT' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/CreateCustomToken/WithLcobucciJWT.php', + 'Kreait\\Firebase\\JWT\\Action\\CreateCustomToken\\WithLcobucciV3JWT' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/CreateCustomToken/WithLcobucciV3JWT.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys\\Handler' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys/Handler.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys\\WithGuzzle6' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys/WithGuzzle6.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys\\WithHandlerDiscovery' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys/WithHandlerDiscovery.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys\\WithPsr16SimpleCache' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys/WithPsr16SimpleCache.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys\\WithPsr6Cache' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys/WithPsr6Cache.php', + 'Kreait\\Firebase\\JWT\\Action\\FetchGooglePublicKeys\\WithStreamContext' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/FetchGooglePublicKeys/WithStreamContext.php', + 'Kreait\\Firebase\\JWT\\Action\\VerifyIdToken' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/VerifyIdToken.php', + 'Kreait\\Firebase\\JWT\\Action\\VerifyIdToken\\Handler' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/VerifyIdToken/Handler.php', + 'Kreait\\Firebase\\JWT\\Action\\VerifyIdToken\\WithFirebaseJWT' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/VerifyIdToken/WithFirebaseJWT.php', + 'Kreait\\Firebase\\JWT\\Action\\VerifyIdToken\\WithHandlerDiscovery' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/VerifyIdToken/WithHandlerDiscovery.php', + 'Kreait\\Firebase\\JWT\\Action\\VerifyIdToken\\WithLcobucciJWT' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/VerifyIdToken/WithLcobucciJWT.php', + 'Kreait\\Firebase\\JWT\\Action\\VerifyIdToken\\WithLcobucciV3JWT' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Action/VerifyIdToken/WithLcobucciV3JWT.php', + 'Kreait\\Firebase\\JWT\\Cache\\InMemoryCache' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Cache/InMemoryCache.php', + 'Kreait\\Firebase\\JWT\\Contract\\Expirable' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Contract/Expirable.php', + 'Kreait\\Firebase\\JWT\\Contract\\ExpirableTrait' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Contract/ExpirableTrait.php', + 'Kreait\\Firebase\\JWT\\Contract\\Keys' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Contract/Keys.php', + 'Kreait\\Firebase\\JWT\\Contract\\KeysTrait' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Contract/KeysTrait.php', + 'Kreait\\Firebase\\JWT\\Contract\\Token' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Contract/Token.php', + 'Kreait\\Firebase\\JWT\\CustomTokenGenerator' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/CustomTokenGenerator.php', + 'Kreait\\Firebase\\JWT\\Error\\CustomTokenCreationFailed' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Error/CustomTokenCreationFailed.php', + 'Kreait\\Firebase\\JWT\\Error\\DiscoveryFailed' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Error/DiscoveryFailed.php', + 'Kreait\\Firebase\\JWT\\Error\\FetchingGooglePublicKeysFailed' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Error/FetchingGooglePublicKeysFailed.php', + 'Kreait\\Firebase\\JWT\\Error\\IdTokenVerificationFailed' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Error/IdTokenVerificationFailed.php', + 'Kreait\\Firebase\\JWT\\GooglePublicKeys' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/GooglePublicKeys.php', + 'Kreait\\Firebase\\JWT\\IdTokenVerifier' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/IdTokenVerifier.php', + 'Kreait\\Firebase\\JWT\\Keys\\ExpiringKeys' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Keys/ExpiringKeys.php', + 'Kreait\\Firebase\\JWT\\Keys\\StaticKeys' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Keys/StaticKeys.php', + 'Kreait\\Firebase\\JWT\\Token' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Token.php', + 'Kreait\\Firebase\\JWT\\Value\\Duration' => __DIR__ . '/..' . '/kreait/firebase-tokens/src/JWT/Value/Duration.php', + 'Kreait\\Firebase\\Messaging' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging.php', + 'Kreait\\Firebase\\Messaging\\AndroidConfig' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/AndroidConfig.php', + 'Kreait\\Firebase\\Messaging\\ApiClient' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/ApiClient.php', + 'Kreait\\Firebase\\Messaging\\ApnsConfig' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/ApnsConfig.php', + 'Kreait\\Firebase\\Messaging\\AppInstance' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/AppInstance.php', + 'Kreait\\Firebase\\Messaging\\AppInstanceApiClient' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/AppInstanceApiClient.php', + 'Kreait\\Firebase\\Messaging\\CloudMessage' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/CloudMessage.php', + 'Kreait\\Firebase\\Messaging\\Condition' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/Condition.php', + 'Kreait\\Firebase\\Messaging\\FcmOptions' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/FcmOptions.php', + 'Kreait\\Firebase\\Messaging\\Http\\Request\\MessageRequest' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/Http/Request/MessageRequest.php', + 'Kreait\\Firebase\\Messaging\\Http\\Request\\SendMessage' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/Http/Request/SendMessage.php', + 'Kreait\\Firebase\\Messaging\\Http\\Request\\SendMessageToTokens' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/Http/Request/SendMessageToTokens.php', + 'Kreait\\Firebase\\Messaging\\Http\\Request\\SendMessages' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/Http/Request/SendMessages.php', + 'Kreait\\Firebase\\Messaging\\Http\\Request\\ValidateMessage' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/Http/Request/ValidateMessage.php', + 'Kreait\\Firebase\\Messaging\\Message' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/Message.php', + 'Kreait\\Firebase\\Messaging\\MessageData' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/MessageData.php', + 'Kreait\\Firebase\\Messaging\\MessageTarget' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/MessageTarget.php', + 'Kreait\\Firebase\\Messaging\\Messages' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/Messages.php', + 'Kreait\\Firebase\\Messaging\\MulticastSendReport' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/MulticastSendReport.php', + 'Kreait\\Firebase\\Messaging\\Notification' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/Notification.php', + 'Kreait\\Firebase\\Messaging\\RawMessageFromArray' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/RawMessageFromArray.php', + 'Kreait\\Firebase\\Messaging\\RegistrationToken' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/RegistrationToken.php', + 'Kreait\\Firebase\\Messaging\\RegistrationTokens' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/RegistrationTokens.php', + 'Kreait\\Firebase\\Messaging\\SendReport' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/SendReport.php', + 'Kreait\\Firebase\\Messaging\\Topic' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/Topic.php', + 'Kreait\\Firebase\\Messaging\\TopicSubscription' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/TopicSubscription.php', + 'Kreait\\Firebase\\Messaging\\TopicSubscriptions' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/TopicSubscriptions.php', + 'Kreait\\Firebase\\Messaging\\WebPushConfig' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Messaging/WebPushConfig.php', + 'Kreait\\Firebase\\Project\\ProjectId' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Project/ProjectId.php', + 'Kreait\\Firebase\\RemoteConfig' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig.php', + 'Kreait\\Firebase\\RemoteConfig\\ApiClient' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/ApiClient.php', + 'Kreait\\Firebase\\RemoteConfig\\Condition' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/Condition.php', + 'Kreait\\Firebase\\RemoteConfig\\ConditionalValue' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/ConditionalValue.php', + 'Kreait\\Firebase\\RemoteConfig\\DefaultValue' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/DefaultValue.php', + 'Kreait\\Firebase\\RemoteConfig\\FindVersions' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/FindVersions.php', + 'Kreait\\Firebase\\RemoteConfig\\Parameter' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/Parameter.php', + 'Kreait\\Firebase\\RemoteConfig\\ParameterGroup' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/ParameterGroup.php', + 'Kreait\\Firebase\\RemoteConfig\\TagColor' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/TagColor.php', + 'Kreait\\Firebase\\RemoteConfig\\Template' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/Template.php', + 'Kreait\\Firebase\\RemoteConfig\\UpdateOrigin' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/UpdateOrigin.php', + 'Kreait\\Firebase\\RemoteConfig\\UpdateType' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/UpdateType.php', + 'Kreait\\Firebase\\RemoteConfig\\User' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/User.php', + 'Kreait\\Firebase\\RemoteConfig\\Version' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/Version.php', + 'Kreait\\Firebase\\RemoteConfig\\VersionNumber' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/RemoteConfig/VersionNumber.php', + 'Kreait\\Firebase\\Request' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Request.php', + 'Kreait\\Firebase\\Request\\CreateUser' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Request/CreateUser.php', + 'Kreait\\Firebase\\Request\\EditUserTrait' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Request/EditUserTrait.php', + 'Kreait\\Firebase\\Request\\UpdateUser' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Request/UpdateUser.php', + 'Kreait\\Firebase\\ServiceAccount' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/ServiceAccount.php', + 'Kreait\\Firebase\\Storage' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Storage.php', + 'Kreait\\Firebase\\Util' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Util.php', + 'Kreait\\Firebase\\Util\\DT' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Util/DT.php', + 'Kreait\\Firebase\\Util\\Deprecation' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Util/Deprecation.php', + 'Kreait\\Firebase\\Util\\JSON' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Util/JSON.php', + 'Kreait\\Firebase\\Value\\ClearTextPassword' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Value/ClearTextPassword.php', + 'Kreait\\Firebase\\Value\\Email' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Value/Email.php', + 'Kreait\\Firebase\\Value\\PhoneNumber' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Value/PhoneNumber.php', + 'Kreait\\Firebase\\Value\\Provider' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Value/Provider.php', + 'Kreait\\Firebase\\Value\\Uid' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Value/Uid.php', + 'Kreait\\Firebase\\Value\\Url' => __DIR__ . '/..' . '/kreait/firebase-php/src/Firebase/Value/Url.php', 'Laravel\\Sail\\Console\\AddCommand' => __DIR__ . '/..' . '/laravel/sail/src/Console/AddCommand.php', 'Laravel\\Sail\\Console\\Concerns\\InteractsWithDockerComposeServices' => __DIR__ . '/..' . '/laravel/sail/src/Console/Concerns/InteractsWithDockerComposeServices.php', 'Laravel\\Sail\\Console\\InstallCommand' => __DIR__ . '/..' . '/laravel/sail/src/Console/InstallCommand.php', @@ -2899,6 +3497,69 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'Laravel\\Tinker\\Console\\TinkerCommand' => __DIR__ . '/..' . '/laravel/tinker/src/Console/TinkerCommand.php', 'Laravel\\Tinker\\TinkerCaster' => __DIR__ . '/..' . '/laravel/tinker/src/TinkerCaster.php', 'Laravel\\Tinker\\TinkerServiceProvider' => __DIR__ . '/..' . '/laravel/tinker/src/TinkerServiceProvider.php', + 'Lcobucci\\Clock\\Clock' => __DIR__ . '/..' . '/lcobucci/clock/src/Clock.php', + 'Lcobucci\\Clock\\FrozenClock' => __DIR__ . '/..' . '/lcobucci/clock/src/FrozenClock.php', + 'Lcobucci\\Clock\\SystemClock' => __DIR__ . '/..' . '/lcobucci/clock/src/SystemClock.php', + 'Lcobucci\\JWT\\Builder' => __DIR__ . '/..' . '/lcobucci/jwt/src/Builder.php', + 'Lcobucci\\JWT\\ClaimsFormatter' => __DIR__ . '/..' . '/lcobucci/jwt/src/ClaimsFormatter.php', + 'Lcobucci\\JWT\\Configuration' => __DIR__ . '/..' . '/lcobucci/jwt/src/Configuration.php', + 'Lcobucci\\JWT\\Decoder' => __DIR__ . '/..' . '/lcobucci/jwt/src/Decoder.php', + 'Lcobucci\\JWT\\Encoder' => __DIR__ . '/..' . '/lcobucci/jwt/src/Encoder.php', + 'Lcobucci\\JWT\\Encoding\\CannotDecodeContent' => __DIR__ . '/..' . '/lcobucci/jwt/src/Encoding/CannotDecodeContent.php', + 'Lcobucci\\JWT\\Encoding\\CannotEncodeContent' => __DIR__ . '/..' . '/lcobucci/jwt/src/Encoding/CannotEncodeContent.php', + 'Lcobucci\\JWT\\Encoding\\ChainedFormatter' => __DIR__ . '/..' . '/lcobucci/jwt/src/Encoding/ChainedFormatter.php', + 'Lcobucci\\JWT\\Encoding\\JoseEncoder' => __DIR__ . '/..' . '/lcobucci/jwt/src/Encoding/JoseEncoder.php', + 'Lcobucci\\JWT\\Encoding\\MicrosecondBasedDateConversion' => __DIR__ . '/..' . '/lcobucci/jwt/src/Encoding/MicrosecondBasedDateConversion.php', + 'Lcobucci\\JWT\\Encoding\\UnifyAudience' => __DIR__ . '/..' . '/lcobucci/jwt/src/Encoding/UnifyAudience.php', + 'Lcobucci\\JWT\\Exception' => __DIR__ . '/..' . '/lcobucci/jwt/src/Exception.php', + 'Lcobucci\\JWT\\Parser' => __DIR__ . '/..' . '/lcobucci/jwt/src/Parser.php', + 'Lcobucci\\JWT\\Signer' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer.php', + 'Lcobucci\\JWT\\Signer\\CannotSignPayload' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/CannotSignPayload.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Ecdsa.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa\\ConversionFailed' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Ecdsa/ConversionFailed.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa\\MultibyteStringConverter' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Ecdsa/MultibyteStringConverter.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa\\Sha256' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Ecdsa/Sha256.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa\\Sha384' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Ecdsa/Sha384.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa\\Sha512' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Ecdsa/Sha512.php', + 'Lcobucci\\JWT\\Signer\\Ecdsa\\SignatureConverter' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Ecdsa/SignatureConverter.php', + 'Lcobucci\\JWT\\Signer\\Hmac' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Hmac.php', + 'Lcobucci\\JWT\\Signer\\Hmac\\Sha256' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Hmac/Sha256.php', + 'Lcobucci\\JWT\\Signer\\Hmac\\Sha384' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Hmac/Sha384.php', + 'Lcobucci\\JWT\\Signer\\Hmac\\Sha512' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Hmac/Sha512.php', + 'Lcobucci\\JWT\\Signer\\InvalidKeyProvided' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/InvalidKeyProvided.php', + 'Lcobucci\\JWT\\Signer\\Key' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Key.php', + 'Lcobucci\\JWT\\Signer\\Key\\FileCouldNotBeRead' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Key/FileCouldNotBeRead.php', + 'Lcobucci\\JWT\\Signer\\Key\\InMemory' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Key/InMemory.php', + 'Lcobucci\\JWT\\Signer\\Key\\LocalFileReference' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Key/LocalFileReference.php', + 'Lcobucci\\JWT\\Signer\\None' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/None.php', + 'Lcobucci\\JWT\\Signer\\OpenSSL' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/OpenSSL.php', + 'Lcobucci\\JWT\\Signer\\Rsa' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Rsa.php', + 'Lcobucci\\JWT\\Signer\\Rsa\\Sha256' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Rsa/Sha256.php', + 'Lcobucci\\JWT\\Signer\\Rsa\\Sha384' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Rsa/Sha384.php', + 'Lcobucci\\JWT\\Signer\\Rsa\\Sha512' => __DIR__ . '/..' . '/lcobucci/jwt/src/Signer/Rsa/Sha512.php', + 'Lcobucci\\JWT\\Token' => __DIR__ . '/..' . '/lcobucci/jwt/src/Token.php', + 'Lcobucci\\JWT\\Token\\Builder' => __DIR__ . '/..' . '/lcobucci/jwt/src/Token/Builder.php', + 'Lcobucci\\JWT\\Token\\DataSet' => __DIR__ . '/..' . '/lcobucci/jwt/src/Token/DataSet.php', + 'Lcobucci\\JWT\\Token\\InvalidTokenStructure' => __DIR__ . '/..' . '/lcobucci/jwt/src/Token/InvalidTokenStructure.php', + 'Lcobucci\\JWT\\Token\\Parser' => __DIR__ . '/..' . '/lcobucci/jwt/src/Token/Parser.php', + 'Lcobucci\\JWT\\Token\\Plain' => __DIR__ . '/..' . '/lcobucci/jwt/src/Token/Plain.php', + 'Lcobucci\\JWT\\Token\\RegisteredClaimGiven' => __DIR__ . '/..' . '/lcobucci/jwt/src/Token/RegisteredClaimGiven.php', + 'Lcobucci\\JWT\\Token\\RegisteredClaims' => __DIR__ . '/..' . '/lcobucci/jwt/src/Token/RegisteredClaims.php', + 'Lcobucci\\JWT\\Token\\Signature' => __DIR__ . '/..' . '/lcobucci/jwt/src/Token/Signature.php', + 'Lcobucci\\JWT\\Token\\UnsupportedHeaderFound' => __DIR__ . '/..' . '/lcobucci/jwt/src/Token/UnsupportedHeaderFound.php', + 'Lcobucci\\JWT\\Validation\\Constraint' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validation/Constraint.php', + 'Lcobucci\\JWT\\Validation\\ConstraintViolation' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validation/ConstraintViolation.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\IdentifiedBy' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validation/Constraint/IdentifiedBy.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\IssuedBy' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validation/Constraint/IssuedBy.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\LeewayCannotBeNegative' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validation/Constraint/LeewayCannotBeNegative.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\PermittedFor' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validation/Constraint/PermittedFor.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\RelatedTo' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validation/Constraint/RelatedTo.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\SignedWith' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validation/Constraint/SignedWith.php', + 'Lcobucci\\JWT\\Validation\\Constraint\\ValidAt' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validation/Constraint/ValidAt.php', + 'Lcobucci\\JWT\\Validation\\NoConstraintsGiven' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validation/NoConstraintsGiven.php', + 'Lcobucci\\JWT\\Validation\\RequiredConstraintsViolated' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validation/RequiredConstraintsViolated.php', + 'Lcobucci\\JWT\\Validation\\Validator' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validation/Validator.php', + 'Lcobucci\\JWT\\Validator' => __DIR__ . '/..' . '/lcobucci/jwt/src/Validator.php', 'League\\CommonMark\\CommonMarkConverter' => __DIR__ . '/..' . '/league/commonmark/src/CommonMarkConverter.php', 'League\\CommonMark\\ConverterInterface' => __DIR__ . '/..' . '/league/commonmark/src/ConverterInterface.php', 'League\\CommonMark\\Delimiter\\Delimiter' => __DIR__ . '/..' . '/league/commonmark/src/Delimiter/Delimiter.php', @@ -3564,6 +4225,7 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'PHPUnit\\Event\\Code\\ClassMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ClassMethod.php', 'PHPUnit\\Event\\Code\\ComparisonFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ComparisonFailure.php', 'PHPUnit\\Event\\Code\\ComparisonFailureBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php', + 'PHPUnit\\Event\\Code\\NoTestCaseObjectOnCallStackException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/NoTestCaseObjectOnCallStackException.php', 'PHPUnit\\Event\\Code\\Phpt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/Phpt.php', 'PHPUnit\\Event\\Code\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/Test.php', 'PHPUnit\\Event\\Code\\TestCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestCollection.php', @@ -3689,6 +4351,10 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'PHPUnit\\Event\\Test\\ComparatorRegisteredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegisteredSubscriber.php', 'PHPUnit\\Event\\Test\\ConsideredRisky' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRisky.php', 'PHPUnit\\Event\\Test\\ConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRiskySubscriber.php', + 'PHPUnit\\Event\\Test\\DataProviderMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalled.php', + 'PHPUnit\\Event\\Test\\DataProviderMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalledSubscriber.php', + 'PHPUnit\\Event\\Test\\DataProviderMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinished.php', + 'PHPUnit\\Event\\Test\\DataProviderMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinishedSubscriber.php', 'PHPUnit\\Event\\Test\\DeprecationTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php', 'PHPUnit\\Event\\Test\\DeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggeredSubscriber.php', 'PHPUnit\\Event\\Test\\ErrorTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php', @@ -4109,9 +4775,7 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php', 'PHPUnit\\Metadata\\Version\\Requirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/Requirement.php', 'PHPUnit\\Runner\\ClassCannotBeFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php', - 'PHPUnit\\Runner\\ClassCannotBeInstantiatedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeInstantiatedException.php', - 'PHPUnit\\Runner\\ClassDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExistException.php', - 'PHPUnit\\Runner\\ClassDoesNotImplementExtensionInterfaceException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotImplementExtensionInterfaceException.php', + 'PHPUnit\\Runner\\ClassDoesNotExtendTestCaseException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php', 'PHPUnit\\Runner\\ClassIsAbstractException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php', 'PHPUnit\\Runner\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/CodeCoverage.php', 'PHPUnit\\Runner\\DirectoryCannotBeCreatedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/DirectoryCannotBeCreatedException.php', @@ -4131,7 +4795,6 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'PHPUnit\\Runner\\InvalidOrderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php', 'PHPUnit\\Runner\\InvalidPhptFileException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php', 'PHPUnit\\Runner\\NoIgnoredEventException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/NoIgnoredEventException.php', - 'PHPUnit\\Runner\\NoTestCaseObjectOnCallStackException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/NoTestCaseObjectOnCallStackException.php', 'PHPUnit\\Runner\\ParameterDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php', 'PHPUnit\\Runner\\PhptExternalFileCannotBeLoadedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php', 'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php', @@ -4278,6 +4941,7 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestRunnerExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php', 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php', 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php', + 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredErrorSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php', 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php', 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php', 'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php', @@ -4364,7 +5028,6 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetector' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php', 'PHPUnit\\TextUI\\XmlConfiguration\\SchemaFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php', 'PHPUnit\\TextUI\\XmlConfiguration\\SnapshotNodeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\Source' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Source.php', 'PHPUnit\\TextUI\\XmlConfiguration\\SuccessfulSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php', 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php', 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php', @@ -4718,6 +5381,11 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'PhpParser\\PrettyPrinterAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php', 'PhpParser\\PrettyPrinter\\Standard' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php', 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', + 'Psr\\Cache\\CacheException' => __DIR__ . '/..' . '/psr/cache/src/CacheException.php', + 'Psr\\Cache\\CacheItemInterface' => __DIR__ . '/..' . '/psr/cache/src/CacheItemInterface.php', + 'Psr\\Cache\\CacheItemPoolInterface' => __DIR__ . '/..' . '/psr/cache/src/CacheItemPoolInterface.php', + 'Psr\\Cache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/cache/src/InvalidArgumentException.php', + 'Psr\\Clock\\ClockInterface' => __DIR__ . '/..' . '/psr/clock/src/ClockInterface.php', 'Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php', 'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php', 'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php', @@ -5099,6 +5767,22 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'Ramsey\\Uuid\\UuidInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/UuidInterface.php', 'Ramsey\\Uuid\\Validator\\GenericValidator' => __DIR__ . '/..' . '/ramsey/uuid/src/Validator/GenericValidator.php', 'Ramsey\\Uuid\\Validator\\ValidatorInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Validator/ValidatorInterface.php', + 'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', + 'Riverline\\MultiPartParser\\Converters\\Globals' => __DIR__ . '/..' . '/riverline/multipart-parser/src/Converters/Globals.php', + 'Riverline\\MultiPartParser\\Converters\\HttpFoundation' => __DIR__ . '/..' . '/riverline/multipart-parser/src/Converters/HttpFoundation.php', + 'Riverline\\MultiPartParser\\Converters\\PSR7' => __DIR__ . '/..' . '/riverline/multipart-parser/src/Converters/PSR7.php', + 'Riverline\\MultiPartParser\\Part' => __DIR__ . '/..' . '/riverline/multipart-parser/src/Part.php', + 'Riverline\\MultiPartParser\\StreamedPart' => __DIR__ . '/..' . '/riverline/multipart-parser/src/StreamedPart.php', + 'Rize\\UriTemplate' => __DIR__ . '/..' . '/rize/uri-template/src/Rize/UriTemplate.php', + 'Rize\\UriTemplate\\Node\\Abstraction' => __DIR__ . '/..' . '/rize/uri-template/src/Rize/UriTemplate/Node/Abstraction.php', + 'Rize\\UriTemplate\\Node\\Expression' => __DIR__ . '/..' . '/rize/uri-template/src/Rize/UriTemplate/Node/Expression.php', + 'Rize\\UriTemplate\\Node\\Literal' => __DIR__ . '/..' . '/rize/uri-template/src/Rize/UriTemplate/Node/Literal.php', + 'Rize\\UriTemplate\\Node\\Variable' => __DIR__ . '/..' . '/rize/uri-template/src/Rize/UriTemplate/Node/Variable.php', + 'Rize\\UriTemplate\\Operator\\Abstraction' => __DIR__ . '/..' . '/rize/uri-template/src/Rize/UriTemplate/Operator/Abstraction.php', + 'Rize\\UriTemplate\\Operator\\Named' => __DIR__ . '/..' . '/rize/uri-template/src/Rize/UriTemplate/Operator/Named.php', + 'Rize\\UriTemplate\\Operator\\UnNamed' => __DIR__ . '/..' . '/rize/uri-template/src/Rize/UriTemplate/Operator/UnNamed.php', + 'Rize\\UriTemplate\\Parser' => __DIR__ . '/..' . '/rize/uri-template/src/Rize/UriTemplate/Parser.php', + 'Rize\\UriTemplate\\UriTemplate' => __DIR__ . '/..' . '/rize/uri-template/src/Rize/UriTemplate/UriTemplate.php', 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php', 'SebastianBergmann\\CliParser\\Exception' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/Exception.php', 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php', @@ -5452,6 +6136,7 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'Spatie\\LaravelIgnition\\Support\\StringComparator' => __DIR__ . '/..' . '/spatie/laravel-ignition/src/Support/StringComparator.php', 'Spatie\\LaravelIgnition\\Views\\BladeSourceMapCompiler' => __DIR__ . '/..' . '/spatie/laravel-ignition/src/Views/BladeSourceMapCompiler.php', 'Spatie\\LaravelIgnition\\Views\\ViewExceptionMapper' => __DIR__ . '/..' . '/spatie/laravel-ignition/src/Views/ViewExceptionMapper.php', + 'StellaMaris\\Clock\\ClockInterface' => __DIR__ . '/..' . '/stella-maris/clock/src/ClockInterface.php', 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', 'Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php', 'Symfony\\Component\\Console\\Attribute\\AsCommand' => __DIR__ . '/..' . '/symfony/console/Attribute/AsCommand.php', @@ -5483,6 +6168,7 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php', 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php', 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php', 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php', 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php', 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => __DIR__ . '/..' . '/symfony/console/EventListener/ErrorListener.php', @@ -6361,6 +7047,7 @@ class ComposerStaticIniteecd4c0c5311c1c58e74c7a64c66b7ea 'Symfony\\Polyfill\\Php72\\Php72' => __DIR__ . '/..' . '/symfony/polyfill-php72/Php72.php', 'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php', 'Symfony\\Polyfill\\Php80\\PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/PhpToken.php', + 'Symfony\\Polyfill\\Php81\\Php81' => __DIR__ . '/..' . '/symfony/polyfill-php81/Php81.php', 'Symfony\\Polyfill\\Uuid\\Uuid' => __DIR__ . '/..' . '/symfony/polyfill-uuid/Uuid.php', 'Termwind\\Actions\\StyleToMethod' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Actions/StyleToMethod.php', 'Termwind\\Components\\Anchor' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Components/Anchor.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index e8ca1d5a..90caebc4 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -515,6 +515,65 @@ }, "install-path": "../fakerphp/faker" }, + { + "name": "fig/http-message-util", + "version": "1.1.5", + "version_normalized": "1.1.5.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "suggest": { + "psr/http-message": "The package containing the PSR-7 interfaces" + }, + "time": "2020-11-24T22:02:12+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Fig\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" + }, + "install-path": "../fig/http-message-util" + }, { "name": "filp/whoops", "version": "2.15.2", @@ -589,6 +648,72 @@ ], "install-path": "../filp/whoops" }, + { + "name": "firebase/php-jwt", + "version": "v6.5.0", + "version_normalized": "6.5.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "e94e7353302b0c11ec3cfff7180cd0b1743975d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/e94e7353302b0c11ec3cfff7180cd0b1743975d2", + "reference": "e94e7353302b0c11ec3cfff7180cd0b1743975d2", + "shasum": "" + }, + "require": { + "php": "^7.4||^8.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^6.5||^7.4", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psr/cache": "^1.0||^2.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "ext-sodium": "Support EdDSA (Ed25519) signatures", + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, + "time": "2023-05-12T15:47:07+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "keywords": [ + "jwt", + "php" + ], + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v6.5.0" + }, + "install-path": "../firebase/php-jwt" + }, { "name": "fruitcake/php-cors", "version": "v1.2.0", @@ -663,6 +788,243 @@ ], "install-path": "../fruitcake/php-cors" }, + { + "name": "google/auth", + "version": "v1.28.0", + "version_normalized": "1.28.0.0", + "source": { + "type": "git", + "url": "https://github.com/googleapis/google-auth-library-php.git", + "reference": "07f7f6305f1b7df32b2acf6e101c1225c839c7ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/07f7f6305f1b7df32b2acf6e101c1225c839c7ac", + "reference": "07f7f6305f1b7df32b2acf6e101c1225c839c7ac", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "^6.0", + "guzzlehttp/guzzle": "^6.2.1|^7.0", + "guzzlehttp/psr7": "^2.4.5", + "php": "^7.4||^8.0", + "psr/cache": "^1.0||^2.0||^3.0", + "psr/http-message": "^1.1||^2.0" + }, + "require-dev": { + "guzzlehttp/promises": "^1.3", + "kelvinmo/simplejwt": "0.7.0", + "phpseclib/phpseclib": "^3.0", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.0.0", + "sebastian/comparator": ">=1.2.3", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "phpseclib/phpseclib": "May be used in place of OpenSSL for signing strings or for token management. Please require version ^2." + }, + "time": "2023-05-11T21:58:18+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Google\\Auth\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Auth Library for PHP", + "homepage": "http://github.com/google/google-auth-library-php", + "keywords": [ + "Authentication", + "google", + "oauth2" + ], + "support": { + "docs": "https://googleapis.github.io/google-auth-library-php/main/", + "issues": "https://github.com/googleapis/google-auth-library-php/issues", + "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.28.0" + }, + "install-path": "../google/auth" + }, + { + "name": "google/cloud-core", + "version": "v1.51.2", + "version_normalized": "1.51.2.0", + "source": { + "type": "git", + "url": "https://github.com/googleapis/google-cloud-php-core.git", + "reference": "85dc48d62143f4bbfaa34c24da95003371de7b79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/googleapis/google-cloud-php-core/zipball/85dc48d62143f4bbfaa34c24da95003371de7b79", + "reference": "85dc48d62143f4bbfaa34c24da95003371de7b79", + "shasum": "" + }, + "require": { + "google/auth": "^1.18", + "guzzlehttp/guzzle": "^5.3|^6.5.7|^7.4.4", + "guzzlehttp/promises": "^1.3", + "guzzlehttp/psr7": "^1.7|^2.0", + "monolog/monolog": "^1.1|^2.0|^3.0", + "php": ">=7.4", + "psr/http-message": "^1.0", + "rize/uri-template": "~0.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "google/cloud-common-protos": "^0.4", + "google/gax": "^1.9", + "opis/closure": "^3", + "phpdocumentor/reflection": "^5.0", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.0", + "squizlabs/php_codesniffer": "2.*" + }, + "suggest": { + "opis/closure": "May be used to serialize closures to process jobs in the batch daemon. Please require version ^3.", + "symfony/lock": "Required for the Spanner cached based session pool. Please require the following commit: 3.3.x-dev#1ba6ac9" + }, + "time": "2023-05-05T23:01:42+00:00", + "bin": [ + "bin/google-cloud-batch" + ], + "type": "library", + "extra": { + "component": { + "id": "cloud-core", + "target": "googleapis/google-cloud-php-core.git", + "path": "Core", + "entry": "src/ServiceBuilder.php" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Google\\Cloud\\Core\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Cloud PHP shared dependency, providing functionality useful to all components.", + "support": { + "source": "https://github.com/googleapis/google-cloud-php-core/tree/v1.51.2" + }, + "install-path": "../google/cloud-core" + }, + { + "name": "google/cloud-storage", + "version": "v1.31.2", + "version_normalized": "1.31.2.0", + "source": { + "type": "git", + "url": "https://github.com/googleapis/google-cloud-php-storage.git", + "reference": "7fe96d56856cda550b21779bb95a066b264852da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/googleapis/google-cloud-php-storage/zipball/7fe96d56856cda550b21779bb95a066b264852da", + "reference": "7fe96d56856cda550b21779bb95a066b264852da", + "shasum": "" + }, + "require": { + "google/cloud-core": "^1.51.1", + "google/crc32": "^0.2.0", + "php": ">=7.4", + "ramsey/uuid": "^4.2.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "google/cloud-pubsub": "^1.0", + "phpdocumentor/reflection": "^5.0", + "phpseclib/phpseclib": "^2.0||^3.0", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.0", + "squizlabs/php_codesniffer": "2.*" + }, + "suggest": { + "google/cloud-pubsub": "May be used to register a topic to receive bucket notifications.", + "phpseclib/phpseclib": "May be used in place of OpenSSL for creating signed Cloud Storage URLs. Please require version ^2." + }, + "time": "2023-05-05T23:01:42+00:00", + "type": "library", + "extra": { + "component": { + "id": "cloud-storage", + "target": "googleapis/google-cloud-php-storage.git", + "path": "Storage", + "entry": "src/StorageClient.php" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Google\\Cloud\\Storage\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Cloud Storage Client for PHP", + "support": { + "source": "https://github.com/googleapis/google-cloud-php-storage/tree/v1.31.2" + }, + "install-path": "../google/cloud-storage" + }, + { + "name": "google/crc32", + "version": "v0.2.0", + "version_normalized": "0.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/google/php-crc32.git", + "reference": "948f7945d803dcc1a375152c72f63144c2dadf23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/php-crc32/zipball/948f7945d803dcc1a375152c72f63144c2dadf23", + "reference": "948f7945d803dcc1a375152c72f63144c2dadf23", + "shasum": "" + }, + "require": { + "php": ">=7.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "v3.15", + "phpunit/phpunit": "^9" + }, + "time": "2023-04-16T22:44:57+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Google\\CRC32\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Andrew Brampton", + "email": "bramp@google.com" + } + ], + "description": "Various CRC32 implementations", + "homepage": "https://github.com/google/php-crc32", + "support": { + "issues": "https://github.com/google/php-crc32/issues", + "source": "https://github.com/google/php-crc32/tree/v0.2.0" + }, + "install-path": "../google/crc32" + }, { "name": "graham-campbell/result-type", "version": "v1.1.1", @@ -730,22 +1092,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.6.1", - "version_normalized": "7.6.1.0", + "version": "7.7.0", + "version_normalized": "7.7.0.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51" + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/8444a2bacf1960bc6a2b62ed86b8e72e11eebe51", - "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0", "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", @@ -757,7 +1119,8 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", "phpunit/phpunit": "^8.5.29 || ^9.5.23", "psr/log": "^1.1 || ^2.0 || ^3.0" }, @@ -766,7 +1129,7 @@ "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, - "time": "2023-05-15T20:43:01+00:00", + "time": "2023-05-21T14:04:53+00:00", "type": "library", "extra": { "bamarni-bin": { @@ -838,7 +1201,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.6.1" + "source": "https://github.com/guzzle/guzzle/tree/7.7.0" }, "funding": [ { @@ -858,17 +1221,17 @@ }, { "name": "guzzlehttp/promises", - "version": "1.5.2", - "version_normalized": "1.5.2.0", + "version": "1.5.3", + "version_normalized": "1.5.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "b94b2807d85443f9719887892882d0329d1e2598" + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", + "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", "shasum": "" }, "require": { @@ -877,13 +1240,8 @@ "require-dev": { "symfony/phpunit-bridge": "^4.4 || ^5.1" }, - "time": "2022-08-28T14:55:35+00:00", + "time": "2023-05-21T12:31:43+00:00", "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, "installation-source": "dist", "autoload": { "files": [ @@ -925,7 +1283,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.2" + "source": "https://github.com/guzzle/promises/tree/1.5.3" }, "funding": [ { @@ -1250,7 +1608,248 @@ "installation-source": "dist", "autoload": { "psr-4": { - "Intervention\\Image\\": "src/Intervention/Image" + "Intervention\\Image\\": "src/Intervention/Image" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "https://intervention.io/" + } + ], + "description": "Image handling and manipulation library with support for Laravel integration", + "homepage": "http://image.intervention.io/", + "keywords": [ + "gd", + "image", + "imagick", + "laravel", + "thumbnail", + "watermark" + ], + "support": { + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/2.7.2" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + } + ], + "install-path": "../intervention/image" + }, + { + "name": "kreait/clock", + "version": "1.2", + "version_normalized": "1.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/kreait/clock-php.git", + "reference": "49e103382ca36cb2bc2e86ff3b8d11d44d0e0b31" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kreait/clock-php/zipball/49e103382ca36cb2bc2e86ff3b8d11d44d0e0b31", + "reference": "49e103382ca36cb2bc2e86ff3b8d11d44d0e0b31", + "shasum": "" + }, + "require": { + "php": "^7.0|^8.0", + "stella-maris/clock": "^0.1.4" + }, + "require-dev": { + "phpunit/phpunit": "^6.5.14" + }, + "time": "2022-04-20T14:14:35+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "files": [ + "src/Clock.php" + ], + "psr-4": { + "Kreait\\Clock\\": "src/Clock" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jérôme Gamez", + "email": "jerome@gamez.name" + } + ], + "description": "A PHP 7.0 compatible clock abstraction", + "support": { + "issues": "https://github.com/kreait/clock-php/issues", + "source": "https://github.com/kreait/clock-php/tree/1.2" + }, + "install-path": "../kreait/clock" + }, + { + "name": "kreait/firebase-php", + "version": "5.26.4", + "version_normalized": "5.26.4.0", + "source": { + "type": "git", + "url": "https://github.com/kreait/firebase-php.git", + "reference": "01c129ee628dc988b1da4b6cbaf1ee421d951aed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kreait/firebase-php/zipball/01c129ee628dc988b1da4b6cbaf1ee421d951aed", + "reference": "01c129ee628dc988b1da4b6cbaf1ee421d951aed", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "google/auth": "^1.18", + "google/cloud-core": "^1.42.2", + "google/cloud-storage": "^1.24.1", + "guzzlehttp/guzzle": "^6.5.5|^7.3", + "guzzlehttp/promises": "^1.4", + "guzzlehttp/psr7": "^1.7|^2.0", + "kreait/clock": "^1.1", + "kreait/firebase-tokens": "^1.16.1", + "mtdowling/jmespath.php": "^2.6.1", + "php": "^7.4|^8.0", + "psr/cache": "^1.0.1|^2.0|^3.0", + "psr/http-message": "^1.0.1", + "psr/log": "^1.1|^2.0|^3.0", + "psr/simple-cache": "^1.0", + "riverline/multipart-parser": "^2.0.8", + "symfony/polyfill-php80": "^1.23", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "giggsey/libphonenumber-for-php": "^8.12.27", + "google/cloud-firestore": "^1.19.3", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5.10", + "rector/rector": "^0.12.5", + "symfony/var-dumper": "^5.4|^6.0", + "symplify/easy-coding-standard": "^10.0" + }, + "suggest": { + "giggsey/libphonenumber-for-php": "^8.9 to validate phone numbers before attempting to send them to Firebase", + "google/cloud-firestore": "^1.0 to use the Firestore component" + }, + "time": "2023-01-24T00:00:03+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-6.x": "6.x-dev", + "dev-5.x": "5.x-dev", + "dev-4.x": "4.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Kreait\\Firebase\\": "src/Firebase" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jérôme Gamez", + "homepage": "https://github.com/jeromegamez" + } + ], + "description": "Firebase Admin SDK", + "homepage": "https://github.com/kreait/firebase-php", + "keywords": [ + "api", + "database", + "firebase", + "google", + "sdk" + ], + "support": { + "chat": "https://discord.gg/Yacm7unBsr", + "docs": "https://firebase-php.readthedocs.io", + "issues": "https://github.com/kreait/firebase-php/issues", + "source": "https://github.com/kreait/firebase-php" + }, + "funding": [ + { + "url": "https://github.com/sponsors/jeromegamez", + "type": "github" + } + ], + "install-path": "../kreait/firebase-php" + }, + { + "name": "kreait/firebase-tokens", + "version": "1.17.0", + "version_normalized": "1.17.0.0", + "source": { + "type": "git", + "url": "https://github.com/kreait/firebase-tokens-php.git", + "reference": "cad73174508a20961bae72a4c4a621208be83ee4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kreait/firebase-tokens-php/zipball/cad73174508a20961bae72a4c4a621208be83ee4", + "reference": "cad73174508a20961bae72a4c4a621208be83ee4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-openssl": "*", + "fig/http-message-util": "^1.1.5", + "guzzlehttp/guzzle": "^6.3.1|^7.0", + "kreait/clock": "^1.1.0", + "lcobucci/jwt": "^4.0.4|^4.1.5", + "php": "^7.4|^8.0", + "psr/cache": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0.1" + }, + "require-dev": { + "firebase/php-jwt": "^5.5.1", + "friendsofphp/php-cs-fixer": "^3.10", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^0.12.99", + "phpstan/phpstan-phpunit": "^0.12.22", + "phpunit/phpunit": "^9.5.23", + "rector/rector": "^0.11.60", + "symfony/cache": "^5.4.11", + "symfony/var-dumper": "^5.4.11" + }, + "suggest": { + "firebase/php-jwt": "^5.0 can be used to create and parse tokens", + "guzzlehttp/guzzle": "^6.2.1|^7.0 can be used as an HTTP handler", + "lcobucci/jwt": "^3.2 can be used to create and parse tokens", + "psr/cache-implementation": "to cache fetched remote public keys", + "psr/simple-cache-implementation": "to cache fetched remote public keys" + }, + "time": "2022-08-22T21:31:22+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Firebase\\Auth\\Token\\": "src/Firebase/Auth/Token", + "Kreait\\Firebase\\JWT\\": "src/JWT" } }, "notification-url": "https://packagist.org/downloads/", @@ -1259,36 +1858,30 @@ ], "authors": [ { - "name": "Oliver Vogel", - "email": "oliver@intervention.io", - "homepage": "https://intervention.io/" + "name": "Jérôme Gamez", + "homepage": "https://github.com/jeromegamez" } ], - "description": "Image handling and manipulation library with support for Laravel integration", - "homepage": "http://image.intervention.io/", + "description": "A library to work with Firebase tokens", + "homepage": "https://github.com/kreait/firebase-token-php", "keywords": [ - "gd", - "image", - "imagick", - "laravel", - "thumbnail", - "watermark" + "Authentication", + "auth", + "firebase", + "google", + "token" ], "support": { - "issues": "https://github.com/Intervention/image/issues", - "source": "https://github.com/Intervention/image/tree/2.7.2" + "issues": "https://github.com/kreait/firebase-tokens-php/issues", + "source": "https://github.com/kreait/firebase-tokens-php/tree/1.17.0" }, "funding": [ { - "url": "https://paypal.me/interventionio", - "type": "custom" - }, - { - "url": "https://github.com/Intervention", + "url": "https://github.com/sponsors/jeromegamez", "type": "github" } ], - "install-path": "../intervention/image" + "install-path": "../kreait/firebase-tokens" }, { "name": "laravel/framework", @@ -1833,6 +2426,152 @@ }, "install-path": "../laravel/tinker" }, + { + "name": "lcobucci/clock", + "version": "2.3.0", + "version_normalized": "2.3.0.0", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/clock.git", + "reference": "c7aadcd6fd97ed9e199114269c0be3f335e38876" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/c7aadcd6fd97ed9e199114269c0be3f335e38876", + "reference": "c7aadcd6fd97ed9e199114269c0be3f335e38876", + "shasum": "" + }, + "require": { + "php": "~8.1.0 || ~8.2.0", + "stella-maris/clock": "^0.1.7" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "infection/infection": "^0.26", + "lcobucci/coding-standard": "^9.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^9.5.27" + }, + "time": "2022-12-19T14:38:11+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Lcobucci\\Clock\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com" + } + ], + "description": "Yet another clock abstraction", + "support": { + "issues": "https://github.com/lcobucci/clock/issues", + "source": "https://github.com/lcobucci/clock/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "install-path": "../lcobucci/clock" + }, + { + "name": "lcobucci/jwt", + "version": "4.0.4", + "version_normalized": "4.0.4.0", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "55564265fddf810504110bd68ca311932324b0e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/55564265fddf810504110bd68ca311932324b0e9", + "reference": "55564265fddf810504110bd68ca311932324b0e9", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-openssl": "*", + "lcobucci/clock": "^2.0", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "infection/infection": "^0.20", + "lcobucci/coding-standard": "^6.0", + "mikey179/vfsstream": "^1.6", + "phpbench/phpbench": "^0.17", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/php-invoker": "^3.1", + "phpunit/phpunit": "^9.4" + }, + "time": "2021-09-28T19:18:28+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "support": { + "issues": "https://github.com/lcobucci/jwt/issues", + "source": "https://github.com/lcobucci/jwt/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "install-path": "../lcobucci/jwt" + }, { "name": "league/commonmark", "version": "2.4.0", @@ -2419,6 +3158,70 @@ ], "install-path": "../monolog/monolog" }, + { + "name": "mtdowling/jmespath.php", + "version": "2.6.1", + "version_normalized": "2.6.1.0", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "composer/xdebug-handler": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^7.5.15" + }, + "time": "2021-06-14T00:11:39+00:00", + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "src/JmesPath.php" + ], + "psr-4": { + "JmesPath\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "support": { + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" + }, + "install-path": "../mtdowling/jmespath.php" + }, { "name": "myclabs/deep-copy", "version": "1.11.1", @@ -2743,17 +3546,17 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.4", - "version_normalized": "4.15.4.0", + "version": "v4.15.5", + "version_normalized": "4.15.5.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", "shasum": "" }, "require": { @@ -2764,7 +3567,7 @@ "ircmaxell/php-yacc": "^0.0.7", "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, - "time": "2023-03-05T19:49:14+00:00", + "time": "2023-05-19T20:20:00+00:00", "bin": [ "bin/php-parse" ], @@ -2796,7 +3599,7 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" }, "install-path": "../nikic/php-parser" }, @@ -3185,17 +3988,17 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.1", - "version_normalized": "10.1.1.0", + "version": "10.1.2", + "version_normalized": "10.1.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "884a0da7f9f46f28b2cb69134217fd810b793974" + "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/884a0da7f9f46f28b2cb69134217fd810b793974", - "reference": "884a0da7f9f46f28b2cb69134217fd810b793974", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/db1497ec8dd382e82c962f7abbe0320e4882ee4e", + "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e", "shasum": "" }, "require": { @@ -3220,7 +4023,7 @@ "ext-pcov": "PHP extension that provides line coverage", "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, - "time": "2023-04-17T12:15:40+00:00", + "time": "2023-05-22T09:04:27+00:00", "type": "library", "extra": { "branch-alias": { @@ -3254,7 +4057,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.1" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.2" }, "funding": [ { @@ -3520,17 +4323,17 @@ }, { "name": "phpunit/phpunit", - "version": "10.1.3", - "version_normalized": "10.1.3.0", + "version": "10.2.1", + "version_normalized": "10.2.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2379ebafc1737e71cdc84f402acb6b7f04198b9d" + "reference": "599b33294350e8f51163119d5670512f98b0490d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2379ebafc1737e71cdc84f402acb6b7f04198b9d", - "reference": "2379ebafc1737e71cdc84f402acb6b7f04198b9d", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/599b33294350e8f51163119d5670512f98b0490d", + "reference": "599b33294350e8f51163119d5670512f98b0490d", "shasum": "" }, "require": { @@ -3564,14 +4367,14 @@ "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" }, - "time": "2023-05-11T05:16:22+00:00", + "time": "2023-06-05T05:15:51+00:00", "bin": [ "phpunit" ], "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "10.2-dev" } }, "installation-source": "dist", @@ -3585,42 +4388,145 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.2.1" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "install-path": "../phpunit/phpunit" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "version_normalized": "3.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "time": "2021-02-03T23:26:27+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "install-path": "../psr/cache" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "time": "2022-11-25T14:36:26+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", "keywords": [ - "phpunit", - "testing", - "xunit" + "clock", + "now", + "psr", + "psr-20", + "time" ], "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.1.3" + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" - } - ], - "install-path": "../phpunit/phpunit" + "install-path": "../psr/clock" }, { "name": "psr/container", @@ -3846,27 +4752,27 @@ }, { "name": "psr/http-message", - "version": "2.0", - "version_normalized": "2.0.0.0", + "version": "1.1", + "version_normalized": "1.1.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, - "time": "2023-04-04T09:54:51+00:00", + "time": "2023-04-04T09:50:52+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.1.x-dev" } }, "installation-source": "dist", @@ -3882,7 +4788,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -3896,7 +4802,7 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" + "source": "https://github.com/php-fig/http-message/tree/1.1" }, "install-path": "../psr/http-message" }, @@ -3955,27 +4861,27 @@ }, { "name": "psr/simple-cache", - "version": "3.0.0", - "version_normalized": "3.0.0.0", + "version": "1.0.1", + "version_normalized": "1.0.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": ">=5.3.0" }, - "time": "2021-10-29T13:26:27+00:00", + "time": "2017-10-23T01:57:42+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0.x-dev" } }, "installation-source": "dist", @@ -3991,7 +4897,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "description": "Common interfaces for simple caching", @@ -4003,7 +4909,7 @@ "simple-cache" ], "support": { - "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + "source": "https://github.com/php-fig/simple-cache/tree/master" }, "install-path": "../psr/simple-cache" }, @@ -4320,6 +5226,130 @@ ], "install-path": "../ramsey/uuid" }, + { + "name": "riverline/multipart-parser", + "version": "2.1.1", + "version_normalized": "2.1.1.0", + "source": { + "type": "git", + "url": "https://github.com/Riverline/multipart-parser.git", + "reference": "2418bdfc2eab01e39bcffee808b1a365c166292a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Riverline/multipart-parser/zipball/2418bdfc2eab01e39bcffee808b1a365c166292a", + "reference": "2418bdfc2eab01e39bcffee808b1a365c166292a", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.6.0" + }, + "require-dev": { + "laminas/laminas-diactoros": "^1.8.7 || ^2.11.1", + "phpunit/phpunit": "^5.7 || ^9.0", + "psr/http-message": "^1.0", + "symfony/psr-http-message-bridge": "^1.1 || ^2.0" + }, + "time": "2023-04-28T18:53:59+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Riverline\\MultiPartParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Cambien", + "email": "romain@cambien.net" + }, + { + "name": "Riverline", + "homepage": "http://www.riverline.fr" + } + ], + "description": "One class library to parse multipart content with encoding and charset support.", + "keywords": [ + "http", + "multipart", + "parser" + ], + "support": { + "issues": "https://github.com/Riverline/multipart-parser/issues", + "source": "https://github.com/Riverline/multipart-parser/tree/2.1.1" + }, + "install-path": "../riverline/multipart-parser" + }, + { + "name": "rize/uri-template", + "version": "0.3.5", + "version_normalized": "0.3.5.0", + "source": { + "type": "git", + "url": "https://github.com/rize/UriTemplate.git", + "reference": "5ed4ba8ea34af84485dea815d4b6b620794d1168" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rize/UriTemplate/zipball/5ed4ba8ea34af84485dea815d4b6b620794d1168", + "reference": "5ed4ba8ea34af84485dea815d4b6b620794d1168", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8.36" + }, + "time": "2022-10-12T17:22:51+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Rize\\": "src/Rize" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marut K", + "homepage": "http://twitter.com/rezigned" + } + ], + "description": "PHP URI Template (RFC 6570) supports both expansion & extraction", + "keywords": [ + "RFC 6570", + "template", + "uri" + ], + "support": { + "issues": "https://github.com/rize/UriTemplate/issues", + "source": "https://github.com/rize/UriTemplate/tree/0.3.5" + }, + "funding": [ + { + "url": "https://www.paypal.me/rezigned", + "type": "custom" + }, + { + "url": "https://github.com/rezigned", + "type": "github" + }, + { + "url": "https://opencollective.com/rize-uri-template", + "type": "open_collective" + } + ], + "install-path": "../rize/uri-template" + }, { "name": "sebastian/cli-parser", "version": "2.0.0", @@ -5593,26 +6623,76 @@ ], "install-path": "../spatie/laravel-ignition" }, + { + "name": "stella-maris/clock", + "version": "0.1.7", + "version_normalized": "0.1.7.0", + "source": { + "type": "git", + "url": "https://github.com/stella-maris-solutions/clock.git", + "reference": "fa23ce16019289a18bb3446fdecd45befcdd94f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/stella-maris-solutions/clock/zipball/fa23ce16019289a18bb3446fdecd45befcdd94f8", + "reference": "fa23ce16019289a18bb3446fdecd45befcdd94f8", + "shasum": "" + }, + "require": { + "php": "^7.0|^8.0", + "psr/clock": "^1.0" + }, + "time": "2022-11-25T16:15:06+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "StellaMaris\\Clock\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Heigl", + "role": "Maintainer" + } + ], + "description": "A pre-release of the proposed PSR-20 Clock-Interface", + "homepage": "https://gitlab.com/stella-maris/clock", + "keywords": [ + "clock", + "datetime", + "point in time", + "psr20" + ], + "support": { + "source": "https://github.com/stella-maris-solutions/clock/tree/0.1.7" + }, + "install-path": "../stella-maris/clock" + }, { "name": "symfony/console", - "version": "v6.2.10", - "version_normalized": "6.2.10.0", + "version": "v6.3.0", + "version_normalized": "6.3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "12288d9f4500f84a4d02254d4aa968b15488476f" + "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/12288d9f4500f84a4d02254d4aa968b15488476f", - "reference": "12288d9f4500f84a4d02254d4aa968b15488476f", + "url": "https://api.github.com/repos/symfony/console/zipball/8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", + "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/string": "^5.4|^6.0" }, "conflict": { @@ -5634,13 +6714,7 @@ "symfony/process": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "time": "2023-04-28T13:37:43+00:00", + "time": "2023-05-29T12:49:39+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -5674,7 +6748,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.10" + "source": "https://github.com/symfony/console/tree/v6.3.0" }, "funding": [ { @@ -5762,27 +6836,27 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.2.1", - "version_normalized": "3.2.1.0", + "version": "v3.3.0", + "version_normalized": "3.3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { "php": ">=8.1" }, - "time": "2023-03-01T10:25:55+00:00", + "time": "2023-05-23T14:45:45+00:00", "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5812,7 +6886,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -5906,25 +6980,26 @@ }, { "name": "symfony/event-dispatcher", - "version": "v6.2.8", - "version_normalized": "6.2.8.0", + "version": "v6.3.0", + "version_normalized": "6.3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339" + "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/04046f35fd7d72f9646e721fc2ecb8f9c67d3339", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", + "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", @@ -5937,14 +7012,10 @@ "symfony/error-handler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/stopwatch": "^5.4|^6.0" }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "time": "2023-03-20T16:06:02+00:00", + "time": "2023-04-21T14:41:17+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -5972,7 +7043,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.8" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.0" }, "funding": [ { @@ -5992,31 +7063,28 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.2.1", - "version_normalized": "3.2.1.0", + "version": "v3.3.0", + "version_normalized": "3.3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "time": "2023-03-01T10:32:47+00:00", + "time": "2023-05-23T14:45:45+00:00", "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -6054,7 +7122,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" }, "funding": [ { @@ -6074,17 +7142,17 @@ }, { "name": "symfony/finder", - "version": "v6.2.7", - "version_normalized": "6.2.7.0", + "version": "v6.3.0", + "version_normalized": "6.3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" + "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", + "url": "https://api.github.com/repos/symfony/finder/zipball/d9b01ba073c44cef617c7907ce2419f8d00d75e2", + "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2", "shasum": "" }, "require": { @@ -6093,7 +7161,7 @@ "require-dev": { "symfony/filesystem": "^6.0" }, - "time": "2023-02-16T09:57:23+00:00", + "time": "2023-04-02T01:25:41+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -6121,7 +7189,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.7" + "source": "https://github.com/symfony/finder/tree/v6.3.0" }, "funding": [ { @@ -7099,6 +8167,88 @@ ], "install-path": "../symfony/polyfill-php80" }, + { + "name": "symfony/polyfill-php81", + "version": "v1.27.0", + "version_normalized": "1.27.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "time": "2022-11-03T14:55:06+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-php81" + }, { "name": "symfony/polyfill-uuid", "version": "v1.27.0", @@ -7186,23 +8336,23 @@ }, { "name": "symfony/process", - "version": "v6.2.10", - "version_normalized": "6.2.10.0", + "version": "v6.3.0", + "version_normalized": "6.3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e" + "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", - "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", + "url": "https://api.github.com/repos/symfony/process/zipball/8741e3ed7fe2e91ec099e02446fb86667a0f1628", + "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628", "shasum": "" }, "require": { "php": ">=8.1" }, - "time": "2023-04-18T13:56:57+00:00", + "time": "2023-05-19T08:06:44+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -7230,7 +8380,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.2.10" + "source": "https://github.com/symfony/process/tree/v6.3.0" }, "funding": [ { @@ -7341,17 +8491,17 @@ }, { "name": "symfony/service-contracts", - "version": "v3.2.1", - "version_normalized": "3.2.1.0", + "version": "v3.3.0", + "version_normalized": "3.3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a" + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", "shasum": "" }, "require": { @@ -7361,14 +8511,11 @@ "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, - "time": "2023-03-01T10:32:47+00:00", + "time": "2023-05-23T14:45:45+00:00", "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -7409,7 +8556,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" }, "funding": [ { @@ -7429,17 +8576,17 @@ }, { "name": "symfony/string", - "version": "v6.2.8", - "version_normalized": "6.2.8.0", + "version": "v6.3.0", + "version_normalized": "6.3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" + "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", + "url": "https://api.github.com/repos/symfony/string/zipball/f2e190ee75ff0f5eced645ec0be5c66fac81f51f", + "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f", "shasum": "" }, "require": { @@ -7450,16 +8597,16 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", + "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, - "time": "2023-03-20T16:06:02+00:00", + "time": "2023-03-21T21:06:29+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -7498,7 +8645,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.8" + "source": "https://github.com/symfony/string/tree/v6.3.0" }, "funding": [ { @@ -7619,30 +8766,27 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.2.1", - "version_normalized": "3.2.1.0", + "version": "v3.3.0", + "version_normalized": "3.3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", "shasum": "" }, "require": { "php": ">=8.1" }, - "suggest": { - "symfony/translation-implementation": "" - }, - "time": "2023-03-01T10:32:47+00:00", + "time": "2023-05-30T17:17:10+00:00", "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -7683,7 +8827,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" }, "funding": [ { @@ -7871,17 +9015,17 @@ }, { "name": "symfony/yaml", - "version": "v6.2.10", - "version_normalized": "6.2.10.0", + "version": "v6.3.0", + "version_normalized": "6.3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "61916f3861b1e9705b18cfde723921a71dd1559d" + "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/61916f3861b1e9705b18cfde723921a71dd1559d", - "reference": "61916f3861b1e9705b18cfde723921a71dd1559d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/a9a8337aa641ef2aa39c3e028f9107ec391e5927", + "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927", "shasum": "" }, "require": { @@ -7894,10 +9038,7 @@ "require-dev": { "symfony/console": "^5.4|^6.0" }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "time": "2023-04-28T13:25:36+00:00", + "time": "2023-04-28T13:28:14+00:00", "bin": [ "Resources/bin/yaml-lint" ], @@ -7928,7 +9069,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.2.10" + "source": "https://github.com/symfony/yaml/tree/v6.3.0" }, "funding": [ { diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 617f2ebd..ce7c0121 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -1,9 +1,9 @@ array( 'name' => 'laravel/laravel', - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'reference' => NULL, + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => '927516490c7b15ff23dad3ee2c6de120a92733fc', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -85,6 +85,15 @@ 'aliases' => array(), 'dev_requirement' => true, ), + 'fig/http-message-util' => array( + 'pretty_version' => '1.1.5', + 'version' => '1.1.5.0', + 'reference' => '9d94dc0154230ac39e5bf89398b324a86f63f765', + 'type' => 'library', + 'install_path' => __DIR__ . '/../fig/http-message-util', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'filp/whoops' => array( 'pretty_version' => '2.15.2', 'version' => '2.15.2.0', @@ -94,6 +103,15 @@ 'aliases' => array(), 'dev_requirement' => true, ), + 'firebase/php-jwt' => array( + 'pretty_version' => 'v6.5.0', + 'version' => '6.5.0.0', + 'reference' => 'e94e7353302b0c11ec3cfff7180cd0b1743975d2', + 'type' => 'library', + 'install_path' => __DIR__ . '/../firebase/php-jwt', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'fruitcake/php-cors' => array( 'pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', @@ -103,6 +121,42 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'google/auth' => array( + 'pretty_version' => 'v1.28.0', + 'version' => '1.28.0.0', + 'reference' => '07f7f6305f1b7df32b2acf6e101c1225c839c7ac', + 'type' => 'library', + 'install_path' => __DIR__ . '/../google/auth', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'google/cloud-core' => array( + 'pretty_version' => 'v1.51.2', + 'version' => '1.51.2.0', + 'reference' => '85dc48d62143f4bbfaa34c24da95003371de7b79', + 'type' => 'library', + 'install_path' => __DIR__ . '/../google/cloud-core', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'google/cloud-storage' => array( + 'pretty_version' => 'v1.31.2', + 'version' => '1.31.2.0', + 'reference' => '7fe96d56856cda550b21779bb95a066b264852da', + 'type' => 'library', + 'install_path' => __DIR__ . '/../google/cloud-storage', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'google/crc32' => array( + 'pretty_version' => 'v0.2.0', + 'version' => '0.2.0.0', + 'reference' => '948f7945d803dcc1a375152c72f63144c2dadf23', + 'type' => 'library', + 'install_path' => __DIR__ . '/../google/crc32', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'graham-campbell/result-type' => array( 'pretty_version' => 'v1.1.1', 'version' => '1.1.1.0', @@ -113,18 +167,18 @@ 'dev_requirement' => false, ), 'guzzlehttp/guzzle' => array( - 'pretty_version' => '7.6.1', - 'version' => '7.6.1.0', - 'reference' => '8444a2bacf1960bc6a2b62ed86b8e72e11eebe51', + 'pretty_version' => '7.7.0', + 'version' => '7.7.0.0', + 'reference' => 'fb7566caccf22d74d1ab270de3551f72a58399f5', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', 'aliases' => array(), 'dev_requirement' => false, ), 'guzzlehttp/promises' => array( - 'pretty_version' => '1.5.2', - 'version' => '1.5.2.0', - 'reference' => 'b94b2807d85443f9719887892882d0329d1e2598', + 'pretty_version' => '1.5.3', + 'version' => '1.5.3.0', + 'reference' => '67ab6e18aaa14d753cc148911d273f6e6cb6721e', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/promises', 'aliases' => array(), @@ -370,6 +424,33 @@ 0 => '*', ), ), + 'kreait/clock' => array( + 'pretty_version' => '1.2', + 'version' => '1.2.0.0', + 'reference' => '49e103382ca36cb2bc2e86ff3b8d11d44d0e0b31', + 'type' => 'library', + 'install_path' => __DIR__ . '/../kreait/clock', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'kreait/firebase-php' => array( + 'pretty_version' => '5.26.4', + 'version' => '5.26.4.0', + 'reference' => '01c129ee628dc988b1da4b6cbaf1ee421d951aed', + 'type' => 'library', + 'install_path' => __DIR__ . '/../kreait/firebase-php', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'kreait/firebase-tokens' => array( + 'pretty_version' => '1.17.0', + 'version' => '1.17.0.0', + 'reference' => 'cad73174508a20961bae72a4c4a621208be83ee4', + 'type' => 'library', + 'install_path' => __DIR__ . '/../kreait/firebase-tokens', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'laravel/framework' => array( 'pretty_version' => 'v10.11.0', 'version' => '10.11.0.0', @@ -380,9 +461,9 @@ 'dev_requirement' => false, ), 'laravel/laravel' => array( - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'reference' => NULL, + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => '927516490c7b15ff23dad3ee2c6de120a92733fc', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -433,6 +514,24 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'lcobucci/clock' => array( + 'pretty_version' => '2.3.0', + 'version' => '2.3.0.0', + 'reference' => 'c7aadcd6fd97ed9e199114269c0be3f335e38876', + 'type' => 'library', + 'install_path' => __DIR__ . '/../lcobucci/clock', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'lcobucci/jwt' => array( + 'pretty_version' => '4.0.4', + 'version' => '4.0.4.0', + 'reference' => '55564265fddf810504110bd68ca311932324b0e9', + 'type' => 'library', + 'install_path' => __DIR__ . '/../lcobucci/jwt', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'league/commonmark' => array( 'pretty_version' => '2.4.0', 'version' => '2.4.0.0', @@ -502,6 +601,15 @@ 0 => '^1.0', ), ), + 'mtdowling/jmespath.php' => array( + 'pretty_version' => '2.6.1', + 'version' => '2.6.1.0', + 'reference' => '9b87907a81b87bc76d19a7fb2d61e61486ee9edb', + 'type' => 'library', + 'install_path' => __DIR__ . '/../mtdowling/jmespath.php', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'myclabs/deep-copy' => array( 'pretty_version' => '1.11.1', 'version' => '1.11.1.0', @@ -539,9 +647,9 @@ 'dev_requirement' => false, ), 'nikic/php-parser' => array( - 'pretty_version' => 'v4.15.4', - 'version' => '4.15.4.0', - 'reference' => '6bb5176bc4af8bcb7d926f88718db9b96a2d4290', + 'pretty_version' => 'v4.15.5', + 'version' => '4.15.5.0', + 'reference' => '11e2663a5bc9db5d714eedb4277ee300403b4a9e', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), @@ -593,9 +701,9 @@ 'dev_requirement' => false, ), 'phpunit/php-code-coverage' => array( - 'pretty_version' => '10.1.1', - 'version' => '10.1.1.0', - 'reference' => '884a0da7f9f46f28b2cb69134217fd810b793974', + 'pretty_version' => '10.1.2', + 'version' => '10.1.2.0', + 'reference' => 'db1497ec8dd382e82c962f7abbe0320e4882ee4e', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-code-coverage', 'aliases' => array(), @@ -638,14 +746,38 @@ 'dev_requirement' => true, ), 'phpunit/phpunit' => array( - 'pretty_version' => '10.1.3', - 'version' => '10.1.3.0', - 'reference' => '2379ebafc1737e71cdc84f402acb6b7f04198b9d', + 'pretty_version' => '10.2.1', + 'version' => '10.2.1.0', + 'reference' => '599b33294350e8f51163119d5670512f98b0490d', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/phpunit', 'aliases' => array(), 'dev_requirement' => true, ), + 'psr/cache' => array( + 'pretty_version' => '3.0.0', + 'version' => '3.0.0.0', + 'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/cache', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'psr/clock' => array( + 'pretty_version' => '1.0.0', + 'version' => '1.0.0.0', + 'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/clock', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'psr/clock-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0', + ), + ), 'psr/container' => array( 'pretty_version' => '2.0.2', 'version' => '2.0.2.0', @@ -707,9 +839,9 @@ ), ), 'psr/http-message' => array( - 'pretty_version' => '2.0', - 'version' => '2.0.0.0', - 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71', + 'pretty_version' => '1.1', + 'version' => '1.1.0.0', + 'reference' => 'cb6ce4845ce34a8ad9e68117c10ee90a29919eba', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(), @@ -738,9 +870,9 @@ ), ), 'psr/simple-cache' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', + 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), @@ -794,6 +926,24 @@ 0 => '4.7.4', ), ), + 'riverline/multipart-parser' => array( + 'pretty_version' => '2.1.1', + 'version' => '2.1.1.0', + 'reference' => '2418bdfc2eab01e39bcffee808b1a365c166292a', + 'type' => 'library', + 'install_path' => __DIR__ . '/../riverline/multipart-parser', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'rize/uri-template' => array( + 'pretty_version' => '0.3.5', + 'version' => '0.3.5.0', + 'reference' => '5ed4ba8ea34af84485dea815d4b6b620794d1168', + 'type' => 'library', + 'install_path' => __DIR__ . '/../rize/uri-template', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'sebastian/cli-parser' => array( 'pretty_version' => '2.0.0', 'version' => '2.0.0.0', @@ -965,10 +1115,19 @@ 'aliases' => array(), 'dev_requirement' => true, ), + 'stella-maris/clock' => array( + 'pretty_version' => '0.1.7', + 'version' => '0.1.7.0', + 'reference' => 'fa23ce16019289a18bb3446fdecd45befcdd94f8', + 'type' => 'library', + 'install_path' => __DIR__ . '/../stella-maris/clock', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'symfony/console' => array( - 'pretty_version' => 'v6.2.10', - 'version' => '6.2.10.0', - 'reference' => '12288d9f4500f84a4d02254d4aa968b15488476f', + 'pretty_version' => 'v6.3.0', + 'version' => '6.3.0.0', + 'reference' => '8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), @@ -984,9 +1143,9 @@ 'dev_requirement' => false, ), 'symfony/deprecation-contracts' => array( - 'pretty_version' => 'v3.2.1', - 'version' => '3.2.1.0', - 'reference' => 'e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e', + 'pretty_version' => 'v3.3.0', + 'version' => '3.3.0.0', + 'reference' => '7c3aff79d10325257a001fcf92d991f24fc967cf', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), @@ -1002,18 +1161,18 @@ 'dev_requirement' => false, ), 'symfony/event-dispatcher' => array( - 'pretty_version' => 'v6.2.8', - 'version' => '6.2.8.0', - 'reference' => '04046f35fd7d72f9646e721fc2ecb8f9c67d3339', + 'pretty_version' => 'v6.3.0', + 'version' => '6.3.0.0', + 'reference' => '3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/event-dispatcher', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/event-dispatcher-contracts' => array( - 'pretty_version' => 'v3.2.1', - 'version' => '3.2.1.0', - 'reference' => '0ad3b6f1e4e2da5690fefe075cd53a238646d8dd', + 'pretty_version' => 'v3.3.0', + 'version' => '3.3.0.0', + 'reference' => 'a76aed96a42d2b521153fb382d418e30d18b59df', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts', 'aliases' => array(), @@ -1026,9 +1185,9 @@ ), ), 'symfony/finder' => array( - 'pretty_version' => 'v6.2.7', - 'version' => '6.2.7.0', - 'reference' => '20808dc6631aecafbe67c186af5dcb370be3a0eb', + 'pretty_version' => 'v6.3.0', + 'version' => '6.3.0.0', + 'reference' => 'd9b01ba073c44cef617c7907ce2419f8d00d75e2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), @@ -1133,6 +1292,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'symfony/polyfill-php81' => array( + 'pretty_version' => 'v1.27.0', + 'version' => '1.27.0.0', + 'reference' => '707403074c8ea6e2edaf8794b0157a0bfa52157a', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-php81', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'symfony/polyfill-uuid' => array( 'pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', @@ -1143,9 +1311,9 @@ 'dev_requirement' => false, ), 'symfony/process' => array( - 'pretty_version' => 'v6.2.10', - 'version' => '6.2.10.0', - 'reference' => 'b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e', + 'pretty_version' => 'v6.3.0', + 'version' => '6.3.0.0', + 'reference' => '8741e3ed7fe2e91ec099e02446fb86667a0f1628', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), @@ -1161,18 +1329,18 @@ 'dev_requirement' => false, ), 'symfony/service-contracts' => array( - 'pretty_version' => 'v3.2.1', - 'version' => '3.2.1.0', - 'reference' => 'a8c9cedf55f314f3a186041d19537303766df09a', + 'pretty_version' => 'v3.3.0', + 'version' => '3.3.0.0', + 'reference' => '40da9cc13ec349d9e4966ce18b5fbcd724ab10a4', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/string' => array( - 'pretty_version' => 'v6.2.8', - 'version' => '6.2.8.0', - 'reference' => '193e83bbd6617d6b2151c37fff10fa7168ebddef', + 'pretty_version' => 'v6.3.0', + 'version' => '6.3.0.0', + 'reference' => 'f2e190ee75ff0f5eced645ec0be5c66fac81f51f', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), @@ -1188,9 +1356,9 @@ 'dev_requirement' => false, ), 'symfony/translation-contracts' => array( - 'pretty_version' => 'v3.2.1', - 'version' => '3.2.1.0', - 'reference' => 'dfec258b9dd17a6b24420d464c43bffe347441c8', + 'pretty_version' => 'v3.3.0', + 'version' => '3.3.0.0', + 'reference' => '02c24deb352fb0d79db5486c0c79905a85e37e86', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation-contracts', 'aliases' => array(), @@ -1221,9 +1389,9 @@ 'dev_requirement' => false, ), 'symfony/yaml' => array( - 'pretty_version' => 'v6.2.10', - 'version' => '6.2.10.0', - 'reference' => '61916f3861b1e9705b18cfde723921a71dd1559d', + 'pretty_version' => 'v6.3.0', + 'version' => '6.3.0.0', + 'reference' => 'a9a8337aa641ef2aa39c3e028f9107ec391e5927', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), diff --git a/vendor/guzzlehttp/guzzle/CHANGELOG.md b/vendor/guzzlehttp/guzzle/CHANGELOG.md index 2cd234a3..1144eb76 100644 --- a/vendor/guzzlehttp/guzzle/CHANGELOG.md +++ b/vendor/guzzlehttp/guzzle/CHANGELOG.md @@ -2,12 +2,21 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version. + +## 7.7.0 - 2023-05-21 + +### Added + +- Support `guzzlehttp/promises` v2 + + ## 7.6.1 - 2023-05-15 ### Fixed - Fix `SetCookie::fromString` MaxAge deprecation warning and skip invalid MaxAge values + ## 7.6.0 - 2023-05-14 ### Added @@ -15,6 +24,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version - Support for setting the minimum TLS version in a unified way - Apply on request the version set in options parameters + ## 7.5.2 - 2023-05-14 ### Fixed @@ -26,6 +36,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version - Corrected docs and default connect timeout value to 300 seconds + ## 7.5.1 - 2023-04-17 ### Fixed @@ -36,6 +47,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version - Adjusted `guzzlehttp/psr7` version constraint to `^1.9.1 || ^2.4.5` + ## 7.5.0 - 2022-08-28 ### Added @@ -43,6 +55,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version - Support PHP 8.2 - Add request to delay closure params + ## 7.4.5 - 2022-06-20 ### Fixed @@ -50,6 +63,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version * Fix change in port should be considered a change in origin * Fix `CURLOPT_HTTPAUTH` option not cleared on change of origin + ## 7.4.4 - 2022-06-09 ### Fixed @@ -57,12 +71,14 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version * Fix failure to strip Authorization header on HTTP downgrade * Fix failure to strip the Cookie header on change in host or HTTP downgrade + ## 7.4.3 - 2022-05-25 ### Fixed * Fix cross-domain cookie leakage + ## 7.4.2 - 2022-03-20 ### Fixed @@ -71,6 +87,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version - Reject non-HTTP schemes in StreamHandler - Set a default ssl.peer_name context in StreamHandler to allow `force_ip_resolve` + ## 7.4.1 - 2021-12-06 ### Changed @@ -82,6 +99,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version - Only close curl handle if it's done [#2950](https://github.com/guzzle/guzzle/pull/2950) + ## 7.4.0 - 2021-10-18 ### Added @@ -99,6 +117,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version - Be more strict with types [#2914](https://github.com/guzzle/guzzle/pull/2914), [#2917](https://github.com/guzzle/guzzle/pull/2917), [#2919](https://github.com/guzzle/guzzle/pull/2919), [#2945](https://github.com/guzzle/guzzle/pull/2945) + ## 7.3.0 - 2021-03-23 ### Added @@ -111,6 +130,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version - Handle exceptions on invalid header consistently between PHP versions and handlers [#2872](https://github.com/guzzle/guzzle/pull/2872) + ## 7.2.0 - 2020-10-10 ### Added @@ -133,6 +153,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version - Using environment variable GUZZLE_CURL_SELECT_TIMEOUT [#2786](https://github.com/guzzle/guzzle/pull/2786) + ## 7.1.1 - 2020-09-30 ### Fixed @@ -144,6 +165,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version - We dont connect curl `sink` on HEAD requests. - Removed some PHP 5 workarounds + ## 7.1.0 - 2020-09-22 ### Added @@ -166,14 +188,17 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version - `Utils::defaultCaBundle()` - `CurlFactory::LOW_CURL_VERSION_NUMBER` + ## 7.0.1 - 2020-06-27 * Fix multiply defined functions fatal error [#2699](https://github.com/guzzle/guzzle/pull/2699) + ## 7.0.0 - 2020-06-27 No changes since 7.0.0-rc1. + ## 7.0.0-rc1 - 2020-06-15 ### Changed @@ -181,6 +206,7 @@ No changes since 7.0.0-rc1. * Use error level for logging errors in Middleware [#2629](https://github.com/guzzle/guzzle/pull/2629) * Disabled IDN support by default and require ext-intl to use it [#2675](https://github.com/guzzle/guzzle/pull/2675) + ## 7.0.0-beta2 - 2020-05-25 ### Added @@ -206,6 +232,7 @@ No changes since 7.0.0-rc1. * Pool option `pool_size` [#2528](https://github.com/guzzle/guzzle/pull/2528) + ## 7.0.0-beta1 - 2019-12-30 The diff might look very big but 95% of Guzzle users will be able to upgrade without modification. @@ -239,15 +266,18 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * `uri_template()` and `UriTemplate` [#2440](https://github.com/guzzle/guzzle/pull/2440) * Request options `save_to` and `exceptions` [#2464](https://github.com/guzzle/guzzle/pull/2464) + ## 6.5.2 - 2019-12-23 * idn_to_ascii() fix for old PHP versions [#2489](https://github.com/guzzle/guzzle/pull/2489) + ## 6.5.1 - 2019-12-21 * Better defaults for PHP installations with old ICU lib [#2454](https://github.com/guzzle/guzzle/pull/2454) * IDN support for redirects [#2424](https://github.com/guzzle/guzzle/pull/2424) + ## 6.5.0 - 2019-12-07 * Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143) @@ -257,11 +287,13 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348) * Deprecated `ClientInterface::VERSION` + ## 6.4.1 - 2019-10-23 * No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that * Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar` + ## 6.4.0 - 2019-10-23 * Improvement: Improved error messages when using curl < 7.21.2 [#2108](https://github.com/guzzle/guzzle/pull/2108) @@ -274,6 +306,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * Fix: Prevent concurrent writes to file when saving `CookieJar` [#2335](https://github.com/guzzle/guzzle/pull/2335) * Improvement: Update `MockHandler` so we can test transfer time [#2362](https://github.com/guzzle/guzzle/pull/2362) + ## 6.3.3 - 2018-04-22 * Fix: Default headers when decode_content is specified @@ -315,13 +348,14 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * Bug fix: Fill `CURLOPT_CAPATH` and `CURLOPT_CAINFO` properly [#1684](https://github.com/guzzle/guzzle/pull/1684) * Improvement: Use `\GuzzleHttp\Promise\rejection_for` function instead of object init [#1827](https://github.com/guzzle/guzzle/pull/1827) - + Minor code cleanups, documentation fixes and clarifications. + ## 6.2.3 - 2017-02-28 * Fix deprecations with guzzle/psr7 version 1.4 + ## 6.2.2 - 2016-10-08 * Allow to pass nullable Response to delay callable @@ -329,6 +363,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * Fix drain case where content-length is the literal string zero * Obfuscate in-URL credentials in exceptions + ## 6.2.1 - 2016-07-18 * Address HTTP_PROXY security vulnerability, CVE-2016-5385: @@ -339,6 +374,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c a server does not honor `Connection: close`. * Ignore URI fragment when sending requests. + ## 6.2.0 - 2016-03-21 * Feature: added `GuzzleHttp\json_encode` and `GuzzleHttp\json_decode`. @@ -358,6 +394,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * Bug fix: provide an empty string to `http_build_query` for HHVM workaround. https://github.com/guzzle/guzzle/pull/1367 + ## 6.1.1 - 2015-11-22 * Bug fix: Proxy::wrapSync() now correctly proxies to the appropriate handler @@ -373,6 +410,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * Bug fix: fixed regression where MockHandler was not using `sink`. https://github.com/guzzle/guzzle/pull/1292 + ## 6.1.0 - 2015-09-08 * Feature: Added the `on_stats` request option to provide access to transfer @@ -407,6 +445,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * Bug fix: Adding a Content-Length to PHP stream wrapper requests if not set. https://github.com/guzzle/guzzle/pull/1189 + ## 6.0.2 - 2015-07-04 * Fixed a memory leak in the curl handlers in which references to callbacks @@ -424,6 +463,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * Functions are now conditionally required using an additional level of indirection to help with global Composer installations. + ## 6.0.1 - 2015-05-27 * Fixed a bug with serializing the `query` request option where the `&` @@ -432,6 +472,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c use `form_params` or `multipart` instead. * Various doc fixes. + ## 6.0.0 - 2015-05-26 * See the UPGRADING.md document for more information. @@ -456,6 +497,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * `$maxHandles` has been removed from CurlMultiHandler. * `MultipartPostBody` is now part of the `guzzlehttp/psr7` package. + ## 5.3.0 - 2015-05-19 * Mock now supports `save_to` @@ -466,6 +508,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * Marked `GuzzleHttp\Client::getDefaultUserAgent` as deprecated. * URL scheme is now always lowercased. + ## 6.0.0-beta.1 * Requires PHP >= 5.5 @@ -518,6 +561,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * `GuzzleHttp\QueryParser` has been replaced with the `GuzzleHttp\Psr7\parse_query`. + ## 5.2.0 - 2015-01-27 * Added `AppliesHeadersInterface` to make applying headers to a request based @@ -528,6 +572,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c RingBridge. * Added a guard in the Pool class to not use recursion for request retries. + ## 5.1.0 - 2014-12-19 * Pool class no longer uses recursion when a request is intercepted. @@ -548,6 +593,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c * Exceptions thrown in the `end` event are now correctly wrapped with Guzzle specific exceptions if necessary. + ## 5.0.3 - 2014-11-03 This change updates query strings so that they are treated as un-encoded values @@ -562,6 +608,7 @@ string that should not be parsed or encoded (unless a call to getQuery() is subsequently made, forcing the query-string to be converted into a Query object). + ## 5.0.2 - 2014-10-30 * Added a trailing `\r\n` to multipart/form-data payloads. See @@ -583,6 +630,7 @@ object). string on a URL: Now allowing many more characters to be present in the query string without being percent encoded. See https://tools.ietf.org/html/rfc3986#appendix-A + ## 5.0.1 - 2014-10-16 Bugfix release. @@ -594,6 +642,7 @@ Bugfix release. * Fixed an issue where transfer statistics were not being populated in the RingBridge. https://github.com/guzzle/guzzle/issues/866 + ## 5.0.0 - 2014-10-12 Adding support for non-blocking responses and some minor API cleanup. @@ -675,6 +724,7 @@ interfaces. argument. They now accept an associative array of options, including the "size" key and "metadata" key which can be used to provide custom metadata. + ## 4.2.2 - 2014-09-08 * Fixed a memory leak in the CurlAdapter when reusing cURL handles. diff --git a/vendor/guzzlehttp/guzzle/README.md b/vendor/guzzlehttp/guzzle/README.md index 428f346f..0786462b 100644 --- a/vendor/guzzlehttp/guzzle/README.md +++ b/vendor/guzzlehttp/guzzle/README.md @@ -60,13 +60,13 @@ composer require guzzlehttp/guzzle ## Version Guidance -| Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version | -|---------|----------------|---------------------|--------------|---------------------|---------------------|-------|--------------| -| 3.x | EOL | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >=5.3.3,<7.0 | -| 4.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >=5.4,<7.0 | -| 5.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >=5.4,<7.4 | -| 6.x | Security fixes | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >=5.5,<8.0 | -| 7.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes | >=7.2.5,<8.3 | +| Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version | +|---------|---------------------|---------------------|--------------|---------------------|---------------------|-------|--------------| +| 3.x | EOL | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >=5.3.3,<7.0 | +| 4.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >=5.4,<7.0 | +| 5.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >=5.4,<7.4 | +| 6.x | Security fixes only | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >=5.5,<8.0 | +| 7.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes | >=7.2.5,<8.3 | [guzzle-3-repo]: https://github.com/guzzle/guzzle3 [guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x diff --git a/vendor/guzzlehttp/guzzle/composer.json b/vendor/guzzlehttp/guzzle/composer.json index b38d5d99..3207f8c3 100644 --- a/vendor/guzzlehttp/guzzle/composer.json +++ b/vendor/guzzlehttp/guzzle/composer.json @@ -53,7 +53,7 @@ "require": { "php": "^7.2.5 || ^8.0", "ext-json": "*", - "guzzlehttp/promises": "^1.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0", "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -64,7 +64,8 @@ "require-dev": { "ext-curl": "*", "bamarni/composer-bin-plugin": "^1.8.1", - "php-http/client-integration-tests": "^3.0", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", "phpunit/phpunit": "^8.5.29 || ^9.5.23", "psr/log": "^1.1 || ^2.0 || ^3.0" }, diff --git a/vendor/guzzlehttp/guzzle/src/Client.php b/vendor/guzzlehttp/guzzle/src/Client.php index c21fcb6e..9b0d7107 100644 --- a/vendor/guzzlehttp/guzzle/src/Client.php +++ b/vendor/guzzlehttp/guzzle/src/Client.php @@ -120,13 +120,14 @@ public function sendAsync(RequestInterface $request, array $options = []): Promi public function send(RequestInterface $request, array $options = []): ResponseInterface { $options[RequestOptions::SYNCHRONOUS] = true; + return $this->sendAsync($request, $options)->wait(); } /** * The HttpClient PSR (PSR-18) specify this method. * - * @inheritDoc + * {@inheritDoc} */ public function sendRequest(RequestInterface $request): ResponseInterface { @@ -184,6 +185,7 @@ public function requestAsync(string $method, $uri = '', array $options = []): Pr public function request(string $method, $uri = '', array $options = []): ResponseInterface { $options[RequestOptions::SYNCHRONOUS] = true; + return $this->requestAsync($method, $uri, $options)->wait(); } @@ -228,11 +230,11 @@ private function configureDefaults(array $config): void { $defaults = [ 'allow_redirects' => RedirectMiddleware::$defaultSettings, - 'http_errors' => true, - 'decode_content' => true, - 'verify' => true, - 'cookies' => false, - 'idn_conversion' => false, + 'http_errors' => true, + 'decode_content' => true, + 'verify' => true, + 'cookies' => false, + 'idn_conversion' => false, ]; // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set. @@ -354,10 +356,10 @@ private function applyOptions(RequestInterface $request, array &$options): Reque if (isset($options['form_params'])) { if (isset($options['multipart'])) { throw new InvalidArgumentException('You cannot use ' - . 'form_params and multipart at the same time. Use the ' - . 'form_params option if you want to send application/' - . 'x-www-form-urlencoded requests, and the multipart ' - . 'option to send multipart/form-data requests.'); + .'form_params and multipart at the same time. Use the ' + .'form_params option if you want to send application/' + .'x-www-form-urlencoded requests, and the multipart ' + .'option to send multipart/form-data requests.'); } $options['body'] = \http_build_query($options['form_params'], '', '&'); unset($options['form_params']); @@ -403,7 +405,7 @@ private function applyOptions(RequestInterface $request, array &$options): Reque // Ensure that we don't have the header in different case and set the new value. $modify['set_headers'] = Psr7\Utils::caselessRemove(['Authorization'], $modify['set_headers']); $modify['set_headers']['Authorization'] = 'Basic ' - . \base64_encode("$value[0]:$value[1]"); + .\base64_encode("$value[0]:$value[1]"); break; case 'digest': // @todo: Do not rely on curl @@ -447,7 +449,7 @@ private function applyOptions(RequestInterface $request, array &$options): Reque // Ensure that we don't have the header in different case and set the new value. $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']); $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary=' - . $request->getBody()->getBoundary(); + .$request->getBody()->getBoundary(); } // Merge in conditional headers if they are not present. @@ -473,9 +475,9 @@ private function applyOptions(RequestInterface $request, array &$options): Reque private function invalidBody(): InvalidArgumentException { return new InvalidArgumentException('Passing in the "body" request ' - . 'option as an array to send a request is not supported. ' - . 'Please use the "form_params" request option to send a ' - . 'application/x-www-form-urlencoded request, or the "multipart" ' - . 'request option to send a multipart/form-data request.'); + .'option as an array to send a request is not supported. ' + .'Please use the "form_params" request option to send a ' + .'application/x-www-form-urlencoded request, or the "multipart" ' + .'request option to send a multipart/form-data request.'); } } diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php index 9985a981..b4ced5a1 100644 --- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php +++ b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php @@ -50,10 +50,10 @@ public static function fromArray(array $cookies, string $domain): self $cookieJar = new self(); foreach ($cookies as $name => $value) { $cookieJar->setCookie(new SetCookie([ - 'Domain' => $domain, - 'Name' => $name, - 'Value' => $value, - 'Discard' => true + 'Domain' => $domain, + 'Name' => $name, + 'Value' => $value, + 'Discard' => true, ])); } @@ -97,7 +97,7 @@ public function getCookieByName(string $name): ?SetCookie } /** - * @inheritDoc + * {@inheritDoc} */ public function toArray(): array { @@ -107,12 +107,13 @@ public function toArray(): array } /** - * @inheritDoc + * {@inheritDoc} */ public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void { if (!$domain) { $this->cookies = []; + return; } elseif (!$path) { $this->cookies = \array_filter( @@ -142,7 +143,7 @@ static function (SetCookie $cookie) use ($path, $domain, $name) { } /** - * @inheritDoc + * {@inheritDoc} */ public function clearSessionCookies(): void { @@ -155,7 +156,7 @@ static function (SetCookie $cookie): bool { } /** - * @inheritDoc + * {@inheritDoc} */ public function setCookie(SetCookie $cookie): bool { @@ -170,9 +171,10 @@ public function setCookie(SetCookie $cookie): bool $result = $cookie->validate(); if ($result !== true) { if ($this->strictMode) { - throw new \RuntimeException('Invalid cookie: ' . $result); + throw new \RuntimeException('Invalid cookie: '.$result); } $this->removeCookieIfEmpty($cookie); + return false; } @@ -253,7 +255,7 @@ public function extractCookies(RequestInterface $request, ResponseInterface $res /** * Computes cookie path following RFC 6265 section 5.1.4 * - * @link https://tools.ietf.org/html/rfc6265#section-5.1.4 + * @see https://tools.ietf.org/html/rfc6265#section-5.1.4 */ private function getCookiePathFromRequest(RequestInterface $request): string { @@ -289,8 +291,8 @@ public function withCookieHeader(RequestInterface $request): RequestInterface !$cookie->isExpired() && (!$cookie->getSecure() || $scheme === 'https') ) { - $values[] = $cookie->getName() . '=' - . $cookie->getValue(); + $values[] = $cookie->getName().'=' + .$cookie->getValue(); } } diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php index 7df374b5..50bc3639 100644 --- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php +++ b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php @@ -13,7 +13,7 @@ * necessary. Subclasses are also responsible for storing and retrieving * cookies from a file, database, etc. * - * @link https://docs.python.org/2/library/cookielib.html Inspiration + * @see https://docs.python.org/2/library/cookielib.html Inspiration * @extends \IteratorAggregate */ interface CookieJarInterface extends \Countable, \IteratorAggregate diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php index 5d51ca98..cb3e67c6 100644 --- a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php +++ b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php @@ -71,7 +71,7 @@ protected function load(): void $this->setCookie(new SetCookie($cookie)); } } elseif (\strlen($data)) { - throw new \RuntimeException("Invalid cookie data"); + throw new \RuntimeException('Invalid cookie data'); } } } diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php index 3f04e307..d74915be 100644 --- a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php +++ b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php @@ -11,15 +11,15 @@ class SetCookie * @var array */ private static $defaults = [ - 'Name' => null, - 'Value' => null, - 'Domain' => null, - 'Path' => '/', - 'Max-Age' => null, - 'Expires' => null, - 'Secure' => false, - 'Discard' => false, - 'HttpOnly' => false + 'Name' => null, + 'Value' => null, + 'Domain' => null, + 'Path' => '/', + 'Max-Age' => null, + 'Expires' => null, + 'Secure' => false, + 'Discard' => false, + 'HttpOnly' => false, ]; /** @@ -134,13 +134,13 @@ public function __construct(array $data = []) public function __toString() { - $str = $this->data['Name'] . '=' . ($this->data['Value'] ?? '') . '; '; + $str = $this->data['Name'].'='.($this->data['Value'] ?? '').'; '; foreach ($this->data as $k => $v) { if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== false) { if ($k === 'Expires') { - $str .= 'Expires=' . \gmdate('D, d M Y H:i:s \G\M\T', $v) . '; '; + $str .= 'Expires='.\gmdate('D, d M Y H:i:s \G\M\T', $v).'; '; } else { - $str .= ($v === true ? $k : "{$k}={$v}") . '; '; + $str .= ($v === true ? $k : "{$k}={$v}").'; '; } } } @@ -436,7 +436,7 @@ public function matchesDomain(string $domain): bool return false; } - return (bool) \preg_match('/\.' . \preg_quote($cookieDomain, '/') . '$/', $domain); + return (bool) \preg_match('/\.'.\preg_quote($cookieDomain, '/').'$/', $domain); } /** @@ -465,8 +465,8 @@ public function validate() $name )) { return 'Cookie name must not contain invalid characters: ASCII ' - . 'Control characters (0-31;127), space, tab and the ' - . 'following characters: ()<>@,;:\"/?={}'; + .'Control characters (0-31;127), space, tab and the ' + .'following characters: ()<>@,;:\"/?={}'; } // Value must not be null. 0 and empty string are valid. Empty strings diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php index 95375e30..3a6a8db2 100644 --- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php +++ b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php @@ -51,7 +51,7 @@ public function create(RequestInterface $request, array $options): EasyHandle unset($options['curl']['body_as_string']); } - $easy = new EasyHandle; + $easy = new EasyHandle(); $easy->request = $request; $easy->options = $options; $conf = $this->getDefaultConf($easy); @@ -161,11 +161,11 @@ private static function finishError(callable $handler, EasyHandle $easy, CurlFac private static function createRejection(EasyHandle $easy, array $ctx): PromiseInterface { static $connectionErrors = [ - \CURLE_OPERATION_TIMEOUTED => true, + \CURLE_OPERATION_TIMEOUTED => true, \CURLE_COULDNT_RESOLVE_HOST => true, - \CURLE_COULDNT_CONNECT => true, - \CURLE_SSL_CONNECT_ERROR => true, - \CURLE_GOT_NOTHING => true, + \CURLE_COULDNT_CONNECT => true, + \CURLE_SSL_CONNECT_ERROR => true, + \CURLE_GOT_NOTHING => true, ]; if ($easy->createResponseException) { @@ -219,11 +219,11 @@ private static function createRejection(EasyHandle $easy, array $ctx): PromiseIn private function getDefaultConf(EasyHandle $easy): array { $conf = [ - '_headers' => $easy->request->getHeaders(), - \CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(), - \CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''), + '_headers' => $easy->request->getHeaders(), + \CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(), + \CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''), \CURLOPT_RETURNTRANSFER => false, - \CURLOPT_HEADER => false, + \CURLOPT_HEADER => false, \CURLOPT_CONNECTTIMEOUT => 300, ]; @@ -250,6 +250,7 @@ private function applyMethod(EasyHandle $easy, array &$conf): void if ($size === null || $size > 0) { $this->applyBody($easy->request, $easy->options, $conf); + return; } @@ -341,6 +342,7 @@ private function removeHeader(string $name, array &$options): void foreach (\array_keys($options['_headers']) as $key) { if (!\strcasecmp($key, $name)) { unset($options['_headers'][$key]); + return; } } @@ -487,8 +489,8 @@ private function applyHandlerOptions(EasyHandle $easy, array &$conf): void if (!\file_exists($cert)) { throw new \InvalidArgumentException("SSL certificate not found: {$cert}"); } - # OpenSSL (versions 0.9.3 and later) also support "P12" for PKCS#12-encoded files. - # see https://curl.se/libcurl/c/CURLOPT_SSLCERTTYPE.html + // OpenSSL (versions 0.9.3 and later) also support "P12" for PKCS#12-encoded files. + // see https://curl.se/libcurl/c/CURLOPT_SSLCERTTYPE.html $ext = pathinfo($cert, \PATHINFO_EXTENSION); if (preg_match('#^(der|p12)$#i', $ext)) { $conf[\CURLOPT_SSLCERTTYPE] = strtoupper($ext); @@ -551,9 +553,10 @@ private static function retryFailedRewind(callable $handler, EasyHandle $easy, a } } catch (\RuntimeException $e) { $ctx['error'] = 'The connection unexpectedly failed without ' - . 'providing an error. The request would have been retried, ' - . 'but attempting to rewind the request body failed. ' - . 'Exception: ' . $e; + .'providing an error. The request would have been retried, ' + .'but attempting to rewind the request body failed. ' + .'Exception: '.$e; + return self::createRejection($easy, $ctx); } @@ -562,14 +565,15 @@ private static function retryFailedRewind(callable $handler, EasyHandle $easy, a $easy->options['_curl_retries'] = 1; } elseif ($easy->options['_curl_retries'] == 2) { $ctx['error'] = 'The cURL request was retried 3 times ' - . 'and did not succeed. The most likely reason for the failure ' - . 'is that cURL was unable to rewind the body of the request ' - . 'and subsequent retries resulted in the same error. Turn on ' - . 'the debug option to see what went wrong. See ' - . 'https://bugs.php.net/bug.php?id=47204 for more information.'; + .'and did not succeed. The most likely reason for the failure ' + .'is that cURL was unable to rewind the body of the request ' + .'and subsequent retries resulted in the same error. Turn on ' + .'the debug option to see what went wrong. See ' + .'https://bugs.php.net/bug.php?id=47204 for more information.'; + return self::createRejection($easy, $ctx); } else { - $easy->options['_curl_retries']++; + ++$easy->options['_curl_retries']; } return $handler($easy->request, $easy->options); @@ -599,6 +603,7 @@ private function createHeaderFn(EasyHandle $easy): callable $easy->createResponse(); } catch (\Exception $e) { $easy->createResponseException = $e; + return -1; } if ($onHeaders !== null) { @@ -608,6 +613,7 @@ private function createHeaderFn(EasyHandle $easy): callable // Associate the exception with the handle and trigger // a curl header write error by returning 0. $easy->onHeadersException = $e; + return -1; } } @@ -617,6 +623,7 @@ private function createHeaderFn(EasyHandle $easy): callable } else { $easy->headers[] = $value; } + return \strlen($h); }; } diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php index 4356d024..f0acde14 100644 --- a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php +++ b/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php @@ -164,7 +164,8 @@ public function tick(): void \usleep(250); } - while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM); + while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM) { + } $this->processMessages(); } diff --git a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php b/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php index 224344d7..1bc39f4b 100644 --- a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php +++ b/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php @@ -106,7 +106,7 @@ public function createResponse(): void */ public function __get($name) { - $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: ' . $name; + $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: '.$name; throw new \BadMethodCallException($msg); } } diff --git a/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php b/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php index a0988845..5554b8fa 100644 --- a/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php +++ b/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php @@ -14,9 +14,9 @@ final class HeaderProcessor * * @param string[] $headers * - * @throws \RuntimeException - * * @return array{0:string, 1:int, 2:?string, 3:array} + * + * @throws \RuntimeException */ public static function parseHeaders(array $headers): array { diff --git a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php index 79664e27..77ffed52 100644 --- a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php +++ b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php @@ -138,6 +138,7 @@ function ($reason) use ($request, $options) { if ($this->onRejected) { ($this->onRejected)($reason); } + return P\Create::rejectionFor($reason); } ); @@ -159,7 +160,7 @@ public function append(...$values): void ) { $this->queue[] = $value; } else { - throw new \TypeError('Expected a Response, Promise, Throwable or callable. Found ' . Utils::describeType($value)); + throw new \TypeError('Expected a Response, Promise, Throwable or callable. Found '.Utils::describeType($value)); } } } diff --git a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php index 310987c2..61632f56 100644 --- a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php +++ b/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php @@ -67,7 +67,7 @@ public function __invoke(RequestInterface $request, array $options): PromiseInte if (false !== \strpos($message, 'getaddrinfo') // DNS lookup failed || false !== \strpos($message, 'Connection refused') || false !== \strpos($message, "couldn't connect to host") // error on HHVM - || false !== \strpos($message, "connection attempt failed") + || false !== \strpos($message, 'connection attempt failed') ) { $e = new ConnectException($e->getMessage(), $request, $e); } else { @@ -231,9 +231,10 @@ private function createResource(callable $callback) \set_error_handler(static function ($_, $msg, $file, $line) use (&$errors): bool { $errors[] = [ 'message' => $msg, - 'file' => $file, - 'line' => $line + 'file' => $file, + 'line' => $line, ]; + return true; }); @@ -247,7 +248,7 @@ private function createResource(callable $callback) $message = 'Error creating resource: '; foreach ($errors as $err) { foreach ($err as $key => $value) { - $message .= "[$key] $value" . \PHP_EOL; + $message .= "[$key] $value".\PHP_EOL; } } throw new \RuntimeException(\trim($message)); @@ -350,6 +351,7 @@ private function resolveHost(RequestInterface $request, array $options): UriInte if (false === $records || !isset($records[0]['ip'])) { throw new ConnectException(\sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request); } + return $uri->withHost($records[0]['ip']); } if ('v6' === $options['force_ip_resolve']) { @@ -357,7 +359,8 @@ private function resolveHost(RequestInterface $request, array $options): UriInte if (false === $records || !isset($records[0]['ipv6'])) { throw new ConnectException(\sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request); } - return $uri->withHost('[' . $records[0]['ipv6'] . ']'); + + return $uri->withHost('['.$records[0]['ipv6'].']'); } } @@ -375,11 +378,11 @@ private function getDefaultContext(RequestInterface $request): array $context = [ 'http' => [ - 'method' => $request->getMethod(), - 'header' => $headers, + 'method' => $request->getMethod(), + 'header' => $headers, 'protocol_version' => $request->getProtocolVersion(), - 'ignore_errors' => true, - 'follow_location' => 0, + 'ignore_errors' => true, + 'follow_location' => 0, ], 'ssl' => [ 'peer_name' => $request->getUri()->getHost(), @@ -561,27 +564,27 @@ private function add_debug(RequestInterface $request, array &$options, $value, a } static $map = [ - \STREAM_NOTIFY_CONNECT => 'CONNECT', + \STREAM_NOTIFY_CONNECT => 'CONNECT', \STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED', - \STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', - \STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', - \STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', - \STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', - \STREAM_NOTIFY_PROGRESS => 'PROGRESS', - \STREAM_NOTIFY_FAILURE => 'FAILURE', - \STREAM_NOTIFY_COMPLETED => 'COMPLETED', - \STREAM_NOTIFY_RESOLVE => 'RESOLVE', + \STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', + \STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', + \STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', + \STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', + \STREAM_NOTIFY_PROGRESS => 'PROGRESS', + \STREAM_NOTIFY_FAILURE => 'FAILURE', + \STREAM_NOTIFY_COMPLETED => 'COMPLETED', + \STREAM_NOTIFY_RESOLVE => 'RESOLVE', ]; static $args = ['severity', 'message', 'message_code', 'bytes_transferred', 'bytes_max']; $value = Utils::debugResource($value); - $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment(''); + $ident = $request->getMethod().' '.$request->getUri()->withFragment(''); self::addNotification( $params, static function (int $code, ...$passed) use ($ident, $value, $map, $args): void { \fprintf($value, '<%s> [%s] ', $ident, $map[$code]); foreach (\array_filter($passed) as $i => $v) { - \fwrite($value, $args[$i] . ': "' . $v . '" '); + \fwrite($value, $args[$i].': "'.$v.'" '); } \fwrite($value, "\n"); } @@ -596,7 +599,7 @@ private static function addNotification(array &$params, callable $notify): void } else { $params['notification'] = self::callArray([ $params['notification'], - $notify + $notify, ]); } } diff --git a/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/vendor/guzzlehttp/guzzle/src/HandlerStack.php index e0a1d119..1ce9c4b1 100644 --- a/vendor/guzzlehttp/guzzle/src/HandlerStack.php +++ b/vendor/guzzlehttp/guzzle/src/HandlerStack.php @@ -86,14 +86,14 @@ public function __toString() $stack = []; if ($this->handler !== null) { - $stack[] = "0) Handler: " . $this->debugCallable($this->handler); + $stack[] = '0) Handler: '.$this->debugCallable($this->handler); } $result = ''; foreach (\array_reverse($this->stack) as $tuple) { - $depth++; + ++$depth; $str = "{$depth}) Name: '{$tuple[1]}', "; - $str .= "Function: " . $this->debugCallable($tuple[0]); + $str .= 'Function: '.$this->debugCallable($tuple[0]); $result = "> {$str}\n{$result}"; $stack[] = $str; } @@ -122,7 +122,7 @@ public function setHandler(callable $handler): void */ public function hasHandler(): bool { - return $this->handler !== null ; + return $this->handler !== null; } /** @@ -266,10 +266,10 @@ private function debugCallable($fn): string if (\is_array($fn)) { return \is_string($fn[0]) ? "callable({$fn[0]}::{$fn[1]})" - : "callable(['" . \get_class($fn[0]) . "', '{$fn[1]}'])"; + : "callable(['".\get_class($fn[0])."', '{$fn[1]}'])"; } /** @var object $fn */ - return 'callable(' . \spl_object_hash($fn) . ')'; + return 'callable('.\spl_object_hash($fn).')'; } } diff --git a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/vendor/guzzlehttp/guzzle/src/MessageFormatter.php index da499547..9b77eee8 100644 --- a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php +++ b/vendor/guzzlehttp/guzzle/src/MessageFormatter.php @@ -40,11 +40,11 @@ class MessageFormatter implements MessageFormatterInterface /** * Apache Common Log Format. * - * @link https://httpd.apache.org/docs/2.4/logs.html#common + * @see https://httpd.apache.org/docs/2.4/logs.html#common * * @var string */ - public const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}"; + public const CLF = '{hostname} {req_header_User-Agent} - [{date_common_log}] "{method} {target} HTTP/{version}" {code} {res_header_Content-Length}'; public const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}"; public const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}'; @@ -90,9 +90,9 @@ function (array $matches) use ($request, $response, $error, &$cache) { break; case 'req_headers': $result = \trim($request->getMethod() - . ' ' . $request->getRequestTarget()) - . ' HTTP/' . $request->getProtocolVersion() . "\r\n" - . $this->headers($request); + .' '.$request->getRequestTarget()) + .' HTTP/'.$request->getProtocolVersion()."\r\n" + .$this->headers($request); break; case 'res_headers': $result = $response ? @@ -101,7 +101,7 @@ function (array $matches) use ($request, $response, $error, &$cache) { $response->getProtocolVersion(), $response->getStatusCode(), $response->getReasonPhrase() - ) . "\r\n" . $this->headers($response) + )."\r\n".$this->headers($response) : 'NULL'; break; case 'req_body': @@ -177,6 +177,7 @@ function (array $matches) use ($request, $response, $error, &$cache) { } $cache[$matches[1]] = $result; + return $result; }, $this->template @@ -190,7 +191,7 @@ private function headers(MessageInterface $message): string { $result = ''; foreach ($message->getHeaders() as $name => $values) { - $result .= $name . ': ' . \implode(', ', $values) . "\r\n"; + $result .= $name.': '.\implode(', ', $values)."\r\n"; } return \trim($result); diff --git a/vendor/guzzlehttp/guzzle/src/Middleware.php b/vendor/guzzlehttp/guzzle/src/Middleware.php index 7035c77f..7e3eb6b3 100644 --- a/vendor/guzzlehttp/guzzle/src/Middleware.php +++ b/vendor/guzzlehttp/guzzle/src/Middleware.php @@ -34,10 +34,12 @@ public static function cookies(): callable } $cookieJar = $options['cookies']; $request = $cookieJar->withCookieHeader($request); + return $handler($request, $options) ->then( static function (ResponseInterface $response) use ($cookieJar, $request): ResponseInterface { $cookieJar->extractCookies($request, $response); + return $response; } ); @@ -60,6 +62,7 @@ public static function httpErrors(BodySummarizerInterface $bodySummarizer = null if (empty($options['http_errors'])) { return $handler($request, $options); } + return $handler($request, $options)->then( static function (ResponseInterface $response) use ($request, $bodySummarizer) { $code = $response->getStatusCode(); @@ -93,20 +96,22 @@ public static function history(&$container): callable return $handler($request, $options)->then( static function ($value) use ($request, &$container, $options) { $container[] = [ - 'request' => $request, + 'request' => $request, 'response' => $value, - 'error' => null, - 'options' => $options + 'error' => null, + 'options' => $options, ]; + return $value; }, static function ($reason) use ($request, &$container, $options) { $container[] = [ - 'request' => $request, + 'request' => $request, 'response' => null, - 'error' => $reason, - 'options' => $options + 'error' => $reason, + 'options' => $options, ]; + return P\Create::rejectionFor($reason); } ); @@ -138,6 +143,7 @@ public static function tap(callable $before = null, callable $after = null): cal if ($after) { $after($request, $options, $response); } + return $response; }; }; @@ -202,12 +208,14 @@ public static function log(LoggerInterface $logger, $formatter, string $logLevel static function ($response) use ($logger, $request, $formatter, $logLevel): ResponseInterface { $message = $formatter->format($request, $response); $logger->log($logLevel, $message); + return $response; }, static function ($reason) use ($logger, $request, $formatter): PromiseInterface { $response = $reason instanceof RequestException ? $reason->getResponse() : null; $message = $formatter->format($request, $response, P\Create::exceptionFor($reason)); $logger->error($message); + return P\Create::rejectionFor($reason); } ); diff --git a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php index 7ca62833..0a8de812 100644 --- a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php +++ b/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php @@ -84,6 +84,7 @@ private function addExpectHeader(RequestInterface $request, array $options, arra // The expect header is unconditionally enabled if ($expect === true) { $modify['set_headers']['Expect'] = '100-Continue'; + return; } diff --git a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php index f67d448b..f32808a7 100644 --- a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php +++ b/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php @@ -27,10 +27,10 @@ class RedirectMiddleware * @var array */ public static $defaultSettings = [ - 'max' => 5, - 'protocols' => ['http', 'https'], - 'strict' => false, - 'referer' => false, + 'max' => 5, + 'protocols' => ['http', 'https'], + 'strict' => false, + 'referer' => false, 'track_redirects' => false, ]; diff --git a/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/vendor/guzzlehttp/guzzle/src/RequestOptions.php index 542cd72c..bf3b02b6 100644 --- a/vendor/guzzlehttp/guzzle/src/RequestOptions.php +++ b/vendor/guzzlehttp/guzzle/src/RequestOptions.php @@ -7,7 +7,7 @@ * * More documentation for each option can be found at http://guzzlephp.org/. * - * @link http://docs.guzzlephp.org/en/v6/request-options.html + * @see http://docs.guzzlephp.org/en/v6/request-options.html */ final class RequestOptions { diff --git a/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php b/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php index 0236a9d5..8f4d93ac 100644 --- a/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php +++ b/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php @@ -44,7 +44,7 @@ public function __construct(callable $decider, callable $nextHandler, callable $ { $this->decider = $decider; $this->nextHandler = $nextHandler; - $this->delay = $delay ?: __CLASS__ . '::exponentialDelay'; + $this->delay = $delay ?: __CLASS__.'::exponentialDelay'; } /** @@ -54,7 +54,7 @@ public function __construct(callable $decider, callable $nextHandler, callable $ */ public static function exponentialDelay(int $retries): int { - return (int) \pow(2, $retries - 1) * 1000; + return (int) 2 ** ($retries - 1) * 1000; } public function __invoke(RequestInterface $request, array $options): PromiseInterface @@ -64,6 +64,7 @@ public function __invoke(RequestInterface $request, array $options): PromiseInte } $fn = $this->nextHandler; + return $fn($request, $options) ->then( $this->onFulfilled($request, $options), @@ -85,6 +86,7 @@ private function onFulfilled(RequestInterface $request, array $options): callabl )) { return $value; } + return $this->doRetry($request, $options, $value); }; } @@ -103,6 +105,7 @@ private function onRejected(RequestInterface $req, array $options): callable )) { return P\Create::rejectionFor($reason); } + return $this->doRetry($req, $options); }; } diff --git a/vendor/guzzlehttp/guzzle/src/Utils.php b/vendor/guzzlehttp/guzzle/src/Utils.php index e355f321..fcf571d6 100644 --- a/vendor/guzzlehttp/guzzle/src/Utils.php +++ b/vendor/guzzlehttp/guzzle/src/Utils.php @@ -23,9 +23,9 @@ public static function describeType($input): string { switch (\gettype($input)) { case 'object': - return 'object(' . \get_class($input) . ')'; + return 'object('.\get_class($input).')'; case 'array': - return 'array(' . \count($input) . ')'; + return 'array('.\count($input).')'; default: \ob_start(); \var_dump($input); @@ -79,9 +79,9 @@ public static function debugResource($value = null) * * The returned handler is not wrapped by any default middlewares. * - * @throws \RuntimeException if no viable Handler is available. - * * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system. + * + * @throws \RuntimeException if no viable Handler is available. */ public static function chooseHandler(): callable { @@ -247,8 +247,8 @@ public static function isHostInNoProxy(string $host, array $noProxyArray): bool } // Special match if the area when prefixed with ".". Remove any // existing leading "." and add a new leading ".". - $area = '.' . \ltrim($area, '.'); - if (\substr($host, -(\strlen($area))) === $area) { + $area = '.'.\ltrim($area, '.'); + if (\substr($host, -\strlen($area)) === $area) { return true; } } @@ -269,13 +269,13 @@ public static function isHostInNoProxy(string $host, array $noProxyArray): bool * * @throws InvalidArgumentException if the JSON cannot be decoded. * - * @link https://www.php.net/manual/en/function.json-decode.php + * @see https://www.php.net/manual/en/function.json-decode.php */ public static function jsonDecode(string $json, bool $assoc = false, int $depth = 512, int $options = 0) { $data = \json_decode($json, $assoc, $depth, $options); if (\JSON_ERROR_NONE !== \json_last_error()) { - throw new InvalidArgumentException('json_decode error: ' . \json_last_error_msg()); + throw new InvalidArgumentException('json_decode error: '.\json_last_error_msg()); } return $data; @@ -290,13 +290,13 @@ public static function jsonDecode(string $json, bool $assoc = false, int $depth * * @throws InvalidArgumentException if the JSON cannot be encoded. * - * @link https://www.php.net/manual/en/function.json-encode.php + * @see https://www.php.net/manual/en/function.json-encode.php */ public static function jsonEncode($value, int $options = 0, int $depth = 512): string { $json = \json_encode($value, $options, $depth); if (\JSON_ERROR_NONE !== \json_last_error()) { - throw new InvalidArgumentException('json_encode error: ' . \json_last_error_msg()); + throw new InvalidArgumentException('json_encode error: '.\json_last_error_msg()); } /** @var string */ @@ -341,7 +341,7 @@ public static function idnUriConvert(UriInterface $uri, int $options = 0): UriIn $errorMessage = 'IDN conversion failed'; if ($errors) { - $errorMessage .= ' (errors: ' . implode(', ', $errors) . ')'; + $errorMessage .= ' (errors: '.implode(', ', $errors).')'; } throw new InvalidArgumentException($errorMessage); diff --git a/vendor/guzzlehttp/guzzle/src/functions.php b/vendor/guzzlehttp/guzzle/src/functions.php index a70d2cbf..5edc66ab 100644 --- a/vendor/guzzlehttp/guzzle/src/functions.php +++ b/vendor/guzzlehttp/guzzle/src/functions.php @@ -50,10 +50,10 @@ function debug_resource($value = null) * * The returned handler is not wrapped by any default middlewares. * - * @throws \RuntimeException if no viable Handler is available. - * * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system. * + * @throws \RuntimeException if no viable Handler is available. + * * @deprecated choose_handler will be removed in guzzlehttp/guzzle:8.0. Use Utils::chooseHandler instead. */ function choose_handler(): callable @@ -141,7 +141,7 @@ function is_host_in_noproxy(string $host, array $noProxyArray): bool * * @throws Exception\InvalidArgumentException if the JSON cannot be decoded. * - * @link https://www.php.net/manual/en/function.json-decode.php + * @see https://www.php.net/manual/en/function.json-decode.php * @deprecated json_decode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonDecode instead. */ function json_decode(string $json, bool $assoc = false, int $depth = 512, int $options = 0) @@ -158,7 +158,7 @@ function json_decode(string $json, bool $assoc = false, int $depth = 512, int $o * * @throws Exception\InvalidArgumentException if the JSON cannot be encoded. * - * @link https://www.php.net/manual/en/function.json-encode.php + * @see https://www.php.net/manual/en/function.json-encode.php * @deprecated json_encode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonEncode instead. */ function json_encode($value, int $options = 0, int $depth = 512): string diff --git a/vendor/guzzlehttp/guzzle/src/functions_include.php b/vendor/guzzlehttp/guzzle/src/functions_include.php index 6636a422..394f9534 100644 --- a/vendor/guzzlehttp/guzzle/src/functions_include.php +++ b/vendor/guzzlehttp/guzzle/src/functions_include.php @@ -2,5 +2,5 @@ // Don't redefine the functions if included multiple times. if (!\function_exists('GuzzleHttp\describe_type')) { - require __DIR__ . '/functions.php'; + require __DIR__.'/functions.php'; } diff --git a/vendor/guzzlehttp/promises/CHANGELOG.md b/vendor/guzzlehttp/promises/CHANGELOG.md index 253282eb..2e1a2f38 100644 --- a/vendor/guzzlehttp/promises/CHANGELOG.md +++ b/vendor/guzzlehttp/promises/CHANGELOG.md @@ -1,5 +1,11 @@ # CHANGELOG +## 1.5.3 - 2023-05-21 + +### Changed + +- Removed remaining usage of deprecated functions + ## 1.5.2 - 2022-08-07 ### Changed diff --git a/vendor/guzzlehttp/promises/composer.json b/vendor/guzzlehttp/promises/composer.json index c959fb32..966e3e3a 100644 --- a/vendor/guzzlehttp/promises/composer.json +++ b/vendor/guzzlehttp/promises/composer.json @@ -46,11 +46,6 @@ "test": "vendor/bin/simple-phpunit", "test-ci": "vendor/bin/simple-phpunit --coverage-text" }, - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, "config": { "preferred-install": "dist", "sort-packages": true diff --git a/vendor/guzzlehttp/promises/src/Each.php b/vendor/guzzlehttp/promises/src/Each.php index 1dda3549..ff8efd73 100644 --- a/vendor/guzzlehttp/promises/src/Each.php +++ b/vendor/guzzlehttp/promises/src/Each.php @@ -78,7 +78,7 @@ public static function ofLimitAll( $concurrency, callable $onFulfilled = null ) { - return each_limit( + return self::ofLimit( $iterable, $concurrency, $onFulfilled, diff --git a/vendor/guzzlehttp/promises/src/Utils.php b/vendor/guzzlehttp/promises/src/Utils.php index 8647126d..e3761883 100644 --- a/vendor/guzzlehttp/promises/src/Utils.php +++ b/vendor/guzzlehttp/promises/src/Utils.php @@ -107,7 +107,7 @@ public static function inspectAll($promises) { $results = []; foreach ($promises as $key => $promise) { - $results[$key] = inspect($promise); + $results[$key] = self::inspect($promise); } return $results; diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php index de9aae7e..69f35332 100644 --- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php +++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php @@ -19,6 +19,8 @@ class Param implements PhpParser\Builder protected $variadic = false; + protected $flags = 0; + /** @var Node\AttributeGroup[] */ protected $attributeGroups = []; @@ -95,6 +97,50 @@ public function makeVariadic() { return $this; } + /** + * Makes the (promoted) parameter public. + * + * @return $this The builder instance (for fluid interface) + */ + public function makePublic() { + $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_PUBLIC); + + return $this; + } + + /** + * Makes the (promoted) parameter protected. + * + * @return $this The builder instance (for fluid interface) + */ + public function makeProtected() { + $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_PROTECTED); + + return $this; + } + + /** + * Makes the (promoted) parameter private. + * + * @return $this The builder instance (for fluid interface) + */ + public function makePrivate() { + $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_PRIVATE); + + return $this; + } + + /** + * Makes the (promoted) parameter readonly. + * + * @return $this The builder instance (for fluid interface) + */ + public function makeReadonly() { + $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_READONLY); + + return $this; + } + /** * Adds an attribute group. * @@ -116,7 +162,7 @@ public function addAttribute($attribute) { public function getNode() : Node { return new Node\Param( new Node\Expr\Variable($this->name), - $this->default, $this->type, $this->byRef, $this->variadic, [], 0, $this->attributeGroups + $this->default, $this->type, $this->byRef, $this->variadic, [], $this->flags, $this->attributeGroups ); } } diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-10.1.md b/vendor/phpunit/php-code-coverage/ChangeLog-10.1.md index 9927d064..23d0c985 100644 --- a/vendor/phpunit/php-code-coverage/ChangeLog-10.1.md +++ b/vendor/phpunit/php-code-coverage/ChangeLog-10.1.md @@ -2,6 +2,12 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. +## [10.1.2] - 2023-05-22 + +### Fixed + +* [#998](https://github.com/sebastianbergmann/php-code-coverage/pull/998): Group Use Declarations are not handled properly + ## [10.1.1] - 2023-04-17 ### Fixed @@ -18,5 +24,6 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](htt * The `SebastianBergmann\CodeCoverage\Filter::includeDirectory()`, `SebastianBergmann\CodeCoverage\Filter::excludeDirectory()`, and `SebastianBergmann\CodeCoverage\Filter::excludeFile()` methods are now deprecated +[10.1.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.1...10.1.2 [10.1.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.1.0...10.1.1 [10.1.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/10.0.2...10.1.0 diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php index 38db4988..4ce6e436 100644 --- a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php +++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php @@ -96,6 +96,7 @@ public function enterNode(Node $node): void $node instanceof Node\Stmt\Else_ || $node instanceof Node\Stmt\EnumCase || $node instanceof Node\Stmt\Finally_ || + $node instanceof Node\Stmt\GroupUse || $node instanceof Node\Stmt\Label || $node instanceof Node\Stmt\Namespace_ || $node instanceof Node\Stmt\Nop || diff --git a/vendor/phpunit/php-code-coverage/src/Version.php b/vendor/phpunit/php-code-coverage/src/Version.php index 1394be09..6d065e2b 100644 --- a/vendor/phpunit/php-code-coverage/src/Version.php +++ b/vendor/phpunit/php-code-coverage/src/Version.php @@ -19,7 +19,7 @@ final class Version public static function id(): string { if (self::$version === '') { - self::$version = (new VersionId('10.1.1', dirname(__DIR__)))->asString(); + self::$version = (new VersionId('10.1.2', dirname(__DIR__)))->asString(); } return self::$version; diff --git a/vendor/phpunit/phpunit/composer.json b/vendor/phpunit/phpunit/composer.json index da2081ce..51d25b0e 100644 --- a/vendor/phpunit/phpunit/composer.json +++ b/vendor/phpunit/phpunit/composer.json @@ -83,7 +83,7 @@ }, "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "10.2-dev" } } } diff --git a/vendor/phpunit/phpunit/phpunit.xsd b/vendor/phpunit/phpunit/phpunit.xsd index 1b190c21..ac959e55 100644 --- a/vendor/phpunit/phpunit/phpunit.xsd +++ b/vendor/phpunit/phpunit/phpunit.xsd @@ -2,7 +2,7 @@ - This Schema file defines the rules by which the XML configuration file of PHPUnit 10.1 may be structured. + This Schema file defines the rules by which the XML configuration file of PHPUnit 10.2 may be structured. @@ -27,6 +27,13 @@ + + + + + + + diff --git a/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php b/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php index 685d22ca..d84abf01 100644 --- a/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php +++ b/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php @@ -52,8 +52,8 @@ public function registerSubscriber(Subscriber $subscriber): void throw new UnknownSubscriberTypeException( sprintf( 'Subscriber "%s" does not implement any known interface - did you forget to register it?', - $subscriber::class - ) + $subscriber::class, + ), ); } @@ -93,8 +93,8 @@ public function dispatch(Event $event): void throw new UnknownEventTypeException( sprintf( 'Unknown event type "%s"', - $eventClassName - ) + $eventClassName, + ), ); } diff --git a/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php b/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php index 1b89c1e5..798b7168 100644 --- a/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php +++ b/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php @@ -9,8 +9,11 @@ */ namespace PHPUnit\Event; +use PHPUnit\Event\Code\ClassMethod; use PHPUnit\Event\Code\ComparisonFailure; use PHPUnit\Event\Code\Throwable; +use PHPUnit\Event\Test\DataProviderMethodCalled; +use PHPUnit\Event\Test\DataProviderMethodFinished; use PHPUnit\Event\TestSuite\Filtered as TestSuiteFiltered; use PHPUnit\Event\TestSuite\Finished as TestSuiteFinished; use PHPUnit\Event\TestSuite\Loaded as TestSuiteLoaded; @@ -50,8 +53,8 @@ public function applicationStarted(): void $this->dispatcher->dispatch( new Application\Started( $this->telemetryInfo(), - new Runtime\Runtime - ) + new Runtime\Runtime, + ), ); } @@ -63,8 +66,8 @@ public function testRunnerStarted(): void { $this->dispatcher->dispatch( new TestRunner\Started( - $this->telemetryInfo() - ) + $this->telemetryInfo(), + ), ); } @@ -77,8 +80,8 @@ public function testRunnerConfigured(Configuration $configuration): void $this->dispatcher->dispatch( new TestRunner\Configured( $this->telemetryInfo(), - $configuration - ) + $configuration, + ), ); } @@ -91,8 +94,8 @@ public function testRunnerBootstrapFinished(string $filename): void $this->dispatcher->dispatch( new TestRunner\BootstrapFinished( $this->telemetryInfo(), - $filename - ) + $filename, + ), ); } @@ -107,8 +110,8 @@ public function testRunnerLoadedExtensionFromPhar(string $filename, string $name $this->telemetryInfo(), $filename, $name, - $version - ) + $version, + ), ); } @@ -125,8 +128,38 @@ public function testRunnerBootstrappedExtension(string $className, array $parame new TestRunner\ExtensionBootstrapped( $this->telemetryInfo(), $className, - $parameters - ) + $parameters, + ), + ); + } + + /** + * @throws InvalidArgumentException + * @throws UnknownEventTypeException + */ + public function dataProviderMethodCalled(ClassMethod $testMethod, ClassMethod $dataProviderMethod): void + { + $this->dispatcher->dispatch( + new DataProviderMethodCalled( + $this->telemetryInfo(), + $testMethod, + $dataProviderMethod, + ), + ); + } + + /** + * @throws InvalidArgumentException + * @throws UnknownEventTypeException + */ + public function dataProviderMethodFinished(ClassMethod $testMethod, ClassMethod ...$calledMethods): void + { + $this->dispatcher->dispatch( + new DataProviderMethodFinished( + $this->telemetryInfo(), + $testMethod, + ...$calledMethods, + ), ); } @@ -139,8 +172,8 @@ public function testSuiteLoaded(TestSuite $testSuite): void $this->dispatcher->dispatch( new TestSuiteLoaded( $this->telemetryInfo(), - $testSuite - ) + $testSuite, + ), ); } @@ -153,8 +186,8 @@ public function testSuiteFiltered(TestSuite $testSuite): void $this->dispatcher->dispatch( new TestSuiteFiltered( $this->telemetryInfo(), - $testSuite - ) + $testSuite, + ), ); } @@ -169,8 +202,8 @@ public function testSuiteSorted(int $executionOrder, int $executionOrderDefects, $this->telemetryInfo(), $executionOrder, $executionOrderDefects, - $resolveDependencies - ) + $resolveDependencies, + ), ); } @@ -182,8 +215,8 @@ public function testRunnerEventFacadeSealed(): void { $this->dispatcher->dispatch( new TestRunner\EventFacadeSealed( - $this->telemetryInfo() - ) + $this->telemetryInfo(), + ), ); } @@ -196,8 +229,8 @@ public function testRunnerExecutionStarted(TestSuite $testSuite): void $this->dispatcher->dispatch( new TestRunner\ExecutionStarted( $this->telemetryInfo(), - $testSuite - ) + $testSuite, + ), ); } @@ -211,8 +244,8 @@ public function testSuiteSkipped(TestSuite $testSuite, string $message): void new TestSuiteSkipped( $this->telemetryInfo(), $testSuite, - $message - ) + $message, + ), ); } @@ -225,8 +258,8 @@ public function testSuiteStarted(TestSuite $testSuite): void $this->dispatcher->dispatch( new TestSuiteStarted( $this->telemetryInfo(), - $testSuite - ) + $testSuite, + ), ); } @@ -239,8 +272,8 @@ public function testPreparationStarted(Code\Test $test): void $this->dispatcher->dispatch( new Test\PreparationStarted( $this->telemetryInfo(), - $test - ) + $test, + ), ); } @@ -256,8 +289,8 @@ public function testBeforeFirstTestMethodCalled(string $testClassName, Code\Clas new Test\BeforeFirstTestMethodCalled( $this->telemetryInfo(), $testClassName, - $calledMethod - ) + $calledMethod, + ), ); } @@ -274,8 +307,8 @@ public function testBeforeFirstTestMethodErrored(string $testClassName, Code\Cla $this->telemetryInfo(), $testClassName, $calledMethod, - $throwable - ) + $throwable, + ), ); } @@ -291,8 +324,8 @@ public function testBeforeFirstTestMethodFinished(string $testClassName, Code\Cl new Test\BeforeFirstTestMethodFinished( $this->telemetryInfo(), $testClassName, - ...$calledMethods - ) + ...$calledMethods, + ), ); } @@ -308,8 +341,8 @@ public function testBeforeTestMethodCalled(string $testClassName, Code\ClassMeth new Test\BeforeTestMethodCalled( $this->telemetryInfo(), $testClassName, - $calledMethod - ) + $calledMethod, + ), ); } @@ -325,8 +358,8 @@ public function testBeforeTestMethodFinished(string $testClassName, Code\ClassMe new Test\BeforeTestMethodFinished( $this->telemetryInfo(), $testClassName, - ...$calledMethods - ) + ...$calledMethods, + ), ); } @@ -342,8 +375,8 @@ public function testPreConditionCalled(string $testClassName, Code\ClassMethod $ new Test\PreConditionCalled( $this->telemetryInfo(), $testClassName, - $calledMethod - ) + $calledMethod, + ), ); } @@ -359,8 +392,8 @@ public function testPreConditionFinished(string $testClassName, Code\ClassMethod new Test\PreConditionFinished( $this->telemetryInfo(), $testClassName, - ...$calledMethods - ) + ...$calledMethods, + ), ); } @@ -373,8 +406,8 @@ public function testPrepared(Code\Test $test): void $this->dispatcher->dispatch( new Test\Prepared( $this->telemetryInfo(), - $test - ) + $test, + ), ); } @@ -389,8 +422,8 @@ public function testRegisteredComparator(string $className): void $this->dispatcher->dispatch( new Test\ComparatorRegistered( $this->telemetryInfo(), - $className - ) + $className, + ), ); } @@ -411,7 +444,7 @@ public function testAssertionSucceeded(mixed $value, Constraint\Constraint $cons $constraint->toString(), $constraint->count(), $message, - ) + ), ); } @@ -432,7 +465,7 @@ public function testAssertionFailed(mixed $value, Constraint\Constraint $constra $constraint->toString(), $constraint->count(), $message, - ) + ), ); } @@ -447,8 +480,8 @@ public function testCreatedMockObject(string $className): void $this->dispatcher->dispatch( new Test\MockObjectCreated( $this->telemetryInfo(), - $className - ) + $className, + ), ); } @@ -463,8 +496,8 @@ public function testCreatedMockObjectForIntersectionOfInterfaces(array $interfac $this->dispatcher->dispatch( new Test\MockObjectForIntersectionOfInterfacesCreated( $this->telemetryInfo(), - $interfaces - ) + $interfaces, + ), ); } @@ -479,8 +512,8 @@ public function testCreatedMockObjectForTrait(string $traitName): void $this->dispatcher->dispatch( new Test\MockObjectForTraitCreated( $this->telemetryInfo(), - $traitName - ) + $traitName, + ), ); } @@ -495,8 +528,8 @@ public function testCreatedMockObjectForAbstractClass(string $className): void $this->dispatcher->dispatch( new Test\MockObjectForAbstractClassCreated( $this->telemetryInfo(), - $className - ) + $className, + ), ); } @@ -517,8 +550,8 @@ public function testCreatedMockObjectFromWsdl(string $wsdlFile, string $original $mockClassName, $methods, $callOriginalConstructor, - $options - ) + $options, + ), ); } @@ -534,8 +567,8 @@ public function testCreatedPartialMockObject(string $className, string ...$metho new Test\PartialMockObjectCreated( $this->telemetryInfo(), $className, - ...$methodNames - ) + ...$methodNames, + ), ); } @@ -551,8 +584,8 @@ public function testCreatedTestProxy(string $className, array $constructorArgume new Test\TestProxyCreated( $this->telemetryInfo(), $className, - (new Exporter)->export($constructorArguments) - ) + (new Exporter)->export($constructorArguments), + ), ); } @@ -567,8 +600,8 @@ public function testCreatedStub(string $className): void $this->dispatcher->dispatch( new Test\TestStubCreated( $this->telemetryInfo(), - $className - ) + $className, + ), ); } @@ -583,8 +616,8 @@ public function testCreatedStubForIntersectionOfInterfaces(array $interfaces): v $this->dispatcher->dispatch( new Test\TestStubForIntersectionOfInterfacesCreated( $this->telemetryInfo(), - $interfaces - ) + $interfaces, + ), ); } @@ -598,8 +631,8 @@ public function testErrored(Code\Test $test, Throwable $throwable): void new Test\Errored( $this->telemetryInfo(), $test, - $throwable - ) + $throwable, + ), ); } @@ -614,8 +647,8 @@ public function testFailed(Code\Test $test, Throwable $throwable, ?ComparisonFai $this->telemetryInfo(), $test, $throwable, - $comparisonFailure - ) + $comparisonFailure, + ), ); } @@ -629,7 +662,7 @@ public function testPassed(Code\Test $test): void new Test\Passed( $this->telemetryInfo(), $test, - ) + ), ); } @@ -643,8 +676,8 @@ public function testConsideredRisky(Code\Test $test, string $message): void new Test\ConsideredRisky( $this->telemetryInfo(), $test, - $message - ) + $message, + ), ); } @@ -658,8 +691,8 @@ public function testMarkedAsIncomplete(Code\Test $test, Throwable $throwable): v new Test\MarkedIncomplete( $this->telemetryInfo(), $test, - $throwable - ) + $throwable, + ), ); } @@ -673,8 +706,8 @@ public function testSkipped(Code\Test $test, string $message): void new Test\Skipped( $this->telemetryInfo(), $test, - $message - ) + $message, + ), ); } @@ -688,8 +721,8 @@ public function testTriggeredPhpunitDeprecation(Code\Test $test, string $message new Test\PhpunitDeprecationTriggered( $this->telemetryInfo(), $test, - $message - ) + $message, + ), ); } @@ -697,7 +730,7 @@ public function testTriggeredPhpunitDeprecation(Code\Test $test, string $message * @throws InvalidArgumentException * @throws UnknownEventTypeException */ - public function testTriggeredPhpDeprecation(Code\Test $test, string $message, string $file, int $line): void + public function testTriggeredPhpDeprecation(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void { $this->dispatcher->dispatch( new Test\PhpDeprecationTriggered( @@ -705,8 +738,9 @@ public function testTriggeredPhpDeprecation(Code\Test $test, string $message, st $test, $message, $file, - $line - ) + $line, + $suppressed, + ), ); } @@ -714,7 +748,7 @@ public function testTriggeredPhpDeprecation(Code\Test $test, string $message, st * @throws InvalidArgumentException * @throws UnknownEventTypeException */ - public function testTriggeredDeprecation(Code\Test $test, string $message, string $file, int $line): void + public function testTriggeredDeprecation(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void { $this->dispatcher->dispatch( new Test\DeprecationTriggered( @@ -722,8 +756,9 @@ public function testTriggeredDeprecation(Code\Test $test, string $message, strin $test, $message, $file, - $line - ) + $line, + $suppressed, + ), ); } @@ -731,7 +766,7 @@ public function testTriggeredDeprecation(Code\Test $test, string $message, strin * @throws InvalidArgumentException * @throws UnknownEventTypeException */ - public function testTriggeredError(Code\Test $test, string $message, string $file, int $line): void + public function testTriggeredError(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void { $this->dispatcher->dispatch( new Test\ErrorTriggered( @@ -739,8 +774,9 @@ public function testTriggeredError(Code\Test $test, string $message, string $fil $test, $message, $file, - $line - ) + $line, + $suppressed, + ), ); } @@ -748,7 +784,7 @@ public function testTriggeredError(Code\Test $test, string $message, string $fil * @throws InvalidArgumentException * @throws UnknownEventTypeException */ - public function testTriggeredNotice(Code\Test $test, string $message, string $file, int $line): void + public function testTriggeredNotice(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void { $this->dispatcher->dispatch( new Test\NoticeTriggered( @@ -756,8 +792,9 @@ public function testTriggeredNotice(Code\Test $test, string $message, string $fi $test, $message, $file, - $line - ) + $line, + $suppressed, + ), ); } @@ -765,7 +802,7 @@ public function testTriggeredNotice(Code\Test $test, string $message, string $fi * @throws InvalidArgumentException * @throws UnknownEventTypeException */ - public function testTriggeredPhpNotice(Code\Test $test, string $message, string $file, int $line): void + public function testTriggeredPhpNotice(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void { $this->dispatcher->dispatch( new Test\PhpNoticeTriggered( @@ -773,8 +810,9 @@ public function testTriggeredPhpNotice(Code\Test $test, string $message, string $test, $message, $file, - $line - ) + $line, + $suppressed, + ), ); } @@ -782,7 +820,7 @@ public function testTriggeredPhpNotice(Code\Test $test, string $message, string * @throws InvalidArgumentException * @throws UnknownEventTypeException */ - public function testTriggeredWarning(Code\Test $test, string $message, string $file, int $line): void + public function testTriggeredWarning(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void { $this->dispatcher->dispatch( new Test\WarningTriggered( @@ -790,8 +828,9 @@ public function testTriggeredWarning(Code\Test $test, string $message, string $f $test, $message, $file, - $line - ) + $line, + $suppressed, + ), ); } @@ -799,7 +838,7 @@ public function testTriggeredWarning(Code\Test $test, string $message, string $f * @throws InvalidArgumentException * @throws UnknownEventTypeException */ - public function testTriggeredPhpWarning(Code\Test $test, string $message, string $file, int $line): void + public function testTriggeredPhpWarning(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void { $this->dispatcher->dispatch( new Test\PhpWarningTriggered( @@ -807,8 +846,9 @@ public function testTriggeredPhpWarning(Code\Test $test, string $message, string $test, $message, $file, - $line - ) + $line, + $suppressed, + ), ); } @@ -823,7 +863,7 @@ public function testTriggeredPhpunitError(Code\Test $test, string $message): voi $this->telemetryInfo(), $test, $message, - ) + ), ); } @@ -838,7 +878,7 @@ public function testTriggeredPhpunitWarning(Code\Test $test, string $message): v $this->telemetryInfo(), $test, $message, - ) + ), ); } @@ -853,8 +893,8 @@ public function testPrintedUnexpectedOutput(string $output): void $this->dispatcher->dispatch( new Test\PrintedUnexpectedOutput( $this->telemetryInfo(), - $output - ) + $output, + ), ); } @@ -868,8 +908,8 @@ public function testFinished(Code\Test $test, int $numberOfAssertionsPerformed): new Test\Finished( $this->telemetryInfo(), $test, - $numberOfAssertionsPerformed - ) + $numberOfAssertionsPerformed, + ), ); } @@ -885,8 +925,8 @@ public function testPostConditionCalled(string $testClassName, Code\ClassMethod new Test\PostConditionCalled( $this->telemetryInfo(), $testClassName, - $calledMethod - ) + $calledMethod, + ), ); } @@ -902,8 +942,8 @@ public function testPostConditionFinished(string $testClassName, Code\ClassMetho new Test\PostConditionFinished( $this->telemetryInfo(), $testClassName, - ...$calledMethods - ) + ...$calledMethods, + ), ); } @@ -919,8 +959,8 @@ public function testAfterTestMethodCalled(string $testClassName, Code\ClassMetho new Test\AfterTestMethodCalled( $this->telemetryInfo(), $testClassName, - $calledMethod - ) + $calledMethod, + ), ); } @@ -936,8 +976,8 @@ public function testAfterTestMethodFinished(string $testClassName, Code\ClassMet new Test\AfterTestMethodFinished( $this->telemetryInfo(), $testClassName, - ...$calledMethods - ) + ...$calledMethods, + ), ); } @@ -953,8 +993,8 @@ public function testAfterLastTestMethodCalled(string $testClassName, Code\ClassM new Test\AfterLastTestMethodCalled( $this->telemetryInfo(), $testClassName, - $calledMethod - ) + $calledMethod, + ), ); } @@ -970,8 +1010,8 @@ public function testAfterLastTestMethodFinished(string $testClassName, Code\Clas new Test\AfterLastTestMethodFinished( $this->telemetryInfo(), $testClassName, - ...$calledMethods - ) + ...$calledMethods, + ), ); } @@ -985,7 +1025,7 @@ public function testSuiteFinished(TestSuite $testSuite): void new TestSuiteFinished( $this->telemetryInfo(), $testSuite, - ) + ), ); } @@ -998,8 +1038,8 @@ public function testRunnerTriggeredDeprecation(string $message): void $this->dispatcher->dispatch( new TestRunner\DeprecationTriggered( $this->telemetryInfo(), - $message - ) + $message, + ), ); } @@ -1012,8 +1052,8 @@ public function testRunnerTriggeredWarning(string $message): void $this->dispatcher->dispatch( new TestRunner\WarningTriggered( $this->telemetryInfo(), - $message - ) + $message, + ), ); } @@ -1024,7 +1064,7 @@ public function testRunnerTriggeredWarning(string $message): void public function testRunnerExecutionAborted(): void { $this->dispatcher->dispatch( - new TestRunner\ExecutionAborted($this->telemetryInfo()) + new TestRunner\ExecutionAborted($this->telemetryInfo()), ); } @@ -1035,7 +1075,7 @@ public function testRunnerExecutionAborted(): void public function testRunnerExecutionFinished(): void { $this->dispatcher->dispatch( - new TestRunner\ExecutionFinished($this->telemetryInfo()) + new TestRunner\ExecutionFinished($this->telemetryInfo()), ); } @@ -1046,7 +1086,7 @@ public function testRunnerExecutionFinished(): void public function testRunnerFinished(): void { $this->dispatcher->dispatch( - new TestRunner\Finished($this->telemetryInfo()) + new TestRunner\Finished($this->telemetryInfo()), ); } @@ -1059,8 +1099,8 @@ public function applicationFinished(int $shellExitCode): void $this->dispatcher->dispatch( new Application\Finished( $this->telemetryInfo(), - $shellExitCode - ) + $shellExitCode, + ), ); } diff --git a/vendor/phpunit/phpunit/src/Event/Emitter/Emitter.php b/vendor/phpunit/phpunit/src/Event/Emitter/Emitter.php index 45ac8cf2..75527c96 100644 --- a/vendor/phpunit/phpunit/src/Event/Emitter/Emitter.php +++ b/vendor/phpunit/phpunit/src/Event/Emitter/Emitter.php @@ -9,6 +9,7 @@ */ namespace PHPUnit\Event; +use PHPUnit\Event\Code\ClassMethod; use PHPUnit\Event\Code\ComparisonFailure; use PHPUnit\Event\Code\Throwable; use PHPUnit\Event\TestSuite\TestSuite; @@ -36,6 +37,10 @@ public function testRunnerLoadedExtensionFromPhar(string $filename, string $name */ public function testRunnerBootstrappedExtension(string $className, array $parameters): void; + public function dataProviderMethodCalled(ClassMethod $testMethod, ClassMethod $dataProviderMethod): void; + + public function dataProviderMethodFinished(ClassMethod $testMethod, ClassMethod ...$calledMethods): void; + public function testSuiteLoaded(TestSuite $testSuite): void; public function testSuiteFiltered(TestSuite $testSuite): void; @@ -158,19 +163,19 @@ public function testSkipped(Code\Test $test, string $message): void; public function testTriggeredPhpunitDeprecation(Code\Test $test, string $message): void; - public function testTriggeredPhpDeprecation(Code\Test $test, string $message, string $file, int $line): void; + public function testTriggeredPhpDeprecation(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void; - public function testTriggeredDeprecation(Code\Test $test, string $message, string $file, int $line): void; + public function testTriggeredDeprecation(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void; - public function testTriggeredError(Code\Test $test, string $message, string $file, int $line): void; + public function testTriggeredError(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void; - public function testTriggeredNotice(Code\Test $test, string $message, string $file, int $line): void; + public function testTriggeredNotice(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void; - public function testTriggeredPhpNotice(Code\Test $test, string $message, string $file, int $line): void; + public function testTriggeredPhpNotice(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void; - public function testTriggeredWarning(Code\Test $test, string $message, string $file, int $line): void; + public function testTriggeredWarning(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void; - public function testTriggeredPhpWarning(Code\Test $test, string $message, string $file, int $line): void; + public function testTriggeredPhpWarning(Code\Test $test, string $message, string $file, int $line, bool $suppressed): void; public function testTriggeredPhpunitError(Code\Test $test, string $message): void; diff --git a/vendor/phpunit/phpunit/src/Event/Events/Application/Finished.php b/vendor/phpunit/phpunit/src/Event/Events/Application/Finished.php index e4b1e3d4..e196c4f6 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Application/Finished.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Application/Finished.php @@ -43,7 +43,7 @@ public function asString(): string { return sprintf( 'PHPUnit Finished (Shell Exit Code: %d)', - $this->shellExitCode + $this->shellExitCode, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Application/Started.php b/vendor/phpunit/phpunit/src/Event/Events/Application/Started.php index 04dfb5f6..da570a02 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Application/Started.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Application/Started.php @@ -44,7 +44,7 @@ public function asString(): string { return sprintf( 'PHPUnit Started (%s)', - $this->runtime->asString() + $this->runtime->asString(), ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionFailed.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionFailed.php index d9eec86e..cab77823 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionFailed.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionFailed.php @@ -60,7 +60,7 @@ public function asString(): string if (!empty($this->message)) { $message = sprintf( ', Message: %s', - $this->message + $this->message, ); } @@ -68,7 +68,7 @@ public function asString(): string 'Assertion Failed (Constraint: %s, Value: %s%s)', $this->constraint, $this->value, - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionSucceeded.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionSucceeded.php index b91a7a79..405753e8 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionSucceeded.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionSucceeded.php @@ -60,7 +60,7 @@ public function asString(): string if (!empty($this->message)) { $message = sprintf( ', Message: %s', - $this->message + $this->message, ); } @@ -68,7 +68,7 @@ public function asString(): string 'Assertion Succeeded (Constraint: %s, Value: %s%s)', $this->constraint, $this->value, - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/ComparatorRegistered.php b/vendor/phpunit/phpunit/src/Event/Events/Test/ComparatorRegistered.php index e3ec59e4..9e83d3d2 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/ComparatorRegistered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/ComparatorRegistered.php @@ -53,7 +53,7 @@ public function asString(): string { return sprintf( 'Comparator Registered (%s)', - $this->className + $this->className, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalled.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalled.php index 9883a23a..fec2a79e 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalled.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalled.php @@ -62,7 +62,7 @@ public function asString(): string return sprintf( 'After Last Test Method Called (%s::%s)', $this->calledMethod->className(), - $this->calledMethod->methodName() + $this->calledMethod->methodName(), ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinished.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinished.php index 5ebbe142..40a6c9fc 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinished.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinished.php @@ -73,7 +73,7 @@ public function asString(): string $buffer .= sprintf( PHP_EOL . '- %s::%s', $calledMethod->className(), - $calledMethod->methodName() + $calledMethod->methodName(), ); } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalled.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalled.php index c6412206..52afc14c 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalled.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalled.php @@ -62,7 +62,7 @@ public function asString(): string return sprintf( 'After Test Method Called (%s::%s)', $this->calledMethod->className(), - $this->calledMethod->methodName() + $this->calledMethod->methodName(), ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinished.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinished.php index bc326668..e934eea8 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinished.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinished.php @@ -73,7 +73,7 @@ public function asString(): string $buffer .= sprintf( PHP_EOL . '- %s::%s', $calledMethod->className(), - $calledMethod->methodName() + $calledMethod->methodName(), ); } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodCalled.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodCalled.php index c1fc9043..da28f2bf 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodCalled.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodCalled.php @@ -62,7 +62,7 @@ public function asString(): string return sprintf( 'Before First Test Method Called (%s::%s)', $this->calledMethod->className(), - $this->calledMethod->methodName() + $this->calledMethod->methodName(), ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErrored.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErrored.php index 9f6f0686..81833227 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErrored.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodErrored.php @@ -77,7 +77,7 @@ public function asString(): string 'Before First Test Method Errored (%s::%s)%s', $this->calledMethod->className(), $this->calledMethod->methodName(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinished.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinished.php index 0f3ff2b7..fba563d7 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinished.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinished.php @@ -73,7 +73,7 @@ public function asString(): string $buffer .= sprintf( PHP_EOL . '- %s::%s', $calledMethod->className(), - $calledMethod->methodName() + $calledMethod->methodName(), ); } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalled.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalled.php index dca36109..3b300fa3 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalled.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalled.php @@ -62,7 +62,7 @@ public function asString(): string return sprintf( 'Before Test Method Called (%s::%s)', $this->calledMethod->className(), - $this->calledMethod->methodName() + $this->calledMethod->methodName(), ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinished.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinished.php index ded4b0b0..f84b51bb 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinished.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinished.php @@ -73,7 +73,7 @@ public function asString(): string $buffer .= sprintf( PHP_EOL . '- %s::%s', $calledMethod->className(), - $calledMethod->methodName() + $calledMethod->methodName(), ); } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalled.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalled.php index 2cc2c9a8..e7b6c435 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalled.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalled.php @@ -62,7 +62,7 @@ public function asString(): string return sprintf( 'Post Condition Method Called (%s::%s)', $this->calledMethod->className(), - $this->calledMethod->methodName() + $this->calledMethod->methodName(), ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinished.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinished.php index 6e5d45e8..fff07ce7 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinished.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinished.php @@ -73,7 +73,7 @@ public function asString(): string $buffer .= sprintf( PHP_EOL . '- %s::%s', $calledMethod->className(), - $calledMethod->methodName() + $calledMethod->methodName(), ); } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalled.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalled.php index f6bb4c87..93752546 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalled.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalled.php @@ -62,7 +62,7 @@ public function asString(): string return sprintf( 'Pre Condition Method Called (%s::%s)', $this->calledMethod->className(), - $this->calledMethod->methodName() + $this->calledMethod->methodName(), ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinished.php b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinished.php index a70973af..05340796 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinished.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinished.php @@ -73,7 +73,7 @@ public function asString(): string $buffer .= sprintf( PHP_EOL . '- %s::%s', $calledMethod->className(), - $calledMethod->methodName() + $calledMethod->methodName(), ); } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php index 08c109dc..01cd3b66 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php @@ -27,14 +27,16 @@ final class DeprecationTriggered implements Event private readonly string $message; private readonly string $file; private readonly int $line; + private readonly bool $suppressed; - public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line) + public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line, bool $suppressed) { $this->telemetryInfo = $telemetryInfo; $this->test = $test; $this->message = $message; $this->file = $file; $this->line = $line; + $this->suppressed = $suppressed; } public function telemetryInfo(): Telemetry\Info @@ -62,6 +64,11 @@ public function line(): int return $this->line; } + public function wasSuppressed(): bool + { + return $this->suppressed; + } + public function asString(): string { $message = $this->message; @@ -71,9 +78,10 @@ public function asString(): string } return sprintf( - 'Test Triggered Deprecation (%s)%s', + 'Test Triggered %sDeprecation (%s)%s', + $this->wasSuppressed() ? 'Suppressed ' : '', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php index 8668a98d..5edb21e5 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php @@ -27,14 +27,16 @@ final class ErrorTriggered implements Event private readonly string $message; private readonly string $file; private readonly int $line; + private readonly bool $suppressed; - public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line) + public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line, bool $suppressed) { $this->telemetryInfo = $telemetryInfo; $this->test = $test; $this->message = $message; $this->file = $file; $this->line = $line; + $this->suppressed = $suppressed; } public function telemetryInfo(): Telemetry\Info @@ -62,6 +64,11 @@ public function line(): int return $this->line; } + public function wasSuppressed(): bool + { + return $this->suppressed; + } + public function asString(): string { $message = $this->message; @@ -71,9 +78,10 @@ public function asString(): string } return sprintf( - 'Test Triggered Error (%s)%s', + 'Test Triggered %sError (%s)%s', + $this->wasSuppressed() ? 'Suppressed ' : '', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggered.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggered.php index 8baaff95..f598ad8b 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/NoticeTriggered.php @@ -27,14 +27,16 @@ final class NoticeTriggered implements Event private readonly string $message; private readonly string $file; private readonly int $line; + private readonly bool $suppressed; - public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line) + public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line, bool $suppressed) { $this->telemetryInfo = $telemetryInfo; $this->test = $test; $this->message = $message; $this->file = $file; $this->line = $line; + $this->suppressed = $suppressed; } public function telemetryInfo(): Telemetry\Info @@ -62,6 +64,11 @@ public function line(): int return $this->line; } + public function wasSuppressed(): bool + { + return $this->suppressed; + } + public function asString(): string { $message = $this->message; @@ -71,9 +78,10 @@ public function asString(): string } return sprintf( - 'Test Triggered Notice (%s)%s', + 'Test Triggered %sNotice (%s)%s', + $this->wasSuppressed() ? 'Suppressed ' : '', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpDeprecationTriggered.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpDeprecationTriggered.php index 1d80f89e..c717f8a6 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpDeprecationTriggered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpDeprecationTriggered.php @@ -27,14 +27,16 @@ final class PhpDeprecationTriggered implements Event private readonly string $message; private readonly string $file; private readonly int $line; + private readonly bool $suppressed; - public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line) + public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line, bool $suppressed) { $this->telemetryInfo = $telemetryInfo; $this->test = $test; $this->message = $message; $this->file = $file; $this->line = $line; + $this->suppressed = $suppressed; } public function telemetryInfo(): Telemetry\Info @@ -62,6 +64,11 @@ public function line(): int return $this->line; } + public function wasSuppressed(): bool + { + return $this->suppressed; + } + public function asString(): string { $message = $this->message; @@ -71,9 +78,10 @@ public function asString(): string } return sprintf( - 'Test Triggered PHP Deprecation (%s)%s', + 'Test Triggered %sPHP Deprecation (%s)%s', + $this->wasSuppressed() ? 'Suppressed ' : '', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpNoticeTriggered.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpNoticeTriggered.php index 7acbcc34..bad518a6 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpNoticeTriggered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpNoticeTriggered.php @@ -27,14 +27,16 @@ final class PhpNoticeTriggered implements Event private readonly string $message; private readonly string $file; private readonly int $line; + private readonly bool $suppressed; - public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line) + public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line, bool $suppressed) { $this->telemetryInfo = $telemetryInfo; $this->test = $test; $this->message = $message; $this->file = $file; $this->line = $line; + $this->suppressed = $suppressed; } public function telemetryInfo(): Telemetry\Info @@ -62,6 +64,11 @@ public function line(): int return $this->line; } + public function wasSuppressed(): bool + { + return $this->suppressed; + } + public function asString(): string { $message = $this->message; @@ -71,9 +78,10 @@ public function asString(): string } return sprintf( - 'Test Triggered PHP Notice (%s)%s', + 'Test Triggered %sPHP Notice (%s)%s', + $this->wasSuppressed() ? 'Suppressed ' : '', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpWarningTriggered.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpWarningTriggered.php index f3423375..830b366a 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpWarningTriggered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpWarningTriggered.php @@ -27,14 +27,16 @@ final class PhpWarningTriggered implements Event private readonly string $message; private readonly string $file; private readonly int $line; + private readonly bool $suppressed; - public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line) + public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line, bool $suppressed) { $this->telemetryInfo = $telemetryInfo; $this->test = $test; $this->message = $message; $this->file = $file; $this->line = $line; + $this->suppressed = $suppressed; } public function telemetryInfo(): Telemetry\Info @@ -62,6 +64,11 @@ public function line(): int return $this->line; } + public function wasSuppressed(): bool + { + return $this->suppressed; + } + public function asString(): string { $message = $this->message; @@ -71,9 +78,10 @@ public function asString(): string } return sprintf( - 'Test Triggered PHP Warning (%s)%s', + 'Test Triggered %sPHP Warning (%s)%s', + $this->wasSuppressed() ? 'Suppressed ' : '', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitDeprecationTriggered.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitDeprecationTriggered.php index a70e1e6b..fadc46d2 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitDeprecationTriggered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitDeprecationTriggered.php @@ -59,7 +59,7 @@ public function asString(): string return sprintf( 'Test Triggered PHPUnit Deprecation (%s)%s', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitErrorTriggered.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitErrorTriggered.php index a86207f4..6b99e899 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitErrorTriggered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitErrorTriggered.php @@ -59,7 +59,7 @@ public function asString(): string return sprintf( 'Test Triggered PHPUnit Error (%s)%s', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggered.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggered.php index 2c6c083c..6a816ee4 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggered.php @@ -59,7 +59,7 @@ public function asString(): string return sprintf( 'Test Triggered PHPUnit Warning (%s)%s', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/WarningTriggered.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/WarningTriggered.php index f36877df..93523461 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/WarningTriggered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Issue/WarningTriggered.php @@ -27,14 +27,16 @@ final class WarningTriggered implements Event private readonly string $message; private readonly string $file; private readonly int $line; + private readonly bool $suppressed; - public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line) + public function __construct(Telemetry\Info $telemetryInfo, Test $test, string $message, string $file, int $line, bool $suppressed) { $this->telemetryInfo = $telemetryInfo; $this->test = $test; $this->message = $message; $this->file = $file; $this->line = $line; + $this->suppressed = $suppressed; } public function telemetryInfo(): Telemetry\Info @@ -62,6 +64,11 @@ public function line(): int return $this->line; } + public function wasSuppressed(): bool + { + return $this->suppressed; + } + public function asString(): string { $message = $this->message; @@ -71,9 +78,10 @@ public function asString(): string } return sprintf( - 'Test Triggered Warning (%s)%s', + 'Test Triggered %sWarning (%s)%s', + $this->wasSuppressed() ? 'Suppressed ' : '', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/Errored.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/Errored.php index ca18ccf1..b42a04b4 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/Errored.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/Errored.php @@ -60,7 +60,7 @@ public function asString(): string return sprintf( 'Test Errored (%s)%s', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/Failed.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/Failed.php index 2709d015..e71ef4bc 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/Failed.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/Failed.php @@ -83,7 +83,7 @@ public function asString(): string return sprintf( 'Test Failed (%s)%s', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncomplete.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncomplete.php index ffd0fa2f..ed45baa7 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncomplete.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/MarkedIncomplete.php @@ -60,7 +60,7 @@ public function asString(): string return sprintf( 'Test Marked Incomplete (%s)%s', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/Skipped.php b/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/Skipped.php index fd8da8da..14501058 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/Skipped.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/Outcome/Skipped.php @@ -59,7 +59,7 @@ public function asString(): string return sprintf( 'Test Skipped (%s)%s', $this->test->id(), - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutput.php b/vendor/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutput.php index d947cfc4..733520e6 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutput.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/PrintedUnexpectedOutput.php @@ -54,7 +54,7 @@ public function asString(): string return sprintf( 'Test Printed Unexpected Output%s%s', PHP_EOL, - $this->output + $this->output, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreated.php b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreated.php index b67a5b74..ad462440 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreated.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectCreated.php @@ -53,7 +53,7 @@ public function asString(): string { return sprintf( 'Mock Object Created (%s)', - $this->className + $this->className, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreated.php b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreated.php index 3b960d3a..7976a1c9 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreated.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForAbstractClassCreated.php @@ -53,7 +53,7 @@ public function asString(): string { return sprintf( 'Mock Object Created (%s)', - $this->className + $this->className, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreated.php b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreated.php index 08ae1ca4..deb7ec75 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreated.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForIntersectionOfInterfacesCreated.php @@ -54,7 +54,7 @@ public function asString(): string { return sprintf( 'Mock Object Created (%s)', - implode('&', $this->interfaces) + implode('&', $this->interfaces), ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreated.php b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreated.php index 35818168..fd09d594 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreated.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectForTraitCreated.php @@ -53,7 +53,7 @@ public function asString(): string { return sprintf( 'Mock Object Created (%s)', - $this->traitName + $this->traitName, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreated.php b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreated.php index 640a68dc..09992831 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreated.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/MockObjectFromWsdlCreated.php @@ -103,7 +103,7 @@ public function asString(): string { return sprintf( 'Mock Object Created (%s)', - $this->wsdlFile + $this->wsdlFile, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/PartialMockObjectCreated.php b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/PartialMockObjectCreated.php index 397fdeb2..604ba3ce 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/PartialMockObjectCreated.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/PartialMockObjectCreated.php @@ -67,7 +67,7 @@ public function asString(): string { return sprintf( 'Partial Mock Object Created (%s)', - $this->className + $this->className, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreated.php b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreated.php index deabf820..3f089412 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreated.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestProxyCreated.php @@ -60,7 +60,7 @@ public function asString(): string { return sprintf( 'Test Proxy Created (%s)', - $this->className + $this->className, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreated.php b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreated.php index 0dae6d88..9d0330f6 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreated.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubCreated.php @@ -53,7 +53,7 @@ public function asString(): string { return sprintf( 'Test Stub Created (%s)', - $this->className + $this->className, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreated.php b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreated.php index 0e36534b..4aded8c8 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreated.php +++ b/vendor/phpunit/phpunit/src/Event/Events/Test/TestDouble/TestStubForIntersectionOfInterfacesCreated.php @@ -54,7 +54,7 @@ public function asString(): string { return sprintf( 'Test Stub Created (%s)', - implode('&', $this->interfaces) + implode('&', $this->interfaces), ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/TestRunner/BootstrapFinished.php b/vendor/phpunit/phpunit/src/Event/Events/TestRunner/BootstrapFinished.php index 406506a3..9ec3f348 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/TestRunner/BootstrapFinished.php +++ b/vendor/phpunit/phpunit/src/Event/Events/TestRunner/BootstrapFinished.php @@ -43,7 +43,7 @@ public function asString(): string { return sprintf( 'Bootstrap Finished (%s)', - $this->filename + $this->filename, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggered.php b/vendor/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggered.php index c5f15ab3..31d27e28 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggered.php @@ -43,7 +43,7 @@ public function asString(): string { return sprintf( 'Test Runner Triggered Deprecation (%s)', - $this->message + $this->message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStarted.php b/vendor/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStarted.php index 3085bc40..77fd570d 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStarted.php +++ b/vendor/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStarted.php @@ -45,7 +45,7 @@ public function asString(): string return sprintf( 'Test Runner Execution Started (%d test%s)', $this->testSuite->count(), - $this->testSuite->count() !== 1 ? 's' : '' + $this->testSuite->count() !== 1 ? 's' : '', ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPhar.php b/vendor/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPhar.php index c9c321ce..a2f1f147 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPhar.php +++ b/vendor/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPhar.php @@ -58,7 +58,7 @@ public function asString(): string return sprintf( 'Extension Loaded from PHAR (%s %s)', $this->name, - $this->version + $this->version, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggered.php b/vendor/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggered.php index b690f2f6..cb80a07b 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggered.php @@ -43,7 +43,7 @@ public function asString(): string { return sprintf( 'Test Runner Triggered Warning (%s)', - $this->message + $this->message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Filtered.php b/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Filtered.php index 85a3bce7..1beadde5 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Filtered.php +++ b/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Filtered.php @@ -44,7 +44,7 @@ public function asString(): string return sprintf( 'Test Suite Filtered (%d test%s)', $this->testSuite->count(), - $this->testSuite->count() !== 1 ? 's' : '' + $this->testSuite->count() !== 1 ? 's' : '', ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Finished.php b/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Finished.php index b3801eaf..e89076c1 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Finished.php +++ b/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Finished.php @@ -41,17 +41,11 @@ public function testSuite(): TestSuite public function asString(): string { - $name = ''; - - if (!empty($this->testSuite->name())) { - $name = $this->testSuite->name() . ', '; - } - return sprintf( - 'Test Suite Finished (%s%d test%s)', - $name, + 'Test Suite Finished (%s, %d test%s)', + $this->testSuite->name(), $this->testSuite->count(), - $this->testSuite->count() !== 1 ? 's' : '' + $this->testSuite->count() !== 1 ? 's' : '', ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Loaded.php b/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Loaded.php index 7cd5f091..271ab37f 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Loaded.php +++ b/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Loaded.php @@ -44,7 +44,7 @@ public function asString(): string return sprintf( 'Test Suite Loaded (%d test%s)', $this->testSuite->count(), - $this->testSuite->count() !== 1 ? 's' : '' + $this->testSuite->count() !== 1 ? 's' : '', ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Skipped.php b/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Skipped.php index 31664353..9a8f5230 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Skipped.php +++ b/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Skipped.php @@ -48,16 +48,10 @@ public function message(): string public function asString(): string { - $name = ''; - - if (!empty($this->testSuite->name())) { - $name = $this->testSuite->name() . ', '; - } - return sprintf( - 'Test Suite Skipped (%s%s)', - $name, - $this->message + 'Test Suite Skipped (%s, %s)', + $this->testSuite->name(), + $this->message, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Started.php b/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Started.php index acc83811..1e34aa7d 100644 --- a/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Started.php +++ b/vendor/phpunit/phpunit/src/Event/Events/TestSuite/Started.php @@ -41,17 +41,11 @@ public function testSuite(): TestSuite public function asString(): string { - $name = ''; - - if (!empty($this->testSuite->name())) { - $name = $this->testSuite->name() . ', '; - } - return sprintf( - 'Test Suite Started (%s%d test%s)', - $name, + 'Test Suite Started (%s, %d test%s)', + $this->testSuite->name(), $this->testSuite->count(), - $this->testSuite->count() !== 1 ? 's' : '' + $this->testSuite->count() !== 1 ? 's' : '', ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Facade.php b/vendor/phpunit/phpunit/src/Event/Facade.php index 5fd6c5cc..352ceadb 100644 --- a/vendor/phpunit/phpunit/src/Event/Facade.php +++ b/vendor/phpunit/phpunit/src/Event/Facade.php @@ -91,8 +91,8 @@ public function initForIsolation(HRTime $offset): CollectingDispatcher new Telemetry\System( new Telemetry\SystemStopWatchWithOffset($offset), new Telemetry\SystemMemoryMeter, - $this->garbageCollectorStatusProvider() - ) + $this->garbageCollectorStatusProvider(), + ), ); $this->sealed = true; @@ -126,7 +126,7 @@ private function createDispatchingEmitter(): DispatchingEmitter { return new DispatchingEmitter( $this->deferredDispatcher(), - $this->createTelemetrySystem() + $this->createTelemetrySystem(), ); } @@ -135,7 +135,7 @@ private function createTelemetrySystem(): Telemetry\System return new Telemetry\System( new Telemetry\SystemStopWatch, new Telemetry\SystemMemoryMeter, - $this->garbageCollectorStatusProvider() + $this->garbageCollectorStatusProvider(), ); } @@ -143,7 +143,7 @@ private function deferredDispatcher(): DeferringDispatcher { if ($this->deferringDispatcher === null) { $this->deferringDispatcher = new DeferringDispatcher( - new DirectDispatcher($this->typeMap()) + new DirectDispatcher($this->typeMap()), ); } @@ -169,6 +169,8 @@ private function registerDefaultTypes(TypeMap $typeMap): void Application\Started::class, Application\Finished::class, + Test\DataProviderMethodCalled::class, + Test\DataProviderMethodFinished::class, Test\MarkedIncomplete::class, Test\AfterLastTestMethodCalled::class, Test\AfterLastTestMethodFinished::class, @@ -240,7 +242,7 @@ private function registerDefaultTypes(TypeMap $typeMap): void foreach ($defaultEvents as $eventClass) { $typeMap->addMapping( $eventClass . 'Subscriber', - $eventClass + $eventClass, ); } } diff --git a/vendor/phpunit/phpunit/src/Event/TypeMap.php b/vendor/phpunit/phpunit/src/Event/TypeMap.php index feddda0d..c3321595 100644 --- a/vendor/phpunit/phpunit/src/Event/TypeMap.php +++ b/vendor/phpunit/phpunit/src/Event/TypeMap.php @@ -43,8 +43,8 @@ public function addMapping(string $subscriberInterface, string $eventClass): voi throw new UnknownSubscriberException( sprintf( 'Subscriber "%s" does not exist or is not an interface', - $subscriberInterface - ) + $subscriberInterface, + ), ); } @@ -52,8 +52,8 @@ public function addMapping(string $subscriberInterface, string $eventClass): voi throw new UnknownEventException( sprintf( 'Event class "%s" does not exist', - $eventClass - ) + $eventClass, + ), ); } @@ -61,8 +61,8 @@ public function addMapping(string $subscriberInterface, string $eventClass): voi throw new InvalidSubscriberException( sprintf( 'Subscriber "%s" does not implement Subscriber interface', - $subscriberInterface - ) + $subscriberInterface, + ), ); } @@ -70,8 +70,8 @@ public function addMapping(string $subscriberInterface, string $eventClass): voi throw new InvalidEventException( sprintf( 'Event "%s" does not implement Event interface', - $eventClass - ) + $eventClass, + ), ); } @@ -79,8 +79,8 @@ public function addMapping(string $subscriberInterface, string $eventClass): voi throw new SubscriberTypeAlreadyRegisteredException( sprintf( 'Subscriber type "%s" already registered - cannot overwrite', - $subscriberInterface - ) + $subscriberInterface, + ), ); } @@ -88,8 +88,8 @@ public function addMapping(string $subscriberInterface, string $eventClass): voi throw new EventAlreadyAssignedException( sprintf( 'Event "%s" already assigned - cannot add multiple subscriber types for an event type', - $eventClass - ) + $eventClass, + ), ); } @@ -128,8 +128,8 @@ public function map(Subscriber $subscriber): string throw new MapError( sprintf( 'Subscriber "%s" does not implement a known interface', - $subscriber::class - ) + $subscriber::class, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php b/vendor/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php index 44745ed5..be411a9d 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php +++ b/vendor/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php @@ -45,7 +45,7 @@ public static function from(Throwable $t): ?ComparisonFailure return new ComparisonFailure( $expectedAsString, $actualAsString, - $t->getComparisonFailure()->getDiff() + $t->getComparisonFailure()->getDiff(), ); } diff --git a/vendor/phpunit/phpunit/src/Event/Value/Runtime/PHP.php b/vendor/phpunit/phpunit/src/Event/Value/Runtime/PHP.php index 0da3c5d2..717f3c12 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/Runtime/PHP.php +++ b/vendor/phpunit/phpunit/src/Event/Value/Runtime/PHP.php @@ -52,7 +52,7 @@ public function __construct() $extensions = array_merge( get_loaded_extensions(true), - get_loaded_extensions() + get_loaded_extensions(), ); sort($extensions); diff --git a/vendor/phpunit/phpunit/src/Event/Value/Runtime/Runtime.php b/vendor/phpunit/phpunit/src/Event/Value/Runtime/Runtime.php index a4fa9516..cea7ba32 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/Runtime/Runtime.php +++ b/vendor/phpunit/phpunit/src/Event/Value/Runtime/Runtime.php @@ -38,7 +38,7 @@ public function asString(): string $this->phpunit()->versionId(), $php->version(), $php->sapi(), - $this->operatingSystem()->operatingSystem() + $this->operatingSystem()->operatingSystem(), ); } diff --git a/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php b/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php index 3d826cb4..000216cd 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php +++ b/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php @@ -30,7 +30,7 @@ public static function fromSecondsAndNanoseconds(int $seconds, int $nanoseconds) { return new self( $seconds, - $nanoseconds + $nanoseconds, ); } @@ -65,8 +65,8 @@ public function asFloat(): float public function asString(): string { $seconds = $this->seconds(); - $minutes = 00; - $hours = 00; + $minutes = 0; + $hours = 0; if ($seconds > 60 * 60) { $hours = floor($seconds / 60 / 60); @@ -83,7 +83,7 @@ public function asString(): string $hours, $minutes, $seconds, - $this->nanoseconds() + $this->nanoseconds(), ); } @@ -128,8 +128,8 @@ private function ensureNotNegative(int $value, string $type): void throw new InvalidArgumentException( sprintf( 'Value for %s must not be negative.', - $type - ) + $type, + ), ); } } @@ -141,7 +141,7 @@ private function ensureNanoSecondsInRange(int $nanoseconds): void { if ($nanoseconds > 999999999) { throw new InvalidArgumentException( - 'Value for nanoseconds must not be greater than 999999999.' + 'Value for nanoseconds must not be greater than 999999999.', ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php b/vendor/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php index 5fe864f5..5a82ebb8 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php +++ b/vendor/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php @@ -29,7 +29,7 @@ public static function fromSecondsAndNanoseconds(int $seconds, int $nanoseconds) { return new self( $seconds, - $nanoseconds + $nanoseconds, ); } @@ -76,7 +76,7 @@ public function duration(self $start): Duration return Duration::fromSecondsAndNanoseconds( $seconds, - $nanoseconds + $nanoseconds, ); } @@ -89,8 +89,8 @@ private function ensureNotNegative(int $value, string $type): void throw new InvalidArgumentException( sprintf( 'Value for %s must not be negative.', - $type - ) + $type, + ), ); } } @@ -102,7 +102,7 @@ private function ensureNanoSecondsInRange(int $nanoseconds): void { if ($nanoseconds > 999999999) { throw new InvalidArgumentException( - 'Value for nanoseconds must not be greater than 999999999.' + 'Value for nanoseconds must not be greater than 999999999.', ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Info.php b/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Info.php index 53c80704..1546d940 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Info.php +++ b/vendor/phpunit/phpunit/src/Event/Value/Telemetry/Info.php @@ -79,7 +79,7 @@ public function asString(): string '[%s / %s] [%d bytes]', $this->durationSinceStart()->asString(), $this->durationSincePrevious()->asString(), - $this->memoryUsage()->bytes() + $this->memoryUsage()->bytes(), ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Value/Telemetry/System.php b/vendor/phpunit/phpunit/src/Event/Value/Telemetry/System.php index ca2a41ed..53b394da 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/Telemetry/System.php +++ b/vendor/phpunit/phpunit/src/Event/Value/Telemetry/System.php @@ -31,7 +31,7 @@ public function snapshot(): Snapshot $this->stopWatch->current(), $this->memoryMeter->memoryUsage(), $this->memoryMeter->peakMemoryUsage(), - $this->garbageCollectorStatusProvider->status() + $this->garbageCollectorStatusProvider->status(), ); } } diff --git a/vendor/phpunit/phpunit/src/Event/Value/Test/TestMethod.php b/vendor/phpunit/phpunit/src/Event/Value/Test/TestMethod.php index 36184fc6..716bd358 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/Test/TestMethod.php +++ b/vendor/phpunit/phpunit/src/Event/Value/Test/TestMethod.php @@ -133,12 +133,12 @@ public function name(): string if (is_int($dataSetName)) { $dataSetName = sprintf( ' with data set #%d', - $dataSetName + $dataSetName, ); } else { $dataSetName = sprintf( ' with data set "%s"', - $dataSetName + $dataSetName, ); } diff --git a/vendor/phpunit/phpunit/src/Event/Value/Test/TestMethodBuilder.php b/vendor/phpunit/phpunit/src/Event/Value/Test/TestMethodBuilder.php index 3c8cf3fd..26271f6c 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/Test/TestMethodBuilder.php +++ b/vendor/phpunit/phpunit/src/Event/Value/Test/TestMethodBuilder.php @@ -10,6 +10,7 @@ namespace PHPUnit\Event\Code; use function assert; +use function debug_backtrace; use function is_numeric; use PHPUnit\Event\TestData\DataFromDataProvider; use PHPUnit\Event\TestData\DataFromTestDependency; @@ -47,6 +48,20 @@ public static function fromTestCase(TestCase $testCase): TestMethod ); } + /** + * @throws NoTestCaseObjectOnCallStackException + */ + public static function fromCallStack(): TestMethod + { + foreach (debug_backtrace() as $frame) { + if (isset($frame['object']) && $frame['object'] instanceof TestCase) { + return $frame['object']->valueObjectForEvents(); + } + } + + throw new NoTestCaseObjectOnCallStackException; + } + /** * @throws MoreThanOneDataSetFromDataProviderException */ @@ -63,13 +78,13 @@ private static function dataFor(TestCase $testCase): TestDataCollection $testData[] = DataFromDataProvider::from( $dataSetName, - (new Exporter)->export($testCase->providedData()) + (new Exporter)->export($testCase->providedData()), ); } if ($testCase->hasDependencyInput()) { $testData[] = DataFromTestDependency::from( - (new Exporter)->export($testCase->dependencyInput()) + (new Exporter)->export($testCase->dependencyInput()), ); } diff --git a/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuite.php b/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuite.php index 88218764..744f7095 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuite.php +++ b/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuite.php @@ -18,10 +18,16 @@ */ abstract class TestSuite { + /** + * @psalm-var non-empty-string + */ private readonly string $name; private readonly int $count; private readonly TestCollection $tests; + /** + * @psalm-param non-empty-string $name + */ public function __construct(string $name, int $size, TestCollection $tests) { $this->name = $name; @@ -29,6 +35,9 @@ public function __construct(string $name, int $size, TestCollection $tests) $this->tests = $tests; } + /** + * @psalm-return non-empty-string + */ public function name(): string { return $this->name; diff --git a/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteBuilder.php b/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteBuilder.php index b65df57c..e67333d3 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteBuilder.php +++ b/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteBuilder.php @@ -10,6 +10,7 @@ namespace PHPUnit\Event\TestSuite; use function explode; +use PHPUnit\Event\Code\Test; use PHPUnit\Event\Code\TestCollection; use PHPUnit\Event\RuntimeException; use PHPUnit\Framework\DataProviderTestSuite; @@ -32,7 +33,7 @@ public static function from(FrameworkTestSuite $testSuite): TestSuite { $groups = []; - foreach ($testSuite->getGroupDetails() as $groupName => $tests) { + foreach ($testSuite->groupDetails() as $groupName => $tests) { if (!isset($groups[$groupName])) { $groups[$groupName] = []; } @@ -44,20 +45,16 @@ public static function from(FrameworkTestSuite $testSuite): TestSuite $tests = []; - foreach ($testSuite->tests() as $test) { - if ($test instanceof TestCase || $test instanceof PhptTestCase) { - $tests[] = $test->valueObjectForEvents(); - } - } + self::process($testSuite, $tests); if ($testSuite instanceof DataProviderTestSuite) { - [$className, $methodName] = explode('::', $testSuite->getName()); + [$className, $methodName] = explode('::', $testSuite->name()); try { $reflector = new ReflectionMethod($className, $methodName); return new TestSuiteForTestMethodWithDataProvider( - $testSuite->getName(), + $testSuite->name(), $testSuite->count(), TestCollection::fromArray($tests), $className, @@ -69,17 +66,17 @@ public static function from(FrameworkTestSuite $testSuite): TestSuite throw new RuntimeException( $e->getMessage(), $e->getCode(), - $e + $e, ); } } if ($testSuite->isForTestClass()) { try { - $reflector = new ReflectionClass($testSuite->getName()); + $reflector = new ReflectionClass($testSuite->name()); return new TestSuiteForTestClass( - $testSuite->getName(), + $testSuite->name(), $testSuite->count(), TestCollection::fromArray($tests), $reflector->getFileName(), @@ -89,15 +86,33 @@ public static function from(FrameworkTestSuite $testSuite): TestSuite throw new RuntimeException( $e->getMessage(), $e->getCode(), - $e + $e, ); } } return new TestSuiteWithName( - $testSuite->getName(), + $testSuite->name(), $testSuite->count(), TestCollection::fromArray($tests), ); } + + /** + * @psalm-param list $tests + */ + private static function process(FrameworkTestSuite $testSuite, &$tests): void + { + foreach ($testSuite->tests() as $test) { + if ($test instanceof FrameworkTestSuite) { + self::process($test, $tests); + + continue; + } + + if ($test instanceof TestCase || $test instanceof PhptTestCase) { + $tests[] = $test->valueObjectForEvents(); + } + } + } } diff --git a/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteForTestMethodWithDataProvider.php b/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteForTestMethodWithDataProvider.php index 17d3ea1f..29bebc6f 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteForTestMethodWithDataProvider.php +++ b/vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteForTestMethodWithDataProvider.php @@ -31,6 +31,7 @@ final class TestSuiteForTestMethodWithDataProvider extends TestSuite private readonly int $line; /** + * @psalm-param non-empty-string $name * @psalm-param class-string $className * @psalm-param non-empty-string $methodName */ diff --git a/vendor/phpunit/phpunit/src/Event/Value/ThrowableBuilder.php b/vendor/phpunit/phpunit/src/Event/Value/ThrowableBuilder.php index 3e8afb91..aed9144f 100644 --- a/vendor/phpunit/phpunit/src/Event/Value/ThrowableBuilder.php +++ b/vendor/phpunit/phpunit/src/Event/Value/ThrowableBuilder.php @@ -36,7 +36,7 @@ public static function from(\Throwable $t): Throwable $t->getMessage(), ThrowableToStringMapper::map($t), Filter::getFilteredStacktrace($t), - $previous + $previous, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Assert.php b/vendor/phpunit/phpunit/src/Framework/Assert.php index 5735abf1..f98bd9a3 100644 --- a/vendor/phpunit/phpunit/src/Framework/Assert.php +++ b/vendor/phpunit/phpunit/src/Framework/Assert.php @@ -94,7 +94,7 @@ final public static function assertArrayHasKey(int|string $key, array|ArrayAcces final public static function assertArrayNotHasKey(int|string $key, array|ArrayAccess $array, string $message = ''): void { $constraint = new LogicalNot( - new ArrayHasKey($key) + new ArrayHasKey($key), ); static::assertThat($array, $constraint, $message); @@ -108,7 +108,7 @@ final public static function assertIsList(mixed $array, string $message = ''): v static::assertThat( $array, new IsList, - $message + $message, ); } @@ -144,7 +144,7 @@ final public static function assertContainsEquals(mixed $needle, iterable $hayst final public static function assertNotContains(mixed $needle, iterable $haystack, string $message = ''): void { $constraint = new LogicalNot( - new TraversableContainsIdentical($needle) + new TraversableContainsIdentical($needle), ); static::assertThat($haystack, $constraint, $message); @@ -176,9 +176,9 @@ final public static function assertContainsOnly(string $type, iterable $haystack $haystack, new TraversableContainsOnly( $type, - $isNativeType + $isNativeType, ), - $message + $message, ); } @@ -194,9 +194,9 @@ final public static function assertContainsOnlyInstancesOf(string $className, it $haystack, new TraversableContainsOnly( $className, - false + false, ), - $message + $message, ); } @@ -217,10 +217,10 @@ final public static function assertNotContainsOnly(string $type, iterable $hayst new LogicalNot( new TraversableContainsOnly( $type, - $isNativeType - ) + $isNativeType, + ), ), - $message + $message, ); } @@ -240,7 +240,7 @@ final public static function assertCount(int $expectedCount, Countable|iterable static::assertThat( $haystack, new Count($expectedCount), - $message + $message, ); } @@ -258,7 +258,7 @@ final public static function assertNotCount(int $expectedCount, Countable|iterab } $constraint = new LogicalNot( - new Count($expectedCount) + new Count($expectedCount), ); static::assertThat($haystack, $constraint, $message); @@ -309,7 +309,7 @@ final public static function assertEqualsWithDelta(mixed $expected, mixed $actua { $constraint = new IsEqualWithDelta( $expected, - $delta + $delta, ); static::assertThat($actual, $constraint, $message); @@ -323,7 +323,7 @@ final public static function assertEqualsWithDelta(mixed $expected, mixed $actua final public static function assertNotEquals(mixed $expected, mixed $actual, string $message = ''): void { $constraint = new LogicalNot( - new IsEqual($expected) + new IsEqual($expected), ); static::assertThat($actual, $constraint, $message); @@ -337,7 +337,7 @@ final public static function assertNotEquals(mixed $expected, mixed $actual, str final public static function assertNotEqualsCanonicalizing(mixed $expected, mixed $actual, string $message = ''): void { $constraint = new LogicalNot( - new IsEqualCanonicalizing($expected) + new IsEqualCanonicalizing($expected), ); static::assertThat($actual, $constraint, $message); @@ -351,7 +351,7 @@ final public static function assertNotEqualsCanonicalizing(mixed $expected, mixe final public static function assertNotEqualsIgnoringCase(mixed $expected, mixed $actual, string $message = ''): void { $constraint = new LogicalNot( - new IsEqualIgnoringCase($expected) + new IsEqualIgnoringCase($expected), ); static::assertThat($actual, $constraint, $message); @@ -367,8 +367,8 @@ final public static function assertNotEqualsWithDelta(mixed $expected, mixed $ac $constraint = new LogicalNot( new IsEqualWithDelta( $expected, - $delta - ) + $delta, + ), ); static::assertThat($actual, $constraint, $message); @@ -382,7 +382,7 @@ final public static function assertObjectEquals(object $expected, object $actual static::assertThat( $actual, static::objectEquals($expected, $method), - $message + $message, ); } @@ -440,7 +440,7 @@ final public static function assertGreaterThanOrEqual(mixed $expected, mixed $ac static::assertThat( $actual, static::greaterThanOrEqual($expected), - $message + $message, ); } @@ -492,7 +492,7 @@ final public static function assertFileEqualsCanonicalizing(string $expected, st static::assertFileExists($actual, $message); $constraint = new IsEqualCanonicalizing( - file_get_contents($expected) + file_get_contents($expected), ); static::assertThat(file_get_contents($actual), $constraint, $message); @@ -526,7 +526,7 @@ final public static function assertFileNotEquals(string $expected, string $actua static::assertFileExists($actual, $message); $constraint = new LogicalNot( - new IsEqual(file_get_contents($expected)) + new IsEqual(file_get_contents($expected)), ); static::assertThat(file_get_contents($actual), $constraint, $message); @@ -544,7 +544,7 @@ final public static function assertFileNotEqualsCanonicalizing(string $expected, static::assertFileExists($actual, $message); $constraint = new LogicalNot( - new IsEqualCanonicalizing(file_get_contents($expected)) + new IsEqualCanonicalizing(file_get_contents($expected)), ); static::assertThat(file_get_contents($actual), $constraint, $message); @@ -562,7 +562,7 @@ final public static function assertFileNotEqualsIgnoringCase(string $expected, s static::assertFileExists($actual, $message); $constraint = new LogicalNot( - new IsEqualIgnoringCase(file_get_contents($expected)) + new IsEqualIgnoringCase(file_get_contents($expected)), ); static::assertThat(file_get_contents($actual), $constraint, $message); @@ -624,7 +624,7 @@ final public static function assertStringNotEqualsFile(string $expectedFile, str static::assertFileExists($expectedFile, $message); $constraint = new LogicalNot( - new IsEqual(file_get_contents($expectedFile)) + new IsEqual(file_get_contents($expectedFile)), ); static::assertThat($actualString, $constraint, $message); @@ -641,7 +641,7 @@ final public static function assertStringNotEqualsFileCanonicalizing(string $exp static::assertFileExists($expectedFile, $message); $constraint = new LogicalNot( - new IsEqualCanonicalizing(file_get_contents($expectedFile)) + new IsEqualCanonicalizing(file_get_contents($expectedFile)), ); static::assertThat($actualString, $constraint, $message); @@ -658,7 +658,7 @@ final public static function assertStringNotEqualsFileIgnoringCase(string $expec static::assertFileExists($expectedFile, $message); $constraint = new LogicalNot( - new IsEqualIgnoringCase(file_get_contents($expectedFile)) + new IsEqualIgnoringCase(file_get_contents($expectedFile)), ); static::assertThat($actualString, $constraint, $message); @@ -944,7 +944,7 @@ final public static function assertObjectHasProperty(string $propertyName, objec static::assertThat( $object, new ObjectHasProperty($propertyName), - $message + $message, ); } @@ -958,9 +958,9 @@ final public static function assertObjectNotHasProperty(string $propertyName, ob static::assertThat( $object, new LogicalNot( - new ObjectHasProperty($propertyName) + new ObjectHasProperty($propertyName), ), - $message + $message, ); } @@ -982,7 +982,7 @@ final public static function assertSame(mixed $expected, mixed $actual, string $ static::assertThat( $actual, new IsIdentical($expected), - $message + $message, ); } @@ -1002,9 +1002,9 @@ final public static function assertNotSame(mixed $expected, mixed $actual, strin static::assertThat( $actual, new LogicalNot( - new IsIdentical($expected) + new IsIdentical($expected), ), - $message + $message, ); } @@ -1030,7 +1030,7 @@ final public static function assertInstanceOf(string $expected, mixed $actual, s static::assertThat( $actual, new IsInstanceOf($expected), - $message + $message, ); } @@ -1055,9 +1055,9 @@ final public static function assertNotInstanceOf(string $expected, mixed $actual static::assertThat( $actual, new LogicalNot( - new IsInstanceOf($expected) + new IsInstanceOf($expected), ), - $message + $message, ); } @@ -1074,7 +1074,7 @@ final public static function assertIsArray(mixed $actual, string $message = ''): static::assertThat( $actual, new IsType(IsType::TYPE_ARRAY), - $message + $message, ); } @@ -1091,7 +1091,7 @@ final public static function assertIsBool(mixed $actual, string $message = ''): static::assertThat( $actual, new IsType(IsType::TYPE_BOOL), - $message + $message, ); } @@ -1108,7 +1108,7 @@ final public static function assertIsFloat(mixed $actual, string $message = ''): static::assertThat( $actual, new IsType(IsType::TYPE_FLOAT), - $message + $message, ); } @@ -1125,7 +1125,7 @@ final public static function assertIsInt(mixed $actual, string $message = ''): v static::assertThat( $actual, new IsType(IsType::TYPE_INT), - $message + $message, ); } @@ -1142,7 +1142,7 @@ final public static function assertIsNumeric(mixed $actual, string $message = '' static::assertThat( $actual, new IsType(IsType::TYPE_NUMERIC), - $message + $message, ); } @@ -1159,7 +1159,7 @@ final public static function assertIsObject(mixed $actual, string $message = '') static::assertThat( $actual, new IsType(IsType::TYPE_OBJECT), - $message + $message, ); } @@ -1176,7 +1176,7 @@ final public static function assertIsResource(mixed $actual, string $message = ' static::assertThat( $actual, new IsType(IsType::TYPE_RESOURCE), - $message + $message, ); } @@ -1193,7 +1193,7 @@ final public static function assertIsClosedResource(mixed $actual, string $messa static::assertThat( $actual, new IsType(IsType::TYPE_CLOSED_RESOURCE), - $message + $message, ); } @@ -1210,7 +1210,7 @@ final public static function assertIsString(mixed $actual, string $message = '') static::assertThat( $actual, new IsType(IsType::TYPE_STRING), - $message + $message, ); } @@ -1227,7 +1227,7 @@ final public static function assertIsScalar(mixed $actual, string $message = '') static::assertThat( $actual, new IsType(IsType::TYPE_SCALAR), - $message + $message, ); } @@ -1244,7 +1244,7 @@ final public static function assertIsCallable(mixed $actual, string $message = ' static::assertThat( $actual, new IsType(IsType::TYPE_CALLABLE), - $message + $message, ); } @@ -1261,7 +1261,7 @@ final public static function assertIsIterable(mixed $actual, string $message = ' static::assertThat( $actual, new IsType(IsType::TYPE_ITERABLE), - $message + $message, ); } @@ -1278,7 +1278,7 @@ final public static function assertIsNotArray(mixed $actual, string $message = ' static::assertThat( $actual, new LogicalNot(new IsType(IsType::TYPE_ARRAY)), - $message + $message, ); } @@ -1295,7 +1295,7 @@ final public static function assertIsNotBool(mixed $actual, string $message = '' static::assertThat( $actual, new LogicalNot(new IsType(IsType::TYPE_BOOL)), - $message + $message, ); } @@ -1312,7 +1312,7 @@ final public static function assertIsNotFloat(mixed $actual, string $message = ' static::assertThat( $actual, new LogicalNot(new IsType(IsType::TYPE_FLOAT)), - $message + $message, ); } @@ -1329,7 +1329,7 @@ final public static function assertIsNotInt(mixed $actual, string $message = '') static::assertThat( $actual, new LogicalNot(new IsType(IsType::TYPE_INT)), - $message + $message, ); } @@ -1346,7 +1346,7 @@ final public static function assertIsNotNumeric(mixed $actual, string $message = static::assertThat( $actual, new LogicalNot(new IsType(IsType::TYPE_NUMERIC)), - $message + $message, ); } @@ -1363,7 +1363,7 @@ final public static function assertIsNotObject(mixed $actual, string $message = static::assertThat( $actual, new LogicalNot(new IsType(IsType::TYPE_OBJECT)), - $message + $message, ); } @@ -1380,7 +1380,7 @@ final public static function assertIsNotResource(mixed $actual, string $message static::assertThat( $actual, new LogicalNot(new IsType(IsType::TYPE_RESOURCE)), - $message + $message, ); } @@ -1397,7 +1397,7 @@ final public static function assertIsNotClosedResource(mixed $actual, string $me static::assertThat( $actual, new LogicalNot(new IsType(IsType::TYPE_CLOSED_RESOURCE)), - $message + $message, ); } @@ -1414,7 +1414,7 @@ final public static function assertIsNotString(mixed $actual, string $message = static::assertThat( $actual, new LogicalNot(new IsType(IsType::TYPE_STRING)), - $message + $message, ); } @@ -1431,7 +1431,7 @@ final public static function assertIsNotScalar(mixed $actual, string $message = static::assertThat( $actual, new LogicalNot(new IsType(IsType::TYPE_SCALAR)), - $message + $message, ); } @@ -1448,7 +1448,7 @@ final public static function assertIsNotCallable(mixed $actual, string $message static::assertThat( $actual, new LogicalNot(new IsType(IsType::TYPE_CALLABLE)), - $message + $message, ); } @@ -1465,7 +1465,7 @@ final public static function assertIsNotIterable(mixed $actual, string $message static::assertThat( $actual, new LogicalNot(new IsType(IsType::TYPE_ITERABLE)), - $message + $message, ); } @@ -1489,9 +1489,9 @@ final public static function assertDoesNotMatchRegularExpression(string $pattern static::assertThat( $string, new LogicalNot( - new RegularExpression($pattern) + new RegularExpression($pattern), ), - $message + $message, ); } @@ -1516,7 +1516,7 @@ final public static function assertSameSize(Countable|iterable $expected, Counta static::assertThat( $actual, new SameSize($expected), - $message + $message, ); } @@ -1541,9 +1541,9 @@ final public static function assertNotSameSize(Countable|iterable $expected, Cou static::assertThat( $actual, new LogicalNot( - new SameSize($expected) + new SameSize($expected), ), - $message + $message, ); } @@ -1585,9 +1585,9 @@ final public static function assertStringNotMatchesFormat(string $format, string static::assertThat( $string, new LogicalNot( - new StringMatchesFormatDescription($format) + new StringMatchesFormatDescription($format), ), - $message + $message, ); } @@ -1603,9 +1603,9 @@ final public static function assertStringMatchesFormatFile(string $formatFile, s static::assertThat( $string, new StringMatchesFormatDescription( - file_get_contents($formatFile) + file_get_contents($formatFile), ), - $message + $message, ); } @@ -1622,10 +1622,10 @@ final public static function assertStringNotMatchesFormatFile(string $formatFile $string, new LogicalNot( new StringMatchesFormatDescription( - file_get_contents($formatFile) - ) + file_get_contents($formatFile), + ), ), - $message + $message, ); } @@ -1655,9 +1655,9 @@ final public static function assertStringStartsNotWith(string $prefix, string $s static::assertThat( $string, new LogicalNot( - new StringStartsWith($prefix) + new StringStartsWith($prefix), ), - $message + $message, ); } @@ -1727,9 +1727,9 @@ final public static function assertStringEndsNotWith(string $suffix, string $str static::assertThat( $string, new LogicalNot( - new StringEndsWith($suffix) + new StringEndsWith($suffix), ), - $message + $message, ); } @@ -1886,9 +1886,9 @@ final public static function assertJsonStringNotEqualsJsonString(string $expecte static::assertThat( $actualJson, new LogicalNot( - new JsonMatches($expectedJson) + new JsonMatches($expectedJson), ), - $message + $message, ); } @@ -1924,9 +1924,9 @@ final public static function assertJsonStringNotEqualsJsonFile(string $expectedF static::assertThat( $actualJson, new LogicalNot( - new JsonMatches($expectedJson) + new JsonMatches($expectedJson), ), - $message + $message, ); } @@ -1947,7 +1947,7 @@ final public static function assertJsonFileEqualsJsonFile(string $expectedFile, static::assertJson($actualJson, $message); $constraintExpected = new JsonMatches( - $expectedJson + $expectedJson, ); $constraintActual = new JsonMatches($actualJson); @@ -1973,7 +1973,7 @@ final public static function assertJsonFileNotEqualsJsonFile(string $expectedFil static::assertJson($actualJson, $message); $constraintExpected = new JsonMatches( - $expectedJson + $expectedJson, ); $constraintActual = new JsonMatches($actualJson); @@ -2147,7 +2147,7 @@ final public static function greaterThanOrEqual(mixed $value): LogicalOr { return static::logicalOr( new IsEqual($value), - new GreaterThan($value) + new GreaterThan($value), ); } @@ -2181,7 +2181,7 @@ final public static function lessThanOrEqual(mixed $value): LogicalOr { return static::logicalOr( new IsEqual($value), - new LessThan($value) + new LessThan($value), ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php b/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php index 0669aea8..80b7095d 100644 --- a/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php +++ b/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php @@ -2583,7 +2583,7 @@ function never(): InvokedCountMatcher function atLeast(int $requiredInvocations): InvokedAtLeastCountMatcher { return new InvokedAtLeastCountMatcher( - $requiredInvocations + $requiredInvocations, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php index 512013ce..2ec012a0 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php @@ -37,7 +37,7 @@ public function toString(): string { return sprintf( 'count matches %d', - $this->expectedCount + $this->expectedCount, ); } @@ -73,7 +73,7 @@ protected function getCountOf(mixed $other): ?int throw new Exception( $e->getMessage(), $e->getCode(), - $e + $e, ); } } @@ -120,7 +120,7 @@ protected function failureDescription(mixed $other): string return sprintf( 'actual size %d matches expected size %d', (int) $this->getCountOf($other), - $this->expectedCount + $this->expectedCount, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php index 6710db3a..eee9705e 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php @@ -60,7 +60,7 @@ protected function failureDescription(mixed $other): string '%s %s %s', str_starts_with($type, 'a') || str_starts_with($type, 'o') ? 'an' : 'a', $type, - $this->toString() + $this->toString(), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php index 274927d3..1ef2294a 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php @@ -91,7 +91,7 @@ protected function fail(mixed $other, string $description, ComparisonFailure $co { $failureDescription = sprintf( 'Failed asserting that %s.', - $this->failureDescription($other) + $this->failureDescription($other), ); $additionalFailureDescription = $this->additionalFailureDescription($other); @@ -106,7 +106,7 @@ protected function fail(mixed $other, string $description, ComparisonFailure $co throw new ExpectationFailedException( $failureDescription, - $comparisonFailure + $comparisonFailure, ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php index 217a9074..fbbcf07b 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php @@ -61,7 +61,7 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes try { $comparator = $comparatorFactory->getComparatorFor( $this->value, - $other + $other, ); $comparator->assertEquals( @@ -69,7 +69,7 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes $other, $this->delta, $this->canonicalize, - $this->ignoreCase + $this->ignoreCase, ); } catch (ComparisonFailure $f) { if ($returnResult) { @@ -78,7 +78,7 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes throw new ExpectationFailedException( trim($description . "\n" . $f->getMessage()), - $f + $f, ); } @@ -99,21 +99,21 @@ public function toString(): string return sprintf( "is equal to '%s'", - $this->value + $this->value, ); } if ($this->delta != 0) { $delta = sprintf( ' with delta <%F>', - $this->delta + $this->delta, ); } return sprintf( 'is equal to %s%s', $this->exporter()->export($this->value), - $delta + $delta, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php index 5d5eab5c..a4cecd22 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php @@ -55,7 +55,7 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes try { $comparator = $comparatorFactory->getComparatorFor( $this->value, - $other + $other, ); $comparator->assertEquals( @@ -63,7 +63,7 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes $other, 0.0, true, - false + false, ); } catch (ComparisonFailure $f) { if ($returnResult) { @@ -72,7 +72,7 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes throw new ExpectationFailedException( trim($description . "\n" . $f->getMessage()), - $f + $f, ); } @@ -91,13 +91,13 @@ public function toString(): string return sprintf( "is equal to '%s'", - $this->value + $this->value, ); } return sprintf( 'is equal to %s', - $this->exporter()->export($this->value) + $this->exporter()->export($this->value), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php index d6fc31c1..932dc15e 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php @@ -55,7 +55,7 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes try { $comparator = $comparatorFactory->getComparatorFor( $this->value, - $other + $other, ); $comparator->assertEquals( @@ -63,7 +63,7 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes $other, 0.0, false, - true + true, ); } catch (ComparisonFailure $f) { if ($returnResult) { @@ -72,7 +72,7 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes throw new ExpectationFailedException( trim($description . "\n" . $f->getMessage()), - $f + $f, ); } @@ -91,13 +91,13 @@ public function toString(): string return sprintf( "is equal to '%s'", - $this->value + $this->value, ); } return sprintf( 'is equal to %s', - $this->exporter()->export($this->value) + $this->exporter()->export($this->value), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php index 43ddb312..1a566b5e 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php @@ -55,13 +55,13 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes try { $comparator = $comparatorFactory->getComparatorFor( $this->value, - $other + $other, ); $comparator->assertEquals( $this->value, $other, - $this->delta + $this->delta, ); } catch (ComparisonFailure $f) { if ($returnResult) { @@ -70,7 +70,7 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes throw new ExpectationFailedException( trim($description . "\n" . $f->getMessage()), - $f + $f, ); } @@ -85,7 +85,7 @@ public function toString(): string return sprintf( 'is equal to %s with delta <%F>', $this->exporter()->export($this->value), - $this->delta + $this->delta, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php index dc79f157..14905e77 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php @@ -32,7 +32,7 @@ public function toString(): string { return sprintf( 'exception of type "%s"', - $this->className + $this->className, ); } @@ -58,7 +58,7 @@ protected function failureDescription(mixed $other): string if ($other === null) { return sprintf( 'exception of type "%s" is thrown', - $this->className + $this->className, ); } @@ -73,7 +73,7 @@ protected function failureDescription(mixed $other): string 'exception of type "%s" matches expected exception "%s"%s', $other::class, $this->className, - $message + $message, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php index 4d882e3b..7f6f2df8 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php @@ -48,7 +48,7 @@ protected function failureDescription(mixed $other): string return sprintf( '%s is equal to expected exception code %s', $this->exporter()->export($other), - $this->exporter()->export($this->expectedCode) + $this->exporter()->export($this->expectedCode), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageIsOrContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageIsOrContains.php index 0b84f044..c4dad765 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageIsOrContains.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageIsOrContains.php @@ -53,14 +53,14 @@ protected function failureDescription(mixed $other): string if ($this->expectedMessage === '') { return sprintf( "exception message is empty but is '%s'", - $other + $other, ); } return sprintf( "exception message '%s' contains '%s'", $other, - $this->expectedMessage + $this->expectedMessage, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageMatchesRegularExpression.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageMatchesRegularExpression.php index 7a425583..f09ad379 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageMatchesRegularExpression.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageMatchesRegularExpression.php @@ -45,8 +45,8 @@ protected function matches(mixed $other): bool throw new \PHPUnit\Framework\Exception( sprintf( 'Invalid expected exception message regular expression given: %s', - $this->regularExpression - ) + $this->regularExpression, + ), ); } @@ -64,7 +64,7 @@ protected function failureDescription(mixed $other): string return sprintf( "exception message '%s' matches '%s'", $other, - $this->regularExpression + $this->regularExpression, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php index f0da8f69..83b991e1 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php @@ -44,7 +44,7 @@ protected function failureDescription(mixed $other): string { return sprintf( 'directory "%s" exists', - $other + $other, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php index 24bdb42b..cfc3b1b6 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php @@ -44,7 +44,7 @@ protected function failureDescription(mixed $other): string { return sprintf( 'file "%s" exists', - $other + $other, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php index d4ad4911..1a32546c 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php @@ -44,7 +44,7 @@ protected function failureDescription(mixed $other): string { return sprintf( '"%s" is readable', - $other + $other, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php index 64d5acc7..24e94f82 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php @@ -44,7 +44,7 @@ protected function failureDescription(mixed $other): string { return sprintf( '"%s" is writable', - $other + $other, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php index 67e10e70..53515f3c 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php @@ -57,7 +57,7 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes $this->value, $other, sprintf("'%s'", $this->value), - sprintf("'%s'", $other) + sprintf("'%s'", $other), ); } @@ -67,7 +67,7 @@ public function evaluate(mixed $other, string $description = '', bool $returnRes $this->value, $other, $this->exporter()->export($this->value), - $this->exporter()->export($other) + $this->exporter()->export($other), ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php index 23bce7e7..0000c8ef 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php @@ -35,7 +35,7 @@ public function toString(): string { return sprintf( 'matches JSON string "%s"', - $this->value + $this->value, ); } @@ -88,7 +88,7 @@ protected function fail(mixed $other, string $description, ComparisonFailure $co json_decode($other), Json::prettify($recodedValue), Json::prettify($recodedOther), - 'Failed asserting that two json values are equal.' + 'Failed asserting that two json values are equal.', ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php index 70ace344..a5081294 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php @@ -57,7 +57,7 @@ protected function matches(mixed $other): bool if (!$object->hasMethod($this->method)) { throw new ComparisonMethodDoesNotExistException( $other::class, - $this->method + $this->method, ); } @@ -66,7 +66,7 @@ protected function matches(mixed $other): bool if (!$method->hasReturnType()) { throw new ComparisonMethodDoesNotDeclareBoolReturnTypeException( $other::class, - $this->method + $this->method, ); } @@ -75,28 +75,28 @@ protected function matches(mixed $other): bool if (!$returnType instanceof ReflectionNamedType) { throw new ComparisonMethodDoesNotDeclareBoolReturnTypeException( $other::class, - $this->method + $this->method, ); } if ($returnType->allowsNull()) { throw new ComparisonMethodDoesNotDeclareBoolReturnTypeException( $other::class, - $this->method + $this->method, ); } if ($returnType->getName() !== 'bool') { throw new ComparisonMethodDoesNotDeclareBoolReturnTypeException( $other::class, - $this->method + $this->method, ); } if ($method->getNumberOfParameters() !== 1 || $method->getNumberOfRequiredParameters() !== 1) { throw new ComparisonMethodDoesNotDeclareExactlyOneParameterException( $other::class, - $this->method + $this->method, ); } @@ -105,7 +105,7 @@ protected function matches(mixed $other): bool if (!$parameter->hasType()) { throw new ComparisonMethodDoesNotDeclareParameterTypeException( $other::class, - $this->method + $this->method, ); } @@ -114,7 +114,7 @@ protected function matches(mixed $other): bool if (!$type instanceof ReflectionNamedType) { throw new ComparisonMethodDoesNotDeclareParameterTypeException( $other::class, - $this->method + $this->method, ); } @@ -128,7 +128,7 @@ protected function matches(mixed $other): bool throw new ComparisonMethodDoesNotAcceptParameterTypeException( $other::class, $this->method, - $this->expected::class + $this->expected::class, ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasProperty.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasProperty.php index faa75d4f..74c40c75 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasProperty.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasProperty.php @@ -33,7 +33,7 @@ public function toString(): string { return sprintf( 'has property "%s"', - $this->propertyName + $this->propertyName, ); } @@ -66,7 +66,7 @@ protected function failureDescription(mixed $other): string return sprintf( 'object of class "%s" %s', $other::class, - $this->toString() + $this->toString(), ); } @@ -74,7 +74,7 @@ protected function failureDescription(mixed $other): string '"%s" (%s) %s', $other, gettype($other), - $this->toString() + $this->toString(), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php index dec2effd..4c3d8e4b 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php @@ -26,7 +26,7 @@ protected function __construct(mixed ...$constraints) { $this->constraints = array_map( fn ($constraint): Constraint => $this->checkConstraint($constraint), - $constraints + $constraints, ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php index f79f140c..021afddd 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php @@ -53,7 +53,7 @@ public static function negate(string $string): string $positives = array_map( static fn (string $s) => '/\\b' . preg_quote($s, '/') . '/', - $positives + $positives, ); if (count($matches) > 0) { @@ -64,15 +64,15 @@ public static function negate(string $string): string preg_replace( $positives, $negatives, - $nonInput + $nonInput, ), - $string + $string, ); } else { $negatedString = preg_replace( $positives, $negatives, - $string + $string, ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php index f5b2b7df..e8ffc34d 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php @@ -60,7 +60,7 @@ public function matches(mixed $other): bool return array_reduce( $constraints, static fn (bool $matches, Constraint $constraint): bool => $matches xor $constraint->evaluate($other, '', true), - $initial->evaluate($other, '', true) + $initial->evaluate($other, '', true), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php index 21241652..d31d050f 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php @@ -62,7 +62,7 @@ protected function failureDescription(mixed $other): string return sprintf( '%s is valid JSON (%s)', $this->exporter()->shortenedExport($other), - $this->determineJsonError(json_last_error()) + $this->determineJsonError(json_last_error()), ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php index b550aaf4..03b0e4ea 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php @@ -31,7 +31,7 @@ public function toString(): string { return sprintf( 'matches PCRE pattern "%s"', - $this->pattern + $this->pattern, ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php index aa48286f..77fe8011 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php @@ -49,7 +49,7 @@ public function toString(): string return sprintf( 'contains "%s"', - $string + $string, ); } @@ -97,7 +97,7 @@ private function normalizeLineEndings(string $string): string [ "\r\n" => "\n", "\r" => "\n", - ] + ], ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringEqualsStringIgnoringLineEndings.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringEqualsStringIgnoringLineEndings.php index 82b150f3..56c59943 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringEqualsStringIgnoringLineEndings.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringEqualsStringIgnoringLineEndings.php @@ -31,7 +31,7 @@ public function toString(): string { return sprintf( 'is equal to "%s" ignoring line endings', - $this->string + $this->string, ); } @@ -51,7 +51,7 @@ private function normalizeLineEndings(string $string): string [ "\r\n" => "\n", "\r" => "\n", - ] + ], ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php index 1f84d92f..8e5072db 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php @@ -46,9 +46,9 @@ protected function matches(mixed $other): bool $matches = preg_match( $this->regularExpressionForFormatDescription( - $this->convertNewlines($this->formatDescription) + $this->convertNewlines($this->formatDescription), ), - $other + $other, ); return $matches > 0; @@ -97,7 +97,7 @@ private function regularExpressionForFormatDescription(string $string): string '%x' => '[0-9a-fA-F]+', '%f' => '[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?', '%c' => '.', - ] + ], ); return '/^' . $string . '$/s'; diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php index 32ddc342..b2d0d39b 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php @@ -43,7 +43,7 @@ protected function failureDescription(mixed $other): string return sprintf( '%s %s', is_array($other) ? 'an array' : 'a traversable', - $this->toString() + $this->toString(), ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php index aeaca784..d814b6d8 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php @@ -46,7 +46,7 @@ public function toString(): string return sprintf( 'is an instance of %s %s', $this->type, - $this->name + $this->name, ); } @@ -71,7 +71,7 @@ protected function failureDescription(mixed $other): string '%s is an instance of %s %s', $this->exporter()->shortenedExport($other), $this->type, - $this->name + $this->name, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php index ca44a489..ae8eff60 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php @@ -136,7 +136,7 @@ public function toString(): string { return sprintf( 'is of type %s', - $this->type + $this->type, ); } diff --git a/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php b/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php index 841ee14b..6975d1c6 100644 --- a/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php +++ b/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php @@ -46,7 +46,7 @@ public function setDependencies(array $dependencies): void public function provides(): array { if ($this->providedTests === null) { - $this->providedTests = [new ExecutionOrderDependency($this->getName())]; + $this->providedTests = [new ExecutionOrderDependency($this->name())]; } return $this->providedTests; @@ -67,7 +67,7 @@ public function requires(): array */ public function size(): TestSize { - [$className, $methodName] = explode('::', $this->getName()); + [$className, $methodName] = explode('::', $this->name()); return (new Groups)->size($className, $methodName); } diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/GeneratorNotSupportedException.php b/vendor/phpunit/phpunit/src/Framework/Exception/GeneratorNotSupportedException.php index 7e2b38bd..2a6ff542 100644 --- a/vendor/phpunit/phpunit/src/Framework/Exception/GeneratorNotSupportedException.php +++ b/vendor/phpunit/phpunit/src/Framework/Exception/GeneratorNotSupportedException.php @@ -21,8 +21,8 @@ public static function fromParameterName(string $parameterName): self return new self( sprintf( 'Passing an argument of type Generator for the %s parameter is not supported', - $parameterName - ) + $parameterName, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ActualValueIsNotAnObjectException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ActualValueIsNotAnObjectException.php index 5c89b0c2..c2579df3 100644 --- a/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ActualValueIsNotAnObjectException.php +++ b/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ActualValueIsNotAnObjectException.php @@ -17,7 +17,7 @@ final class ActualValueIsNotAnObjectException extends Exception public function __construct() { parent::__construct( - 'Actual value is not an object' + 'Actual value is not an object', ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php index 2696c756..19f4a490 100644 --- a/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php +++ b/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php @@ -23,8 +23,8 @@ public function __construct(string $className, string $methodName, string $type) '%s is not an accepted argument type for comparison method %s::%s().', $type, $className, - $methodName - ) + $methodName, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php index 0a08386d..87cd241d 100644 --- a/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php +++ b/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php @@ -22,8 +22,8 @@ public function __construct(string $className, string $methodName) sprintf( 'Comparison method %s::%s() does not declare bool return type.', $className, - $methodName - ) + $methodName, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php index df6f3768..b8d61933 100644 --- a/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php +++ b/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php @@ -22,8 +22,8 @@ public function __construct(string $className, string $methodName) sprintf( 'Comparison method %s::%s() does not declare exactly one parameter.', $className, - $methodName - ) + $methodName, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareParameterTypeException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareParameterTypeException.php index 535da842..937a3b69 100644 --- a/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareParameterTypeException.php +++ b/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareParameterTypeException.php @@ -22,8 +22,8 @@ public function __construct(string $className, string $methodName) sprintf( 'Parameter of comparison method %s::%s() does not have a declared type.', $className, - $methodName - ) + $methodName, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotExistException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotExistException.php index 7711d5cb..a482fb4f 100644 --- a/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotExistException.php +++ b/vendor/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotExistException.php @@ -22,8 +22,8 @@ public function __construct(string $className, string $methodName) sprintf( 'Comparison method %s::%s() does not exist.', $className, - $methodName - ) + $methodName, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/UnknownClassException.php b/vendor/phpunit/phpunit/src/Framework/Exception/UnknownClassException.php index 69ffe808..e583fa81 100644 --- a/vendor/phpunit/phpunit/src/Framework/Exception/UnknownClassException.php +++ b/vendor/phpunit/phpunit/src/Framework/Exception/UnknownClassException.php @@ -21,8 +21,8 @@ public function __construct(string $name) parent::__construct( sprintf( 'Class "%s" does not exist', - $name - ) + $name, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php b/vendor/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php index 4de87809..c3cab6c6 100644 --- a/vendor/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php +++ b/vendor/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php @@ -21,8 +21,8 @@ public function __construct(string $name) parent::__construct( sprintf( 'Class or interface "%s" does not exist', - $name - ) + $name, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php b/vendor/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php index 7039d7e5..b5f9debf 100644 --- a/vendor/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php +++ b/vendor/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php @@ -21,8 +21,8 @@ public function __construct(string $name) parent::__construct( sprintf( 'Type "%s" is not known', - $name - ) + $name, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php b/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php index 1f0a20f2..9d5419b3 100644 --- a/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php +++ b/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php @@ -35,7 +35,7 @@ public static function invalid(): self '', '', false, - false + false, ); } @@ -45,7 +45,7 @@ public static function forClass(DependsOnClass $metadata): self $metadata->className(), 'class', $metadata->deepClone(), - $metadata->shallowClone() + $metadata->shallowClone(), ); } @@ -55,7 +55,7 @@ public static function forMethod(DependsOnMethod $metadata): self $metadata->className(), $metadata->methodName(), $metadata->deepClone(), - $metadata->shallowClone() + $metadata->shallowClone(), ); } @@ -69,8 +69,8 @@ public static function filterInvalid(array $dependencies): array return array_values( array_filter( $dependencies, - static fn (self $d) => $d->isValid() - ) + static fn (self $d) => $d->isValid(), + ), ); } @@ -84,7 +84,7 @@ public static function mergeUnique(array $existing, array $additional): array { $existingTargets = array_map( static fn ($dependency) => $dependency->getTarget(), - $existing + $existing, ); foreach ($additional as $dependency) { @@ -118,7 +118,7 @@ public static function diff(array $left, array $right): array $diff = []; $rightTargets = array_map( static fn ($dependency) => $dependency->getTarget(), - $right + $right, ); foreach ($left as $dependency) { diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Api.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Api.php index ce1fb3d9..64574de7 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Api.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Api.php @@ -30,7 +30,7 @@ public static function __phpunit_initConfigurableMethods(ConfigurableMethod ...$ { if (isset(static::$__phpunit_configurableMethods)) { throw new ConfigurableMethodsAlreadyInitializedException( - 'Configurable methods is already initialized and can not be reinitialized' + 'Configurable methods is already initialized and can not be reinitialized', ); } @@ -55,7 +55,7 @@ public function __phpunit_getInvocationHandler(): InvocationHandler if ($this->__phpunit_invocationMocker === null) { $this->__phpunit_invocationMocker = new InvocationHandler( static::$__phpunit_configurableMethods, - $this->__phpunit_returnValueGeneration + $this->__phpunit_returnValueGeneration, ); } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Method.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Method.php index 5507d0fd..a991eae4 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Method.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Method.php @@ -25,7 +25,7 @@ public function method(): InvocationMocker return call_user_func_array( [$expects, 'method'], - func_get_args() + func_get_args(), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php index ac5415f7..5415d533 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php @@ -211,7 +211,7 @@ public function method(Constraint|string $constraint): self if (is_string($constraint)) { $this->configurableMethodNames ??= array_flip(array_map( static fn (ConfigurableMethod $configurable) => strtolower($configurable->name()), - $this->configurableMethods + $this->configurableMethods, )); if (!array_key_exists(strtolower($constraint), $this->configurableMethodNames)) { @@ -271,7 +271,7 @@ private function ensureTypeOfReturnValues(array $values): void if (!$configuredMethod->mayReturn($value)) { throw new IncompatibleReturnValueException( $configuredMethod, - $value + $value, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php index 0698870b..848746b5 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php @@ -22,8 +22,8 @@ public function __construct(string $type, string $methodName) sprintf( 'Trying to configure method "%s" with addMethods(), but it exists in class "%s". Use onlyMethods() for methods that exist in the class', $methodName, - $type - ) + $type, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php index 35a29b73..0efcd02a 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php @@ -22,8 +22,8 @@ public function __construct(string $type, string $methodName) sprintf( 'Trying to configure method "%s" with onlyMethods(), but it does not exist in class "%s". Use addMethods() for methods that do not exist in the class', $methodName, - $type - ) + $type, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php index 0ba9a187..8c9c0a52 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php @@ -21,8 +21,8 @@ public function __construct(string $className) parent::__construct( sprintf( 'Class "%s" already exists', - $className - ) + $className, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsEnumerationException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsEnumerationException.php index 696c1905..a7e58dc7 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsEnumerationException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsEnumerationException.php @@ -21,8 +21,8 @@ public function __construct(string $className) parent::__construct( sprintf( 'Class "%s" is an enumeration and cannot be doubled', - $className - ) + $className, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php index e648f026..2bce2d88 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php @@ -21,8 +21,8 @@ public function __construct(string $className) parent::__construct( sprintf( 'Class "%s" is declared "final" and cannot be doubled', - $className - ) + $className, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsReadonlyException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsReadonlyException.php index aa1a7451..f73570e1 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsReadonlyException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsReadonlyException.php @@ -21,8 +21,8 @@ public function __construct(string $className) parent::__construct( sprintf( 'Class "%s" is declared "readonly" and cannot be doubled', - $className - ) + $className, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php index 1216b45d..f96a04ac 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php @@ -28,8 +28,8 @@ public function __construct(array $methods) sprintf( 'Cannot double using a method list that contains duplicates: "%s" (duplicate: "%s")', implode(', ', $methods), - implode(', ', array_unique(array_diff_assoc($methods, array_unique($methods)))) - ) + implode(', ', array_unique(array_diff_assoc($methods, array_unique($methods)))), + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php index 803028df..6409204a 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php @@ -24,8 +24,8 @@ public function __construct(ConfigurableMethod $method, mixed $value) 'Method %s may not return value of type %s, its declared return type is "%s"', $method->name(), get_debug_type($value), - $method->returnTypeDeclaration() - ) + $method->returnTypeDeclaration(), + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php index d2444cf1..0ab74cbb 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php @@ -21,8 +21,8 @@ public function __construct(string $method) parent::__construct( sprintf( 'Cannot double method with invalid name "%s"', - $method - ) + $method, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php index c05b2bce..f2e1a31e 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php @@ -21,8 +21,8 @@ public function __construct(string $id) parent::__construct( sprintf( 'No builder found for match builder identification <%s>', - $id - ) + $id, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php index efcc13ed..0972ffaf 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php @@ -21,8 +21,8 @@ public function __construct(string $id) parent::__construct( sprintf( 'Matcher with id <%s> is already registered', - $id - ) + $id, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php index 70729043..2f0bb5a6 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php @@ -21,8 +21,8 @@ public function __construct(string $method) parent::__construct( sprintf( 'Trying to configure method "%s" which cannot be configured because it does not exist, has not been specified, is final, or is static', - $method - ) + $method, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php index 21808989..893c37f2 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php @@ -22,8 +22,8 @@ public function __construct(Invocation $invocation) sprintf( 'Return value inference disabled and no expectation set up for %s::%s()', $invocation->className(), - $invocation->methodName() - ) + $invocation->methodName(), + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php index 98837c95..6ec5057a 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php @@ -17,7 +17,7 @@ final class SoapExtensionNotAvailableException extends \PHPUnit\Framework\Except public function __construct() { parent::__construct( - 'The SOAP extension is required to generate a test double from WSDL' + 'The SOAP extension is required to generate a test double from WSDL', ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php index e124f9b1..b08dead0 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php @@ -21,8 +21,8 @@ public function __construct(string $className) parent::__construct( sprintf( 'Class "%s" does not exist', - $className - ) + $className, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php index 90fc8d84..c689dae9 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php @@ -21,8 +21,8 @@ public function __construct(string $traitName) parent::__construct( sprintf( 'Trait "%s" does not exist', - $traitName - ) + $traitName, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php index b1a70edd..c50b6911 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php @@ -21,8 +21,8 @@ public function __construct(string $type) parent::__construct( sprintf( 'Class or interface "%s" does not exist', - $type - ) + $type, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator.php index f0f215c0..e4592daf 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator.php @@ -119,7 +119,7 @@ public function getMock(string $type, ?array $methods = [], array $arguments = [ $callOriginalClone, $callAutoload, $cloneArguments, - $callOriginalMethods + $callOriginalMethods, ); $object = $this->getObject( @@ -129,7 +129,7 @@ public function getMock(string $type, ?array $methods = [], array $arguments = [ $arguments, $callOriginalMethods, $proxyTarget, - $returnValueGeneration + $returnValueGeneration, ); assert($object instanceof MockObject); @@ -180,7 +180,7 @@ public function getMockForInterfaces(array $interfaces, bool $callAutoload = tru $intersectionName = sprintf( 'Intersection_%s_%s', implode('_', $unqualifiedNames), - substr(md5((string) mt_rand()), 0, 8) + substr(md5((string) mt_rand()), 0, 8), ); } while (interface_exists($intersectionName, false)); @@ -190,7 +190,7 @@ public function getMockForInterfaces(array $interfaces, bool $callAutoload = tru [ 'intersection' => $intersectionName, 'interfaces' => implode(', ', $interfaces), - ] + ], ); eval($template->render()); @@ -233,7 +233,7 @@ interface_exists($originalClassName, $callAutoload)) { throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -257,7 +257,7 @@ interface_exists($originalClassName, $callAutoload)) { $callOriginalConstructor, $callOriginalClone, $callAutoload, - $cloneArguments + $cloneArguments, ); } @@ -294,7 +294,7 @@ public function getMockForTrait(string $traitName, array $arguments = [], string $className = $this->generateClassName( $traitName, '', - 'Trait_' + 'Trait_', ); $classTemplate = $this->loadTemplate('trait_class.tpl'); @@ -304,7 +304,7 @@ public function getMockForTrait(string $traitName, array $arguments = [], string 'prologue' => 'abstract ', 'class_name' => $className['className'], 'trait_name' => $traitName, - ] + ], ); $mockTrait = new MockTrait($classTemplate->render(), $className['className']); @@ -331,7 +331,7 @@ public function getObjectForTrait(string $traitName, string $traitClassName = '' $className = $this->generateClassName( $traitName, $traitClassName, - 'Trait_' + 'Trait_', ); $classTemplate = $this->loadTemplate('trait_class.tpl'); @@ -341,17 +341,17 @@ public function getObjectForTrait(string $traitName, string $traitClassName = '' 'prologue' => '', 'class_name' => $className['className'], 'trait_name' => $traitName, - ] + ], ); return $this->getObject( new MockTrait( $classTemplate->render(), - $className['className'] + $className['className'], ), '', $callOriginalConstructor, - $arguments + $arguments, ); } @@ -372,7 +372,7 @@ public function generate(string $type, array $methods = null, string $mockClassN $callOriginalClone, $callAutoload, $cloneArguments, - $callOriginalMethods + $callOriginalMethods, ); } @@ -381,7 +381,7 @@ public function generate(string $type, array $methods = null, string $mockClassN serialize($methods) . serialize($callOriginalClone) . serialize($cloneArguments) . - serialize($callOriginalMethods) + serialize($callOriginalMethods), ); if (!isset(self::$cache[$key])) { @@ -392,7 +392,7 @@ public function generate(string $type, array $methods = null, string $mockClassN $callOriginalClone, $callAutoload, $cloneArguments, - $callOriginalMethods + $callOriginalMethods, ); } @@ -419,7 +419,7 @@ public function generateClassFromWsdl(string $wsdlFile, string $className, array throw new RuntimeException( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -438,7 +438,7 @@ public function generateClassFromWsdl(string $wsdlFile, string $className, array if (empty($methods) || in_array($name, $methods, true)) { $arguments = explode( ',', - str_replace(')', '', substr($method, $nameEnd + 1)) + str_replace(')', '', substr($method, $nameEnd + 1)), ); foreach (range(0, count($arguments) - 1) as $i) { @@ -455,7 +455,7 @@ public function generateClassFromWsdl(string $wsdlFile, string $className, array [ 'method_name' => $name, 'arguments' => implode(', ', $arguments), - ] + ], ); $methodsBuffer .= $methodTemplate->render(); @@ -486,7 +486,7 @@ public function generateClassFromWsdl(string $wsdlFile, string $className, array 'wsdl' => $wsdlFile, 'options' => $optionsBuffer, 'methods' => $methodsBuffer, - ] + ], ); return $classTemplate->render(); @@ -505,7 +505,7 @@ public function getClassMethods(string $className): array throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -533,7 +533,7 @@ public function mockClassMethods(string $className, bool $callOriginalMethods, b throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -561,7 +561,7 @@ public function mockInterfaceMethods(string $interfaceName, bool $cloneArguments throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -589,7 +589,7 @@ private function userDefinedInterfaceMethods(string $interfaceName): array throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -647,7 +647,7 @@ private function generateMock(string $type, ?array $explicitMethods, string $moc $_mockClassName = $this->generateClassName( $type, $mockClassName, - 'Mock_' + 'Mock_', ); if (class_exists($_mockClassName['fullClassName'], $callAutoload)) { @@ -675,7 +675,7 @@ private function generateMock(string $type, ?array $explicitMethods, string $moc throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -703,7 +703,7 @@ private function generateMock(string $type, ?array $explicitMethods, string $moc throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -719,14 +719,14 @@ private function generateMock(string $type, ?array $explicitMethods, string $moc } $mockMethods->addMethods( - MockMethod::fromReflection($method, $callOriginalMethods, $cloneArguments) + MockMethod::fromReflection($method, $callOriginalMethods, $cloneArguments), ); } $_mockClassName = $this->generateClassName( $actualClassName, $_mockClassName['className'], - 'Mock_' + 'Mock_', ); } @@ -737,7 +737,7 @@ private function generateMock(string $type, ?array $explicitMethods, string $moc $additionalInterfaces[] = Iterator::class; $mockMethods->addMethods( - ...$this->mockClassMethods(Iterator::class, $callOriginalMethods, $cloneArguments) + ...$this->mockClassMethods(Iterator::class, $callOriginalMethods, $cloneArguments), ); } @@ -758,13 +758,13 @@ private function generateMock(string $type, ?array $explicitMethods, string $moc if ($isClass && $explicitMethods === []) { $mockMethods->addMethods( - ...$this->mockClassMethods($_mockClassName['fullClassName'], $callOriginalMethods, $cloneArguments) + ...$this->mockClassMethods($_mockClassName['fullClassName'], $callOriginalMethods, $cloneArguments), ); } if ($isInterface && ($explicitMethods === [] || $explicitMethods === null)) { $mockMethods->addMethods( - ...$this->mockInterfaceMethods($_mockClassName['fullClassName'], $cloneArguments) + ...$this->mockInterfaceMethods($_mockClassName['fullClassName'], $cloneArguments), ); } @@ -775,7 +775,7 @@ private function generateMock(string $type, ?array $explicitMethods, string $moc if ($this->canMethodBeDoubled($method)) { $mockMethods->addMethods( - MockMethod::fromReflection($method, $callOriginalMethods, $cloneArguments) + MockMethod::fromReflection($method, $callOriginalMethods, $cloneArguments), ); } } else { @@ -783,8 +783,8 @@ private function generateMock(string $type, ?array $explicitMethods, string $moc MockMethod::fromName( $_mockClassName['fullClassName'], $methodName, - $cloneArguments - ) + $cloneArguments, + ), ); } } @@ -821,19 +821,19 @@ private function generateMock(string $type, ?array $explicitMethods, string $moc 'class_declaration' => $this->generateMockClassDeclaration( $_mockClassName, $isInterface, - $additionalInterfaces + $additionalInterfaces, ), 'clone' => $cloneTrait, 'mock_class_name' => $_mockClassName['className'], 'mocked_methods' => $mockedMethods, 'method' => $method, - ] + ], ); return new MockClass( $classTemplate->render(), $_mockClassName['className'], - $configurable + $configurable, ); } @@ -880,7 +880,7 @@ private function generateMockClassDeclaration(array $mockClassName, bool $isInte $buffer .= sprintf( '%s implements %s', $mockClassName['className'], - $interfaces + $interfaces, ); if (!in_array($mockClassName['originalClassName'], $additionalInterfaces, true)) { @@ -898,7 +898,7 @@ private function generateMockClassDeclaration(array $mockClassName, bool $isInte $mockClassName['className'], !empty($mockClassName['namespaceName']) ? $mockClassName['namespaceName'] . '\\' : '', $mockClassName['originalClassName'], - $interfaces + $interfaces, ); } @@ -973,7 +973,7 @@ private function ensureMockedClassDoesNotAlreadyExist(string $mockClassName): vo throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -1001,7 +1001,7 @@ private function instantiate(string $className, bool $callOriginalConstructor, a throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } } @@ -1012,7 +1012,7 @@ private function instantiate(string $className, bool $callOriginalConstructor, a throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } } @@ -1038,7 +1038,7 @@ private function instantiateProxyTarget(?object $proxyTarget, object $object, st throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Invocation.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Invocation.php index 50e4c86f..19e76691 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Invocation.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Invocation.php @@ -154,7 +154,7 @@ public function generateReturnValue(): mixed throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } } @@ -192,7 +192,7 @@ public function generateReturnValue(): mixed throw new RuntimeException( $t->getMessage(), (int) $t->getCode(), - $t + $t, ); } } @@ -227,8 +227,8 @@ public function generateReturnValue(): mixed 'Return value for %s::%s() cannot be generated%s, please configure a return value for this method', $this->className, $this->methodName, - $reason - ) + $reason, + ), ); } @@ -244,10 +244,10 @@ public function toString(): string ', ', array_map( [$exporter, 'shortenedExport'], - $this->parameters - ) + $this->parameters, + ), ), - $this->returnType ? sprintf(': %s', $this->returnType) : '' + $this->returnType ? sprintf(': %s', $this->returnType) : '', ); } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php b/vendor/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php index 2c4c5a86..0adcbdff 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php @@ -88,7 +88,7 @@ public function expects(InvocationOrder $rule): InvocationMocker return new InvocationMocker( $this, $matcher, - ...$this->configurableMethods + ...$this->configurableMethods, ); } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Matcher.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Matcher.php index 55763024..4475d764 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Matcher.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Matcher.php @@ -94,8 +94,8 @@ public function invoked(Invocation $invocation): mixed if ($this->afterMatchBuilderId !== null) { $matcher = $invocation->object() - ->__phpunit_getInvocationHandler() - ->lookupMatcher($this->afterMatchBuilderId); + ->__phpunit_getInvocationHandler() + ->lookupMatcher($this->afterMatchBuilderId); if (!$matcher) { throw new MatchBuilderNotFoundException($this->afterMatchBuilderId); @@ -112,9 +112,9 @@ public function invoked(Invocation $invocation): mixed "Expectation failed for %s when %s\n%s", $this->methodNameRule->toString(), $this->invocationRule->toString(), - $e->getMessage() + $e->getMessage(), ), - $e->getComparisonFailure() + $e->getComparisonFailure(), ); } @@ -135,8 +135,8 @@ public function matches(Invocation $invocation): bool { if ($this->afterMatchBuilderId !== null) { $matcher = $invocation->object() - ->__phpunit_getInvocationHandler() - ->lookupMatcher($this->afterMatchBuilderId); + ->__phpunit_getInvocationHandler() + ->lookupMatcher($this->afterMatchBuilderId); if (!$matcher) { throw new MatchBuilderNotFoundException($this->afterMatchBuilderId); @@ -167,9 +167,9 @@ public function matches(Invocation $invocation): bool "Expectation failed for %s when %s\n%s", $this->methodNameRule->toString(), $this->invocationRule->toString(), - $e->getMessage() + $e->getMessage(), ), - $e->getComparisonFailure() + $e->getComparisonFailure(), ); } @@ -206,8 +206,8 @@ public function verify(): void "Expectation failed for %s when %s.\n%s", $this->methodNameRule->toString(), $this->invocationRule->toString(), - ThrowableToStringMapper::map($e) - ) + ThrowableToStringMapper::map($e), + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php index 47da874b..88735a92 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php @@ -30,7 +30,7 @@ public function toString(): string { return sprintf( 'is "%s"', - $this->methodName + $this->methodName, ); } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php index 29d6211b..7891d5b3 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php @@ -77,7 +77,7 @@ public function getMock(bool $register = true): MockObject $this->callOriginalMethods, $this->proxyTarget, $this->allowMockingUnknownTypes, - $this->returnValueGeneration + $this->returnValueGeneration, ); if ($register) { @@ -108,7 +108,7 @@ public function getMockForAbstractClass(): MockObject $this->originalClone, $this->autoload, $this->methods, - $this->cloneArguments + $this->cloneArguments, ); $this->testCase->registerMockObject($object); @@ -137,7 +137,7 @@ public function getMockForTrait(): MockObject $this->originalClone, $this->autoload, $this->methods, - $this->cloneArguments + $this->cloneArguments, ); $this->testCase->registerMockObject($object); @@ -169,7 +169,7 @@ public function onlyMethods(array $methods): self throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -211,7 +211,7 @@ public function addMethods(array $methods): self throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockClass.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockClass.php index 69a9c542..3bb3f04e 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/MockClass.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockClass.php @@ -53,7 +53,7 @@ public function generate(): string $this->mockName, '__phpunit_initConfigurableMethods', ], - ...$this->configurableMethods + ...$this->configurableMethods, ); } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethod.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethod.php index 2f4717e4..2855ea48 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethod.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethod.php @@ -90,7 +90,7 @@ public static function fromReflection(ReflectionMethod $method, bool $callOrigin $reference, $callOriginalMethod, $method->isStatic(), - $deprecation + $deprecation, ); } @@ -107,7 +107,7 @@ public static function fromName(string $fullClassName, string $methodName, bool '', false, false, - null + null, ); } @@ -141,12 +141,12 @@ public function generateCode(): string } elseif ($this->returnType->isNever() || $this->returnType->isVoid()) { $templateFile = sprintf( '%s_method_never_or_void.tpl', - $this->callOriginalMethod ? 'proxied' : 'mocked' + $this->callOriginalMethod ? 'proxied' : 'mocked', ); } else { $templateFile = sprintf( '%s_method.tpl', - $this->callOriginalMethod ? 'proxied' : 'mocked' + $this->callOriginalMethod ? 'proxied' : 'mocked', ); } @@ -159,7 +159,7 @@ public function generateCode(): string $deprecationTemplate->setVar( [ 'deprecation' => var_export($deprecation, true), - ] + ], ); $deprecation = $deprecationTemplate->render(); @@ -180,7 +180,7 @@ public function generateCode(): string 'reference' => $this->reference, 'clone_arguments' => $this->cloneArguments ? 'true' : 'false', 'deprecation' => $deprecation, - ] + ], ); return $template->render(); @@ -289,17 +289,17 @@ private static function exportDefaultValue(ReflectionParameter $parameter): stri substr( substr( $parameterAsString, - strpos($parameterAsString, ' ') + strlen(' ') + strpos($parameterAsString, ' ') + strlen(' '), ), 0, - -2 - ) + -2, + ), )[1]; } catch (\ReflectionException $e) { throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php index 757b7f73..852314c5 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php @@ -42,7 +42,7 @@ public function verify(): void if ($count < $this->requiredInvocations) { throw new ExpectationFailedException( 'Expected invocation at least ' . $this->requiredInvocations . - ' times but it occurred ' . $count . ' time(s).' + ' times but it occurred ' . $count . ' time(s).', ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php index 19e1cff5..efe51838 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php @@ -34,7 +34,7 @@ public function verify(): void if ($count < 1) { throw new ExpectationFailedException( - 'Expected invocation at least once but it never occurred.' + 'Expected invocation at least once but it never occurred.', ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php index 6000c0b1..4106d01c 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php @@ -42,7 +42,7 @@ public function verify(): void if ($count > $this->allowedInvocations) { throw new ExpectationFailedException( 'Expected invocation at most ' . $this->allowedInvocations . - ' times but it occurred ' . $count . ' time(s).' + ' times but it occurred ' . $count . ' time(s).', ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php index f80401a5..7ccc5105 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php @@ -56,8 +56,8 @@ public function verify(): void 'Method was expected to be called %d times, ' . 'actually called %d times.', $this->expectedCount, - $count - ) + $count, + ), ); } } @@ -77,7 +77,7 @@ protected function invokedDo(BaseInvocation $invocation): void 1 => 'was not expected to be called more than once.', default => sprintf( 'was not expected to be called more than %d times.', - $this->expectedCount + $this->expectedCount, ), }; diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php index 3761973c..65bac75b 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php @@ -38,7 +38,7 @@ public function __construct(array $parameters) foreach ($parameters as $parameter) { if (!($parameter instanceof Constraint)) { $parameter = new IsEqual( - $parameter + $parameter, ); } @@ -116,7 +116,7 @@ private function doVerify(): bool } throw new ExpectationFailedException( - sprintf($message, $this->invocation->toString()) + sprintf($message, $this->invocation->toString()), ); } @@ -127,8 +127,8 @@ private function doVerify(): bool 'Parameter %s for invocation %s does not match expected ' . 'value.', $i, - $this->invocation->toString() - ) + $this->invocation->toString(), + ), ); } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php index 164ebfa1..a946a217 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php @@ -44,7 +44,7 @@ public function toString(): string return sprintf( 'return user-specified value %s', - $exporter->export($this->value) + $exporter->export($this->value), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php index 228a4ae7..9204d234 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php @@ -40,7 +40,7 @@ public function toString(): string return sprintf( 'raise user-specified exception %s', - $exporter->export($this->exception) + $exporter->export($this->exception), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php index eb783c6a..6834b02c 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php @@ -51,7 +51,7 @@ public function toString(): string 'passed arguments', $class, $type, - $this->callback[1] + $this->callback[1], ); } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php index 45bab37e..d339fbcd 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php @@ -36,7 +36,7 @@ public function toString(): string return sprintf( 'return user-specified reference %s', - $exporter->export($this->reference) + $exporter->export($this->reference), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php index 01875436..c258247c 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php @@ -36,7 +36,7 @@ public function toString(): string return sprintf( 'return user-specified value %s', - $exporter->export($this->value) + $exporter->export($this->value), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/TestBuilder.php b/vendor/phpunit/phpunit/src/Framework/TestBuilder.php index e8bd7594..8e5e019d 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestBuilder.php +++ b/vendor/phpunit/phpunit/src/Framework/TestBuilder.php @@ -37,32 +37,32 @@ public function build(ReflectionClass $theClass, string $methodName): Test $data = (new DataProvider)->providedData( $className, - $methodName + $methodName, ); if ($data !== null) { - $test = $this->buildDataProviderTestSuite( + return $this->buildDataProviderTestSuite( $methodName, $className, $data, $this->shouldTestMethodBeRunInSeparateProcess($className, $methodName), $this->shouldGlobalStateBePreserved($className, $methodName), $this->shouldAllTestMethodsOfTestClassBeRunInSingleSeparateProcess($className), - $this->backupSettings($className, $methodName) + $this->backupSettings($className, $methodName), ); - } else { - $test = new $className($methodName); } - if ($test instanceof TestCase) { - $this->configureTestCase( - $test, - $this->shouldTestMethodBeRunInSeparateProcess($className, $methodName), - $this->shouldGlobalStateBePreserved($className, $methodName), - $this->shouldAllTestMethodsOfTestClassBeRunInSingleSeparateProcess($className), - $this->backupSettings($className, $methodName) - ); - } + $test = new $className($methodName); + + assert($test instanceof TestCase); + + $this->configureTestCase( + $test, + $this->shouldTestMethodBeRunInSeparateProcess($className, $methodName), + $this->shouldGlobalStateBePreserved($className, $methodName), + $this->shouldAllTestMethodsOfTestClassBeRunInSingleSeparateProcess($className), + $this->backupSettings($className, $methodName), + ); return $test; } @@ -75,7 +75,7 @@ public function build(ReflectionClass $theClass, string $methodName): Test private function buildDataProviderTestSuite(string $methodName, string $className, array $data, bool $runTestInSeparateProcess, ?bool $preserveGlobalState, bool $runClassInSeparateProcess, array $backupSettings): DataProviderTestSuite { $dataProviderTestSuite = DataProviderTestSuite::empty( - $className . '::' . $methodName + $className . '::' . $methodName, ); $groups = (new Groups)->groups($className, $methodName); @@ -92,7 +92,7 @@ private function buildDataProviderTestSuite(string $methodName, string $classNam $runTestInSeparateProcess, $preserveGlobalState, $runClassInSeparateProcess, - $backupSettings + $backupSettings, ); $dataProviderTestSuite->addTest($_test, $groups); diff --git a/vendor/phpunit/phpunit/src/Framework/TestCase.php b/vendor/phpunit/phpunit/src/Framework/TestCase.php index 1b0435ee..01940360 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestCase.php +++ b/vendor/phpunit/phpunit/src/Framework/TestCase.php @@ -215,7 +215,7 @@ final public static function never(): InvokedCountMatcher final public static function atLeast(int $requiredInvocations): InvokedAtLeastCountMatcher { return new InvokedAtLeastCountMatcher( - $requiredInvocations + $requiredInvocations, ); } @@ -363,7 +363,7 @@ public function toString(): string $buffer = sprintf( '%s::%s', (new ReflectionClass($this))->getName(), - $this->name + $this->name, ); return $buffer . $this->dataSetAsStringWithData(); @@ -470,7 +470,7 @@ final public function run(): void (new TestRunner)->runInSeparateProcess( $this, $this->runClassInSeparateProcess && !$this->runTestInSeparateProcess, - $this->preserveGlobalState + $this->preserveGlobalState, ); } } @@ -530,7 +530,7 @@ final public function size(): TestSize { return (new Groups)->size( static::class, - $this->name + $this->name, ); } @@ -596,7 +596,7 @@ final public function runBare(): void $emitter = Event\Facade::emitter(); $emitter->testPreparationStarted( - $this->valueObjectForEvents() + $this->valueObjectForEvents(), ); $this->snapshotGlobalState(); @@ -625,7 +625,7 @@ final public function runBare(): void $this->invokePreConditionHookMethods($hookMethods, $emitter); $emitter->testPrepared( - $this->valueObjectForEvents() + $this->valueObjectForEvents(), ); $this->wasPrepared = true; @@ -640,14 +640,14 @@ final public function runBare(): void $emitter->testMarkedAsIncomplete( $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($e) + Event\Code\ThrowableBuilder::from($e), ); } catch (SkippedTest $e) { $this->status = TestStatus::skipped($e->getMessage()); $emitter->testSkipped( $this->valueObjectForEvents(), - $e->getMessage() + $e->getMessage(), ); } catch (AssertionError|AssertionFailedError $e) { $this->status = TestStatus::failure($e->getMessage()); @@ -655,7 +655,7 @@ final public function runBare(): void $emitter->testFailed( $this->valueObjectForEvents(), Event\Code\ThrowableBuilder::from($e), - Event\Code\ComparisonFailureBuilder::from($e) + Event\Code\ComparisonFailureBuilder::from($e), ); } catch (TimeoutException $e) { $this->status = TestStatus::risky($e->getMessage()); @@ -666,7 +666,7 @@ final public function runBare(): void $emitter->testFailed( $this->valueObjectForEvents(), Event\Code\ThrowableBuilder::from($_e), - null + null, ); } else { $e = $this->transformException($_e); @@ -675,7 +675,7 @@ final public function runBare(): void $emitter->testErrored( $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($e) + Event\Code\ThrowableBuilder::from($e), ); } } @@ -692,7 +692,7 @@ final public function runBare(): void if (!$this->usesDataProvider()) { PassedTests::instance()->testMethodPassed( $this->valueObjectForEvents(), - $this->testResult + $this->testResult, ); } } @@ -716,7 +716,7 @@ final public function runBare(): void $emitter->testErrored( $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($exceptionRaisedDuringTearDown) + Event\Code\ThrowableBuilder::from($exceptionRaisedDuringTearDown), ); } } @@ -947,7 +947,7 @@ final public function dataSetAsStringWithData(): string return $this->dataSetAsString() . sprintf( ' (%s)', - (new Exporter)->shortenedRecursiveExport($this->data) + (new Exporter)->shortenedRecursiveExport($this->data), ); } @@ -1096,8 +1096,8 @@ protected function iniSet(string $varName, string $newValue): void sprintf( 'INI setting "%s" could not be set to "%s".', $varName, - $newValue - ) + $newValue, + ), ); } } @@ -1132,7 +1132,7 @@ protected function setLocale(mixed ...$arguments): void throw new Exception( 'The locale functionality is not implemented on your platform, ' . 'the specified locale does not exist or the category name is ' . - 'invalid.' + 'invalid.', ); } } @@ -1283,7 +1283,7 @@ protected function createPartialMock(string $originalClassName, array $methods): Event\Facade::emitter()->testCreatedPartialMockObject( $originalClassName, - ...$methods + ...$methods, ); return $partialMock; @@ -1312,7 +1312,7 @@ protected function createTestProxy(string $originalClassName, array $constructor Event\Facade::emitter()->testCreatedTestProxy( $originalClassName, - $constructorArguments + $constructorArguments, ); return $testProxy; @@ -1344,7 +1344,7 @@ protected function getMockForAbstractClass(string $originalClassName, array $arg $callOriginalClone, $callAutoload, $mockedMethods, - $cloneArguments + $cloneArguments, ); $this->registerMockObject($mockObject); @@ -1380,7 +1380,7 @@ protected function getMockFromWsdl(string $wsdlFile, string $originalClassName = $wsdlFile, $originalClassName, $methods, - $options + $options, ) ); } @@ -1392,7 +1392,7 @@ protected function getMockFromWsdl(string $wsdlFile, string $originalClassName = $mockClassName, $callOriginalConstructor, false, - false + false, ); Event\Facade::emitter()->testCreatedMockObjectFromWsdl( @@ -1401,7 +1401,7 @@ protected function getMockFromWsdl(string $wsdlFile, string $originalClassName = $mockClassName, $methods, $callOriginalConstructor, - $options + $options, ); $this->registerMockObject($mockObject); @@ -1431,7 +1431,7 @@ protected function getMockForTrait(string $traitName, array $arguments = [], str $callOriginalClone, $callAutoload, $mockedMethods, - $cloneArguments + $cloneArguments, ); $this->registerMockObject($mockObject); @@ -1457,7 +1457,7 @@ protected function getObjectForTrait(string $traitName, array $arguments = [], s $traitClassName, $callAutoload, $callOriginalConstructor, - $arguments + $arguments, ); } @@ -1487,7 +1487,7 @@ private function verifyMockObjects(): void } $mockObject->__phpunit_verify( - $this->shouldInvocationMockerBeReset($mockObject) + $this->shouldInvocationMockerBeReset($mockObject), ); } } @@ -1503,7 +1503,7 @@ private function checkRequirements(): void $missingRequirements = (new Requirements)->requirementsNotSatisfiedFor( static::class, - $this->name + $this->name, ); if (!empty($missingRequirements)) { @@ -1559,7 +1559,7 @@ private function handleDependencies(): bool if ($passedTests->isGreaterThan($dependencyTarget, $this->size())) { Event\Facade::emitter()->testConsideredRisky( $this->valueObjectForEvents(), - 'This test depends on a test that is larger than itself' + 'This test depends on a test that is larger than itself', ); return false; @@ -1596,7 +1596,7 @@ private function markErrorForInvalidDependency(?ExecutionOrderDependency $depend if ($dependency !== null) { $message = sprintf( 'This test depends on "%s" which does not exist', - $dependency->targetIsClass() ? $dependency->getTargetClassName() : $dependency->getTarget() + $dependency->targetIsClass() ? $dependency->getTargetClassName() : $dependency->getTarget(), ); } @@ -1604,7 +1604,7 @@ private function markErrorForInvalidDependency(?ExecutionOrderDependency $depend Event\Facade::emitter()->testErrored( $this->valueObjectForEvents(), - Event\Code\ThrowableBuilder::from($exception) + Event\Code\ThrowableBuilder::from($exception), ); $this->status = TestStatus::error($message); @@ -1617,12 +1617,12 @@ private function markSkippedForMissingDependency(ExecutionOrderDependency $depen { $message = sprintf( 'This test depends on "%s" to pass', - $dependency->getTarget() + $dependency->getTarget(), ); Event\Facade::emitter()->testSkipped( $this->valueObjectForEvents(), - $message + $message, ); $this->status = TestStatus::skipped($message); @@ -1665,7 +1665,7 @@ private function stopOutputBuffering(): bool Event\Facade::emitter()->testConsideredRisky( $this->valueObjectForEvents(), - $message + $message, ); $this->status = TestStatus::risky($message); @@ -1705,7 +1705,7 @@ private function restoreGlobalState(): void if (ConfigurationRegistry::get()->beStrictAboutChangesToGlobalState()) { $this->compareGlobalStateSnapshots( $this->snapshot, - $this->createGlobalStateSnapshot($this->backupGlobals === true) + $this->createGlobalStateSnapshot($this->backupGlobals === true), ); } @@ -1756,7 +1756,7 @@ private function createGlobalStateSnapshot(bool $backupGlobals): Snapshot false, false, false, - false + false, ); } @@ -1771,13 +1771,13 @@ private function compareGlobalStateSnapshots(Snapshot $before, Snapshot $after): $this->compareGlobalStateSnapshotPart( $before->globalVariables(), $after->globalVariables(), - "--- Global variables before the test\n+++ Global variables after the test\n" + "--- Global variables before the test\n+++ Global variables after the test\n", ); $this->compareGlobalStateSnapshotPart( $before->superGlobalVariables(), $after->superGlobalVariables(), - "--- Super-global variables before the test\n+++ Super-global variables after the test\n" + "--- Super-global variables before the test\n+++ Super-global variables after the test\n", ); } @@ -1785,7 +1785,7 @@ private function compareGlobalStateSnapshots(Snapshot $before, Snapshot $after): $this->compareGlobalStateSnapshotPart( $before->staticProperties(), $after->staticProperties(), - "--- Static properties before the test\n+++ Static properties after the test\n" + "--- Static properties before the test\n+++ Static properties after the test\n", ); } } @@ -1805,9 +1805,9 @@ private function compareGlobalStateSnapshotPart(array $before, array $after, str trim( $differ->diff( $exporter->export($before), - $exporter->export($after) - ) - ) + $exporter->export($after), + ), + ), ); } } @@ -1846,7 +1846,7 @@ private function registerMockObjectsFromTestArguments(array $testArguments, Cont $this->registerMockObjectsFromTestArguments( $testArgument, - $context + $context, ); } } @@ -1904,7 +1904,7 @@ private function shouldExceptionExpectationsBeVerified(Throwable $throwable): bo throw new Exception( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -1954,7 +1954,7 @@ private function isCallableTestMethod(string $dependency): bool } return TestUtil::isTestMethod( - $class->getMethod($methodName) + $class->getMethod($methodName), ); } @@ -1976,7 +1976,7 @@ private function createTestDouble(string $originalClassName, bool $register = tr callOriginalConstructor: false, callOriginalClone: false, cloneArguments: false, - allowMockingUnknownTypes: false + allowMockingUnknownTypes: false, ); if ($register) { @@ -2006,7 +2006,7 @@ private function performAssertionsOnOutput(): void Event\Facade::emitter()->testFailed( $this->valueObjectForEvents(), Event\Code\ThrowableBuilder::from($e), - Event\Code\ComparisonFailureBuilder::from($e) + Event\Code\ComparisonFailureBuilder::from($e), ); throw $e; @@ -2022,7 +2022,7 @@ private function invokeBeforeClassHookMethods(array $hookMethods, Event\Emitter $hookMethods['beforeClass'], $emitter, 'testBeforeFirstTestMethodCalled', - 'testBeforeFirstTestMethodFinished' + 'testBeforeFirstTestMethodFinished', ); } @@ -2035,7 +2035,7 @@ private function invokeBeforeTestHookMethods(array $hookMethods, Event\Emitter $ $hookMethods['before'], $emitter, 'testBeforeTestMethodCalled', - 'testBeforeTestMethodFinished' + 'testBeforeTestMethodFinished', ); } @@ -2048,7 +2048,7 @@ private function invokePreConditionHookMethods(array $hookMethods, Event\Emitter $hookMethods['preCondition'], $emitter, 'testPreConditionCalled', - 'testPreConditionFinished' + 'testPreConditionFinished', ); } @@ -2061,7 +2061,7 @@ private function invokePostConditionHookMethods(array $hookMethods, Event\Emitte $hookMethods['postCondition'], $emitter, 'testPostConditionCalled', - 'testPostConditionFinished' + 'testPostConditionFinished', ); } @@ -2074,7 +2074,7 @@ private function invokeAfterTestHookMethods(array $hookMethods, Event\Emitter $e $hookMethods['after'], $emitter, 'testAfterTestMethodCalled', - 'testAfterTestMethodFinished' + 'testAfterTestMethodFinished', ); } @@ -2087,7 +2087,7 @@ private function invokeAfterClassHookMethods(array $hookMethods, Event\Emitter $ $hookMethods['afterClass'], $emitter, 'testAfterLastTestMethodCalled', - 'testAfterLastTestMethodFinished' + 'testAfterLastTestMethodFinished', ); } @@ -2114,7 +2114,7 @@ private function invokeHookMethods(array $hookMethods, Event\Emitter $emitter, s $methodInvoked = new Event\Code\ClassMethod( static::class, - $methodName + $methodName, ); $emitter->{$calledMethod}( @@ -2152,14 +2152,14 @@ private function methodDoesNotExistOrIsDeclaredInTestCase(string $methodName): b /** * @throws ExpectationFailedException */ - private function verifyExceptionExpectations(Throwable|\Exception $exception): void + private function verifyExceptionExpectations(\Exception|Throwable $exception): void { if ($this->expectedException !== null) { $this->assertThat( $exception, new ExceptionConstraint( - $this->expectedException - ) + $this->expectedException, + ), ); } @@ -2167,8 +2167,8 @@ private function verifyExceptionExpectations(Throwable|\Exception $exception): v $this->assertThat( $exception->getMessage(), new ExceptionMessageIsOrContains( - $this->expectedExceptionMessage - ) + $this->expectedExceptionMessage, + ), ); } @@ -2176,8 +2176,8 @@ private function verifyExceptionExpectations(Throwable|\Exception $exception): v $this->assertThat( $exception->getMessage(), new ExceptionMessageMatchesRegularExpression( - $this->expectedExceptionMessageRegExp - ) + $this->expectedExceptionMessageRegExp, + ), ); } @@ -2185,8 +2185,8 @@ private function verifyExceptionExpectations(Throwable|\Exception $exception): v $this->assertThat( $exception->getCode(), new ExceptionCode( - $this->expectedExceptionCode - ) + $this->expectedExceptionCode, + ), ); } } @@ -2199,7 +2199,7 @@ private function expectedExceptionWasNotRaised(): void if ($this->expectedException !== null) { $this->assertThat( null, - new ExceptionConstraint($this->expectedException) + new ExceptionConstraint($this->expectedException), ); } elseif ($this->expectedExceptionMessage !== null) { $this->numberOfAssertionsPerformed++; @@ -2207,8 +2207,8 @@ private function expectedExceptionWasNotRaised(): void throw new AssertionFailedError( sprintf( 'Failed asserting that exception with message "%s" is thrown', - $this->expectedExceptionMessage - ) + $this->expectedExceptionMessage, + ), ); } elseif ($this->expectedExceptionMessageRegExp !== null) { $this->numberOfAssertionsPerformed++; @@ -2216,8 +2216,8 @@ private function expectedExceptionWasNotRaised(): void throw new AssertionFailedError( sprintf( 'Failed asserting that exception with message matching "%s" is thrown', - $this->expectedExceptionMessageRegExp - ) + $this->expectedExceptionMessageRegExp, + ), ); } elseif ($this->expectedExceptionCode !== null) { $this->numberOfAssertionsPerformed++; @@ -2225,8 +2225,8 @@ private function expectedExceptionWasNotRaised(): void throw new AssertionFailedError( sprintf( 'Failed asserting that exception with code "%s" is thrown', - $this->expectedExceptionCode - ) + $this->expectedExceptionCode, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/TestRunner.php b/vendor/phpunit/phpunit/src/Framework/TestRunner.php index ef1d8c1d..49d51cce 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestRunner.php +++ b/vendor/phpunit/phpunit/src/Framework/TestRunner.php @@ -75,7 +75,7 @@ public function run(TestCase $test): void $shouldCodeCoverageBeCollected = (new CodeCoverageMetadataApi)->shouldCodeCoverageBeCollectedFor( $test::class, - $test->name() + $test->name(), ); $error = false; @@ -122,8 +122,8 @@ public function run(TestCase $test): void '%s in %s:%s', $e->getMessage(), $frame['file'], - $frame['line'] - ) + $frame['line'], + ), ); } catch (Throwable $e) { $error = true; @@ -142,7 +142,7 @@ public function run(TestCase $test): void !$this->hasCoverageMetadata($test::class, $test->name())) { Event\Facade::emitter()->testConsideredRisky( $test->valueObjectForEvents(), - 'This test does not define a code coverage target but is expected to do so' + 'This test does not define a code coverage target but is expected to do so', ); $risky = true; @@ -157,17 +157,17 @@ public function run(TestCase $test): void try { $linesToBeCovered = (new CodeCoverageMetadataApi)->linesToBeCovered( $test::class, - $test->name() + $test->name(), ); $linesToBeUsed = (new CodeCoverageMetadataApi)->linesToBeUsed( $test::class, - $test->name() + $test->name(), ); } catch (InvalidCoversTargetException $cce) { Event\Facade::emitter()->testTriggeredPhpunitWarning( $test->valueObjectForEvents(), - $cce->getMessage() + $cce->getMessage(), ); } } @@ -183,7 +183,7 @@ public function run(TestCase $test): void $test->valueObjectForEvents(), 'This test executed code that is not listed as code to be covered or used:' . PHP_EOL . - $cce->getMessage() + $cce->getMessage(), ); } catch (OriginalCodeCoverageException $cce) { $error = true; @@ -201,7 +201,7 @@ public function run(TestCase $test): void $test->numberOfAssertionsPerformed() === 0) { Event\Facade::emitter()->testConsideredRisky( $test->valueObjectForEvents(), - 'This test did not perform any assertions' + 'This test did not perform any assertions', ); } @@ -211,8 +211,8 @@ public function run(TestCase $test): void $test->valueObjectForEvents(), sprintf( 'This test is not expected to perform assertions but performed %d assertions', - $test->numberOfAssertionsPerformed() - ) + $test->numberOfAssertionsPerformed(), + ), ); } @@ -225,15 +225,15 @@ public function run(TestCase $test): void $test->valueObjectForEvents(), sprintf( 'This test printed output: %s', - $test->output() - ) + $test->output(), + ), ); } if ($test->wasPrepared()) { Event\Facade::emitter()->testFinished( $test->valueObjectForEvents(), - $test->numberOfAssertionsPerformed() + $test->numberOfAssertionsPerformed(), ); } } @@ -254,11 +254,11 @@ public function runInSeparateProcess(TestCase $test, bool $runEntireClass, bool if ($runEntireClass) { $template = new Template( - __DIR__ . '/../Util/PHP/Template/TestCaseClass.tpl' + __DIR__ . '/../Util/PHP/Template/TestCaseClass.tpl', ); } else { $template = new Template( - __DIR__ . '/../Util/PHP/Template/TestCaseMethod.tpl' + __DIR__ . '/../Util/PHP/Template/TestCaseMethod.tpl', ); } @@ -425,8 +425,8 @@ private function runTestWithTimeout(TestCase $test): bool sprintf( 'This test was aborted after %d second%s', $_timeout, - $_timeout !== 1 ? 's' : '' - ) + $_timeout !== 1 ? 's' : '', + ), ); return true; diff --git a/vendor/phpunit/phpunit/src/Framework/TestSuite.php b/vendor/phpunit/phpunit/src/Framework/TestSuite.php index b971f220..15a144cf 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestSuite.php +++ b/vendor/phpunit/phpunit/src/Framework/TestSuite.php @@ -39,7 +39,6 @@ use PHPUnit\Runner\PhptTestCase; use PHPUnit\Runner\TestSuiteLoader; use PHPUnit\TestRunner\TestResult\Facade as TestResultFacade; -use PHPUnit\TextUI\Configuration\Registry; use PHPUnit\Util\Filter; use PHPUnit\Util\Reflection; use PHPUnit\Util\Test as TestUtil; @@ -55,13 +54,16 @@ */ class TestSuite implements IteratorAggregate, Reorderable, SelfDescribing, Test { - protected string $name = ''; + /** + * @psalm-var non-empty-string + */ + private string $name; /** * @psalm-var array> */ - protected array $groups = []; - protected ?array $requiredTests = null; + private array $groups = []; + private ?array $requiredTests = null; /** * @psalm-var list @@ -69,22 +71,12 @@ class TestSuite implements IteratorAggregate, Reorderable, SelfDescribing, Test private array $tests = []; private ?array $providedTests = null; private ?Factory $iteratorFilter = null; - private readonly bool $stopOnDefect; - private readonly bool $stopOnDeprecation; - private readonly bool $stopOnError; - private readonly bool $stopOnFailure; - private readonly bool $stopOnIncomplete; - private readonly bool $stopOnNotice; - private readonly bool $stopOnRisky; - private readonly bool $stopOnSkipped; - private readonly bool $stopOnWarning; - - public static function empty(string $name = null): static - { - if ($name === null) { - $name = ''; - } + /** + * @psalm-param non-empty-string $name + */ + public static function empty(string $name): static + { return new static($name); } @@ -110,8 +102,8 @@ public static function fromClassReflector(ReflectionClass $class): static Event\Facade::emitter()->testRunnerTriggeredWarning( sprintf( 'Class "%s" has no public constructor.', - $class->getName() - ) + $class->getName(), + ), ); return $testSuite; @@ -137,29 +129,20 @@ public static function fromClassReflector(ReflectionClass $class): static Event\Facade::emitter()->testRunnerTriggeredWarning( sprintf( 'No tests found in class "%s".', - $class->getName() - ) + $class->getName(), + ), ); } return $testSuite; } + /** + * @psalm-param non-empty-string $name + */ final private function __construct(string $name) { $this->name = $name; - - $configuration = Registry::get(); - - $this->stopOnDeprecation = $configuration->stopOnDeprecation(); - $this->stopOnDefect = $configuration->stopOnDefect(); - $this->stopOnError = $configuration->stopOnError(); - $this->stopOnFailure = $configuration->stopOnFailure(); - $this->stopOnIncomplete = $configuration->stopOnIncomplete(); - $this->stopOnNotice = $configuration->stopOnNotice(); - $this->stopOnRisky = $configuration->stopOnRisky(); - $this->stopOnSkipped = $configuration->stopOnSkipped(); - $this->stopOnWarning = $configuration->stopOnWarning(); } /** @@ -167,7 +150,7 @@ final private function __construct(string $name) */ public function toString(): string { - return $this->getName(); + return $this->name(); } /** @@ -182,7 +165,7 @@ public function addTest(Test $test, array $groups = []): void $this->clearCaches(); if ($test instanceof self && empty($groups)) { - $groups = $test->getGroups(); + $groups = $test->groups(); } if ($this->containsOnlyVirtualGroups($groups)) { @@ -214,8 +197,8 @@ public function addTestSuite(ReflectionClass $testClass): void throw new Exception( sprintf( 'Class %s is abstract', - $testClass->getName() - ) + $testClass->getName(), + ), ); } @@ -224,8 +207,8 @@ public function addTestSuite(ReflectionClass $testClass): void sprintf( 'Class %s is not a subclass of %s', $testClass->getName(), - TestCase::class - ) + TestCase::class, + ), ); } @@ -249,7 +232,7 @@ public function addTestFile(string $filename): void $this->addTest(new PhptTestCase($filename)); } catch (RunnerException $e) { Event\Facade::emitter()->testRunnerTriggeredWarning( - $e->getMessage() + $e->getMessage(), ); } @@ -258,11 +241,11 @@ public function addTestFile(string $filename): void try { $this->addTestSuite( - (new TestSuiteLoader)->load($filename) + (new TestSuiteLoader)->load($filename), ); } catch (RunnerException $e) { Event\Facade::emitter()->testRunnerTriggeredWarning( - $e->getMessage() + $e->getMessage(), ); } } @@ -299,9 +282,9 @@ public function isEmpty(): bool } /** - * Returns the name of the suite. + * @psalm-return non-empty-string */ - public function getName(): string + public function name(): string { return $this->name; } @@ -311,15 +294,15 @@ public function getName(): string * * @psalm-return list */ - public function getGroups(): array + public function groups(): array { return array_map( 'strval', - array_keys($this->groups) + array_keys($this->groups), ); } - public function getGroupDetails(): array + public function groupDetails(): array { return $this->groups; } @@ -456,7 +439,7 @@ public function requires(): array $this->requiredTests = ExecutionOrderDependency::mergeUnique( ExecutionOrderDependency::filterInvalid($this->requiredTests), - $test->requires() + $test->requires(), ); } @@ -468,7 +451,7 @@ public function requires(): array public function sortId(): string { - return $this->getName() . '::class'; + return $this->name() . '::class'; } /** @@ -501,17 +484,17 @@ protected function addTestMethod(ReflectionClass $class, ReflectionMethod $metho $method->getStartLine(), Event\Code\TestDoxBuilder::fromClassNameAndMethodName( $className, - $methodName + $methodName, ), MetadataCollection::fromArray([]), - Event\TestData\TestDataCollection::fromArray([]) + Event\TestData\TestDataCollection::fromArray([]), ), sprintf( "The data provider specified for %s::%s is invalid\n%s", $className, $methodName, - $this->throwableToString($e) - ) + $this->throwableToString($e), + ), ); return; @@ -519,13 +502,13 @@ protected function addTestMethod(ReflectionClass $class, ReflectionMethod $metho if ($test instanceof TestCase || $test instanceof DataProviderTestSuite) { $test->setDependencies( - Dependencies::dependencies($class->getName(), $methodName) + Dependencies::dependencies($class->getName(), $methodName), ); } $this->addTest( $test, - (new Groups)->groups($class->getName(), $methodName) + (new Groups)->groups($class->getName(), $methodName), ); } @@ -569,7 +552,7 @@ private function throwableToString(Throwable $t): string return sprintf( "%s\n%s", $message, - Filter::getFilteredStacktrace($t) + Filter::getFilteredStacktrace($t), ); } @@ -577,7 +560,7 @@ private function throwableToString(Throwable $t): string "%s: %s\n%s", $t::class, $message, - Filter::getFilteredStacktrace($t) + Filter::getFilteredStacktrace($t), ); } @@ -607,22 +590,22 @@ private function invokeMethodsBeforeFirstTest(Event\Emitter $emitter, Event\Test $methodCalledBeforeFirstTest = new Event\Code\ClassMethod( $this->name, - $beforeClassMethod + $beforeClassMethod, ); $emitter->testBeforeFirstTestMethodCalled( $this->name, - $methodCalledBeforeFirstTest + $methodCalledBeforeFirstTest, ); $methodsCalledBeforeFirstTest[] = $methodCalledBeforeFirstTest; call_user_func([$this->name, $beforeClassMethod]); } - } catch (SkippedTestSuiteError|SkippedTest $e) { + } catch (SkippedTest|SkippedTestSuiteError $e) { $emitter->testSuiteSkipped( $testSuiteValueObjectForEvents, - $e->getMessage() + $e->getMessage(), ); return false; @@ -632,13 +615,13 @@ private function invokeMethodsBeforeFirstTest(Event\Emitter $emitter, Event\Test $emitter->testBeforeFirstTestMethodErrored( $this->name, $methodCalledBeforeFirstTest, - Event\Code\ThrowableBuilder::from($t) + Event\Code\ThrowableBuilder::from($t), ); if (!empty($methodsCalledBeforeFirstTest)) { $emitter->testBeforeFirstTestMethodFinished( $this->name, - ...$methodsCalledBeforeFirstTest + ...$methodsCalledBeforeFirstTest, ); } @@ -648,7 +631,7 @@ private function invokeMethodsBeforeFirstTest(Event\Emitter $emitter, Event\Test if (!empty($methodsCalledBeforeFirstTest)) { $emitter->testBeforeFirstTestMethodFinished( $this->name, - ...$methodsCalledBeforeFirstTest + ...$methodsCalledBeforeFirstTest, ); } @@ -675,12 +658,12 @@ private function invokeMethodsAfterLastTest(Event\Emitter $emitter): void $methodCalledAfterLastTest = new Event\Code\ClassMethod( $this->name, - $afterClassMethod + $afterClassMethod, ); $emitter->testAfterLastTestMethodCalled( $this->name, - $methodCalledAfterLastTest + $methodCalledAfterLastTest, ); $methodsCalledAfterLastTest[] = $methodCalledAfterLastTest; @@ -692,7 +675,7 @@ private function invokeMethodsAfterLastTest(Event\Emitter $emitter): void if (!empty($methodsCalledAfterLastTest)) { $emitter->testAfterLastTestMethodFinished( $this->name, - ...$methodsCalledAfterLastTest + ...$methodsCalledAfterLastTest, ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php b/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php index 5b783ba3..32ee7c6d 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php +++ b/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php @@ -64,7 +64,7 @@ public function getChildren(): self { if (!$this->hasChildren()) { throw new NoChildTestSuiteException( - 'The current item is not a TestSuite instance and therefore does not have any children.' + 'The current item is not a TestSuite instance and therefore does not have any children.', ); } diff --git a/vendor/phpunit/phpunit/src/Logging/EventLogger.php b/vendor/phpunit/phpunit/src/Logging/EventLogger.php index 786907d7..559fb5ec 100644 --- a/vendor/phpunit/phpunit/src/Logging/EventLogger.php +++ b/vendor/phpunit/phpunit/src/Logging/EventLogger.php @@ -43,7 +43,7 @@ public function trace(Event $event): void file_put_contents( $this->path, $telemetryInfo . implode($indentation, $lines) . PHP_EOL, - FILE_APPEND | LOCK_EX + FILE_APPEND | LOCK_EX, ); } diff --git a/vendor/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php b/vendor/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php index 8a4171c8..6c79a7a9 100644 --- a/vendor/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php +++ b/vendor/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php @@ -132,32 +132,32 @@ public function testSuiteFinished(): void { $this->testSuites[$this->testSuiteLevel]->setAttribute( 'tests', - (string) $this->testSuiteTests[$this->testSuiteLevel] + (string) $this->testSuiteTests[$this->testSuiteLevel], ); $this->testSuites[$this->testSuiteLevel]->setAttribute( 'assertions', - (string) $this->testSuiteAssertions[$this->testSuiteLevel] + (string) $this->testSuiteAssertions[$this->testSuiteLevel], ); $this->testSuites[$this->testSuiteLevel]->setAttribute( 'errors', - (string) $this->testSuiteErrors[$this->testSuiteLevel] + (string) $this->testSuiteErrors[$this->testSuiteLevel], ); $this->testSuites[$this->testSuiteLevel]->setAttribute( 'failures', - (string) $this->testSuiteFailures[$this->testSuiteLevel] + (string) $this->testSuiteFailures[$this->testSuiteLevel], ); $this->testSuites[$this->testSuiteLevel]->setAttribute( 'skipped', - (string) $this->testSuiteSkipped[$this->testSuiteLevel] + (string) $this->testSuiteSkipped[$this->testSuiteLevel], ); $this->testSuites[$this->testSuiteLevel]->setAttribute( 'time', - sprintf('%F', $this->testSuiteTimes[$this->testSuiteLevel]) + sprintf('%F', $this->testSuiteTimes[$this->testSuiteLevel]), ); if ($this->testSuiteLevel > 1) { @@ -244,16 +244,16 @@ private function handleFinish(Info $telemetryInfo, int $numberOfAssertionsPerfor $this->currentTestCase->setAttribute( 'assertions', - (string) $numberOfAssertionsPerformed + (string) $numberOfAssertionsPerformed, ); $this->currentTestCase->setAttribute( 'time', - sprintf('%F', $time) + sprintf('%F', $time), ); $this->testSuites[$this->testSuiteLevel]->appendChild( - $this->currentTestCase + $this->currentTestCase, ); $this->testSuiteTests[$this->testSuiteLevel]++; @@ -309,12 +309,12 @@ private function handleFault(Errored|Failed $event, string $type): void $throwable = $event->throwable(); $buffer .= trim( $throwable->description() . PHP_EOL . - $throwable->stackTrace() + $throwable->stackTrace(), ); $fault = $this->document->createElement( $type, - Xml::prepareString($buffer) + Xml::prepareString($buffer), ); $fault->setAttribute('type', $throwable->className()); @@ -391,14 +391,14 @@ private function name(Test $test): string return sprintf( '%s with data set #%d', $test->methodName(), - $dataSetName + $dataSetName, ); } return sprintf( '%s with data set "%s"', $test->methodName(), - $dataSetName + $dataSetName, ); } @@ -408,7 +408,7 @@ private function name(Test $test): string * * @psalm-assert !null $this->currentTestCase */ - private function createTestCase(Prepared|MarkedIncomplete|Skipped|Errored|Failed $event): void + private function createTestCase(Errored|Failed|MarkedIncomplete|Prepared|Skipped $event): void { $testCase = $this->document->createElement('testcase'); diff --git a/vendor/phpunit/phpunit/src/Logging/TeamCity/TeamCityLogger.php b/vendor/phpunit/phpunit/src/Logging/TeamCity/TeamCityLogger.php index e4aabc41..203e2337 100644 --- a/vendor/phpunit/phpunit/src/Logging/TeamCity/TeamCityLogger.php +++ b/vendor/phpunit/phpunit/src/Logging/TeamCity/TeamCityLogger.php @@ -70,14 +70,10 @@ public function testSuiteStarted(TestSuiteStarted $event): void $this->writeMessage( 'testCount', - ['count' => $testSuite->count()] + ['count' => $testSuite->count()], ); } - if ($testSuite->isWithName() && $testSuite->name() === '') { - return; - } - $parameters = ['name' => $testSuite->name()]; if ($testSuite->isForTestClass()) { @@ -86,7 +82,7 @@ public function testSuiteStarted(TestSuiteStarted $event): void $parameters['locationHint'] = sprintf( 'php_qn://%s::\\%s', $testSuite->file(), - $testSuite->name() + $testSuite->name(), ); } elseif ($testSuite->isForTestMethodWithDataProvider()) { assert($testSuite instanceof TestSuiteForTestMethodWithDataProvider); @@ -94,7 +90,7 @@ public function testSuiteStarted(TestSuiteStarted $event): void $parameters['locationHint'] = sprintf( 'php_qn://%s::\\%s', $testSuite->file(), - $testSuite->name() + $testSuite->name(), ); $parameters['name'] = $testSuite->methodName(); @@ -107,10 +103,6 @@ public function testSuiteFinished(TestSuiteFinished $event): void { $testSuite = $event->testSuite(); - if ($testSuite->isWithName() && $testSuite->name() === '') { - return; - } - $parameters = ['name' => $testSuite->name()]; if ($testSuite->isForTestMethodWithDataProvider()) { @@ -137,7 +129,7 @@ public function testPrepared(Prepared $event): void 'php_qn://%s::\\%s::%s', $test->file(), $test->className(), - $test->methodName() + $test->methodName(), ); } @@ -162,7 +154,7 @@ public function testMarkedIncomplete(MarkedIncomplete $event): void 'message' => $event->throwable()->message(), 'details' => $this->details($event->throwable()), 'duration' => $this->duration($event), - ] + ], ); } @@ -201,7 +193,7 @@ public function testErrored(Errored $event): void 'message' => $this->message($event->throwable()), 'details' => $this->details($event->throwable()), 'duration' => $this->duration($event), - ] + ], ); } @@ -246,7 +238,7 @@ public function testConsideredRisky(ConsideredRisky $event): void 'message' => $event->message(), 'details' => '', 'duration' => $this->duration($event), - ] + ], ); } @@ -260,7 +252,7 @@ public function testFinished(Finished $event): void [ 'name' => $event->test()->name(), 'duration' => $this->duration($event), - ] + ], ); $this->time = null; @@ -303,8 +295,8 @@ private function writeMessage(string $eventName, array $parameters = []): void $this->printer->print( sprintf( "\n##teamcity[%s", - $eventName - ) + $eventName, + ), ); if ($this->flowId !== null) { @@ -316,8 +308,8 @@ private function writeMessage(string $eventName, array $parameters = []): void sprintf( " %s='%s'", $key, - $this->escape((string) $value) - ) + $this->escape((string) $value), + ), ); } @@ -341,7 +333,7 @@ private function escape(string $string): string return str_replace( ['|', "'", "\n", "\r", ']', '['], ['||', "|'", '|n', '|r', '|]', '|['], - $string + $string, ); } @@ -370,7 +362,7 @@ private function details(Throwable $throwable): string $buffer .= sprintf( "\nCaused by\n%s\n%s", $throwable->description(), - $throwable->stackTrace() + $throwable->stackTrace(), ); } diff --git a/vendor/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php b/vendor/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php index f067ee8f..fd65a309 100644 --- a/vendor/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php +++ b/vendor/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php @@ -111,14 +111,14 @@ public function render(array $tests): string foreach ($tests as $prettifiedClassName => $_tests) { $buffer .= sprintf( self::CLASS_HEADER, - $prettifiedClassName + $prettifiedClassName, ); foreach ($this->reduce($_tests) as $prettifiedMethodName => $outcome) { $buffer .= sprintf( "
  1. %s
  2. \n", $outcome, - $prettifiedMethodName + $prettifiedMethodName, ); } diff --git a/vendor/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php b/vendor/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php index 5e4bcdb9..7157cde4 100644 --- a/vendor/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php +++ b/vendor/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php @@ -184,9 +184,9 @@ public function prettifyTestCase(TestCase $test, bool $colorize): string $variables = array_map( static fn (string $variable): string => sprintf( '/%s(?=\b)/', - preg_quote($variable, '/') + preg_quote($variable, '/'), ), - array_keys($providedData) + array_keys($providedData), ); $result = trim(preg_replace($variables, $providedData, $annotation)); diff --git a/vendor/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php b/vendor/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php index cea4e2a8..45d0c81d 100644 --- a/vendor/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php +++ b/vendor/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php @@ -30,7 +30,7 @@ public function render(array $tests): string $buffer .= sprintf( ' [%s] %s' . "\n", $outcome, - $prettifiedMethodName + $prettifiedMethodName, ); } diff --git a/vendor/phpunit/phpunit/src/Logging/TestDox/TestMethod/TestResultCollector.php b/vendor/phpunit/phpunit/src/Logging/TestDox/TestMethod/TestResultCollector.php index b904cea4..34d8a68f 100644 --- a/vendor/phpunit/phpunit/src/Logging/TestDox/TestMethod/TestResultCollector.php +++ b/vendor/phpunit/phpunit/src/Logging/TestDox/TestMethod/TestResultCollector.php @@ -78,7 +78,7 @@ public function testMethodsGroupedByClass(): array static function (TestDoxTestMethod $a, TestDoxTestMethod $b): int { return $a->test()->line() <=> $b->test()->line(); - } + }, ); $result[$prettifiedClassName] = TestResultCollection::fromArray($tests); @@ -185,7 +185,7 @@ public function testFinished(Finished $event): void $event->telemetryInfo()->time()->duration($this->time), $this->status, $this->throwable, - $this->testDoubles + $this->testDoubles, ); $this->time = null; diff --git a/vendor/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php b/vendor/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php index 7a7006c4..b2a1f950 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php +++ b/vendor/phpunit/phpunit/src/Metadata/Api/CodeCoverage.php @@ -63,8 +63,8 @@ public function linesToBeCovered(string $className, string $methodName): array|f throw new CodeCoverageException( sprintf( 'More than one @coversDefaultClass annotation for class or interface "%s"', - $className - ) + $className, + ), ); } @@ -84,7 +84,7 @@ public function linesToBeCovered(string $className, string $methodName): array|f try { $codeUnits = $codeUnits->mergeWith( - $mapper->stringToCodeUnits($metadata->asStringForCodeUnitMapper()) + $mapper->stringToCodeUnits($metadata->asStringForCodeUnitMapper()), ); } catch (InvalidCodeUnitException $e) { if ($metadata->isCoversClass()) { @@ -97,10 +97,10 @@ public function linesToBeCovered(string $className, string $methodName): array|f sprintf( '%s "%s" is not a valid target for code coverage', $type, - $metadata->asStringForCodeUnitMapper() + $metadata->asStringForCodeUnitMapper(), ), $e->getCode(), - $e + $e, ); } } elseif ($metadata->isCovers()) { @@ -112,8 +112,8 @@ public function linesToBeCovered(string $className, string $methodName): array|f throw new InvalidCoversTargetException( sprintf( 'Trying to @cover interface "%s".', - $target - ) + $target, + ), ); } @@ -127,10 +127,10 @@ public function linesToBeCovered(string $className, string $methodName): array|f throw new InvalidCoversTargetException( sprintf( '"@covers %s" is invalid', - $target + $target, ), $e->getCode(), - $e + $e, ); } } @@ -157,8 +157,8 @@ public function linesToBeUsed(string $className, string $methodName): array throw new CodeCoverageException( sprintf( 'More than one @usesDefaultClass annotation for class or interface "%s"', - $className - ) + $className, + ), ); } @@ -178,7 +178,7 @@ public function linesToBeUsed(string $className, string $methodName): array try { $codeUnits = $codeUnits->mergeWith( - $mapper->stringToCodeUnits($metadata->asStringForCodeUnitMapper()) + $mapper->stringToCodeUnits($metadata->asStringForCodeUnitMapper()), ); } catch (InvalidCodeUnitException $e) { if ($metadata->isUsesClass()) { @@ -191,10 +191,10 @@ public function linesToBeUsed(string $className, string $methodName): array sprintf( '%s "%s" is not a valid target for code coverage', $type, - $metadata->asStringForCodeUnitMapper() + $metadata->asStringForCodeUnitMapper(), ), $e->getCode(), - $e + $e, ); } } elseif ($metadata->isUses()) { @@ -212,10 +212,10 @@ public function linesToBeUsed(string $className, string $methodName): array throw new InvalidCoversTargetException( sprintf( '"@uses %s" is invalid', - $target + $target, ), $e->getCode(), - $e + $e, ); } } @@ -234,7 +234,7 @@ public function linesToBeIgnored(TestSuite $testSuite): array foreach ($this->testCaseClassesIn($testSuite) as $testCaseClassName) { $codeUnits = $codeUnits->mergeWith( - $this->codeUnitsIgnoredBy($testCaseClassName) + $this->codeUnitsIgnoredBy($testCaseClassName), ); } @@ -292,19 +292,19 @@ private function codeUnitsIgnoredBy(string $className): CodeUnitCollection foreach (Registry::parser()->forClass($className) as $metadata) { if ($metadata instanceof IgnoreClassForCodeCoverage) { $codeUnits = $codeUnits->mergeWith( - $mapper->stringToCodeUnits($metadata->className()) + $mapper->stringToCodeUnits($metadata->className()), ); } if ($metadata instanceof IgnoreMethodForCodeCoverage) { $codeUnits = $codeUnits->mergeWith( - $mapper->stringToCodeUnits($metadata->className() . '::' . $metadata->methodName()) + $mapper->stringToCodeUnits($metadata->className() . '::' . $metadata->methodName()), ); } if ($metadata instanceof IgnoreFunctionForCodeCoverage) { $codeUnits = $codeUnits->mergeWith( - $mapper->stringToCodeUnits('::' . $metadata->functionName()) + $mapper->stringToCodeUnits('::' . $metadata->functionName()), ); } } diff --git a/vendor/phpunit/phpunit/src/Metadata/Api/DataProvider.php b/vendor/phpunit/phpunit/src/Metadata/Api/DataProvider.php index 7adfa165..07f33bb4 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Api/DataProvider.php +++ b/vendor/phpunit/phpunit/src/Metadata/Api/DataProvider.php @@ -69,7 +69,7 @@ public function providedData(string $className, string $methodName): ?array if ($data === []) { throw new InvalidDataProviderException( - 'Empty data set provided by data provider' + 'Empty data set provided by data provider', ); } @@ -78,8 +78,8 @@ public function providedData(string $className, string $methodName): ?array throw new InvalidDataProviderException( sprintf( 'Data set %s is invalid', - is_int($key) ? '#' . $key : '"' . $key . '"' - ) + is_int($key) ? '#' . $key : '"' . $key . '"', + ), ); } } @@ -95,11 +95,22 @@ public function providedData(string $className, string $methodName): ?array */ private function dataProvidedByMethods(string $className, string $methodName, MetadataCollection $dataProvider): array { - $result = []; + $testMethod = new Event\Code\ClassMethod($className, $methodName); + $methodsCalled = []; + $result = []; foreach ($dataProvider as $_dataProvider) { assert($_dataProvider instanceof DataProviderMetadata); + $dataProviderMethod = new Event\Code\ClassMethod($_dataProvider->className(), $_dataProvider->methodName()); + + Event\Facade::emitter()->dataProviderMethodCalled( + $testMethod, + $dataProviderMethod, + ); + + $methodsCalled[] = $dataProviderMethod; + try { $class = new ReflectionClass($_dataProvider->className()); $method = $class->getMethod($_dataProvider->methodName()); @@ -114,8 +125,8 @@ private function dataProvidedByMethods(string $className, string $methodName, Me sprintf( 'Data Provider method %s::%s() is not public', $_dataProvider->className(), - $_dataProvider->methodName() - ) + $_dataProvider->methodName(), + ), ); } @@ -128,8 +139,8 @@ private function dataProvidedByMethods(string $className, string $methodName, Me sprintf( 'Data Provider method %s::%s() is not static', $_dataProvider->className(), - $_dataProvider->methodName() - ) + $_dataProvider->methodName(), + ), ); $object = $class->newInstanceWithoutConstructor(); @@ -146,8 +157,8 @@ private function dataProvidedByMethods(string $className, string $methodName, Me sprintf( 'Data Provider method %s::%s() expects an argument', $_dataProvider->className(), - $_dataProvider->methodName() - ) + $_dataProvider->methodName(), + ), ); $data = $method->invoke($object, $_dataProvider->methodName()); @@ -156,7 +167,7 @@ private function dataProvidedByMethods(string $className, string $methodName, Me throw new InvalidDataProviderException( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -172,7 +183,7 @@ private function dataProvidedByMethods(string $className, string $methodName, Me sprintf( 'The key "%s" has already been defined by a previous data provider', $key, - ) + ), ); } else { $data[$key] = $value; @@ -185,6 +196,11 @@ private function dataProvidedByMethods(string $className, string $methodName, Me } } + Event\Facade::emitter()->dataProviderMethodFinished( + $testMethod, + ...$methodsCalled, + ); + return $result; } @@ -215,7 +231,7 @@ private function dataProvidedByTestWithAnnotation(string $className, string $met } $docComment = str_replace("\r\n", "\n", $docComment); - $docComment = preg_replace('/' . '\n' . '\s*' . '\*' . '\s?' . '/', "\n", $docComment); + $docComment = preg_replace('/\n\s*\*\s?/', "\n", $docComment); $docComment = substr($docComment, 0, -1); $docComment = rtrim($docComment, "\n"); @@ -238,7 +254,7 @@ private function dataProvidedByTestWithAnnotation(string $className, string $met if (json_last_error() !== JSON_ERROR_NONE) { throw new InvalidDataProviderException( - 'The data set for the @testWith annotation cannot be parsed: ' . json_last_error_msg() + 'The data set for the @testWith annotation cannot be parsed: ' . json_last_error_msg(), ); } @@ -247,7 +263,7 @@ private function dataProvidedByTestWithAnnotation(string $className, string $met if (!$data) { throw new InvalidDataProviderException( - 'The data set for the @testWith annotation cannot be parsed.' + 'The data set for the @testWith annotation cannot be parsed.', ); } @@ -271,13 +287,13 @@ private function valueObjectForTestMethodWithoutTestData(string $className, stri $location['line'], Event\Code\TestDoxBuilder::fromClassNameAndMethodName( $className, - $methodName + $methodName, ), MetadataRegistry::parser()->forClassAndMethod( $className, - $methodName + $methodName, ), - TestDataCollection::fromArray([]) + TestDataCollection::fromArray([]), ); } } diff --git a/vendor/phpunit/phpunit/src/Metadata/Api/HookMethods.php b/vendor/phpunit/phpunit/src/Metadata/Api/HookMethods.php index 26c6f5d8..1b085597 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Api/HookMethods.php +++ b/vendor/phpunit/phpunit/src/Metadata/Api/HookMethods.php @@ -54,7 +54,7 @@ public function hookMethods(string $className): array if ($metadata->isBeforeClass()->isNotEmpty()) { array_unshift( self::$hookMethods[$className]['beforeClass'], - $methodName + $methodName, ); } @@ -66,14 +66,14 @@ public function hookMethods(string $className): array if ($metadata->isBefore()->isNotEmpty()) { array_unshift( self::$hookMethods[$className]['before'], - $methodName + $methodName, ); } if ($metadata->isPreCondition()->isNotEmpty()) { array_unshift( self::$hookMethods[$className]['preCondition'], - $methodName + $methodName, ); } diff --git a/vendor/phpunit/phpunit/src/Metadata/Api/Requirements.php b/vendor/phpunit/phpunit/src/Metadata/Api/Requirements.php index 21486a92..70688a11 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Api/Requirements.php +++ b/vendor/phpunit/phpunit/src/Metadata/Api/Requirements.php @@ -54,7 +54,7 @@ public function requirementsNotSatisfiedFor(string $className, string $methodNam if (!$metadata->versionRequirement()->isSatisfiedBy(PHP_VERSION)) { $notSatisfied[] = sprintf( 'PHP %s is required.', - $metadata->versionRequirement()->asString() + $metadata->versionRequirement()->asString(), ); } } @@ -68,7 +68,7 @@ public function requirementsNotSatisfiedFor(string $className, string $methodNam $notSatisfied[] = sprintf( 'PHP extension %s%s is required.', $metadata->extension(), - $metadata->hasVersionRequirement() ? (' ' . $metadata->versionRequirement()->asString()) : '' + $metadata->hasVersionRequirement() ? (' ' . $metadata->versionRequirement()->asString()) : '', ); } } @@ -79,7 +79,7 @@ public function requirementsNotSatisfiedFor(string $className, string $methodNam if (!$metadata->versionRequirement()->isSatisfiedBy(Version::id())) { $notSatisfied[] = sprintf( 'PHPUnit %s is required.', - $metadata->versionRequirement()->asString() + $metadata->versionRequirement()->asString(), ); } } @@ -90,7 +90,7 @@ public function requirementsNotSatisfiedFor(string $className, string $methodNam if ($metadata->operatingSystemFamily() !== PHP_OS_FAMILY) { $notSatisfied[] = sprintf( 'Operating system %s is required.', - $metadata->operatingSystemFamily() + $metadata->operatingSystemFamily(), ); } } @@ -100,13 +100,13 @@ public function requirementsNotSatisfiedFor(string $className, string $methodNam $pattern = sprintf( '/%s/i', - addcslashes($metadata->operatingSystem(), '/') + addcslashes($metadata->operatingSystem(), '/'), ); if (!preg_match($pattern, PHP_OS)) { $notSatisfied[] = sprintf( 'Operating system %s is required.', - $metadata->operatingSystem() + $metadata->operatingSystem(), ); } } @@ -117,7 +117,7 @@ public function requirementsNotSatisfiedFor(string $className, string $methodNam if (!function_exists($metadata->functionName())) { $notSatisfied[] = sprintf( 'Function %s() is required.', - $metadata->functionName() + $metadata->functionName(), ); } } @@ -129,7 +129,7 @@ public function requirementsNotSatisfiedFor(string $className, string $methodNam $notSatisfied[] = sprintf( 'Method %s::%s() is required.', $metadata->className(), - $metadata->methodName() + $metadata->methodName(), ); } } @@ -141,7 +141,7 @@ public function requirementsNotSatisfiedFor(string $className, string $methodNam $notSatisfied[] = sprintf( 'Setting "%s" is required to be "%s".', $metadata->setting(), - $metadata->value() + $metadata->value(), ); } } diff --git a/vendor/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php b/vendor/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php index 17712b11..5693dfb4 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php +++ b/vendor/phpunit/phpunit/src/Metadata/Exception/AnnotationsAreNotSupportedForInternalClassesException.php @@ -25,8 +25,8 @@ public function __construct(string $className) parent::__construct( sprintf( 'Annotations can only be parsed for user-defined classes, trying to parse annotations for class "%s"', - $className - ) + $className, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Metadata/MetadataCollection.php b/vendor/phpunit/phpunit/src/Metadata/MetadataCollection.php index bad85617..94f5d10f 100644 --- a/vendor/phpunit/phpunit/src/Metadata/MetadataCollection.php +++ b/vendor/phpunit/phpunit/src/Metadata/MetadataCollection.php @@ -75,8 +75,8 @@ public function mergeWith(self $other): self return new self( ...array_merge( $this->asArray(), - $other->asArray() - ) + $other->asArray(), + ), ); } @@ -85,8 +85,8 @@ public function isClassLevel(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isClassLevel() - ) + static fn (Metadata $metadata): bool => $metadata->isClassLevel(), + ), ); } @@ -95,8 +95,8 @@ public function isMethodLevel(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isMethodLevel() - ) + static fn (Metadata $metadata): bool => $metadata->isMethodLevel(), + ), ); } @@ -105,8 +105,8 @@ public function isAfter(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isAfter() - ) + static fn (Metadata $metadata): bool => $metadata->isAfter(), + ), ); } @@ -115,8 +115,8 @@ public function isAfterClass(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isAfterClass() - ) + static fn (Metadata $metadata): bool => $metadata->isAfterClass(), + ), ); } @@ -125,8 +125,8 @@ public function isBackupGlobals(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isBackupGlobals() - ) + static fn (Metadata $metadata): bool => $metadata->isBackupGlobals(), + ), ); } @@ -135,8 +135,8 @@ public function isBackupStaticProperties(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isBackupStaticProperties() - ) + static fn (Metadata $metadata): bool => $metadata->isBackupStaticProperties(), + ), ); } @@ -145,8 +145,8 @@ public function isBeforeClass(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isBeforeClass() - ) + static fn (Metadata $metadata): bool => $metadata->isBeforeClass(), + ), ); } @@ -155,8 +155,8 @@ public function isBefore(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isBefore() - ) + static fn (Metadata $metadata): bool => $metadata->isBefore(), + ), ); } @@ -165,8 +165,8 @@ public function isCovers(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isCovers() - ) + static fn (Metadata $metadata): bool => $metadata->isCovers(), + ), ); } @@ -175,8 +175,8 @@ public function isCoversClass(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isCoversClass() - ) + static fn (Metadata $metadata): bool => $metadata->isCoversClass(), + ), ); } @@ -185,8 +185,8 @@ public function isCoversDefaultClass(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isCoversDefaultClass() - ) + static fn (Metadata $metadata): bool => $metadata->isCoversDefaultClass(), + ), ); } @@ -195,8 +195,8 @@ public function isCoversFunction(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isCoversFunction() - ) + static fn (Metadata $metadata): bool => $metadata->isCoversFunction(), + ), ); } @@ -205,8 +205,8 @@ public function isExcludeGlobalVariableFromBackup(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isExcludeGlobalVariableFromBackup() - ) + static fn (Metadata $metadata): bool => $metadata->isExcludeGlobalVariableFromBackup(), + ), ); } @@ -215,8 +215,8 @@ public function isExcludeStaticPropertyFromBackup(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isExcludeStaticPropertyFromBackup() - ) + static fn (Metadata $metadata): bool => $metadata->isExcludeStaticPropertyFromBackup(), + ), ); } @@ -225,8 +225,8 @@ public function isCoversNothing(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isCoversNothing() - ) + static fn (Metadata $metadata): bool => $metadata->isCoversNothing(), + ), ); } @@ -235,8 +235,8 @@ public function isDataProvider(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isDataProvider() - ) + static fn (Metadata $metadata): bool => $metadata->isDataProvider(), + ), ); } @@ -245,8 +245,8 @@ public function isDepends(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isDependsOnClass() || $metadata->isDependsOnMethod() - ) + static fn (Metadata $metadata): bool => $metadata->isDependsOnClass() || $metadata->isDependsOnMethod(), + ), ); } @@ -255,8 +255,8 @@ public function isDependsOnClass(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isDependsOnClass() - ) + static fn (Metadata $metadata): bool => $metadata->isDependsOnClass(), + ), ); } @@ -265,8 +265,8 @@ public function isDependsOnMethod(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isDependsOnMethod() - ) + static fn (Metadata $metadata): bool => $metadata->isDependsOnMethod(), + ), ); } @@ -275,8 +275,8 @@ public function isDoesNotPerformAssertions(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isDoesNotPerformAssertions() - ) + static fn (Metadata $metadata): bool => $metadata->isDoesNotPerformAssertions(), + ), ); } @@ -285,8 +285,8 @@ public function isGroup(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isGroup() - ) + static fn (Metadata $metadata): bool => $metadata->isGroup(), + ), ); } @@ -295,8 +295,8 @@ public function isIgnoreClassForCodeCoverage(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isIgnoreClassForCodeCoverage() - ) + static fn (Metadata $metadata): bool => $metadata->isIgnoreClassForCodeCoverage(), + ), ); } @@ -305,8 +305,8 @@ public function isIgnoreMethodForCodeCoverage(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isIgnoreMethodForCodeCoverage() - ) + static fn (Metadata $metadata): bool => $metadata->isIgnoreMethodForCodeCoverage(), + ), ); } @@ -315,8 +315,8 @@ public function isIgnoreFunctionForCodeCoverage(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isIgnoreFunctionForCodeCoverage() - ) + static fn (Metadata $metadata): bool => $metadata->isIgnoreFunctionForCodeCoverage(), + ), ); } @@ -325,8 +325,8 @@ public function isRunClassInSeparateProcess(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRunClassInSeparateProcess() - ) + static fn (Metadata $metadata): bool => $metadata->isRunClassInSeparateProcess(), + ), ); } @@ -335,8 +335,8 @@ public function isRunInSeparateProcess(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRunInSeparateProcess() - ) + static fn (Metadata $metadata): bool => $metadata->isRunInSeparateProcess(), + ), ); } @@ -345,8 +345,8 @@ public function isRunTestsInSeparateProcesses(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRunTestsInSeparateProcesses() - ) + static fn (Metadata $metadata): bool => $metadata->isRunTestsInSeparateProcesses(), + ), ); } @@ -355,8 +355,8 @@ public function isTest(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isTest() - ) + static fn (Metadata $metadata): bool => $metadata->isTest(), + ), ); } @@ -365,8 +365,8 @@ public function isPreCondition(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isPreCondition() - ) + static fn (Metadata $metadata): bool => $metadata->isPreCondition(), + ), ); } @@ -375,8 +375,8 @@ public function isPostCondition(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isPostCondition() - ) + static fn (Metadata $metadata): bool => $metadata->isPostCondition(), + ), ); } @@ -385,8 +385,8 @@ public function isPreserveGlobalState(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isPreserveGlobalState() - ) + static fn (Metadata $metadata): bool => $metadata->isPreserveGlobalState(), + ), ); } @@ -395,8 +395,8 @@ public function isRequiresMethod(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresMethod() - ) + static fn (Metadata $metadata): bool => $metadata->isRequiresMethod(), + ), ); } @@ -405,8 +405,8 @@ public function isRequiresFunction(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresFunction() - ) + static fn (Metadata $metadata): bool => $metadata->isRequiresFunction(), + ), ); } @@ -415,8 +415,8 @@ public function isRequiresOperatingSystem(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresOperatingSystem() - ) + static fn (Metadata $metadata): bool => $metadata->isRequiresOperatingSystem(), + ), ); } @@ -425,8 +425,8 @@ public function isRequiresOperatingSystemFamily(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresOperatingSystemFamily() - ) + static fn (Metadata $metadata): bool => $metadata->isRequiresOperatingSystemFamily(), + ), ); } @@ -435,8 +435,8 @@ public function isRequiresPhp(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresPhp() - ) + static fn (Metadata $metadata): bool => $metadata->isRequiresPhp(), + ), ); } @@ -445,8 +445,8 @@ public function isRequiresPhpExtension(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresPhpExtension() - ) + static fn (Metadata $metadata): bool => $metadata->isRequiresPhpExtension(), + ), ); } @@ -455,8 +455,8 @@ public function isRequiresPhpunit(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresPhpunit() - ) + static fn (Metadata $metadata): bool => $metadata->isRequiresPhpunit(), + ), ); } @@ -465,8 +465,8 @@ public function isRequiresSetting(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isRequiresSetting() - ) + static fn (Metadata $metadata): bool => $metadata->isRequiresSetting(), + ), ); } @@ -475,8 +475,8 @@ public function isTestDox(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isTestDox() - ) + static fn (Metadata $metadata): bool => $metadata->isTestDox(), + ), ); } @@ -485,8 +485,8 @@ public function isTestWith(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isTestWith() - ) + static fn (Metadata $metadata): bool => $metadata->isTestWith(), + ), ); } @@ -495,8 +495,8 @@ public function isUses(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isUses() - ) + static fn (Metadata $metadata): bool => $metadata->isUses(), + ), ); } @@ -505,8 +505,8 @@ public function isUsesClass(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isUsesClass() - ) + static fn (Metadata $metadata): bool => $metadata->isUsesClass(), + ), ); } @@ -515,8 +515,8 @@ public function isUsesDefaultClass(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isUsesDefaultClass() - ) + static fn (Metadata $metadata): bool => $metadata->isUsesDefaultClass(), + ), ); } @@ -525,8 +525,8 @@ public function isUsesFunction(): self return new self( ...array_filter( $this->metadata, - static fn (Metadata $metadata): bool => $metadata->isUsesFunction() - ) + static fn (Metadata $metadata): bool => $metadata->isUsesFunction(), + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php b/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php index ab5722a9..b2bcc435 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php +++ b/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php @@ -173,7 +173,7 @@ public function requirements(): array throw new InvalidVersionRequirementException( $e->getMessage(), $e->getCode(), - $e + $e, ); } } @@ -211,8 +211,8 @@ public function requirements(): array [ 'setting' => $recordedSettings, 'extension_versions' => $extensionVersions, - ] - ) + ], + ), ); } @@ -250,14 +250,14 @@ private static function extractAnnotationsFromReflector(ReflectionClass|Reflecti $annotations, ...array_map( static fn (ReflectionClass $trait): array => self::parseDocBlock((string) $trait->getDocComment()), - array_values($reflector->getTraits()) - ) + array_values($reflector->getTraits()), + ), ); } return array_merge( $annotations, - self::parseDocBlock((string) $reflector->getDocComment()) + self::parseDocBlock((string) $reflector->getDocComment()), ); } } diff --git a/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php b/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php index 7c4d3020..6d7e9b7a 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php +++ b/vendor/phpunit/phpunit/src/Metadata/Parser/Annotation/Registry.php @@ -62,7 +62,7 @@ public function forClassName(string $class): DocBlock throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -87,7 +87,7 @@ public function forMethod(string $classInHierarchy, string $method): DocBlock throw new ReflectionException( $e->getMessage(), $e->getCode(), - $e + $e, ); } diff --git a/vendor/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php b/vendor/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php index 31574772..7ce24a42 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php +++ b/vendor/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php @@ -150,8 +150,8 @@ public function forClass(string $className): MetadataCollection $result, $this->parseRequirements( AnnotationRegistry::getInstance()->forClassName($className)->requirements(), - 'class' - ) + 'class', + ), ); return MetadataCollection::fromArray($result); @@ -289,7 +289,7 @@ public function forMethod(string $className, string $methodName): MetadataCollec $result[] = Metadata::excludeStaticPropertyFromBackupOnMethod( trim($tmp[0]), - trim($tmp[1]) + trim($tmp[1]), ); } @@ -364,8 +364,8 @@ public function forMethod(string $className, string $methodName): MetadataCollec $result, $this->parseRequirements( AnnotationRegistry::getInstance()->forMethod($className, $methodName)->requirements(), - 'method' - ) + 'method', + ), ); } @@ -383,7 +383,7 @@ public function forMethod(string $className, string $methodName): MetadataCollec public function forClassAndMethod(string $className, string $methodName): MetadataCollection { return $this->forClass($className)->mergeWith( - $this->forMethod($className, $methodName) + $this->forMethod($className, $methodName), ); } @@ -415,7 +415,7 @@ private function parseRequirements(array $requirements, string $level): array if (!empty($requirements['PHP'])) { $versionRequirement = new ComparisonRequirement( $requirements['PHP']['version'], - new VersionComparisonOperator(empty($requirements['PHP']['operator']) ? '>=' : $requirements['PHP']['operator']) + new VersionComparisonOperator(empty($requirements['PHP']['operator']) ? '>=' : $requirements['PHP']['operator']), ); if ($level === 'class') { @@ -451,7 +451,7 @@ private function parseRequirements(array $requirements, string $level): array foreach ($requirements['extension_versions'] as $extension => $version) { $versionRequirement = new ComparisonRequirement( $version['version'], - new VersionComparisonOperator(empty($version['operator']) ? '>=' : $version['operator']) + new VersionComparisonOperator(empty($version['operator']) ? '>=' : $version['operator']), ); if ($level === 'class') { @@ -465,7 +465,7 @@ private function parseRequirements(array $requirements, string $level): array if (!empty($requirements['PHPUnit'])) { $versionRequirement = new ComparisonRequirement( $requirements['PHPUnit']['version'], - new VersionComparisonOperator(empty($requirements['PHPUnit']['operator']) ? '>=' : $requirements['PHPUnit']['operator']) + new VersionComparisonOperator(empty($requirements['PHPUnit']['operator']) ? '>=' : $requirements['PHPUnit']['operator']), ); if ($level === 'class') { diff --git a/vendor/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php b/vendor/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php index bf180375..cb971750 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php +++ b/vendor/phpunit/phpunit/src/Metadata/Parser/AttributeParser.php @@ -140,7 +140,7 @@ public function forClass(string $className): MetadataCollection $result[] = Metadata::excludeStaticPropertyFromBackupOnClass( $attributeInstance->className(), - $attributeInstance->propertyName() + $attributeInstance->propertyName(), ); break; @@ -195,7 +195,7 @@ public function forClass(string $className): MetadataCollection $result[] = Metadata::requiresMethodOnClass( $attributeInstance->className(), - $attributeInstance->methodName() + $attributeInstance->methodName(), ); break; @@ -226,8 +226,8 @@ public function forClass(string $className): MetadataCollection $result[] = Metadata::requiresPhpOnClass( ConstraintRequirement::from( - $attributeInstance->versionRequirement() - ) + $attributeInstance->versionRequirement(), + ), ); break; @@ -244,7 +244,7 @@ public function forClass(string $className): MetadataCollection $result[] = Metadata::requiresPhpExtensionOnClass( $attributeInstance->extension(), - $versionConstraint + $versionConstraint, ); break; @@ -254,8 +254,8 @@ public function forClass(string $className): MetadataCollection $result[] = Metadata::requiresPhpunitOnClass( ConstraintRequirement::from( - $attributeInstance->versionRequirement() - ) + $attributeInstance->versionRequirement(), + ), ); break; @@ -265,7 +265,7 @@ public function forClass(string $className): MetadataCollection $result[] = Metadata::requiresSettingOnClass( $attributeInstance->setting(), - $attributeInstance->value() + $attributeInstance->value(), ); break; @@ -469,7 +469,7 @@ public function forMethod(string $className, string $methodName): MetadataCollec $result[] = Metadata::excludeStaticPropertyFromBackupOnMethod( $attributeInstance->className(), - $attributeInstance->propertyName() + $attributeInstance->propertyName(), ); break; @@ -503,7 +503,7 @@ public function forMethod(string $className, string $methodName): MetadataCollec $result[] = Metadata::requiresMethodOnMethod( $attributeInstance->className(), - $attributeInstance->methodName() + $attributeInstance->methodName(), ); break; @@ -534,8 +534,8 @@ public function forMethod(string $className, string $methodName): MetadataCollec $result[] = Metadata::requiresPhpOnMethod( ConstraintRequirement::from( - $attributeInstance->versionRequirement() - ) + $attributeInstance->versionRequirement(), + ), ); break; @@ -552,7 +552,7 @@ public function forMethod(string $className, string $methodName): MetadataCollec $result[] = Metadata::requiresPhpExtensionOnMethod( $attributeInstance->extension(), - $versionConstraint + $versionConstraint, ); break; @@ -562,8 +562,8 @@ public function forMethod(string $className, string $methodName): MetadataCollec $result[] = Metadata::requiresPhpunitOnMethod( ConstraintRequirement::from( - $attributeInstance->versionRequirement() - ) + $attributeInstance->versionRequirement(), + ), ); break; @@ -573,7 +573,7 @@ public function forMethod(string $className, string $methodName): MetadataCollec $result[] = Metadata::requiresSettingOnMethod( $attributeInstance->setting(), - $attributeInstance->value() + $attributeInstance->value(), ); break; @@ -628,7 +628,7 @@ public function forMethod(string $className, string $methodName): MetadataCollec public function forClassAndMethod(string $className, string $methodName): MetadataCollection { return $this->forClass($className)->mergeWith( - $this->forMethod($className, $methodName) + $this->forMethod($className, $methodName), ); } } diff --git a/vendor/phpunit/phpunit/src/Metadata/Parser/CachingParser.php b/vendor/phpunit/phpunit/src/Metadata/Parser/CachingParser.php index ae20e1a4..ac5363b4 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Parser/CachingParser.php +++ b/vendor/phpunit/phpunit/src/Metadata/Parser/CachingParser.php @@ -70,7 +70,7 @@ public function forClassAndMethod(string $className, string $methodName): Metada } $this->classAndMethodCache[$key] = $this->forClass($className)->mergeWith( - $this->forMethod($className, $methodName) + $this->forMethod($className, $methodName), ); return $this->classAndMethodCache[$key]; diff --git a/vendor/phpunit/phpunit/src/Metadata/Parser/ParserChain.php b/vendor/phpunit/phpunit/src/Metadata/Parser/ParserChain.php index 81d8fd9f..f00c52ed 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Parser/ParserChain.php +++ b/vendor/phpunit/phpunit/src/Metadata/Parser/ParserChain.php @@ -61,7 +61,7 @@ public function forMethod(string $className, string $methodName): MetadataCollec public function forClassAndMethod(string $className, string $methodName): MetadataCollection { return $this->forClass($className)->mergeWith( - $this->forMethod($className, $methodName) + $this->forMethod($className, $methodName), ); } } diff --git a/vendor/phpunit/phpunit/src/Metadata/Parser/Registry.php b/vendor/phpunit/phpunit/src/Metadata/Parser/Registry.php index 2e2d4011..0b005cf5 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Parser/Registry.php +++ b/vendor/phpunit/phpunit/src/Metadata/Parser/Registry.php @@ -33,8 +33,8 @@ private static function build(): Parser return new CachingParser( new ParserChain( new AttributeParser, - new AnnotationParser - ) + new AnnotationParser, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php b/vendor/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php index f803722b..32857899 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php +++ b/vendor/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php @@ -33,7 +33,7 @@ public function __construct(VersionConstraint $constraint) public function isSatisfiedBy(string $version): bool { return $this->constraint->complies( - new Version($this->sanitize($version)) + new Version($this->sanitize($version)), ); } @@ -50,7 +50,7 @@ private function sanitize(string $version): string return preg_replace( '/^(\d+\.\d+(?:.\d+)?).*$/', '$1', - $version + $version, ); } } diff --git a/vendor/phpunit/phpunit/src/Metadata/Version/Requirement.php b/vendor/phpunit/phpunit/src/Metadata/Version/Requirement.php index 483f6d22..a61e5003 100644 --- a/vendor/phpunit/phpunit/src/Metadata/Version/Requirement.php +++ b/vendor/phpunit/phpunit/src/Metadata/Version/Requirement.php @@ -34,16 +34,16 @@ public static function from(string $versionRequirement): self try { return new ConstraintRequirement( (new VersionConstraintParser)->parse( - $versionRequirement - ) + $versionRequirement, + ), ); } catch (UnsupportedVersionConstraintException) { if (preg_match(self::VERSION_COMPARISON, $versionRequirement, $matches)) { return new ComparisonRequirement( $matches['version'], new VersionComparisonOperator( - !empty($matches['operator']) ? $matches['operator'] : '>=' - ) + !empty($matches['operator']) ? $matches['operator'] : '>=', + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Runner/CodeCoverage.php b/vendor/phpunit/phpunit/src/Runner/CodeCoverage.php index 24461f72..386dceab 100644 --- a/vendor/phpunit/phpunit/src/Runner/CodeCoverage.php +++ b/vendor/phpunit/phpunit/src/Runner/CodeCoverage.php @@ -109,11 +109,11 @@ public function init(Configuration $configuration, CodeCoverageFilterRegistry $c if ($codeCoverageFilterRegistry->get()->isEmpty()) { if (!$codeCoverageFilterRegistry->configured()) { EventFacade::emitter()->testRunnerTriggeredWarning( - 'No filter is configured, code coverage will not be processed' + 'No filter is configured, code coverage will not be processed', ); } else { EventFacade::emitter()->testRunnerTriggeredWarning( - 'Incorrect filter configuration, code coverage will not be processed' + 'Incorrect filter configuration, code coverage will not be processed', ); } @@ -163,7 +163,7 @@ public function start(TestCase $test): void $this->codeCoverage->start( $test->valueObjectForEvents()->id(), - $size + $size, ); $this->collecting = true; @@ -263,7 +263,7 @@ public function generateReports(Printer $printer, Configuration $configuration): $writer = new HtmlReport( sprintf( ' and PHPUnit %s', - Version::id() + Version::id(), ), Colors::from( $configuration->coverageHtmlColorSuccessLow(), @@ -274,9 +274,9 @@ public function generateReports(Printer $printer, Configuration $configuration): ), Thresholds::from( $configuration->coverageHtmlLowUpperBound(), - $configuration->coverageHtmlHighLowerBound() + $configuration->coverageHtmlHighLowerBound(), ), - $customCssFile + $customCssFile, ); $writer->process($this->codeCoverage(), $configuration->coverageHtml()); @@ -308,7 +308,7 @@ public function generateReports(Printer $printer, Configuration $configuration): $processor = new TextReport( Thresholds::default(), $configuration->coverageTextShowUncoveredFiles(), - $configuration->coverageTextShowOnlySummary() + $configuration->coverageTextShowOnlySummary(), ); $textReport = $processor->process($this->codeCoverage(), $configuration->colors()); @@ -363,11 +363,11 @@ private function activate(Filter $filter, bool $pathCoverage): void $this->codeCoverage = new \SebastianBergmann\CodeCoverage\CodeCoverage( $this->driver, - $filter + $filter, ); } catch (CodeCoverageException $e) { EventFacade::emitter()->testRunnerTriggeredWarning( - $e->getMessage() + $e->getMessage(), ); } } @@ -377,8 +377,8 @@ private function codeCoverageGenerationStart(Printer $printer, string $format): $printer->print( sprintf( "\nGenerating code coverage report in %s format ... ", - $format - ) + $format, + ), ); $this->timer()->start(); @@ -392,8 +392,8 @@ private function codeCoverageGenerationSucceeded(Printer $printer): void $printer->print( sprintf( "done [%s]\n", - $this->timer()->stop()->asString() - ) + $this->timer()->stop()->asString(), + ), ); } @@ -406,8 +406,8 @@ private function codeCoverageGenerationFailed(Printer $printer, CodeCoverageExce sprintf( "failed [%s]\n%s\n", $this->timer()->stop()->asString(), - $e->getMessage() - ) + $e->getMessage(), + ), ); } diff --git a/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php b/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php index 17f43b9e..517f8472 100644 --- a/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php +++ b/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php @@ -16,12 +16,12 @@ use const E_USER_NOTICE; use const E_USER_WARNING; use const E_WARNING; -use function debug_backtrace; use function error_reporting; use function restore_error_handler; use function set_error_handler; use PHPUnit\Event; -use PHPUnit\Framework\TestCase; +use PHPUnit\Event\Code\NoTestCaseObjectOnCallStackException; +use PHPUnit\Util\ExcludeList; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit @@ -43,7 +43,7 @@ public function __invoke(int $errorNumber, string $errorString, string $errorFil { $suppressed = !($errorNumber & error_reporting()); - if ($suppressed) { + if ($suppressed && (new ExcludeList)->isExcluded($errorFile)) { return false; } @@ -51,70 +51,77 @@ public function __invoke(int $errorNumber, string $errorString, string $errorFil case E_NOTICE: case E_STRICT: Event\Facade::emitter()->testTriggeredPhpNotice( - $this->testValueObjectForEvents(), + Event\Code\TestMethodBuilder::fromCallStack(), $errorString, $errorFile, - $errorLine + $errorLine, + $suppressed, ); - return true; + break; case E_USER_NOTICE: Event\Facade::emitter()->testTriggeredNotice( - $this->testValueObjectForEvents(), + Event\Code\TestMethodBuilder::fromCallStack(), $errorString, $errorFile, - $errorLine + $errorLine, + $suppressed, ); break; case E_WARNING: Event\Facade::emitter()->testTriggeredPhpWarning( - $this->testValueObjectForEvents(), + Event\Code\TestMethodBuilder::fromCallStack(), $errorString, $errorFile, - $errorLine + $errorLine, + $suppressed, ); break; case E_USER_WARNING: Event\Facade::emitter()->testTriggeredWarning( - $this->testValueObjectForEvents(), + Event\Code\TestMethodBuilder::fromCallStack(), $errorString, $errorFile, - $errorLine + $errorLine, + $suppressed, ); break; case E_DEPRECATED: Event\Facade::emitter()->testTriggeredPhpDeprecation( - $this->testValueObjectForEvents(), + Event\Code\TestMethodBuilder::fromCallStack(), $errorString, $errorFile, - $errorLine + $errorLine, + $suppressed, ); break; case E_USER_DEPRECATED: Event\Facade::emitter()->testTriggeredDeprecation( - $this->testValueObjectForEvents(), + Event\Code\TestMethodBuilder::fromCallStack(), $errorString, $errorFile, - $errorLine + $errorLine, + $suppressed, ); break; case E_USER_ERROR: Event\Facade::emitter()->testTriggeredError( - $this->testValueObjectForEvents(), + Event\Code\TestMethodBuilder::fromCallStack(), $errorString, $errorFile, - $errorLine + $errorLine, + $suppressed, ); break; @@ -153,18 +160,4 @@ public function disable(): void $this->enabled = false; } - - /** - * @throws NoTestCaseObjectOnCallStackException - */ - private function testValueObjectForEvents(): Event\Code\Test - { - foreach (debug_backtrace() as $frame) { - if (isset($frame['object']) && $frame['object'] instanceof TestCase) { - return $frame['object']->valueObjectForEvents(); - } - } - - throw new NoTestCaseObjectOnCallStackException; - } } diff --git a/vendor/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php b/vendor/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php index adce339a..e64a3593 100644 --- a/vendor/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php +++ b/vendor/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php @@ -23,8 +23,8 @@ public function __construct(string $className, string $file) sprintf( 'Class %s cannot be found in %s', $className, - $file - ) + $file, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php b/vendor/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php index 690a57b4..4264bddd 100644 --- a/vendor/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php +++ b/vendor/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php @@ -23,8 +23,8 @@ public function __construct(string $className, string $file) sprintf( 'Class %s declared in %s is abstract', $className, - $file - ) + $file, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Runner/Exception/DirectoryCannotBeCreatedException.php b/vendor/phpunit/phpunit/src/Runner/Exception/DirectoryCannotBeCreatedException.php index 5eaddabe..77820625 100644 --- a/vendor/phpunit/phpunit/src/Runner/Exception/DirectoryCannotBeCreatedException.php +++ b/vendor/phpunit/phpunit/src/Runner/Exception/DirectoryCannotBeCreatedException.php @@ -22,8 +22,8 @@ public function __construct(string $directory) parent::__construct( sprintf( 'Cannot create directory "%s"', - $directory - ) + $directory, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php b/vendor/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php index 60fcc4b9..f0211ddf 100644 --- a/vendor/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php +++ b/vendor/phpunit/phpunit/src/Runner/Exception/FileDoesNotExistException.php @@ -22,8 +22,8 @@ public function __construct(string $file) parent::__construct( sprintf( 'File "%s" does not exist', - $file - ) + $file, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php b/vendor/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php index de95f87e..521fbb53 100644 --- a/vendor/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php +++ b/vendor/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php @@ -23,7 +23,7 @@ public function __construct(string $name) sprintf( 'Parameter "%s" does not exist', $name, - ) + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php b/vendor/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php index 74a6528d..5cdb1d9f 100644 --- a/vendor/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php +++ b/vendor/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php @@ -23,8 +23,8 @@ public function __construct(string $section, string $file) sprintf( 'Could not load --%s-- %s for PHPT file', $section . '_EXTERNAL', - $file - ) + $file, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php b/vendor/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php index 3e7c239c..a81d07b0 100644 --- a/vendor/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php +++ b/vendor/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php @@ -22,8 +22,8 @@ public function __construct(string $section) parent::__construct( sprintf( 'PHPUnit does not support PHPT %s sections', - $section - ) + $section, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php b/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php index ac468c2d..50137a57 100644 --- a/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php +++ b/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php @@ -13,14 +13,12 @@ use function class_exists; use function class_implements; use function in_array; +use function sprintf; use PHPUnit\Event; -use PHPUnit\Runner\ClassCannotBeInstantiatedException; -use PHPUnit\Runner\ClassDoesNotExistException; -use PHPUnit\Runner\ClassDoesNotImplementExtensionInterfaceException; -use PHPUnit\Runner\Exception; +use PHPUnit\Event\Facade as EventFacade; use PHPUnit\TextUI\Configuration\Configuration; use ReflectionClass; -use ReflectionException; +use Throwable; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit @@ -39,23 +37,44 @@ public function __construct(Configuration $configuration, Facade $facade) /** * @psalm-param class-string $className * @psalm-param array $parameters - * - * @throws Exception */ public function bootstrap(string $className, array $parameters): void { if (!class_exists($className)) { - throw new ClassDoesNotExistException($className); + EventFacade::emitter()->testRunnerTriggeredWarning( + sprintf( + 'Cannot bootstrap extension because class %s does not exist', + $className, + ), + ); + + return; } if (!in_array(Extension::class, class_implements($className), true)) { - throw new ClassDoesNotImplementExtensionInterfaceException($className); + EventFacade::emitter()->testRunnerTriggeredWarning( + sprintf( + 'Cannot bootstrap extension because class %s does not implement interface %s', + $className, + Extension::class, + ), + ); + + return; } try { $instance = (new ReflectionClass($className))->newInstance(); - } catch (ReflectionException $e) { - throw new ClassCannotBeInstantiatedException($className, $e); + } catch (Throwable $t) { + EventFacade::emitter()->testRunnerTriggeredWarning( + sprintf( + 'Cannot bootstrap extension because class %s cannot be instantiated: %s', + $className, + $t->getMessage(), + ), + ); + + return; } assert($instance instanceof Extension); diff --git a/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php b/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php index e007e637..d483cc29 100644 --- a/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php +++ b/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php @@ -9,8 +9,13 @@ */ namespace PHPUnit\Runner\Extension; +use function count; +use function explode; use function extension_loaded; +use function implode; use function is_file; +use function sprintf; +use function str_contains; use PharIo\Manifest\ApplicationName; use PharIo\Manifest\Exception as ManifestException; use PharIo\Manifest\ManifestLoader; @@ -18,6 +23,7 @@ use PHPUnit\Event; use PHPUnit\Runner\Version; use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; +use Throwable; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit @@ -25,73 +31,116 @@ final class PharLoader { /** - * @psalm-return array{loadedExtensions: list, notLoadedExtensions: list} + * @psalm-return list */ public function loadPharExtensionsInDirectory(string $directory): array { $pharExtensionLoaded = extension_loaded('phar'); - - if (!$pharExtensionLoaded) { - Event\Facade::emitter()->testRunnerTriggeredWarning( - 'Loading PHPUnit extension(s) from PHP archive(s) failed, PHAR extension not loaded' - ); - } - $loadedExtensions = []; - $notLoadedExtensions = []; foreach ((new FileIteratorFacade)->getFilesAsArray($directory, '.phar') as $file) { if (!$pharExtensionLoaded) { - $notLoadedExtensions[] = $file . ' cannot be loaded'; + Event\Facade::emitter()->testRunnerTriggeredWarning( + sprintf( + 'Cannot load extension from %s because the PHAR extension is not available', + $file, + ), + ); continue; } if (!is_file('phar://' . $file . '/manifest.xml')) { - $notLoadedExtensions[] = $file . ' is not an extension for PHPUnit'; + Event\Facade::emitter()->testRunnerTriggeredWarning( + sprintf( + '%s is not an extension for PHPUnit', + $file, + ), + ); continue; } try { $applicationName = new ApplicationName('phpunit/phpunit'); - $version = new PharIoVersion(Version::series()); + $version = new PharIoVersion($this->phpunitVersion()); $manifest = ManifestLoader::fromFile('phar://' . $file . '/manifest.xml'); if (!$manifest->isExtensionFor($applicationName)) { - $notLoadedExtensions[] = $file . ' is not an extension for PHPUnit'; + Event\Facade::emitter()->testRunnerTriggeredWarning( + sprintf( + '%s is not an extension for PHPUnit', + $file, + ), + ); continue; } if (!$manifest->isExtensionFor($applicationName, $version)) { - $notLoadedExtensions[] = $file . ' is not compatible with this version of PHPUnit'; + Event\Facade::emitter()->testRunnerTriggeredWarning( + sprintf( + '%s is not compatible with PHPUnit %s', + $file, + Version::series(), + ), + ); continue; } } catch (ManifestException $e) { - $notLoadedExtensions[] = $file . ': ' . $e->getMessage(); + Event\Facade::emitter()->testRunnerTriggeredWarning( + sprintf( + 'Cannot load extension from %s: %s', + $file, + $e->getMessage(), + ), + ); continue; } - /** - * @psalm-suppress UnresolvableInclude - */ - require $file; + try { + /** @psalm-suppress UnresolvableInclude */ + @require $file; + } catch (Throwable $t) { + Event\Facade::emitter()->testRunnerTriggeredWarning( + sprintf( + 'Cannot load extension from %s: %s', + $file, + $t->getMessage(), + ), + ); + + continue; + } $loadedExtensions[] = $manifest->getName()->asString() . ' ' . $manifest->getVersion()->getVersionString(); Event\Facade::emitter()->testRunnerLoadedExtensionFromPhar( $file, $manifest->getName()->asString(), - $manifest->getVersion()->getVersionString() + $manifest->getVersion()->getVersionString(), ); } - return [ - 'loadedExtensions' => $loadedExtensions, - 'notLoadedExtensions' => $notLoadedExtensions, - ]; + return $loadedExtensions; + } + + private function phpunitVersion(): string + { + $version = Version::id(); + + if (!str_contains($version, '-')) { + return $version; + } + + $parts = explode('.', explode('-', $version)[0]); + + if (count($parts) === 2) { + $parts[] = 0; + } + + return implode('.', $parts); } } diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php b/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php index 2519edfd..d8875c61 100644 --- a/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php +++ b/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php @@ -31,11 +31,11 @@ public function __construct(RecursiveIterator $iterator, array $groups, TestSuit { parent::__construct($iterator); - foreach ($suite->getGroupDetails() as $group => $tests) { + foreach ($suite->groupDetails() as $group => $tests) { if (in_array((string) $group, $groups, true)) { $testHashes = array_map( 'spl_object_id', - $tests + $tests, ); array_push($this->groupTests, ...$testHashes); diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php b/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php index 8e934df1..566b9320 100644 --- a/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php +++ b/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php @@ -80,7 +80,7 @@ private function setFilter(string $filter): void if (isset($matches[3]) && $matches[2] < $matches[3]) { $filter = sprintf( '%s.*with data set #(\d+)$', - $matches[1] + $matches[1], ); $this->filterMin = (int) $matches[2]; @@ -89,7 +89,7 @@ private function setFilter(string $filter): void $filter = sprintf( '%s.*with data set #%s$', $matches[1], - $matches[2] + $matches[2], ); } } // Handles: @@ -99,7 +99,7 @@ private function setFilter(string $filter): void $filter = sprintf( '%s.*with data set "%s"$', $matches[1], - $matches[2] + $matches[2], ); } @@ -110,8 +110,8 @@ private function setFilter(string $filter): void str_replace( '/', '\\/', - $filter - ) + $filter, + ), ); } diff --git a/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php b/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php index 34eaa30c..b8ddb1b8 100644 --- a/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php +++ b/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php @@ -117,7 +117,7 @@ public function run(): void $emitter = EventFacade::emitter(); $emitter->testPreparationStarted( - $this->valueObjectForEvents() + $this->valueObjectForEvents(), ); try { @@ -177,7 +177,7 @@ public function run(): void $this->renderForCoverage( $code, CodeCoverage::instance()->codeCoverage()->collectsBranchAndPathCoverage(), - $codeCoverageCacheDirectory + $codeCoverageCacheDirectory, ); } @@ -193,7 +193,7 @@ public function run(): void true, TestStatus::unknown(), [], - [] + [], ); } @@ -221,7 +221,7 @@ public function run(): void $trace[0]['file'], $trace[0]['line'], $trace, - $comparisonFailure ? $diff : '' + $comparisonFailure ? $diff : '', ); } @@ -399,7 +399,7 @@ private function shouldTestBeSkipped(array $sections, array $settings): bool EventFacade::emitter()->testSkipped( $this->valueObjectForEvents(), - $message + $message, ); EventFacade::emitter()->testFinished($this->valueObjectForEvents(), 0); @@ -508,7 +508,7 @@ private function parseExternal(array &$sections): void !is_readable($testDirectory . $externalFilename)) { throw new PhptExternalFileCannotBeLoadedException( $section, - $testDirectory . $externalFilename + $testDirectory . $externalFilename, ); } @@ -566,7 +566,7 @@ private function render(string $code): string "'" . dirname($this->filename) . "'", "'" . $this->filename . "'", ], - $code + $code, ); } @@ -589,7 +589,7 @@ private function renderForCoverage(string &$job, bool $pathCoverage, ?string $co $files = $this->getCoverageFiles(); $template = new Template( - __DIR__ . '/../Util/PHP/Template/PhptTestCase.tpl' + __DIR__ . '/../Util/PHP/Template/PhptTestCase.tpl', ); $composerAutoload = '\'\''; @@ -625,7 +625,7 @@ private function renderForCoverage(string &$job, bool $pathCoverage, ?string $co 'coverageFile' => $files['coverage'], 'driverMethod' => $pathCoverage ? 'forLineAndPathCoverage' : 'forLineCoverage', 'codeCoverageCacheDirectory' => $codeCoverageCacheDirectory, - ] + ], ); file_put_contents($files['job'], $job); diff --git a/vendor/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php b/vendor/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php index b77f44ac..bc3e8c44 100644 --- a/vendor/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php +++ b/vendor/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php @@ -92,7 +92,7 @@ public function load(): void $data = json_decode( file_get_contents($this->cacheFilename), - true + true, ); if ($data === null) { @@ -140,7 +140,7 @@ public function persist(): void file_put_contents( $this->cacheFilename, json_encode($data), - LOCK_EX + LOCK_EX, ); } } diff --git a/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php b/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php index aa7b5cb8..f0b054e2 100644 --- a/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php +++ b/vendor/phpunit/phpunit/src/Runner/ResultCache/ResultCacheHandler.php @@ -68,7 +68,7 @@ public function testMarkedIncomplete(MarkedIncomplete $event): void { $this->cache->setStatus( $event->test()->id(), - TestStatus::incomplete($event->throwable()->message()) + TestStatus::incomplete($event->throwable()->message()), ); } @@ -76,7 +76,7 @@ public function testConsideredRisky(ConsideredRisky $event): void { $this->cache->setStatus( $event->test()->id(), - TestStatus::risky($event->message()) + TestStatus::risky($event->message()), ); } @@ -84,7 +84,7 @@ public function testErrored(Errored $event): void { $this->cache->setStatus( $event->test()->id(), - TestStatus::error($event->throwable()->message()) + TestStatus::error($event->throwable()->message()), ); } @@ -92,7 +92,7 @@ public function testFailed(Failed $event): void { $this->cache->setStatus( $event->test()->id(), - TestStatus::failure($event->throwable()->message()) + TestStatus::failure($event->throwable()->message()), ); } @@ -104,7 +104,7 @@ public function testSkipped(Skipped $event): void { $this->cache->setStatus( $event->test()->id(), - TestStatus::skipped($event->message()) + TestStatus::skipped($event->message()), ); $this->cache->setTime($event->test()->id(), $this->duration($event)); diff --git a/vendor/phpunit/phpunit/src/Runner/TestResult/Collector.php b/vendor/phpunit/phpunit/src/Runner/TestResult/Collector.php index 038eebc8..27d8b9b7 100644 --- a/vendor/phpunit/phpunit/src/Runner/TestResult/Collector.php +++ b/vendor/phpunit/phpunit/src/Runner/TestResult/Collector.php @@ -50,9 +50,6 @@ final class Collector { private readonly Source $source; - private readonly bool $restrictDeprecations; - private readonly bool $restrictNotices; - private readonly bool $restrictWarnings; private int $numberOfTests = 0; private int $numberOfTestsRun = 0; private int $numberOfAssertions = 0; @@ -153,7 +150,7 @@ final class Collector * @throws EventFacadeIsSealedException * @throws UnknownSubscriberTypeException */ - public function __construct(Facade $facade, Source $source, bool $restrictDeprecations, bool $restrictNotices, bool $restrictWarnings) + public function __construct(Facade $facade, Source $source) { $facade->registerSubscribers( new ExecutionStartedSubscriber($this), @@ -182,10 +179,7 @@ public function __construct(Facade $facade, Source $source, bool $restrictDeprec new TestRunnerTriggeredWarningSubscriber($this), ); - $this->source = $source; - $this->restrictDeprecations = $restrictDeprecations; - $this->restrictNotices = $restrictNotices; - $this->restrictWarnings = $restrictWarnings; + $this->source = $source; } public function result(): TestResult @@ -370,7 +364,11 @@ public function testConsideredRisky(ConsideredRisky $event): void public function testTriggeredDeprecation(DeprecationTriggered $event): void { - if ($this->restrictDeprecations && !(new SourceFilter)->includes($this->source, $event->file())) { + if (!$this->source->ignoreSuppressionOfDeprecations() && $event->wasSuppressed()) { + return; + } + + if ($this->source->restrictDeprecations() && !(new SourceFilter)->includes($this->source, $event->file())) { return; } @@ -383,7 +381,11 @@ public function testTriggeredDeprecation(DeprecationTriggered $event): void public function testTriggeredPhpDeprecation(PhpDeprecationTriggered $event): void { - if ($this->restrictDeprecations && !(new SourceFilter)->includes($this->source, $event->file())) { + if (!$this->source->ignoreSuppressionOfPhpDeprecations() && $event->wasSuppressed()) { + return; + } + + if ($this->source->restrictDeprecations() && !(new SourceFilter)->includes($this->source, $event->file())) { return; } @@ -405,6 +407,10 @@ public function testTriggeredPhpunitDeprecation(PhpunitDeprecationTriggered $eve public function testTriggeredError(ErrorTriggered $event): void { + if (!$this->source->ignoreSuppressionOfErrors() && $event->wasSuppressed()) { + return; + } + if (!isset($this->testTriggeredErrorEvents[$event->test()->id()])) { $this->testTriggeredErrorEvents[$event->test()->id()] = []; } @@ -414,7 +420,11 @@ public function testTriggeredError(ErrorTriggered $event): void public function testTriggeredNotice(NoticeTriggered $event): void { - if ($this->restrictNotices && !(new SourceFilter)->includes($this->source, $event->file())) { + if (!$this->source->ignoreSuppressionOfNotices() && $event->wasSuppressed()) { + return; + } + + if ($this->source->restrictNotices() && !(new SourceFilter)->includes($this->source, $event->file())) { return; } @@ -427,7 +437,11 @@ public function testTriggeredNotice(NoticeTriggered $event): void public function testTriggeredPhpNotice(PhpNoticeTriggered $event): void { - if ($this->restrictNotices && !(new SourceFilter)->includes($this->source, $event->file())) { + if (!$this->source->ignoreSuppressionOfPhpNotices() && $event->wasSuppressed()) { + return; + } + + if ($this->source->restrictNotices() && !(new SourceFilter)->includes($this->source, $event->file())) { return; } @@ -440,7 +454,11 @@ public function testTriggeredPhpNotice(PhpNoticeTriggered $event): void public function testTriggeredWarning(WarningTriggered $event): void { - if ($this->restrictWarnings && !(new SourceFilter)->includes($this->source, $event->file())) { + if (!$this->source->ignoreSuppressionOfWarnings() && $event->wasSuppressed()) { + return; + } + + if ($this->source->restrictWarnings() && !(new SourceFilter)->includes($this->source, $event->file())) { return; } @@ -453,7 +471,11 @@ public function testTriggeredWarning(WarningTriggered $event): void public function testTriggeredPhpWarning(PhpWarningTriggered $event): void { - if ($this->restrictWarnings && !(new SourceFilter)->includes($this->source, $event->file())) { + if (!$this->source->ignoreSuppressionOfPhpWarnings() && $event->wasSuppressed()) { + return; + } + + if ($this->source->restrictWarnings() && !(new SourceFilter)->includes($this->source, $event->file())) { return; } diff --git a/vendor/phpunit/phpunit/src/Runner/TestResult/Facade.php b/vendor/phpunit/phpunit/src/Runner/TestResult/Facade.php index 688fd637..d6ef88d9 100644 --- a/vendor/phpunit/phpunit/src/Runner/TestResult/Facade.php +++ b/vendor/phpunit/phpunit/src/Runner/TestResult/Facade.php @@ -95,9 +95,6 @@ private static function collector(): Collector self::$collector = new Collector( EventFacade::instance(), $configuration->source(), - $configuration->restrictDeprecations(), - $configuration->restrictNotices(), - $configuration->restrictWarnings(), ); } diff --git a/vendor/phpunit/phpunit/src/Runner/TestResult/PassedTests.php b/vendor/phpunit/phpunit/src/Runner/TestResult/PassedTests.php index 54957177..8462f97c 100644 --- a/vendor/phpunit/phpunit/src/Runner/TestResult/PassedTests.php +++ b/vendor/phpunit/phpunit/src/Runner/TestResult/PassedTests.php @@ -61,7 +61,7 @@ public function testMethodPassed(TestMethod $test, mixed $returnValue): void { $size = (new Groups)->size( $test->className(), - $test->methodName() + $test->methodName(), ); $this->passedTestMethods[$test->className() . '::' . $test->methodName()] = [ @@ -74,12 +74,12 @@ public function import(self $other): void { $this->passedTestClasses = array_merge( $this->passedTestClasses, - $other->passedTestClasses + $other->passedTestClasses, ); $this->passedTestMethods = array_merge( $this->passedTestMethods, - $other->passedTestMethods + $other->passedTestMethods, ); } diff --git a/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php b/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php index 096a907c..84d4b2db 100644 --- a/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php +++ b/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php @@ -12,6 +12,7 @@ use function array_diff; use function array_values; use function basename; +use function class_exists; use function get_declared_classes; use function realpath; use function str_ends_with; @@ -76,7 +77,11 @@ public function load(string $suiteClassFile): ReflectionClass throw $e; } - throw new ClassCannotBeFoundException($suiteClassName, $suiteClassFile); + if (!class_exists($suiteClassName)) { + throw new ClassCannotBeFoundException($suiteClassName, $suiteClassFile); + } + + throw new ClassDoesNotExtendTestCaseException($suiteClassName, $suiteClassFile); } private function classNameFromFileName(string $suiteClassFile): string @@ -109,8 +114,8 @@ private function loadSuiteClassFile(string $suiteClassFile): array $loadedClasses = array_values( array_diff( get_declared_classes(), - self::$declaredClasses - ) + self::$declaredClasses, + ), ); foreach ($loadedClasses as $loadedClass) { diff --git a/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php b/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php index 237e8db4..6d1a78e7 100644 --- a/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php +++ b/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php @@ -207,7 +207,7 @@ private function sortDefectsFirst(array $tests): array { usort( $tests, - fn ($left, $right) => $this->cmpDefectPriorityAndTime($left, $right) + fn ($left, $right) => $this->cmpDefectPriorityAndTime($left, $right), ); return $tests; @@ -217,7 +217,7 @@ private function sortByDuration(array $tests): array { usort( $tests, - fn ($left, $right) => $this->cmpDuration($left, $right) + fn ($left, $right) => $this->cmpDuration($left, $right), ); return $tests; @@ -227,7 +227,7 @@ private function sortBySize(array $tests): array { usort( $tests, - fn ($left, $right) => $this->cmpSize($left, $right) + fn ($left, $right) => $this->cmpSize($left, $right), ); return $tests; diff --git a/vendor/phpunit/phpunit/src/Runner/Version.php b/vendor/phpunit/phpunit/src/Runner/Version.php index 88635e97..14cab338 100644 --- a/vendor/phpunit/phpunit/src/Runner/Version.php +++ b/vendor/phpunit/phpunit/src/Runner/Version.php @@ -34,7 +34,7 @@ public static function id(): string } if (self::$version === '') { - self::$version = (new VersionId('10.1.3', dirname(__DIR__, 2)))->asString(); + self::$version = (new VersionId('10.2.1', dirname(__DIR__, 2)))->asString(); } return self::$version; diff --git a/vendor/phpunit/phpunit/src/TextUI/Application.php b/vendor/phpunit/phpunit/src/TextUI/Application.php index 4259a7b4..7489e741 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Application.php +++ b/vendor/phpunit/phpunit/src/TextUI/Application.php @@ -88,7 +88,7 @@ public function run(array $argv): int $configuration = Registry::init( $cliConfiguration, - $xmlConfiguration + $xmlConfiguration, ); (new PhpHandler)->handle($configuration->php()); @@ -113,7 +113,7 @@ public function run(array $argv): int if (!$configuration->noExtensions()) { if ($configuration->hasPharExtensionDirectory()) { $pharExtensions = (new PharLoader)->loadPharExtensionsInDirectory( - $configuration->pharExtensionDirectory() + $configuration->pharExtensionDirectory(), ); } @@ -127,19 +127,19 @@ public function run(array $argv): int CodeCoverage::instance()->init( $configuration, CodeCoverageFilterRegistry::instance(), - $extensionRequiresCodeCoverageCollection + $extensionRequiresCodeCoverageCollection, ); if (CodeCoverage::instance()->isActive()) { CodeCoverage::instance()->ignoreLines( - (new CodeCoverageMetadataApi)->linesToBeIgnored($testSuite) + (new CodeCoverageMetadataApi)->linesToBeIgnored($testSuite), ); } $printer = OutputFacade::init( $configuration, $extensionReplacesProgressOutput, - $extensionReplacesResultOutput + $extensionReplacesResultOutput, ); if (!$extensionReplacesOutput) { @@ -168,7 +168,7 @@ public function run(array $argv): int $runner->run( $configuration, $resultCache, - $testSuite + $testSuite, ); $duration = $timer->stop(); @@ -182,14 +182,14 @@ public function run(array $argv): int if ($testDoxResult !== null && $configuration->hasLogfileTestdoxHtml()) { OutputFacade::printerFor($configuration->logfileTestdoxHtml())->print( - (new TestDoxHtmlRenderer)->render($testDoxResult) + (new TestDoxHtmlRenderer)->render($testDoxResult), ); } if ($testDoxResult !== null && $configuration->hasLogfileTestdoxText()) { OutputFacade::printerFor($configuration->logfileTestdoxText())->print( - (new TestDoxTextRenderer)->render($testDoxResult) + (new TestDoxTextRenderer)->render($testDoxResult), ); } @@ -209,7 +209,7 @@ public function run(array $argv): int $configuration->failOnRisky(), $configuration->failOnSkipped(), $configuration->failOnWarning(), - $result + $result, ); EventFacade::emitter()->applicationFinished($shellExitCode); @@ -234,7 +234,7 @@ private function exitWithCrashMessage(Throwable $t): never PHP_EOL, PHP_EOL, PHP_EOL, - $message + $message, ); $first = true; @@ -249,7 +249,7 @@ private function exitWithCrashMessage(Throwable $t): never PHP_EOL, PHP_EOL, $t->getTraceAsString(), - PHP_EOL + PHP_EOL, ); $first = false; @@ -282,8 +282,8 @@ private function loadBootstrapScript(string $filename): void $this->exitWithErrorMessage( sprintf( 'Cannot open bootstrap script "%s"', - $filename - ) + $filename, + ), ); } @@ -296,7 +296,7 @@ private function loadBootstrapScript(string $filename): void PHP_EOL, $t->getMessage(), PHP_EOL, - $t->getTraceAsString() + $t->getTraceAsString(), ); while ($t = $t->getPrevious()) { @@ -329,7 +329,7 @@ private function buildCliConfiguration(array $argv): CliConfiguration return $cliConfiguration; } - private function loadXmlConfiguration(string|false $configurationFile): XmlConfiguration + private function loadXmlConfiguration(false|string $configurationFile): XmlConfiguration { if (!$configurationFile) { return DefaultConfiguration::create(); @@ -360,23 +360,14 @@ private function bootstrapExtensions(Configuration $configuration): array $extensionBootstrapper = new ExtensionBootstrapper( $configuration, - $facade + $facade, ); foreach ($configuration->extensionBootstrappers() as $bootstrapper) { - try { - $extensionBootstrapper->bootstrap( - $bootstrapper['className'], - $bootstrapper['parameters'] - ); - } catch (\PHPUnit\Runner\Exception $e) { - $this->exitWithErrorMessage( - sprintf( - 'Error while bootstrapping extension: %s', - $e->getMessage() - ) - ); - } + $extensionBootstrapper->bootstrap( + $bootstrapper['className'], + $bootstrapper['parameters'], + ); } return [ @@ -387,7 +378,7 @@ private function bootstrapExtensions(Configuration $configuration): array ]; } - private function executeCommandsThatOnlyRequireCliConfiguration(CliConfiguration $cliConfiguration, string|false $configurationFile): void + private function executeCommandsThatOnlyRequireCliConfiguration(CliConfiguration $cliConfiguration, false|string $configurationFile): void { if ($cliConfiguration->generateConfiguration()) { $this->execute(new GenerateConfigurationCommand); @@ -432,8 +423,8 @@ private function executeCommandsThatRequireCliConfigurationAndTestSuite(CliConfi $this->execute( new ListTestsAsXmlCommand( $cliConfiguration->listTestsXml(), - $testSuite - ) + $testSuite, + ), ); } } @@ -472,13 +463,13 @@ private function writeRuntimeInformation(Printer $printer, Configuration $config $this->writeMessage( $printer, 'Configuration', - $configuration->configurationFile() + $configuration->configurationFile(), ); } } /** - * @psalm-param ?array{loadedExtensions: list, notLoadedExtensions: list} $pharExtensions + * @psalm-param ?list $pharExtensions */ private function writePharExtensionInformation(Printer $printer, ?array $pharExtensions): void { @@ -486,19 +477,11 @@ private function writePharExtensionInformation(Printer $printer, ?array $pharExt return; } - foreach ($pharExtensions['loadedExtensions'] as $extension) { + foreach ($pharExtensions as $extension) { $this->writeMessage( $printer, 'Extension', - $extension - ); - } - - foreach ($pharExtensions['notLoadedExtensions'] as $extension) { - $this->writeMessage( - $printer, - 'Extension', - $extension + $extension, ); } } @@ -509,8 +492,8 @@ private function writeMessage(Printer $printer, string $type, string $message): sprintf( "%-15s%s\n", $type . ':', - $message - ) + $message, + ), ); } @@ -520,7 +503,7 @@ private function writeRandomSeedInformation(Printer $printer, Configuration $con $this->writeMessage( $printer, 'Random Seed', - (string) $configuration->randomOrderSeed() + (string) $configuration->randomOrderSeed(), ); } } @@ -539,8 +522,8 @@ private function registerLogfileWriters(Configuration $configuration): void EventFacade::instance()->registerTracer( new EventLogger( $configuration->logEventsText(), - false - ) + false, + ), ); } @@ -552,24 +535,24 @@ private function registerLogfileWriters(Configuration $configuration): void EventFacade::instance()->registerTracer( new EventLogger( $configuration->logEventsVerboseText(), - true - ) + true, + ), ); } if ($configuration->hasLogfileJunit()) { new JunitXmlLogger( OutputFacade::printerFor($configuration->logfileJunit()), - EventFacade::instance() + EventFacade::instance(), ); } if ($configuration->hasLogfileTeamcity()) { new TeamCityLogger( DefaultPrinter::from( - $configuration->logfileTeamcity() + $configuration->logfileTeamcity(), ), - EventFacade::instance() + EventFacade::instance(), ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php index f37815be..7f450006 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php +++ b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php @@ -65,8 +65,8 @@ public function execute(): Result $bootstrapScript, $testsDirectory, $src, - $cacheDirectory - ) + $cacheDirectory, + ), ); /* @noinspection MissingDirectorySeparatorInspection */ diff --git a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php index e69e52f8..e014d3f0 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php +++ b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php @@ -32,7 +32,7 @@ public function execute(): Result $buffer = $this->warnAboutConflictingOptions(); $buffer .= 'Available test group(s):' . PHP_EOL; - $groups = $this->suite->getGroups(); + $groups = $this->suite->groups(); sort($groups); foreach ($groups as $group) { @@ -42,7 +42,7 @@ public function execute(): Result $buffer .= sprintf( ' - %s' . PHP_EOL, - $group + $group, ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php index bb53afdd..78c17116 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php +++ b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestSuitesCommand.php @@ -33,7 +33,7 @@ public function execute(): Result foreach ($this->suites as $suite) { $buffer .= sprintf( ' - %s' . PHP_EOL, - $suite->name() + $suite->name(), ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php index 3af328f1..c376a631 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php +++ b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsTextCommand.php @@ -40,7 +40,7 @@ public function execute(): Result $name = sprintf( '%s::%s', $test::class, - str_replace(' with data set ', '', $test->nameWithDataSet()) + str_replace(' with data set ', '', $test->nameWithDataSet()), ); } elseif ($test instanceof PhptTestCase) { $name = $test->getName(); @@ -50,7 +50,7 @@ public function execute(): Result $buffer .= sprintf( ' - %s' . PHP_EOL, - $name + $name, ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php index 7cd5fb5f..dbee94b1 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php +++ b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ListTestsAsXmlCommand.php @@ -69,8 +69,8 @@ public function execute(): Result str_replace( ' with data set ', '', - $test->dataSetAsString() - ) + $test->dataSetAsString(), + ), ); } @@ -98,7 +98,7 @@ public function execute(): Result $buffer .= sprintf( 'Wrote list of tests that would have been run to %s' . PHP_EOL, - $this->filename + $this->filename, ); return Result::from($buffer); diff --git a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php index 7de97696..50001940 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php +++ b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/MigrateConfigurationCommand.php @@ -36,7 +36,7 @@ public function execute(): Result try { file_put_contents( $this->filename, - (new Migrator)->migrate($this->filename) + (new Migrator)->migrate($this->filename), ); $buffer .= 'Migrated configuration: ' . $this->filename . PHP_EOL; diff --git a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php index 2b23fc24..aae306e5 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php +++ b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/ShowHelpCommand.php @@ -27,7 +27,7 @@ public function execute(): Result { return Result::from( (new Help)->generate(), - $this->shellExitCode + $this->shellExitCode, ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php index 35866e17..734d905f 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php +++ b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/VersionCheckCommand.php @@ -29,13 +29,13 @@ public function execute(): Result sprintf( 'You are not using the latest version of PHPUnit.' . PHP_EOL . 'The latest version is PHPUnit %s.' . PHP_EOL, - $latestVersion - ) + $latestVersion, + ), ); } return Result::from( - 'You are using the latest version of PHPUnit.' . PHP_EOL + 'You are using the latest version of PHPUnit.' . PHP_EOL, ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php index 4749bfeb..73141e0e 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php +++ b/vendor/phpunit/phpunit/src/TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php @@ -40,7 +40,7 @@ public function execute(): Result if (!$this->configuration->hasCoverageCacheDirectory()) { return Result::from( 'Cache for static analysis has not been configured' . PHP_EOL, - Result::FAILURE + Result::FAILURE, ); } @@ -49,7 +49,7 @@ public function execute(): Result if (!$this->codeCoverageFilterRegistry->configured()) { return Result::from( 'Filter for code coverage has not been configured' . PHP_EOL, - Result::FAILURE + Result::FAILURE, ); } @@ -62,13 +62,13 @@ public function execute(): Result $this->configuration->coverageCacheDirectory(), !$this->configuration->disableCodeCoverageIgnore(), $this->configuration->ignoreDeprecatedCodeUnitsFromCodeCoverage(), - $this->codeCoverageFilterRegistry->get() + $this->codeCoverageFilterRegistry->get(), ); printf( '[%s]%s', $timer->stop()->asString(), - \PHP_EOL + \PHP_EOL, ); return Result::from(); diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Builder.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Builder.php index 55f38c5b..64166010 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Builder.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Builder.php @@ -37,13 +37,13 @@ public function build(array $argv): Configuration return Registry::init( $cliConfiguration, - $xmlConfiguration + $xmlConfiguration, ); } catch (CliConfigurationException|XmlConfigurationException $e) { throw new ConfigurationCannotBeBuiltException( $e->getMessage(), $e->getCode(), - $e + $e, ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php index 94dc6ffc..97239fc9 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php @@ -128,13 +128,13 @@ public function fromParameters(array $parameters): Configuration $options = (new CliParser)->parse( $parameters, self::SHORT_OPTIONS, - self::LONG_OPTIONS + self::LONG_OPTIONS, ); } catch (CliParserException $e) { throw new Exception( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -493,8 +493,8 @@ public function fromParameters(array $parameters): Configuration throw new Exception( sprintf( 'unrecognized --order-by option: %s', - $order - ) + $order, + ), ); } } @@ -889,7 +889,7 @@ public function fromParameters(array $parameters): Configuration $logEventsText, $logEventsVerboseText, $printerTeamCity, - $printerTestDox + $printerTestDox, ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php index 01959282..55a89c1e 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php @@ -19,7 +19,7 @@ */ final class XmlConfigurationFileFinder { - public function find(Configuration $configuration): string|false + public function find(Configuration $configuration): false|string { $useDefaultConfiguration = $configuration->useDefaultConfiguration(); @@ -48,7 +48,7 @@ public function find(Configuration $configuration): string|false return false; } - private function configurationFileInDirectory(string $directory): string|false + private function configurationFileInDirectory(string $directory): false|string { $candidates = [ $directory . '/phpunit.xml', diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Configuration.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Configuration.php index 6c4f1fc7..fb1253d5 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Configuration.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Configuration.php @@ -27,9 +27,6 @@ final class Configuration private readonly ?string $cacheDirectory; private readonly ?string $coverageCacheDirectory; private readonly Source $source; - private readonly bool $restrictDeprecations; - private readonly bool $restrictNotices; - private readonly bool $restrictWarnings; private readonly bool $pathCoverage; private readonly ?string $coverageClover; private readonly ?string $coverageCobertura; @@ -135,7 +132,7 @@ final class Configuration * @psalm-param non-empty-list $testSuffixes * @psalm-param list}> $extensionBootstrappers */ - public function __construct(?string $cliArgument, ?string $configurationFile, ?string $bootstrap, bool $cacheResult, ?string $cacheDirectory, ?string $coverageCacheDirectory, Source $source, bool $restrictDeprecations, bool $restrictNotices, bool $restrictWarnings, string $testResultCacheFile, ?string $coverageClover, ?string $coverageCobertura, ?string $coverageCrap4j, int $coverageCrap4jThreshold, ?string $coverageHtml, int $coverageHtmlLowUpperBound, int $coverageHtmlHighLowerBound, string $coverageHtmlColorSuccessLow, string $coverageHtmlColorSuccessMedium, string $coverageHtmlColorSuccessHigh, string $coverageHtmlColorWarning, string $coverageHtmlColorDanger, ?string $coverageHtmlCustomCssFile, ?string $coveragePhp, ?string $coverageText, bool $coverageTextShowUncoveredFiles, bool $coverageTextShowOnlySummary, ?string $coverageXml, bool $pathCoverage, bool $ignoreDeprecatedCodeUnitsFromCodeCoverage, bool $disableCodeCoverageIgnore, bool $failOnDeprecation, bool $failOnEmptyTestSuite, bool $failOnIncomplete, bool $failOnNotice, bool $failOnRisky, bool $failOnSkipped, bool $failOnWarning, bool $stopOnDefect, bool $stopOnDeprecation, bool $stopOnError, bool $stopOnFailure, bool $stopOnIncomplete, bool $stopOnNotice, bool $stopOnRisky, bool $stopOnSkipped, bool $stopOnWarning, bool $outputToStandardErrorStream, int|string $columns, bool $noExtensions, ?string $pharExtensionDirectory, array $extensionBootstrappers, bool $backupGlobals, bool $backupStaticProperties, bool $beStrictAboutChangesToGlobalState, bool $colors, bool $processIsolation, bool $enforceTimeLimit, int $defaultTimeLimit, int $timeoutForSmallTests, int $timeoutForMediumTests, int $timeoutForLargeTests, bool $reportUselessTests, bool $strictCoverage, bool $disallowTestOutput, bool $displayDetailsOnIncompleteTests, bool $displayDetailsOnSkippedTests, bool $displayDetailsOnTestsThatTriggerDeprecations, bool $displayDetailsOnTestsThatTriggerErrors, bool $displayDetailsOnTestsThatTriggerNotices, bool $displayDetailsOnTestsThatTriggerWarnings, bool $reverseDefectList, bool $requireCoverageMetadata, bool $registerMockObjectsFromTestArgumentsRecursively, bool $noProgress, bool $noResults, bool $noOutput, int $executionOrder, int $executionOrderDefects, bool $resolveDependencies, ?string $logfileTeamcity, ?string $logfileJunit, ?string $logfileTestdoxHtml, ?string $logfileTestdoxText, ?string $logEventsText, ?string $logEventsVerboseText, bool $teamCityOutput, bool $testDoxOutput, ?array $testsCovering, ?array $testsUsing, ?string $filter, ?array $groups, ?array $excludeGroups, int $randomOrderSeed, bool $includeUncoveredFiles, TestSuiteCollection $testSuite, string $includeTestSuite, string $excludeTestSuite, ?string $defaultTestSuite, array $testSuffixes, Php $php) + public function __construct(?string $cliArgument, ?string $configurationFile, ?string $bootstrap, bool $cacheResult, ?string $cacheDirectory, ?string $coverageCacheDirectory, Source $source, string $testResultCacheFile, ?string $coverageClover, ?string $coverageCobertura, ?string $coverageCrap4j, int $coverageCrap4jThreshold, ?string $coverageHtml, int $coverageHtmlLowUpperBound, int $coverageHtmlHighLowerBound, string $coverageHtmlColorSuccessLow, string $coverageHtmlColorSuccessMedium, string $coverageHtmlColorSuccessHigh, string $coverageHtmlColorWarning, string $coverageHtmlColorDanger, ?string $coverageHtmlCustomCssFile, ?string $coveragePhp, ?string $coverageText, bool $coverageTextShowUncoveredFiles, bool $coverageTextShowOnlySummary, ?string $coverageXml, bool $pathCoverage, bool $ignoreDeprecatedCodeUnitsFromCodeCoverage, bool $disableCodeCoverageIgnore, bool $failOnDeprecation, bool $failOnEmptyTestSuite, bool $failOnIncomplete, bool $failOnNotice, bool $failOnRisky, bool $failOnSkipped, bool $failOnWarning, bool $stopOnDefect, bool $stopOnDeprecation, bool $stopOnError, bool $stopOnFailure, bool $stopOnIncomplete, bool $stopOnNotice, bool $stopOnRisky, bool $stopOnSkipped, bool $stopOnWarning, bool $outputToStandardErrorStream, int|string $columns, bool $noExtensions, ?string $pharExtensionDirectory, array $extensionBootstrappers, bool $backupGlobals, bool $backupStaticProperties, bool $beStrictAboutChangesToGlobalState, bool $colors, bool $processIsolation, bool $enforceTimeLimit, int $defaultTimeLimit, int $timeoutForSmallTests, int $timeoutForMediumTests, int $timeoutForLargeTests, bool $reportUselessTests, bool $strictCoverage, bool $disallowTestOutput, bool $displayDetailsOnIncompleteTests, bool $displayDetailsOnSkippedTests, bool $displayDetailsOnTestsThatTriggerDeprecations, bool $displayDetailsOnTestsThatTriggerErrors, bool $displayDetailsOnTestsThatTriggerNotices, bool $displayDetailsOnTestsThatTriggerWarnings, bool $reverseDefectList, bool $requireCoverageMetadata, bool $registerMockObjectsFromTestArgumentsRecursively, bool $noProgress, bool $noResults, bool $noOutput, int $executionOrder, int $executionOrderDefects, bool $resolveDependencies, ?string $logfileTeamcity, ?string $logfileJunit, ?string $logfileTestdoxHtml, ?string $logfileTestdoxText, ?string $logEventsText, ?string $logEventsVerboseText, bool $teamCityOutput, bool $testDoxOutput, ?array $testsCovering, ?array $testsUsing, ?string $filter, ?array $groups, ?array $excludeGroups, int $randomOrderSeed, bool $includeUncoveredFiles, TestSuiteCollection $testSuite, string $includeTestSuite, string $excludeTestSuite, ?string $defaultTestSuite, array $testSuffixes, Php $php) { $this->cliArgument = $cliArgument; $this->configurationFile = $configurationFile; @@ -144,9 +141,6 @@ public function __construct(?string $cliArgument, ?string $configurationFile, ?s $this->cacheDirectory = $cacheDirectory; $this->coverageCacheDirectory = $coverageCacheDirectory; $this->source = $source; - $this->restrictDeprecations = $restrictDeprecations; - $this->restrictNotices = $restrictNotices; - $this->restrictWarnings = $restrictWarnings; $this->testResultCacheFile = $testResultCacheFile; $this->coverageClover = $coverageClover; $this->coverageCobertura = $coverageCobertura; @@ -351,19 +345,28 @@ public function source(): Source return $this->source; } + /** + * @deprecated Use source()->restrictDeprecations() instead + */ public function restrictDeprecations(): bool { - return $this->restrictDeprecations; + return $this->source()->restrictDeprecations(); } + /** + * @deprecated Use source()->restrictNotices() instead + */ public function restrictNotices(): bool { - return $this->restrictNotices; + return $this->source()->restrictNotices(); } + /** + * @deprecated Use source()->restrictWarnings() instead + */ public function restrictWarnings(): bool { - return $this->restrictWarnings; + return $this->source()->restrictWarnings(); } /** diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Merger.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Merger.php index f608c018..5c0705db 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Merger.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Merger.php @@ -233,7 +233,7 @@ public function merge(CliConfiguration $cliConfiguration, XmlConfiguration $xmlC $columns = 16; EventFacade::emitter()->testRunnerTriggeredWarning( - 'Less than 16 columns requested, number of columns set to 16' + 'Less than 16 columns requested, number of columns set to 16', ); } @@ -400,7 +400,7 @@ public function merge(CliConfiguration $cliConfiguration, XmlConfiguration $xmlC if ($enforceTimeLimit && !(new Invoker)->canInvokeWithTimeout()) { EventFacade::emitter()->testRunnerTriggeredWarning( - 'The pcntl extension is required for enforcing time limits' + 'The pcntl extension is required for enforcing time limits', ); } @@ -629,12 +629,12 @@ public function merge(CliConfiguration $cliConfiguration, XmlConfiguration $xmlC if ($xmlConfiguration->wasLoadedFromFile() && $xmlConfiguration->hasValidationErrors()) { if ((new SchemaDetector)->detect($xmlConfiguration->filename())->detected()) { EventFacade::emitter()->testRunnerTriggeredDeprecation( - 'Your XML configuration validates against a deprecated schema. Migrate your XML configuration using "--migrate-configuration"!' + 'Your XML configuration validates against a deprecated schema. Migrate your XML configuration using "--migrate-configuration"!', ); } else { EventFacade::emitter()->testRunnerTriggeredWarning( "Test results may not be as expected because the XML configuration file did not pass validation:\n" . - $xmlConfiguration->validationErrors() + $xmlConfiguration->validationErrors(), ); } } @@ -702,11 +702,11 @@ public function merge(CliConfiguration $cliConfiguration, XmlConfiguration $xmlC $sourceExcludeDirectories = $xmlConfiguration->codeCoverage()->excludeDirectories(); $sourceExcludeFiles = $xmlConfiguration->codeCoverage()->excludeFiles(); } else { - foreach ($xmlConfiguration->source()->directories() as $directory) { + foreach ($xmlConfiguration->source()->includeDirectories() as $directory) { $sourceIncludeDirectories[] = $directory; } - $sourceIncludeFiles = $xmlConfiguration->source()->files(); + $sourceIncludeFiles = $xmlConfiguration->source()->includeFiles(); $sourceExcludeDirectories = $xmlConfiguration->source()->excludeDirectories(); $sourceExcludeFiles = $xmlConfiguration->source()->excludeFiles(); } @@ -723,10 +723,17 @@ public function merge(CliConfiguration $cliConfiguration, XmlConfiguration $xmlC $sourceIncludeFiles, $sourceExcludeDirectories, $sourceExcludeFiles, + $xmlConfiguration->source()->restrictDeprecations(), + $xmlConfiguration->source()->restrictNotices(), + $xmlConfiguration->source()->restrictWarnings(), + $xmlConfiguration->source()->ignoreSuppressionOfDeprecations(), + $xmlConfiguration->source()->ignoreSuppressionOfPhpDeprecations(), + $xmlConfiguration->source()->ignoreSuppressionOfErrors(), + $xmlConfiguration->source()->ignoreSuppressionOfNotices(), + $xmlConfiguration->source()->ignoreSuppressionOfPhpNotices(), + $xmlConfiguration->source()->ignoreSuppressionOfWarnings(), + $xmlConfiguration->source()->ignoreSuppressionOfPhpWarnings(), ), - $xmlConfiguration->source()->restrictDeprecations(), - $xmlConfiguration->source()->restrictNotices(), - $xmlConfiguration->source()->restrictWarnings(), $testResultCacheFile, $coverageClover, $coverageCobertura, diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php index ae5076a0..4417c713 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php @@ -52,7 +52,7 @@ private function handleIncludePaths(DirectoryCollection $includePaths): void 'include_path', implode(PATH_SEPARATOR, $includePathsAsStrings) . PATH_SEPARATOR . - ini_get('include_path') + ini_get('include_path'), ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Registry.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Registry.php index 20223393..e2b1ad3b 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Registry.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Registry.php @@ -33,7 +33,7 @@ public static function saveTo(string $path): bool { $result = file_put_contents( $path, - serialize(self::get()) + serialize(self::get()), ); if ($result) { @@ -77,7 +77,7 @@ public static function loadFrom(string $path): void VersionComparisonOperator::class, Source::class, ], - ] + ], ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php index 9e84131e..53c484a2 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php @@ -9,6 +9,7 @@ */ namespace PHPUnit\TextUI\Configuration; +use function assert; use function is_dir; use function is_file; use function realpath; @@ -45,15 +46,20 @@ public function build(Configuration $configuration): TestSuite $testSuite = $this->testSuiteFromPath( $argument, - $configuration->testSuffixes() + $configuration->testSuffixes(), ); } if (!isset($testSuite)) { + $xmlConfigurationFile = $configuration->hasConfigurationFile() ? $configuration->configurationFile() : 'Root Test Suite'; + + assert(!empty($xmlConfigurationFile)); + $testSuite = (new TestSuiteMapper)->map( + $xmlConfigurationFile, $configuration->testSuite(), $configuration->includeTestSuite(), - $configuration->excludeTestSuite() + $configuration->excludeTestSuite(), ); } @@ -63,6 +69,7 @@ public function build(Configuration $configuration): TestSuite } /** + * @psalm-param non-empty-string $path * @psalm-param list $suffixes * * @throws \PHPUnit\Framework\Exception @@ -79,7 +86,7 @@ private function testSuiteFromPath(string $path, array $suffixes): TestSuite } if (is_file($path) && str_ends_with($path, '.phpt')) { - $suite = TestSuite::empty(); + $suite = TestSuite::empty($path); $suite->addTestFile($path); return $suite; diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php index 7004cd1f..8b5ddfce 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php @@ -20,13 +20,33 @@ final class Source private readonly FileCollection $includeFiles; private readonly FilterDirectoryCollection $excludeDirectories; private readonly FileCollection $excludeFiles; + private readonly bool $restrictDeprecations; + private readonly bool $restrictNotices; + private readonly bool $restrictWarnings; + private readonly bool $ignoreSuppressionOfDeprecations; + private readonly bool $ignoreSuppressionOfPhpDeprecations; + private readonly bool $ignoreSuppressionOfErrors; + private readonly bool $ignoreSuppressionOfNotices; + private readonly bool $ignoreSuppressionOfPhpNotices; + private readonly bool $ignoreSuppressionOfWarnings; + private readonly bool $ignoreSuppressionOfPhpWarnings; - public function __construct(FilterDirectoryCollection $includeDirectories, FileCollection $includeFiles, FilterDirectoryCollection $excludeDirectories, FileCollection $excludeFiles) + public function __construct(FilterDirectoryCollection $includeDirectories, FileCollection $includeFiles, FilterDirectoryCollection $excludeDirectories, FileCollection $excludeFiles, bool $restrictDeprecations, bool $restrictNotices, bool $restrictWarnings, bool $ignoreSuppressionOfDeprecations, bool $ignoreSuppressionOfPhpDeprecations, bool $ignoreSuppressionOfErrors, bool $ignoreSuppressionOfNotices, bool $ignoreSuppressionOfPhpNotices, bool $ignoreSuppressionOfWarnings, bool $ignoreSuppressionOfPhpWarnings) { - $this->includeDirectories = $includeDirectories; - $this->includeFiles = $includeFiles; - $this->excludeDirectories = $excludeDirectories; - $this->excludeFiles = $excludeFiles; + $this->includeDirectories = $includeDirectories; + $this->includeFiles = $includeFiles; + $this->excludeDirectories = $excludeDirectories; + $this->excludeFiles = $excludeFiles; + $this->restrictDeprecations = $restrictDeprecations; + $this->restrictNotices = $restrictNotices; + $this->restrictWarnings = $restrictWarnings; + $this->ignoreSuppressionOfDeprecations = $ignoreSuppressionOfDeprecations; + $this->ignoreSuppressionOfPhpDeprecations = $ignoreSuppressionOfPhpDeprecations; + $this->ignoreSuppressionOfErrors = $ignoreSuppressionOfErrors; + $this->ignoreSuppressionOfNotices = $ignoreSuppressionOfNotices; + $this->ignoreSuppressionOfPhpNotices = $ignoreSuppressionOfPhpNotices; + $this->ignoreSuppressionOfWarnings = $ignoreSuppressionOfWarnings; + $this->ignoreSuppressionOfPhpWarnings = $ignoreSuppressionOfPhpWarnings; } public function includeDirectories(): FilterDirectoryCollection @@ -53,4 +73,54 @@ public function notEmpty(): bool { return $this->includeDirectories->notEmpty() || $this->includeFiles->notEmpty(); } + + public function restrictDeprecations(): bool + { + return $this->restrictDeprecations; + } + + public function restrictNotices(): bool + { + return $this->restrictNotices; + } + + public function restrictWarnings(): bool + { + return $this->restrictWarnings; + } + + public function ignoreSuppressionOfDeprecations(): bool + { + return $this->ignoreSuppressionOfDeprecations; + } + + public function ignoreSuppressionOfPhpDeprecations(): bool + { + return $this->ignoreSuppressionOfPhpDeprecations; + } + + public function ignoreSuppressionOfErrors(): bool + { + return $this->ignoreSuppressionOfErrors; + } + + public function ignoreSuppressionOfNotices(): bool + { + return $this->ignoreSuppressionOfNotices; + } + + public function ignoreSuppressionOfPhpNotices(): bool + { + return $this->ignoreSuppressionOfPhpNotices; + } + + public function ignoreSuppressionOfWarnings(): bool + { + return $this->ignoreSuppressionOfWarnings; + } + + public function ignoreSuppressionOfPhpWarnings(): bool + { + return $this->ignoreSuppressionOfPhpWarnings; + } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuite.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuite.php index 196bdf96..7105242b 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuite.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Value/TestSuite.php @@ -16,11 +16,17 @@ */ final class TestSuite { + /** + * @psalm-var non-empty-string + */ private readonly string $name; private readonly TestDirectoryCollection $directories; private readonly TestFileCollection $files; private readonly FileCollection $exclude; + /** + * @psalm-param non-empty-string $name + */ public function __construct(string $name, TestDirectoryCollection $directories, TestFileCollection $files, FileCollection $exclude) { $this->name = $name; @@ -29,6 +35,9 @@ public function __construct(string $name, TestDirectoryCollection $directories, $this->exclude = $exclude; } + /** + * @psalm-return non-empty-string + */ public function name(): string { return $this->name; diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php index 3e4687c7..b38feefc 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php @@ -85,7 +85,7 @@ public function cacheDirectory(): Directory { if (!$this->hasCacheDirectory()) { throw new Exception( - 'No cache directory has been configured' + 'No cache directory has been configured', ); } @@ -152,7 +152,7 @@ public function clover(): Clover { if (!$this->hasClover()) { throw new Exception( - 'Code Coverage report "Clover XML" has not been configured' + 'Code Coverage report "Clover XML" has not been configured', ); } @@ -174,7 +174,7 @@ public function cobertura(): Cobertura { if (!$this->hasCobertura()) { throw new Exception( - 'Code Coverage report "Cobertura XML" has not been configured' + 'Code Coverage report "Cobertura XML" has not been configured', ); } @@ -196,7 +196,7 @@ public function crap4j(): Crap4j { if (!$this->hasCrap4j()) { throw new Exception( - 'Code Coverage report "Crap4J" has not been configured' + 'Code Coverage report "Crap4J" has not been configured', ); } @@ -218,7 +218,7 @@ public function html(): Html { if (!$this->hasHtml()) { throw new Exception( - 'Code Coverage report "HTML" has not been configured' + 'Code Coverage report "HTML" has not been configured', ); } @@ -240,7 +240,7 @@ public function php(): Php { if (!$this->hasPhp()) { throw new Exception( - 'Code Coverage report "PHP" has not been configured' + 'Code Coverage report "PHP" has not been configured', ); } @@ -262,7 +262,7 @@ public function text(): Text { if (!$this->hasText()) { throw new Exception( - 'Code Coverage report "Text" has not been configured' + 'Code Coverage report "Text" has not been configured', ); } @@ -284,7 +284,7 @@ public function xml(): Xml { if (!$this->hasXml()) { throw new Exception( - 'Code Coverage report "XML" has not been configured' + 'Code Coverage report "XML" has not been configured', ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php index 82b11c85..c78d58f5 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Configuration.php @@ -11,6 +11,7 @@ use PHPUnit\TextUI\Configuration\ExtensionBootstrapCollection; use PHPUnit\TextUI\Configuration\Php; +use PHPUnit\TextUI\Configuration\Source; use PHPUnit\TextUI\Configuration\TestSuiteCollection; use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; use PHPUnit\TextUI\XmlConfiguration\Logging\Logging; diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php index 17c288c3..da1f8978 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php @@ -18,6 +18,7 @@ use PHPUnit\TextUI\Configuration\GroupCollection; use PHPUnit\TextUI\Configuration\IniSettingCollection; use PHPUnit\TextUI\Configuration\Php; +use PHPUnit\TextUI\Configuration\Source; use PHPUnit\TextUI\Configuration\TestSuiteCollection; use PHPUnit\TextUI\Configuration\VariableCollection; use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; @@ -42,6 +43,13 @@ public static function create(): self false, false, false, + false, + false, + false, + false, + false, + false, + false, ), new CodeCoverage( null, @@ -59,17 +67,17 @@ public static function create(): self null, null, null, - null + null, ), new Groups( GroupCollection::fromArray([]), - GroupCollection::fromArray([]) + GroupCollection::fromArray([]), ), new Logging( null, null, null, - null + null, ), new Php( DirectoryCollection::fromArray([]), @@ -82,7 +90,7 @@ public static function create(): self VariableCollection::fromArray([]), VariableCollection::fromArray([]), VariableCollection::fromArray([]), - VariableCollection::fromArray([]) + VariableCollection::fromArray([]), ), new PHPUnit( null, @@ -134,9 +142,9 @@ public static function create(): self false, false, false, - false + false, ), - TestSuiteCollection::fromArray([]) + TestSuiteCollection::fromArray([]), ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php index 62f1a4f2..39e7095f 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php @@ -63,7 +63,7 @@ public function generateDefaultConfiguration(string $phpunitVersion, string $boo $srcDirectory, $cacheDirectory, ], - self::TEMPLATE + self::TEMPLATE, ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php index 80dec5b1..cf7274d6 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/LoadedFromFileConfiguration.php @@ -11,6 +11,7 @@ use PHPUnit\TextUI\Configuration\ExtensionBootstrapCollection; use PHPUnit\TextUI\Configuration\Php; +use PHPUnit\TextUI\Configuration\Source; use PHPUnit\TextUI\Configuration\TestSuiteCollection; use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; use PHPUnit\TextUI\XmlConfiguration\Logging\Logging; @@ -38,7 +39,7 @@ public function __construct(string $filename, ValidationResult $validationResult $logging, $php, $phpunit, - $testSuite + $testSuite, ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php index 68cb0a67..594697e6 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Loader.php @@ -18,6 +18,7 @@ use function is_file; use function is_numeric; use function preg_match; +use function realpath; use function str_contains; use function str_starts_with; use function stream_resolve_include_path; @@ -45,6 +46,7 @@ use PHPUnit\TextUI\Configuration\IniSetting; use PHPUnit\TextUI\Configuration\IniSettingCollection; use PHPUnit\TextUI\Configuration\Php; +use PHPUnit\TextUI\Configuration\Source; use PHPUnit\TextUI\Configuration\TestDirectory; use PHPUnit\TextUI\Configuration\TestDirectoryCollection; use PHPUnit\TextUI\Configuration\TestFile; @@ -88,7 +90,7 @@ public function load(string $filename): LoadedFromFileConfiguration throw new Exception( $e->getMessage(), $e->getCode(), - $e + $e, ); } @@ -100,12 +102,12 @@ public function load(string $filename): LoadedFromFileConfiguration throw new Exception( $e->getMessage(), $e->getCode(), - $e + $e, ); } return new LoadedFromFileConfiguration( - $filename, + realpath($filename), (new Validator)->validate($document, $xsdFilename), $this->extensions($xpath), $this->source($filename, $xpath), @@ -114,7 +116,7 @@ public function load(string $filename): LoadedFromFileConfiguration $this->logging($filename, $xpath), $this->php($filename, $xpath), $this->phpunit($filename, $document), - $this->testSuite($filename, $xpath) + $this->testSuite($filename, $xpath), ); } @@ -128,9 +130,9 @@ private function logging(string $filename, DOMXPath $xpath): Logging new File( $this->toAbsolutePath( $filename, - (string) $this->getStringAttribute($element, 'outputFile') - ) - ) + (string) $this->getStringAttribute($element, 'outputFile'), + ), + ), ); } @@ -142,9 +144,9 @@ private function logging(string $filename, DOMXPath $xpath): Logging new File( $this->toAbsolutePath( $filename, - (string) $this->getStringAttribute($element, 'outputFile') - ) - ) + (string) $this->getStringAttribute($element, 'outputFile'), + ), + ), ); } @@ -156,9 +158,9 @@ private function logging(string $filename, DOMXPath $xpath): Logging new File( $this->toAbsolutePath( $filename, - (string) $this->getStringAttribute($element, 'outputFile') - ) - ) + (string) $this->getStringAttribute($element, 'outputFile'), + ), + ), ); } @@ -170,9 +172,9 @@ private function logging(string $filename, DOMXPath $xpath): Logging new File( $this->toAbsolutePath( $filename, - (string) $this->getStringAttribute($element, 'outputFile') - ) - ) + (string) $this->getStringAttribute($element, 'outputFile'), + ), + ), ); } @@ -180,7 +182,7 @@ private function logging(string $filename, DOMXPath $xpath): Logging $junit, $teamCity, $testDoxHtml, - $testDoxText + $testDoxText, ); } @@ -201,7 +203,7 @@ private function extensions(DOMXPath $xpath): ExtensionBootstrapCollection $extensionBootstrappers[] = new ExtensionBootstrap( $bootstrap->getAttribute('class'), - $parameters + $parameters, ); } @@ -248,16 +250,30 @@ private function toAbsolutePath(string $filename, string $path, bool $useInclude private function source(string $filename, DOMXPath $xpath): Source { - $restrictDeprecations = false; - $restrictNotices = false; - $restrictWarnings = false; + $restrictDeprecations = false; + $restrictNotices = false; + $restrictWarnings = false; + $ignoreSuppressionOfDeprecations = false; + $ignoreSuppressionOfPhpDeprecations = false; + $ignoreSuppressionOfErrors = false; + $ignoreSuppressionOfNotices = false; + $ignoreSuppressionOfPhpNotices = false; + $ignoreSuppressionOfWarnings = false; + $ignoreSuppressionOfPhpWarnings = false; $element = $this->element($xpath, 'source'); if ($element) { - $restrictDeprecations = $this->getBooleanAttribute($element, 'restrictDeprecations', false); - $restrictNotices = $this->getBooleanAttribute($element, 'restrictNotices', false); - $restrictWarnings = $this->getBooleanAttribute($element, 'restrictWarnings', false); + $restrictDeprecations = $this->getBooleanAttribute($element, 'restrictDeprecations', false); + $restrictNotices = $this->getBooleanAttribute($element, 'restrictNotices', false); + $restrictWarnings = $this->getBooleanAttribute($element, 'restrictWarnings', false); + $ignoreSuppressionOfDeprecations = $this->getBooleanAttribute($element, 'ignoreSuppressionOfDeprecations', false); + $ignoreSuppressionOfPhpDeprecations = $this->getBooleanAttribute($element, 'ignoreSuppressionOfPhpDeprecations', false); + $ignoreSuppressionOfErrors = $this->getBooleanAttribute($element, 'ignoreSuppressionOfErrors', false); + $ignoreSuppressionOfNotices = $this->getBooleanAttribute($element, 'ignoreSuppressionOfNotices', false); + $ignoreSuppressionOfPhpNotices = $this->getBooleanAttribute($element, 'ignoreSuppressionOfPhpNotices', false); + $ignoreSuppressionOfWarnings = $this->getBooleanAttribute($element, 'ignoreSuppressionOfWarnings', false); + $ignoreSuppressionOfPhpWarnings = $this->getBooleanAttribute($element, 'ignoreSuppressionOfPhpWarnings', false); } return new Source( @@ -268,6 +284,13 @@ private function source(string $filename, DOMXPath $xpath): Source $restrictDeprecations, $restrictNotices, $restrictWarnings, + $ignoreSuppressionOfDeprecations, + $ignoreSuppressionOfPhpDeprecations, + $ignoreSuppressionOfErrors, + $ignoreSuppressionOfNotices, + $ignoreSuppressionOfPhpNotices, + $ignoreSuppressionOfWarnings, + $ignoreSuppressionOfPhpWarnings, ); } @@ -286,32 +309,32 @@ private function codeCoverage(string $filename, DOMXPath $xpath): CodeCoverage if ($cacheDirectory !== null) { $cacheDirectory = new Directory( - $this->toAbsolutePath($filename, $cacheDirectory) + $this->toAbsolutePath($filename, $cacheDirectory), ); } $pathCoverage = $this->getBooleanAttribute( $element, 'pathCoverage', - false + false, ); $includeUncoveredFiles = $this->getBooleanAttribute( $element, 'includeUncoveredFiles', - true + true, ); $ignoreDeprecatedCodeUnits = $this->getBooleanAttribute( $element, 'ignoreDeprecatedCodeUnits', - false + false, ); $disableCodeCoverageIgnore = $this->getBooleanAttribute( $element, 'disableCodeCoverageIgnore', - false + false, ); } @@ -323,9 +346,9 @@ private function codeCoverage(string $filename, DOMXPath $xpath): CodeCoverage new File( $this->toAbsolutePath( $filename, - (string) $this->getStringAttribute($element, 'outputFile') - ) - ) + (string) $this->getStringAttribute($element, 'outputFile'), + ), + ), ); } @@ -337,9 +360,9 @@ private function codeCoverage(string $filename, DOMXPath $xpath): CodeCoverage new File( $this->toAbsolutePath( $filename, - (string) $this->getStringAttribute($element, 'outputFile') - ) - ) + (string) $this->getStringAttribute($element, 'outputFile'), + ), + ), ); } @@ -351,10 +374,10 @@ private function codeCoverage(string $filename, DOMXPath $xpath): CodeCoverage new File( $this->toAbsolutePath( $filename, - (string) $this->getStringAttribute($element, 'outputFile') - ) + (string) $this->getStringAttribute($element, 'outputFile'), + ), ), - $this->getIntegerAttribute($element, 'threshold', 30) + $this->getIntegerAttribute($element, 'threshold', 30), ); } @@ -369,8 +392,8 @@ private function codeCoverage(string $filename, DOMXPath $xpath): CodeCoverage new Directory( $this->toAbsolutePath( $filename, - (string) $this->getStringAttribute($element, 'outputDirectory') - ) + (string) $this->getStringAttribute($element, 'outputDirectory'), + ), ), $this->getIntegerAttribute($element, 'lowUpperBound', $defaultThresholds->lowUpperBound()), $this->getIntegerAttribute($element, 'highLowerBound', $defaultThresholds->highLowerBound()), @@ -379,7 +402,7 @@ private function codeCoverage(string $filename, DOMXPath $xpath): CodeCoverage $this->getStringAttributeWithDefault($element, 'colorSuccessHigh', $defaultColors->successHigh()), $this->getStringAttributeWithDefault($element, 'colorWarning', $defaultColors->warning()), $this->getStringAttributeWithDefault($element, 'colorDanger', $defaultColors->danger()), - $this->getStringAttribute($element, 'customCssFile') + $this->getStringAttribute($element, 'customCssFile'), ); } @@ -391,9 +414,9 @@ private function codeCoverage(string $filename, DOMXPath $xpath): CodeCoverage new File( $this->toAbsolutePath( $filename, - (string) $this->getStringAttribute($element, 'outputFile') - ) - ) + (string) $this->getStringAttribute($element, 'outputFile'), + ), + ), ); } @@ -405,11 +428,11 @@ private function codeCoverage(string $filename, DOMXPath $xpath): CodeCoverage new File( $this->toAbsolutePath( $filename, - (string) $this->getStringAttribute($element, 'outputFile') - ) + (string) $this->getStringAttribute($element, 'outputFile'), + ), ), $this->getBooleanAttribute($element, 'showUncoveredFiles', false), - $this->getBooleanAttribute($element, 'showOnlySummary', false) + $this->getBooleanAttribute($element, 'showOnlySummary', false), ); } @@ -421,9 +444,9 @@ private function codeCoverage(string $filename, DOMXPath $xpath): CodeCoverage new Directory( $this->toAbsolutePath( $filename, - (string) $this->getStringAttribute($element, 'outputDirectory') - ) - ) + (string) $this->getStringAttribute($element, 'outputDirectory'), + ), + ), ); } @@ -443,7 +466,7 @@ private function codeCoverage(string $filename, DOMXPath $xpath): CodeCoverage $html, $php, $text, - $xml + $xml, ); } @@ -503,17 +526,17 @@ private function groups(DOMXPath $xpath): Groups $include = []; $exclude = []; - foreach ($xpath->query('groups' . '/include/group') as $group) { + foreach ($xpath->query('groups/include/group') as $group) { $include[] = new Group($group->textContent); } - foreach ($xpath->query('groups' . '/exclude/group') as $group) { + foreach ($xpath->query('groups/exclude/group') as $group) { $exclude[] = new Group($group->textContent); } return new Groups( GroupCollection::fromArray($include), - GroupCollection::fromArray($exclude) + GroupCollection::fromArray($exclude), ); } @@ -525,7 +548,7 @@ private function getBooleanAttribute(DOMElement $element, string $attribute, boo return (bool) $this->getBoolean( $element->getAttribute($attribute), - false + false, ); } @@ -537,7 +560,7 @@ private function getIntegerAttribute(DOMElement $element, string $attribute, int return $this->getInteger( $element->getAttribute($attribute), - $default + $default, ); } @@ -587,7 +610,7 @@ private function php(string $filename, DOMXPath $xpath): Php $iniSettings[] = new IniSetting( $ini->getAttribute('name'), - $ini->getAttribute('value') + $ini->getAttribute('value'), ); } @@ -600,7 +623,7 @@ private function php(string $filename, DOMXPath $xpath): Php $constants[] = new Constant( $const->getAttribute('name'), - $this->getBoolean($value, $value) + $this->getBoolean($value, $value), ); } @@ -807,7 +830,7 @@ private function phpunit(string $filename, DOMDocument $document): PHPUnit $this->getBooleanAttribute($document->documentElement, 'backupGlobals', false), $backupStaticProperties, $this->getBooleanAttribute($document->documentElement, 'registerMockObjectsFromTestArgumentsRecursively', false), - $this->getBooleanAttribute($document->documentElement, 'testdox', false) + $this->getBooleanAttribute($document->documentElement, 'testdox', false), ); } @@ -898,7 +921,7 @@ private function testSuite(string $filename, DOMXPath $xpath): TestSuiteCollecti $prefix, $suffix, $phpVersion, - $phpVersionOperator + $phpVersionOperator, ); } @@ -928,15 +951,19 @@ private function testSuite(string $filename, DOMXPath $xpath): TestSuiteCollecti $files[] = new TestFile( $this->toAbsolutePath($filename, $file), $phpVersion, - $phpVersionOperator + $phpVersionOperator, ); } + $name = $element->getAttribute('name'); + + assert(!empty($name)); + $testSuites[] = new TestSuiteConfiguration( - $element->getAttribute('name'), + $name, TestDirectoryCollection::fromArray($directories), TestFileCollection::fromArray($files), - FileCollection::fromArray($exclude) + FileCollection::fromArray($exclude), ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php index 71601c09..8fafd0d0 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php @@ -74,8 +74,8 @@ public function build(string $fromVersion): array throw new MigrationBuilderException( sprintf( 'Migration from schema version %s is not supported', - $fromVersion - ) + $fromVersion, + ), ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php index 867a8441..de52857e 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCoverageElement.php @@ -22,7 +22,7 @@ public function migrate(DOMDocument $document): void $document->documentElement->insertBefore( $coverage, - $document->documentElement->firstChild + $document->documentElement->firstChild, ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php index e987308b..c07de0ec 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/LogToReportMigration.php @@ -67,7 +67,7 @@ abstract protected function toReportFormat(DOMElement $logNode): DOMElement; private function findLogNode(DOMDocument $document): ?DOMElement { $logNode = (new DOMXPath($document))->query( - sprintf('//logging/log[@type="%s"]', $this->forType()) + sprintf('//logging/log[@type="%s"]', $this->forType()), )->item(0); if (!$logNode instanceof DOMElement) { diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php index d7971fc4..40132156 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php @@ -46,7 +46,7 @@ public function migrate(DOMDocument $document): void if ($targetExclude === null) { $targetExclude = $coverage->appendChild( - $document->createElement('exclude') + $document->createElement('exclude'), ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php index e1bb154a..d8f65d6a 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php @@ -28,7 +28,7 @@ public function migrate(DOMDocument $document): void $root->setAttributeNS( 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:noNamespaceSchemaLocation', - 'https://schema.phpunit.de/' . Version::series() . '/phpunit.xsd' + 'https://schema.phpunit.de/' . Version::series() . '/phpunit.xsd', ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php index 49ecb057..2755a4f5 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php @@ -33,7 +33,7 @@ public function migrate(string $filename): string sprintf( '"%s" is not a valid PHPUnit XML configuration file that can be migrated', $filename, - ) + ), ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php index 546d96e9..8e46a489 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php @@ -34,8 +34,8 @@ public function find(string $version): string throw new CannotFindSchemaException( sprintf( 'Schema for PHPUnit %s is not available', - $version - ) + $version, + ), ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php index 1d3f3097..4fc37ac9 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php +++ b/vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php @@ -30,16 +30,18 @@ final class TestSuiteMapper { /** + * @psalm-param non-empty-string $xmlConfigurationFile, + * * @throws RuntimeException * @throws TestDirectoryNotFoundException * @throws TestFileNotFoundException */ - public function map(TestSuiteCollection $configuration, string $filter, string $excludedTestSuites): TestSuiteObject + public function map(string $xmlConfigurationFile, TestSuiteCollection $configuration, string $filter, string $excludedTestSuites): TestSuiteObject { try { $filterAsArray = $filter ? explode(',', $filter) : []; $excludedFilterAsArray = $excludedTestSuites ? explode(',', $excludedTestSuites) : []; - $result = TestSuiteObject::empty(); + $result = TestSuiteObject::empty($xmlConfigurationFile); foreach ($configuration as $testSuiteConfiguration) { if (!empty($filterAsArray) && !in_array($testSuiteConfiguration->name(), $filterAsArray, true)) { @@ -68,7 +70,7 @@ public function map(TestSuiteCollection $configuration, string $filter, string $ $directory->path(), $directory->suffix(), $directory->prefix(), - $exclude + $exclude, ); if (!empty($files)) { @@ -104,7 +106,7 @@ public function map(TestSuiteCollection $configuration, string $filter, string $ throw new RuntimeException( $e->getMessage(), $e->getCode(), - $e + $e, ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/DirectoryDoesNotExistException.php b/vendor/phpunit/phpunit/src/TextUI/Exception/DirectoryDoesNotExistException.php index 3ea08949..e3b11dea 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Exception/DirectoryDoesNotExistException.php +++ b/vendor/phpunit/phpunit/src/TextUI/Exception/DirectoryDoesNotExistException.php @@ -22,8 +22,8 @@ public function __construct(string $directory) parent::__construct( sprintf( 'Directory "%s" does not exist and could not be created', - $directory - ) + $directory, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php b/vendor/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php index 6ae82949..6c9e9216 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php +++ b/vendor/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php @@ -22,8 +22,8 @@ public function __construct(string $socket) parent::__construct( sprintf( '"%s" does not match "socket://hostname:port" format', - $socket - ) + $socket, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php b/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php index 35b788ce..da15966c 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php +++ b/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php @@ -22,8 +22,8 @@ public function __construct(string $path) parent::__construct( sprintf( 'Test directory "%s" not found', - $path - ) + $path, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php b/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php index 35cb4b1e..247690d0 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php +++ b/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php @@ -22,8 +22,8 @@ public function __construct(string $path) parent::__construct( sprintf( 'Test file "%s" not found', - $path - ) + $path, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Help.php b/vendor/phpunit/phpunit/src/TextUI/Help.php index 0c838939..e232de08 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Help.php +++ b/vendor/phpunit/phpunit/src/TextUI/Help.php @@ -253,7 +253,7 @@ private function writeWithColor(): string $arg = preg_replace_callback( '/(<[^>]+>)/', static fn ($matches) => Color::colorize('fg-cyan', $matches[0]), - $arg + $arg, ); $desc = explode(PHP_EOL, wordwrap($option['desc'], $this->columnsAvailableForDescription, PHP_EOL)); diff --git a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php index bc1b3e9b..c4580b7d 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php +++ b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php @@ -18,11 +18,10 @@ use PHPUnit\Event\Facade; use PHPUnit\Event\Test\DeprecationTriggered; use PHPUnit\Event\Test\Errored; +use PHPUnit\Event\Test\ErrorTriggered; use PHPUnit\Event\Test\NoticeTriggered; use PHPUnit\Event\Test\PhpDeprecationTriggered; use PHPUnit\Event\Test\PhpNoticeTriggered; -use PHPUnit\Event\Test\PhpunitDeprecationTriggered; -use PHPUnit\Event\Test\PhpunitWarningTriggered; use PHPUnit\Event\Test\PhpWarningTriggered; use PHPUnit\Event\Test\PrintedUnexpectedOutput; use PHPUnit\Event\Test\WarningTriggered; @@ -43,9 +42,6 @@ final class ProgressPrinter private readonly bool $colors; private readonly int $numberOfColumns; private readonly Source $source; - private readonly bool $restrictDeprecations; - private readonly bool $restrictNotices; - private readonly bool $restrictWarnings; private int $column = 0; private int $numberOfTests = 0; private int $numberOfTestsWidth = 0; @@ -58,15 +54,12 @@ final class ProgressPrinter * @throws EventFacadeIsSealedException * @throws UnknownSubscriberTypeException */ - public function __construct(Printer $printer, Facade $facade, bool $colors, int $numberOfColumns, Source $source, bool $restrictDeprecations, bool $restrictNotices, bool $restrictWarnings) + public function __construct(Printer $printer, Facade $facade, bool $colors, int $numberOfColumns, Source $source) { - $this->printer = $printer; - $this->colors = $colors; - $this->numberOfColumns = $numberOfColumns; - $this->source = $source; - $this->restrictDeprecations = $restrictDeprecations; - $this->restrictNotices = $restrictNotices; - $this->restrictWarnings = $restrictWarnings; + $this->printer = $printer; + $this->colors = $colors; + $this->numberOfColumns = $numberOfColumns; + $this->source = $source; $this->registerSubscribers($facade); } @@ -105,23 +98,64 @@ public function testMarkedIncomplete(): void $this->updateTestStatus(TestStatus::incomplete()); } - public function testTriggeredNotice(PhpNoticeTriggered|NoticeTriggered $event): void + public function testTriggeredNotice(NoticeTriggered $event): void { - if ($this->restrictNotices && !(new SourceFilter)->includes($this->source, $event->file())) { + if ($this->source->restrictNotices() && + !(new SourceFilter)->includes($this->source, $event->file())) { + return; + } + + if (!$this->source->ignoreSuppressionOfNotices() && $event->wasSuppressed()) { + return; + } + + $this->updateTestStatus(TestStatus::notice()); + } + + public function testTriggeredPhpNotice(PhpNoticeTriggered $event): void + { + if ($this->source->restrictNotices() && + !(new SourceFilter)->includes($this->source, $event->file())) { + return; + } + + if (!$this->source->ignoreSuppressionOfPhpNotices() && $event->wasSuppressed()) { return; } $this->updateTestStatus(TestStatus::notice()); } - public function testTriggeredDeprecation(PhpDeprecationTriggered|PhpunitDeprecationTriggered|DeprecationTriggered $event): void + public function testTriggeredDeprecation(DeprecationTriggered $event): void { - if (!$event instanceof PhpunitDeprecationTriggered && - $this->restrictDeprecations && + if ($this->source->restrictDeprecations() && !(new SourceFilter)->includes($this->source, $event->file())) { return; } + if (!$this->source->ignoreSuppressionOfDeprecations() && $event->wasSuppressed()) { + return; + } + + $this->updateTestStatus(TestStatus::deprecation()); + } + + public function testTriggeredPhpDeprecation(PhpDeprecationTriggered $event): void + { + if ($this->source->restrictDeprecations() && + !(new SourceFilter)->includes($this->source, $event->file())) { + return; + } + + if (!$this->source->ignoreSuppressionOfPhpDeprecations() && $event->wasSuppressed()) { + return; + } + + $this->updateTestStatus(TestStatus::deprecation()); + } + + public function testTriggeredPhpunitDeprecation(): void + { $this->updateTestStatus(TestStatus::deprecation()); } @@ -130,17 +164,48 @@ public function testConsideredRisky(): void $this->updateTestStatus(TestStatus::risky()); } - public function testTriggeredWarning(PhpWarningTriggered|PhpunitWarningTriggered|WarningTriggered $event): void + public function testTriggeredWarning(WarningTriggered $event): void { - if (!$event instanceof PhpunitWarningTriggered && - $this->restrictWarnings && + if ($this->source->restrictWarnings() && !(new SourceFilter)->includes($this->source, $event->file())) { return; } + if (!$this->source->ignoreSuppressionOfWarnings() && $event->wasSuppressed()) { + return; + } + $this->updateTestStatus(TestStatus::warning()); } + public function testTriggeredPhpWarning(PhpWarningTriggered $event): void + { + if ($this->source->restrictWarnings() && + !(new SourceFilter)->includes($this->source, $event->file())) { + return; + } + + if (!$this->source->ignoreSuppressionOfPhpWarnings() && $event->wasSuppressed()) { + return; + } + + $this->updateTestStatus(TestStatus::warning()); + } + + public function testTriggeredPhpunitWarning(): void + { + $this->updateTestStatus(TestStatus::warning()); + } + + public function testTriggeredError(ErrorTriggered $event): void + { + if (!$this->source->ignoreSuppressionOfErrors() && $event->wasSuppressed()) { + return; + } + + $this->updateTestStatus(TestStatus::error()); + } + public function testFailed(): void { $this->updateTestStatus(TestStatus::failure()); @@ -305,8 +370,8 @@ private function printProgress(string $progress): void $this->numberOfTestsWidth . 'd (%3s%%)', $this->numberOfTestsRun, $this->numberOfTests, - floor(($this->numberOfTestsRun / $this->numberOfTests) * 100) - ) + floor(($this->numberOfTestsRun / $this->numberOfTests) * 100), + ), ); if ($this->column === $this->maxColumn) { diff --git a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php index 4f45f402..97de0032 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php +++ b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php @@ -19,6 +19,6 @@ final class TestTriggeredPhpDeprecationSubscriber extends Subscriber implements { public function notify(PhpDeprecationTriggered $event): void { - $this->printer()->testTriggeredDeprecation($event); + $this->printer()->testTriggeredPhpDeprecation($event); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php index f6da42c9..861e2b8c 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php +++ b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php @@ -19,6 +19,6 @@ final class TestTriggeredPhpNoticeSubscriber extends Subscriber implements PhpNo { public function notify(PhpNoticeTriggered $event): void { - $this->printer()->testTriggeredNotice($event); + $this->printer()->testTriggeredPhpNotice($event); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php index 11036da2..87bec210 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php +++ b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpWarningSubscriber.php @@ -19,6 +19,6 @@ final class TestTriggeredPhpWarningSubscriber extends Subscriber implements PhpW { public function notify(PhpWarningTriggered $event): void { - $this->printer()->testTriggeredWarning($event); + $this->printer()->testTriggeredPhpWarning($event); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php index cd081e4e..8bceec7a 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php +++ b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php @@ -19,6 +19,6 @@ final class TestTriggeredPhpunitDeprecationSubscriber extends Subscriber impleme { public function notify(PhpunitDeprecationTriggered $event): void { - $this->printer()->testTriggeredDeprecation($event); + $this->printer()->testTriggeredPhpunitDeprecation(); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php index c19de60a..69a94585 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php +++ b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php @@ -19,6 +19,6 @@ final class TestTriggeredPhpunitWarningSubscriber extends Subscriber implements { public function notify(PhpunitWarningTriggered $event): void { - $this->printer()->testTriggeredWarning($event); + $this->printer()->testTriggeredPhpunitWarning(); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php index 6d1d1c7e..a987b60f 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php +++ b/vendor/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php @@ -168,7 +168,7 @@ private function printDetailsOnTestsThatTriggeredPhpunitDeprecations(TestResult $this->printListHeaderWithNumberOfTestsAndNumberOfIssues( $elements['numberOfTestsWithIssues'], $elements['numberOfIssues'], - 'PHPUnit deprecation' + 'PHPUnit deprecation', ); $this->printList($elements['elements']); @@ -223,7 +223,7 @@ private function printDetailsOnTestsThatTriggeredPhpunitWarnings(TestResult $res $this->printListHeaderWithNumberOfTestsAndNumberOfIssues( $elements['numberOfTestsWithIssues'], $elements['numberOfIssues'], - 'PHPUnit warning' + 'PHPUnit warning', ); $this->printList($elements['elements']); @@ -359,7 +359,7 @@ private function printDetailsOnTestsThatTriggerPhpDeprecations(TestResult $resul $this->printListHeaderWithNumberOfTestsAndNumberOfIssues( $elements['numberOfTestsWithIssues'], $elements['numberOfIssues'], - 'PHP deprecation' + 'PHP deprecation', ); $this->printList($elements['elements']); @@ -376,7 +376,7 @@ private function printDetailsOnTestsThatTriggerDeprecations(TestResult $result): $this->printListHeaderWithNumberOfTestsAndNumberOfIssues( $elements['numberOfTestsWithIssues'], $elements['numberOfIssues'], - 'deprecation' + 'deprecation', ); $this->printList($elements['elements']); @@ -392,7 +392,7 @@ private function printDetailsOnTestsThatTriggerErrors(TestResult $result): void $this->printListHeaderWithNumber( $elements['numberOfIssues'], - 'error' + 'error', ); $this->printList($elements['elements']); @@ -409,7 +409,7 @@ private function printDetailsOnTestsThatTriggerPhpNotices(TestResult $result): v $this->printListHeaderWithNumberOfTestsAndNumberOfIssues( $elements['numberOfTestsWithIssues'], $elements['numberOfIssues'], - 'PHP notice' + 'PHP notice', ); $this->printList($elements['elements']); @@ -426,7 +426,7 @@ private function printDetailsOnTestsThatTriggerNotices(TestResult $result): void $this->printListHeaderWithNumberOfTestsAndNumberOfIssues( $elements['numberOfTestsWithIssues'], $elements['numberOfIssues'], - 'notice' + 'notice', ); $this->printList($elements['elements']); @@ -443,7 +443,7 @@ private function printDetailsOnTestsThatTriggerPhpWarnings(TestResult $result): $this->printListHeaderWithNumberOfTestsAndNumberOfIssues( $elements['numberOfTestsWithIssues'], $elements['numberOfIssues'], - 'PHP warning' + 'PHP warning', ); $this->printList($elements['elements']); @@ -460,7 +460,7 @@ private function printDetailsOnTestsThatTriggerWarnings(TestResult $result): voi $this->printListHeaderWithNumberOfTestsAndNumberOfIssues( $elements['numberOfTestsWithIssues'], $elements['numberOfIssues'], - 'warning' + 'warning', ); $this->printList($elements['elements']); @@ -476,7 +476,7 @@ private function printListHeaderWithNumberOfTestsAndNumberOfIssues(int $numberOf $numberOfIssues, $type, $numberOfIssues !== 1 ? 's' : '', - ) + ), ); } @@ -488,8 +488,8 @@ private function printListHeaderWithNumber(int $number, string $type): void ($number === 1) ? 'was' : 'were', $number, $type, - ($number === 1) ? '' : 's' - ) + ($number === 1) ? '' : 's', + ), ); } @@ -533,8 +533,8 @@ private function printListElement(int $number, string $title, string $body): voi $number, $title, $body, - !empty($body) ? "\n" : '' - ) + !empty($body) ? "\n" : '', + ), ); } @@ -613,11 +613,11 @@ private function testLocation(Test $test): string PHP_EOL, $test->file(), $test->line(), - PHP_EOL + PHP_EOL, ); } - private function reasonMessage(ConsideredRisky|DeprecationTriggered|PhpDeprecationTriggered|ErrorTriggered|PhpWarningTriggered|WarningTriggered|PhpunitWarningTriggered|PhpunitDeprecationTriggered|PhpunitErrorTriggered|NoticeTriggered|PhpNoticeTriggered $reason, bool $single): string + private function reasonMessage(ConsideredRisky|DeprecationTriggered|ErrorTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpunitDeprecationTriggered|PhpunitErrorTriggered|PhpunitWarningTriggered|PhpWarningTriggered|WarningTriggered $reason, bool $single): string { $message = trim($reason->message()); @@ -637,7 +637,7 @@ private function reasonMessage(ConsideredRisky|DeprecationTriggered|PhpDeprecati return $buffer; } - private function reasonLocation(ConsideredRisky|DeprecationTriggered|PhpDeprecationTriggered|PhpunitDeprecationTriggered|ErrorTriggered|NoticeTriggered|PhpNoticeTriggered|WarningTriggered|PhpWarningTriggered|PhpunitErrorTriggered|PhpunitWarningTriggered $reason, bool $single): string + private function reasonLocation(ConsideredRisky|DeprecationTriggered|ErrorTriggered|NoticeTriggered|PhpDeprecationTriggered|PhpNoticeTriggered|PhpunitDeprecationTriggered|PhpunitErrorTriggered|PhpunitWarningTriggered|PhpWarningTriggered|WarningTriggered $reason, bool $single): string { if (!$reason instanceof DeprecationTriggered && !$reason instanceof PhpDeprecationTriggered && diff --git a/vendor/phpunit/phpunit/src/TextUI/Output/Facade.php b/vendor/phpunit/phpunit/src/TextUI/Output/Facade.php index 88a620dd..1219408f 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Output/Facade.php +++ b/vendor/phpunit/phpunit/src/TextUI/Output/Facade.php @@ -58,7 +58,7 @@ public static function init(Configuration $configuration, bool $extensionReplace if ($configuration->outputIsTeamCity()) { new TeamCityLogger( DefaultPrinter::standardOutput(), - EventFacade::instance() + EventFacade::instance(), ); } @@ -159,9 +159,6 @@ private static function createProgressPrinter(Configuration $configuration): voi $configuration->colors(), $configuration->columns(), $configuration->source(), - $configuration->restrictDeprecations(), - $configuration->restrictNotices(), - $configuration->restrictWarnings(), ); self::$defaultProgressPrinter = true; @@ -210,7 +207,7 @@ private static function createResultPrinter(Configuration $configuration): void if ($configuration->outputIsTestDox()) { self::$testDoxResultPrinter = new TestDoxResultPrinter( self::$printer, - $configuration->colors() + $configuration->colors(), ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php b/vendor/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php index 653289cb..4f6809c4 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php +++ b/vendor/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php @@ -76,8 +76,8 @@ private function __construct(string $out) throw new InvalidSocketException( sprintf( '"%s" does not match "socket://hostname:port" format', - $out - ) + $out, + ), ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php b/vendor/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php index c3b879aa..8262ad3d 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php +++ b/vendor/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php @@ -33,7 +33,7 @@ public function print(TestResult $result): void if ($result->numberOfTestsRun() === 0) { $this->printWithColor( 'fg-black, bg-yellow', - 'No tests executed!' + 'No tests executed!', ); return; @@ -49,8 +49,8 @@ public function print(TestResult $result): void $result->numberOfTestsRun(), $result->numberOfTestsRun() === 1 ? '' : 's', $result->numberOfAssertions(), - $result->numberOfAssertions() === 1 ? '' : 's' - ) + $result->numberOfAssertions() === 1 ? '' : 's', + ), ); return; @@ -62,12 +62,12 @@ public function print(TestResult $result): void if (!$result->hasTestsWithIssues()) { $this->printWithColor( $color, - 'OK, but some tests were skipped!' + 'OK, but some tests were skipped!', ); } else { $this->printWithColor( $color, - 'OK, but there are issues!' + 'OK, but there are issues!', ); } } else { @@ -76,29 +76,29 @@ public function print(TestResult $result): void $this->printWithColor( $color, - 'ERRORS!' + 'ERRORS!', ); } elseif ($result->hasTestFailedEvents()) { $color = 'fg-white, bg-red'; $this->printWithColor( $color, - 'FAILURES!' + 'FAILURES!', ); } elseif ($result->hasWarningEvents()) { $this->printWithColor( $color, - 'WARNINGS!' + 'WARNINGS!', ); } elseif ($result->hasDeprecationEvents()) { $this->printWithColor( $color, - 'DEPRECATIONS!' + 'DEPRECATIONS!', ); } elseif ($result->hasNoticeEvents()) { $this->printWithColor( $color, - 'NOTICES!' + 'NOTICES!', ); } } @@ -125,9 +125,9 @@ private function printCountString(int $count, string $name, string $color, bool '%s%s: %d', $this->countPrinted ? ', ' : '', $name, - $count + $count, ), - false + false, ); $this->countPrinted = true; diff --git a/vendor/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php b/vendor/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php index 4ca8cf0e..d82d04df 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php +++ b/vendor/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php @@ -96,8 +96,8 @@ private function printTestResultHeader(TestDoxTestResult $test): void $this->printer->print( Color::colorizeTextBox( $this->colorFor($test->status()), - $buffer - ) + $buffer, + ), ); } else { $this->printer->print($buffer); @@ -126,8 +126,8 @@ private function printTestResultBodyStart(TestDoxTestResult $test): void $this->printer->print( $this->prefixLines( $this->prefixFor('start', $test->status()), - '' - ) + '', + ), ); $this->printer->print(PHP_EOL); @@ -140,8 +140,8 @@ private function printTestResultBodyEnd(TestDoxTestResult $test): void $this->printer->print( $this->prefixLines( $this->prefixFor('last', $test->status()), - '' - ) + '', + ), ); $this->printer->print(PHP_EOL); @@ -160,7 +160,7 @@ private function printThrowable(TestDoxTestResult $test): void if (!empty($message) && $this->colors) { ['message' => $message, 'diff' => $diff] = $this->colorizeMessageAndDiff( $message, - $this->messageColorFor($test->status()) + $this->messageColorFor($test->status()), ); } @@ -168,8 +168,8 @@ private function printThrowable(TestDoxTestResult $test): void $this->printer->print( $this->prefixLines( $this->prefixFor('message', $test->status()), - $message - ) + $message, + ), ); $this->printer->print(PHP_EOL); @@ -179,8 +179,8 @@ private function printThrowable(TestDoxTestResult $test): void $this->printer->print( $this->prefixLines( $this->prefixFor('diff', $test->status()), - $diff - ) + $diff, + ), ); $this->printer->print(PHP_EOL); @@ -194,7 +194,7 @@ private function printThrowable(TestDoxTestResult $test): void } $this->printer->print( - $this->prefixLines($prefix, PHP_EOL . $stackTrace) + $this->prefixLines($prefix, PHP_EOL . $stackTrace), ); } } @@ -272,8 +272,8 @@ private function prefixLines(string $prefix, string $message): string PHP_EOL, array_map( static fn (string $line) => ' ' . $prefix . ($line ? ' ' . $line : ''), - preg_split('/\r\n|\r|\n/', $message) - ) + preg_split('/\r\n|\r|\n/', $message), + ), ); } @@ -294,8 +294,8 @@ private function prefixFor(string $type, TestStatus $status): string 'message' => '├', 'diff' => '┊', 'trace' => '╵', - 'last' => '┴' - } + 'last' => '┴', + }, ); } diff --git a/vendor/phpunit/phpunit/src/TextUI/TestRunner.php b/vendor/phpunit/phpunit/src/TextUI/TestRunner.php index b567827c..97460e2c 100644 --- a/vendor/phpunit/phpunit/src/TextUI/TestRunner.php +++ b/vendor/phpunit/phpunit/src/TextUI/TestRunner.php @@ -44,20 +44,20 @@ public function run(Configuration $configuration, ResultCache $resultCache, Test $suite, $configuration->executionOrder(), $configuration->resolveDependencies(), - $configuration->executionOrderDefects() + $configuration->executionOrderDefects(), ); Event\Facade::emitter()->testSuiteSorted( $configuration->executionOrder(), $configuration->executionOrderDefects(), - $configuration->resolveDependencies() + $configuration->resolveDependencies(), ); } (new TestSuiteFilterProcessor(new Factory))->process($configuration, $suite); Event\Facade::emitter()->testRunnerExecutionStarted( - Event\TestSuite\TestSuiteBuilder::from($suite) + Event\TestSuite\TestSuiteBuilder::from($suite), ); $suite->run(); @@ -68,7 +68,7 @@ public function run(Configuration $configuration, ResultCache $resultCache, Test throw new RuntimeException( $t->getMessage(), (int) $t->getCode(), - $t + $t, ); } } diff --git a/vendor/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php b/vendor/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php index e7a43ad9..18d8a9fd 100644 --- a/vendor/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php +++ b/vendor/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php @@ -44,13 +44,13 @@ public function process(Configuration $configuration, TestSuite $suite): void if ($configuration->hasExcludeGroups()) { $this->filterFactory->addExcludeGroupFilter( - $configuration->excludeGroups() + $configuration->excludeGroups(), ); } if ($configuration->hasGroups()) { $this->filterFactory->addIncludeGroupFilter( - $configuration->groups() + $configuration->groups(), ); } @@ -58,8 +58,8 @@ public function process(Configuration $configuration, TestSuite $suite): void $this->filterFactory->addIncludeGroupFilter( array_map( static fn (string $name): string => '__phpunit_covers_' . $name, - $configuration->testsCovering() - ) + $configuration->testsCovering(), + ), ); } @@ -67,21 +67,21 @@ public function process(Configuration $configuration, TestSuite $suite): void $this->filterFactory->addIncludeGroupFilter( array_map( static fn (string $name): string => '__phpunit_uses_' . $name, - $configuration->testsUsing() - ) + $configuration->testsUsing(), + ), ); } if ($configuration->hasFilter()) { $this->filterFactory->addNameFilter( - $configuration->filter() + $configuration->filter(), ); } $suite->injectFilter($this->filterFactory); Event\Facade::emitter()->testSuiteFiltered( - Event\TestSuite\TestSuiteBuilder::from($suite) + Event\TestSuite\TestSuiteBuilder::from($suite), ); } } diff --git a/vendor/phpunit/phpunit/src/Util/Color.php b/vendor/phpunit/phpunit/src/Util/Color.php index 914fb4fa..0f6bee49 100644 --- a/vendor/phpunit/phpunit/src/Util/Color.php +++ b/vendor/phpunit/phpunit/src/Util/Color.php @@ -133,7 +133,7 @@ public static function colorizePath(string $path, ?string $previousPath = null, $path[$last] = preg_replace_callback( '/([\-_.]+|phpt$)/', static fn ($matches) => self::dim($matches[0]), - $path[$last] + $path[$last], ); } @@ -156,7 +156,7 @@ public static function visualizeWhitespace(string $buffer, bool $visualizeEOL = return preg_replace_callback( '/\s+/', static fn ($matches) => self::dim(strtr($matches[0], $replaceMap)), - $buffer + $buffer, ); } @@ -173,7 +173,7 @@ private static function optimizeColor(string $buffer): string "\e[$1;$2m", '$2', ], - $buffer + $buffer, ); } } diff --git a/vendor/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php b/vendor/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php index e68f007d..bdfa84b5 100644 --- a/vendor/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php +++ b/vendor/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php @@ -22,8 +22,8 @@ public function __construct(string $directory) parent::__construct( sprintf( '"%s" is not a directory', - $directory - ) + $directory, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php b/vendor/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php index 52dddb44..49b50e4b 100644 --- a/vendor/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php +++ b/vendor/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php @@ -22,8 +22,8 @@ public function __construct(string $operator) parent::__construct( sprintf( '"%s" is not a valid version_compare() operator', - $operator - ) + $operator, + ), ); } } diff --git a/vendor/phpunit/phpunit/src/Util/Filesystem.php b/vendor/phpunit/phpunit/src/Util/Filesystem.php index 173338e7..9789fe29 100644 --- a/vendor/phpunit/phpunit/src/Util/Filesystem.php +++ b/vendor/phpunit/phpunit/src/Util/Filesystem.php @@ -19,6 +19,6 @@ final class Filesystem { public static function createDirectory(string $directory): bool { - return !(!is_dir($directory) && !@mkdir($directory, 0777, true) && !is_dir($directory)); + return !(!is_dir($directory) && !@mkdir($directory, 0o777, true) && !is_dir($directory)); } } diff --git a/vendor/phpunit/phpunit/src/Util/Filter.php b/vendor/phpunit/phpunit/src/Util/Filter.php index 3514c585..512d2262 100644 --- a/vendor/phpunit/phpunit/src/Util/Filter.php +++ b/vendor/phpunit/phpunit/src/Util/Filter.php @@ -53,7 +53,7 @@ public static function getFilteredStacktrace(Throwable $t): string if (!self::frameExists($eTrace, $eFile, $eLine)) { array_unshift( $eTrace, - ['file' => $eFile, 'line' => $eLine] + ['file' => $eFile, 'line' => $eLine], ); } @@ -65,7 +65,7 @@ public static function getFilteredStacktrace(Throwable $t): string $filteredStacktrace .= sprintf( "%s:%s\n", $frame['file'], - $frame['line'] ?? '?' + $frame['line'] ?? '?', ); } } @@ -73,7 +73,7 @@ public static function getFilteredStacktrace(Throwable $t): string return $filteredStacktrace; } - private static function shouldPrintFrame(array $frame, string|false $prefix, ExcludeList $excludeList): bool + private static function shouldPrintFrame(array $frame, false|string $prefix, ExcludeList $excludeList): bool { if (!isset($frame['file'])) { return false; diff --git a/vendor/phpunit/phpunit/src/Util/GlobalState.php b/vendor/phpunit/phpunit/src/Util/GlobalState.php index e61c2ff8..a364bca6 100644 --- a/vendor/phpunit/phpunit/src/Util/GlobalState.php +++ b/vendor/phpunit/phpunit/src/Util/GlobalState.php @@ -188,7 +188,7 @@ public static function getIniSettingsAsString(): string $result .= sprintf( '@ini_set(%s, %s);' . "\n", self::exportVariable($key), - self::exportVariable((string) $value) + self::exportVariable((string) $value), ); } @@ -206,7 +206,7 @@ public static function getConstantsAsString(): string 'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n", $name, $name, - self::exportVariable($value) + self::exportVariable($value), ); } } @@ -229,7 +229,7 @@ public static function getGlobalsAsString(): string '$GLOBALS[\'%s\'][\'%s\'] = %s;' . "\n", $superGlobalArray, $key, - self::exportVariable($GLOBALS[$superGlobalArray][$key]) + self::exportVariable($GLOBALS[$superGlobalArray][$key]), ); } } @@ -243,7 +243,7 @@ public static function getGlobalsAsString(): string $result .= sprintf( '$GLOBALS[\'%s\'] = %s;' . "\n", $key, - self::exportVariable($GLOBALS[$key]) + self::exportVariable($GLOBALS[$key]), ); } } diff --git a/vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php b/vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php index fe817b53..4e7fa352 100644 --- a/vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php +++ b/vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php @@ -166,7 +166,7 @@ public function runTestJob(string $job, Test $test): void $this->processChildResult( $test, $_result['stdout'], - $_result['stderr'] + $_result['stderr'], ); } @@ -181,15 +181,15 @@ public function getCommand(array $settings, string $file = null): string $settings = array_merge( $settings, $this->runtime->getCurrentSettings( - array_keys(ini_get_all('pcov')) - ) + array_keys(ini_get_all('pcov')), + ), ); } elseif ($this->runtime->hasXdebug()) { $settings = array_merge( $settings, $this->runtime->getCurrentSettings( - array_keys(ini_get_all('xdebug')) - ) + array_keys(ini_get_all('xdebug')), + ), ); } @@ -252,7 +252,7 @@ private function processChildResult(Test $test, string $stdout, string $stderr): Facade::emitter()->testErrored( TestMethodBuilder::fromTestCase($test), - ThrowableBuilder::from($exception) + ThrowableBuilder::from($exception), ); return; @@ -265,7 +265,7 @@ private function processChildResult(Test $test, string $stdout, string $stderr): static function (int $errno, string $errstr, string $errfile, int $errline): never { throw new ErrorException($errstr, $errno, $errno, $errfile, $errline); - } + }, ); try { @@ -283,12 +283,12 @@ static function (int $errno, string $errstr, string $errfile, int $errline): nev Facade::emitter()->testErrored( TestMethodBuilder::fromTestCase($test), - ThrowableBuilder::from($exception) + ThrowableBuilder::from($exception), ); Facade::emitter()->testFinished( TestMethodBuilder::fromTestCase($test), - 0 + 0, ); } } catch (ErrorException $e) { @@ -301,7 +301,7 @@ static function (int $errno, string $errstr, string $errfile, int $errline): nev Facade::emitter()->testErrored( TestMethodBuilder::fromTestCase($test), - ThrowableBuilder::from($exception) + ThrowableBuilder::from($exception), ); } @@ -320,7 +320,7 @@ static function (int $errno, string $errstr, string $errfile, int $errline): nev if (CodeCoverage::instance()->isActive() && $childResult['codeCoverage'] instanceof \SebastianBergmann\CodeCoverage\CodeCoverage) { CodeCoverage::instance()->codeCoverage()->merge( - $childResult['codeCoverage'] + $childResult['codeCoverage'], ); } } diff --git a/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php b/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php index 0dea1188..bf2ba001 100644 --- a/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php +++ b/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php @@ -49,7 +49,7 @@ public function runJob(string $job, array $settings = []): array if (!($this->tempFile = tempnam(sys_get_temp_dir(), 'phpunit_')) || file_put_contents($this->tempFile, $job) === false) { throw new PhpProcessException( - 'Unable to write temporary file' + 'Unable to write temporary file', ); } @@ -104,12 +104,12 @@ protected function runProcess(string $job, array $settings): array $pipeSpec, $pipes, null, - $env + $env, ); if (!is_resource($process)) { throw new PhpProcessException( - 'Unable to spawn worker process' + 'Unable to spawn worker process', ); } @@ -141,8 +141,8 @@ protected function runProcess(string $job, array $settings): array throw new PhpProcessException( sprintf( 'Job execution aborted after %d seconds', - $this->timeout - ) + $this->timeout, + ), ); } diff --git a/vendor/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php b/vendor/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php index 70f38d7c..74524996 100644 --- a/vendor/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php +++ b/vendor/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php @@ -27,7 +27,7 @@ protected function getHandles(): array { if (false === $stdout_handle = tmpfile()) { throw new PhpProcessException( - 'A temporary file could not be created; verify that your TEMP environment variable is writable' + 'A temporary file could not be created; verify that your TEMP environment variable is writable', ); } diff --git a/vendor/phpunit/phpunit/src/Util/Test.php b/vendor/phpunit/phpunit/src/Util/Test.php index e1f429af..56333f95 100644 --- a/vendor/phpunit/phpunit/src/Util/Test.php +++ b/vendor/phpunit/phpunit/src/Util/Test.php @@ -30,7 +30,7 @@ public static function isTestMethod(ReflectionMethod $method): bool $metadata = Registry::parser()->forMethod( $method->getDeclaringClass()->getName(), - $method->getName() + $method->getName(), ); return $metadata->isTest()->isNotEmpty(); diff --git a/vendor/phpunit/phpunit/src/Util/Xml/Loader.php b/vendor/phpunit/phpunit/src/Util/Xml/Loader.php index 6f27c79e..b7a443fd 100644 --- a/vendor/phpunit/phpunit/src/Util/Xml/Loader.php +++ b/vendor/phpunit/phpunit/src/Util/Xml/Loader.php @@ -37,9 +37,9 @@ public function loadFile(string $filename): DOMDocument if ($contents === false) { throw new XmlException( sprintf( - 'Could not read "%s".', - $filename - ) + 'Could not read XML from file "%s"', + $filename, + ), ); } @@ -52,7 +52,16 @@ public function loadFile(string $filename): DOMDocument public function load(string $actual, ?string $filename = null): DOMDocument { if ($actual === '') { - throw new XmlException('Could not load XML from empty string'); + if ($filename === null) { + throw new XmlException('Could not parse XML from empty string'); + } + + throw new XmlException( + sprintf( + 'Could not parse XML from empty file "%s"', + $filename, + ), + ); } $document = new DOMDocument; @@ -94,10 +103,10 @@ public function load(string $actual, ?string $filename = null): DOMDocument if ($filename !== null) { throw new XmlException( sprintf( - 'Could not load "%s".%s', + 'Could not load "%s"%s', $filename, - $message !== '' ? "\n" . $message : '' - ) + $message !== '' ? ":\n" . $message : '', + ), ); } diff --git a/vendor/phpunit/phpunit/src/Util/Xml/Xml.php b/vendor/phpunit/phpunit/src/Util/Xml/Xml.php index a7c4f836..5e96faa9 100644 --- a/vendor/phpunit/phpunit/src/Util/Xml/Xml.php +++ b/vendor/phpunit/phpunit/src/Util/Xml/Xml.php @@ -36,8 +36,8 @@ public static function prepareString(string $string): string '', htmlspecialchars( self::convertToUtf8($string), - ENT_QUOTES - ) + ENT_QUOTES, + ), ); } diff --git a/vendor/psr/http-message/composer.json b/vendor/psr/http-message/composer.json index c66e5aba..56e8c0a6 100644 --- a/vendor/psr/http-message/composer.json +++ b/vendor/psr/http-message/composer.json @@ -7,7 +7,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "require": { @@ -20,7 +20,7 @@ }, "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.1.x-dev" } } } diff --git a/vendor/psr/http-message/src/MessageInterface.php b/vendor/psr/http-message/src/MessageInterface.php index a83c9851..8cdb4ed6 100644 --- a/vendor/psr/http-message/src/MessageInterface.php +++ b/vendor/psr/http-message/src/MessageInterface.php @@ -1,5 +1,7 @@ =8.0.0" + "php": ">=5.3.0" }, "autoload": { "psr-4": { @@ -19,7 +19,7 @@ }, "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0.x-dev" } } } diff --git a/vendor/psr/simple-cache/src/CacheException.php b/vendor/psr/simple-cache/src/CacheException.php index f61b24c2..eba53815 100644 --- a/vendor/psr/simple-cache/src/CacheException.php +++ b/vendor/psr/simple-cache/src/CacheException.php @@ -5,6 +5,6 @@ /** * Interface used for all types of exceptions thrown by the implementing library. */ -interface CacheException extends \Throwable +interface CacheException { } diff --git a/vendor/psr/simple-cache/src/CacheInterface.php b/vendor/psr/simple-cache/src/CacheInterface.php index 671e340c..99e8d957 100644 --- a/vendor/psr/simple-cache/src/CacheInterface.php +++ b/vendor/psr/simple-cache/src/CacheInterface.php @@ -15,7 +15,7 @@ interface CacheInterface * @throws \Psr\SimpleCache\InvalidArgumentException * MUST be thrown if the $key string is not a legal value. */ - public function get(string $key, mixed $default = null): mixed; + public function get($key, $default = null); /** * Persists data in the cache, uniquely referenced by a key with an optional expiration TTL time. @@ -31,7 +31,7 @@ public function get(string $key, mixed $default = null): mixed; * @throws \Psr\SimpleCache\InvalidArgumentException * MUST be thrown if the $key string is not a legal value. */ - public function set(string $key, mixed $value, null|int|\DateInterval $ttl = null): bool; + public function set($key, $value, $ttl = null); /** * Delete an item from the cache by its unique key. @@ -43,28 +43,28 @@ public function set(string $key, mixed $value, null|int|\DateInterval $ttl = nul * @throws \Psr\SimpleCache\InvalidArgumentException * MUST be thrown if the $key string is not a legal value. */ - public function delete(string $key): bool; + public function delete($key); /** * Wipes clean the entire cache's keys. * * @return bool True on success and false on failure. */ - public function clear(): bool; + public function clear(); /** * Obtains multiple cache items by their unique keys. * - * @param iterable $keys A list of keys that can be obtained in a single operation. - * @param mixed $default Default value to return for keys that do not exist. + * @param iterable $keys A list of keys that can obtained in a single operation. + * @param mixed $default Default value to return for keys that do not exist. * - * @return iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value. + * @return iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value. * * @throws \Psr\SimpleCache\InvalidArgumentException * MUST be thrown if $keys is neither an array nor a Traversable, * or if any of the $keys are not a legal value. */ - public function getMultiple(iterable $keys, mixed $default = null): iterable; + public function getMultiple($keys, $default = null); /** * Persists a set of key => value pairs in the cache, with an optional TTL. @@ -80,12 +80,12 @@ public function getMultiple(iterable $keys, mixed $default = null): iterable; * MUST be thrown if $values is neither an array nor a Traversable, * or if any of the $values are not a legal value. */ - public function setMultiple(iterable $values, null|int|\DateInterval $ttl = null): bool; + public function setMultiple($values, $ttl = null); /** * Deletes multiple cache items in a single operation. * - * @param iterable $keys A list of string-based keys to be deleted. + * @param iterable $keys A list of string-based keys to be deleted. * * @return bool True if the items were successfully removed. False if there was an error. * @@ -93,7 +93,7 @@ public function setMultiple(iterable $values, null|int|\DateInterval $ttl = null * MUST be thrown if $keys is neither an array nor a Traversable, * or if any of the $keys are not a legal value. */ - public function deleteMultiple(iterable $keys): bool; + public function deleteMultiple($keys); /** * Determines whether an item is present in the cache. @@ -110,5 +110,5 @@ public function deleteMultiple(iterable $keys): bool; * @throws \Psr\SimpleCache\InvalidArgumentException * MUST be thrown if the $key string is not a legal value. */ - public function has(string $key): bool; + public function has($key); } diff --git a/vendor/symfony/console/Application.php b/vendor/symfony/console/Application.php index 41548a3e..b7aaa6a2 100644 --- a/vendor/symfony/console/Application.php +++ b/vendor/symfony/console/Application.php @@ -105,11 +105,14 @@ public function __construct(string $name = 'UNKNOWN', string $version = 'UNKNOWN /** * @final */ - public function setDispatcher(EventDispatcherInterface $dispatcher) + public function setDispatcher(EventDispatcherInterface $dispatcher): void { $this->dispatcher = $dispatcher; } + /** + * @return void + */ public function setCommandLoader(CommandLoaderInterface $commandLoader) { $this->commandLoader = $commandLoader; @@ -118,12 +121,15 @@ public function setCommandLoader(CommandLoaderInterface $commandLoader) public function getSignalRegistry(): SignalRegistry { if (!$this->signalRegistry) { - throw new RuntimeException('Signals are not supported. Make sure that the `pcntl` extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); + throw new RuntimeException('Signals are not supported. Make sure that the "pcntl" extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); } return $this->signalRegistry; } + /** + * @return void + */ public function setSignalsToDispatchEvent(int ...$signalsToDispatchEvent) { $this->signalsToDispatchEvent = $signalsToDispatchEvent; @@ -317,10 +323,16 @@ public function doRun(InputInterface $input, OutputInterface $output) return $exitCode; } + /** + * @return void + */ public function reset() { } + /** + * @return void + */ public function setHelperSet(HelperSet $helperSet) { $this->helperSet = $helperSet; @@ -334,6 +346,9 @@ public function getHelperSet(): HelperSet return $this->helperSet ??= $this->getDefaultHelperSet(); } + /** + * @return void + */ public function setDefinition(InputDefinition $definition) { $this->definition = $definition; @@ -404,6 +419,8 @@ public function areExceptionsCaught(): bool /** * Sets whether to catch exceptions or not during commands execution. + * + * @return void */ public function setCatchExceptions(bool $boolean) { @@ -420,6 +437,8 @@ public function isAutoExitEnabled(): bool /** * Sets whether to automatically exit after a command execution or not. + * + * @return void */ public function setAutoExit(bool $boolean) { @@ -436,7 +455,9 @@ public function getName(): string /** * Sets the application name. - **/ + * + * @return void + */ public function setName(string $name) { $this->name = $name; @@ -452,6 +473,8 @@ public function getVersion(): string /** * Sets the application version. + * + * @return void */ public function setVersion(string $version) { @@ -490,6 +513,8 @@ public function register(string $name): Command * If a Command is not enabled it will not be added. * * @param Command[] $commands An array of commands + * + * @return void */ public function addCommands(array $commands) { @@ -687,9 +712,7 @@ public function find(string $name) if ($alternatives = $this->findAlternatives($name, $allCommands)) { // remove hidden commands - $alternatives = array_filter($alternatives, function ($name) { - return !$this->get($name)->isHidden(); - }); + $alternatives = array_filter($alternatives, fn ($name) => !$this->get($name)->isHidden()); if (1 == \count($alternatives)) { $message .= "\n\nDid you mean this?\n "; @@ -840,9 +863,7 @@ protected function doRenderThrowable(\Throwable $e, OutputInterface $output): vo } if (str_contains($message, "@anonymous\0")) { - $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) { - return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0]; - }, $message); + $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', fn ($m) => class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0], $message); } $width = $this->terminal->getWidth() ? $this->terminal->getWidth() - 1 : \PHP_INT_MAX; @@ -903,6 +924,8 @@ protected function doRenderThrowable(\Throwable $e, OutputInterface $output): vo /** * Configures the input and output instances based on the user arguments and options. + * + * @return void */ protected function configureIO(InputInterface $input, OutputInterface $output) { @@ -977,44 +1000,62 @@ protected function doRunCommand(Command $command, InputInterface $input, OutputI } } - if ($this->signalsToDispatchEvent) { - $commandSignals = $command instanceof SignalableCommandInterface ? $command->getSubscribedSignals() : []; - - if ($commandSignals || null !== $this->dispatcher) { - if (!$this->signalRegistry) { - throw new RuntimeException('Unable to subscribe to signal events. Make sure that the `pcntl` extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); - } + $commandSignals = $command instanceof SignalableCommandInterface ? $command->getSubscribedSignals() : []; + if ($commandSignals || $this->dispatcher && $this->signalsToDispatchEvent) { + if (!$this->signalRegistry) { + throw new RuntimeException('Unable to subscribe to signal events. Make sure that the "pcntl" extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); + } - if (Terminal::hasSttyAvailable()) { - $sttyMode = shell_exec('stty -g'); + if (Terminal::hasSttyAvailable()) { + $sttyMode = shell_exec('stty -g'); - foreach ([\SIGINT, \SIGTERM] as $signal) { - $this->signalRegistry->register($signal, static function () use ($sttyMode) { - shell_exec('stty '.$sttyMode); - }); - } + foreach ([\SIGINT, \SIGTERM] as $signal) { + $this->signalRegistry->register($signal, static fn () => shell_exec('stty '.$sttyMode)); } } - if (null !== $this->dispatcher) { + if ($this->dispatcher) { + // We register application signals, so that we can dispatch the event foreach ($this->signalsToDispatchEvent as $signal) { $event = new ConsoleSignalEvent($command, $input, $output, $signal); - $this->signalRegistry->register($signal, function ($signal, $hasNext) use ($event) { + $this->signalRegistry->register($signal, function ($signal) use ($event, $command, $commandSignals) { $this->dispatcher->dispatch($event, ConsoleEvents::SIGNAL); - - // No more handlers, we try to simulate PHP default behavior - if (!$hasNext) { - if (!\in_array($signal, [\SIGUSR1, \SIGUSR2], true)) { - exit(0); + $exitCode = $event->getExitCode(); + + // If the command is signalable, we call the handleSignal() method + if (\in_array($signal, $commandSignals, true)) { + $exitCode = $command->handleSignal($signal, $exitCode); + // BC layer for Symfony <= 5 + if (null === $exitCode) { + trigger_deprecation('symfony/console', '6.3', 'Not returning an exit code from "%s::handleSignal()" is deprecated, return "false" to keep the command running or "0" to exit successfully.', get_debug_type($command)); + $exitCode = 0; } } + + if (false !== $exitCode) { + exit($exitCode); + } }); } + + // then we register command signals, but not if already handled after the dispatcher + $commandSignals = array_diff($commandSignals, $this->signalsToDispatchEvent); } foreach ($commandSignals as $signal) { - $this->signalRegistry->register($signal, [$command, 'handleSignal']); + $this->signalRegistry->register($signal, function (int $signal) use ($command): void { + $exitCode = $command->handleSignal($signal); + // BC layer for Symfony <= 5 + if (null === $exitCode) { + trigger_deprecation('symfony/console', '6.3', 'Not returning an exit code from "%s::handleSignal()" is deprecated, return "false" to keep the command running or "0" to exit successfully.', get_debug_type($command)); + $exitCode = 0; + } + + if (false !== $exitCode) { + exit($exitCode); + } + }); } } @@ -1170,7 +1211,7 @@ private function findAlternatives(string $name, iterable $collection): array } } - $alternatives = array_filter($alternatives, function ($lev) use ($threshold) { return $lev < 2 * $threshold; }); + $alternatives = array_filter($alternatives, fn ($lev) => $lev < 2 * $threshold); ksort($alternatives, \SORT_NATURAL | \SORT_FLAG_CASE); return array_keys($alternatives); @@ -1261,7 +1302,7 @@ private function extractAllNamespaces(string $name): array return $namespaces; } - private function init() + private function init(): void { if ($this->initialized) { return; diff --git a/vendor/symfony/console/CHANGELOG.md b/vendor/symfony/console/CHANGELOG.md index 61c36b0e..3428a57d 100644 --- a/vendor/symfony/console/CHANGELOG.md +++ b/vendor/symfony/console/CHANGELOG.md @@ -1,6 +1,13 @@ CHANGELOG ========= +6.3 +--- + + * Add support for choosing exit code while handling signal, or to not exit at all + * Add `ProgressBar::setPlaceholderFormatter` to set a placeholder attached to a instance, instead of being global. + * Add `ReStructuredTextDescriptor` + 6.2 --- diff --git a/vendor/symfony/console/Command/Command.php b/vendor/symfony/console/Command/Command.php index 1e3c1a5a..704b112d 100644 --- a/vendor/symfony/console/Command/Command.php +++ b/vendor/symfony/console/Command/Command.php @@ -141,12 +141,17 @@ public function __construct(string $name = null) * Ignores validation errors. * * This is mainly useful for the help command. + * + * @return void */ public function ignoreValidationErrors() { $this->ignoreValidationErrors = true; } + /** + * @return void + */ public function setApplication(Application $application = null) { if (1 > \func_num_args()) { @@ -162,6 +167,9 @@ public function setApplication(Application $application = null) $this->fullDefinition = null; } + /** + * @return void + */ public function setHelperSet(HelperSet $helperSet) { $this->helperSet = $helperSet; @@ -198,6 +206,8 @@ public function isEnabled() /** * Configures the current command. + * + * @return void */ protected function configure() { @@ -228,6 +238,8 @@ protected function execute(InputInterface $input, OutputInterface $output) * This method is executed before the InputDefinition is validated. * This means that this is the only place where the command can * interactively ask for values of missing required arguments. + * + * @return void */ protected function interact(InputInterface $input, OutputInterface $output) { @@ -242,6 +254,8 @@ protected function interact(InputInterface $input, OutputInterface $output) * * @see InputInterface::bind() * @see InputInterface::validate() + * + * @return void */ protected function initialize(InputInterface $input, OutputInterface $output) { @@ -378,7 +392,7 @@ public function setCode(callable $code): static * * @internal */ - public function mergeApplicationDefinition(bool $mergeArgs = true) + public function mergeApplicationDefinition(bool $mergeArgs = true): void { if (null === $this->application) { return; @@ -702,7 +716,7 @@ public function getHelper(string $name): mixed * * @throws InvalidArgumentException When the name is invalid */ - private function validateName(string $name) + private function validateName(string $name): void { if (!preg_match('/^[^\:]++(\:[^\:]++)*$/', $name)) { throw new InvalidArgumentException(sprintf('Command name "%s" is invalid.', $name)); diff --git a/vendor/symfony/console/Command/CompleteCommand.php b/vendor/symfony/console/Command/CompleteCommand.php index e65b334c..058578d8 100644 --- a/vendor/symfony/console/Command/CompleteCommand.php +++ b/vendor/symfony/console/Command/CompleteCommand.php @@ -74,7 +74,7 @@ protected function configure(): void ; } - protected function initialize(InputInterface $input, OutputInterface $output) + protected function initialize(InputInterface $input, OutputInterface $output): void { $this->isDebug = filter_var(getenv('SYMFONY_COMPLETION_DEBUG'), \FILTER_VALIDATE_BOOL); } @@ -134,12 +134,12 @@ protected function execute(InputInterface $input, OutputInterface $output): int $completionInput->bind($command->getDefinition()); if (CompletionInput::TYPE_OPTION_NAME === $completionInput->getCompletionType()) { - $this->log(' Completing option names for the '.\get_class($command instanceof LazyCommand ? $command->getCommand() : $command).' command.'); + $this->log(' Completing option names for the '.($command instanceof LazyCommand ? $command->getCommand() : $command)::class.' command.'); $suggestions->suggestOptions($command->getDefinition()->getOptions()); } else { $this->log([ - ' Completing using the '.\get_class($command instanceof LazyCommand ? $command->getCommand() : $command).' class.', + ' Completing using the '.($command instanceof LazyCommand ? $command->getCommand() : $command)::class.' class.', ' Completing '.$completionInput->getCompletionType().' for '.$completionInput->getCompletionName().'', ]); if (null !== $compval = $completionInput->getCompletionValue()) { @@ -155,7 +155,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int $this->log('Suggestions:'); if ($options = $suggestions->getOptionSuggestions()) { - $this->log(' --'.implode(' --', array_map(function ($o) { return $o->getName(); }, $options))); + $this->log(' --'.implode(' --', array_map(fn ($o) => $o->getName(), $options))); } elseif ($values = $suggestions->getValueSuggestions()) { $this->log(' '.implode(' ', $values)); } else { @@ -173,10 +173,10 @@ protected function execute(InputInterface $input, OutputInterface $output): int throw $e; } - return self::FAILURE; + return 2; } - return self::SUCCESS; + return 0; } private function createCompletionInput(InputInterface $input): CompletionInput diff --git a/vendor/symfony/console/Command/DumpCompletionCommand.php b/vendor/symfony/console/Command/DumpCompletionCommand.php index 10280f73..51b613a1 100644 --- a/vendor/symfony/console/Command/DumpCompletionCommand.php +++ b/vendor/symfony/console/Command/DumpCompletionCommand.php @@ -39,7 +39,7 @@ final class DumpCompletionCommand extends Command private array $supportedShells; - protected function configure() + protected function configure(): void { $fullCommand = $_SERVER['PHP_SELF']; $commandName = basename($fullCommand); @@ -96,7 +96,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int if ($input->getOption('debug')) { $this->tailDebugLog($commandName, $output); - return self::SUCCESS; + return 0; } $shell = $input->getArgument('shell') ?? self::guessShell(); @@ -113,12 +113,12 @@ protected function execute(InputInterface $input, OutputInterface $output): int $output->writeln(sprintf('Shell not detected, Symfony shell completion only supports "%s").', implode('", "', $supportedShells))); } - return self::INVALID; + return 2; } $output->write(str_replace(['{{ COMMAND_NAME }}', '{{ VERSION }}'], [$commandName, CompleteCommand::COMPLETION_API_VERSION], file_get_contents($completionFile))); - return self::SUCCESS; + return 0; } private static function guessShell(): string diff --git a/vendor/symfony/console/Command/HelpCommand.php b/vendor/symfony/console/Command/HelpCommand.php index d4134e17..e6447b05 100644 --- a/vendor/symfony/console/Command/HelpCommand.php +++ b/vendor/symfony/console/Command/HelpCommand.php @@ -27,6 +27,9 @@ class HelpCommand extends Command { private Command $command; + /** + * @return void + */ protected function configure() { $this->ignoreValidationErrors(); @@ -34,12 +37,8 @@ protected function configure() $this ->setName('help') ->setDefinition([ - new InputArgument('command_name', InputArgument::OPTIONAL, 'The command name', 'help', function () { - return array_keys((new ApplicationDescription($this->getApplication()))->getCommands()); - }), - new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt', function () { - return (new DescriptorHelper())->getFormats(); - }), + new InputArgument('command_name', InputArgument::OPTIONAL, 'The command name', 'help', fn () => array_keys((new ApplicationDescription($this->getApplication()))->getCommands())), + new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt', fn () => (new DescriptorHelper())->getFormats()), new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command help'), ]) ->setDescription('Display help for a command') @@ -58,6 +57,9 @@ protected function configure() ; } + /** + * @return void + */ public function setCommand(Command $command) { $this->command = $command; diff --git a/vendor/symfony/console/Command/ListCommand.php b/vendor/symfony/console/Command/ListCommand.php index cab88b43..5850c3d7 100644 --- a/vendor/symfony/console/Command/ListCommand.php +++ b/vendor/symfony/console/Command/ListCommand.php @@ -25,18 +25,17 @@ */ class ListCommand extends Command { + /** + * @return void + */ protected function configure() { $this ->setName('list') ->setDefinition([ - new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name', null, function () { - return array_keys((new ApplicationDescription($this->getApplication()))->getNamespaces()); - }), + new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name', null, fn () => array_keys((new ApplicationDescription($this->getApplication()))->getNamespaces())), new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command list'), - new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt', function () { - return (new DescriptorHelper())->getFormats(); - }), + new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt', fn () => (new DescriptorHelper())->getFormats()), new InputOption('short', null, InputOption::VALUE_NONE, 'To skip describing commands\' arguments'), ]) ->setDescription('List commands') diff --git a/vendor/symfony/console/Command/LockableTrait.php b/vendor/symfony/console/Command/LockableTrait.php index 67923a9e..c1006a65 100644 --- a/vendor/symfony/console/Command/LockableTrait.php +++ b/vendor/symfony/console/Command/LockableTrait.php @@ -32,7 +32,7 @@ trait LockableTrait private function lock(string $name = null, bool $blocking = false): bool { if (!class_exists(SemaphoreStore::class)) { - throw new LogicException('To enable the locking feature you must install the symfony/lock component.'); + throw new LogicException('To enable the locking feature you must install the symfony/lock component. Try running "composer require symfony/lock".'); } if (null !== $this->lock) { @@ -58,7 +58,7 @@ private function lock(string $name = null, bool $blocking = false): bool /** * Releases the command lock if there is one. */ - private function release() + private function release(): void { if ($this->lock) { $this->lock->release(); diff --git a/vendor/symfony/console/Command/SignalableCommandInterface.php b/vendor/symfony/console/Command/SignalableCommandInterface.php index d439728b..4d087600 100644 --- a/vendor/symfony/console/Command/SignalableCommandInterface.php +++ b/vendor/symfony/console/Command/SignalableCommandInterface.php @@ -25,6 +25,10 @@ public function getSubscribedSignals(): array; /** * The method will be called when the application is signaled. + * + * @param int|false $previousExitCode + + * @return int|false The exit code to return or false to continue the normal execution */ - public function handleSignal(int $signal): void; + public function handleSignal(int $signal, /* int|false $previousExitCode = 0 */); } diff --git a/vendor/symfony/console/Completion/CompletionInput.php b/vendor/symfony/console/Completion/CompletionInput.php index 3ef8db5d..800b7235 100644 --- a/vendor/symfony/console/Completion/CompletionInput.php +++ b/vendor/symfony/console/Completion/CompletionInput.php @@ -34,7 +34,7 @@ final class CompletionInput extends ArgvInput private $tokens; private $currentIndex; private $completionType; - private $completionName = null; + private $completionName; private $completionValue = ''; /** diff --git a/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php b/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php index 62c80c3b..27705ddb 100644 --- a/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php +++ b/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php @@ -29,6 +29,9 @@ */ class AddConsoleCommandPass implements CompilerPassInterface { + /** + * @return void + */ public function process(ContainerBuilder $container) { $commandServices = $container->findTaggedServiceIds('console.command', true); diff --git a/vendor/symfony/console/Descriptor/ApplicationDescription.php b/vendor/symfony/console/Descriptor/ApplicationDescription.php index 2158339e..f8ed1804 100644 --- a/vendor/symfony/console/Descriptor/ApplicationDescription.php +++ b/vendor/symfony/console/Descriptor/ApplicationDescription.php @@ -79,7 +79,7 @@ public function getCommand(string $name): Command return $this->commands[$name] ?? $this->aliases[$name]; } - private function inspectApplication() + private function inspectApplication(): void { $this->commands = []; $this->namespaces = []; diff --git a/vendor/symfony/console/Descriptor/Descriptor.php b/vendor/symfony/console/Descriptor/Descriptor.php index 1476f575..7b2509c6 100644 --- a/vendor/symfony/console/Descriptor/Descriptor.php +++ b/vendor/symfony/console/Descriptor/Descriptor.php @@ -26,12 +26,9 @@ */ abstract class Descriptor implements DescriptorInterface { - /** - * @var OutputInterface - */ - protected $output; + protected OutputInterface $output; - public function describe(OutputInterface $output, object $object, array $options = []) + public function describe(OutputInterface $output, object $object, array $options = []): void { $this->output = $output; @@ -45,10 +42,7 @@ public function describe(OutputInterface $output, object $object, array $options }; } - /** - * Writes content to output. - */ - protected function write(string $content, bool $decorated = false) + protected function write(string $content, bool $decorated = false): void { $this->output->write($content, false, $decorated ? OutputInterface::OUTPUT_NORMAL : OutputInterface::OUTPUT_RAW); } @@ -56,25 +50,25 @@ protected function write(string $content, bool $decorated = false) /** * Describes an InputArgument instance. */ - abstract protected function describeInputArgument(InputArgument $argument, array $options = []); + abstract protected function describeInputArgument(InputArgument $argument, array $options = []): void; /** * Describes an InputOption instance. */ - abstract protected function describeInputOption(InputOption $option, array $options = []); + abstract protected function describeInputOption(InputOption $option, array $options = []): void; /** * Describes an InputDefinition instance. */ - abstract protected function describeInputDefinition(InputDefinition $definition, array $options = []); + abstract protected function describeInputDefinition(InputDefinition $definition, array $options = []): void; /** * Describes a Command instance. */ - abstract protected function describeCommand(Command $command, array $options = []); + abstract protected function describeCommand(Command $command, array $options = []): void; /** * Describes an Application instance. */ - abstract protected function describeApplication(Application $application, array $options = []); + abstract protected function describeApplication(Application $application, array $options = []): void; } diff --git a/vendor/symfony/console/Descriptor/DescriptorInterface.php b/vendor/symfony/console/Descriptor/DescriptorInterface.php index ebea3036..ab468a25 100644 --- a/vendor/symfony/console/Descriptor/DescriptorInterface.php +++ b/vendor/symfony/console/Descriptor/DescriptorInterface.php @@ -20,5 +20,8 @@ */ interface DescriptorInterface { + /** + * @return void + */ public function describe(OutputInterface $output, object $object, array $options = []); } diff --git a/vendor/symfony/console/Descriptor/JsonDescriptor.php b/vendor/symfony/console/Descriptor/JsonDescriptor.php index 6f79a17a..95630370 100644 --- a/vendor/symfony/console/Descriptor/JsonDescriptor.php +++ b/vendor/symfony/console/Descriptor/JsonDescriptor.php @@ -26,12 +26,12 @@ */ class JsonDescriptor extends Descriptor { - protected function describeInputArgument(InputArgument $argument, array $options = []) + protected function describeInputArgument(InputArgument $argument, array $options = []): void { $this->writeData($this->getInputArgumentData($argument), $options); } - protected function describeInputOption(InputOption $option, array $options = []) + protected function describeInputOption(InputOption $option, array $options = []): void { $this->writeData($this->getInputOptionData($option), $options); if ($option->isNegatable()) { @@ -39,17 +39,17 @@ protected function describeInputOption(InputOption $option, array $options = []) } } - protected function describeInputDefinition(InputDefinition $definition, array $options = []) + protected function describeInputDefinition(InputDefinition $definition, array $options = []): void { $this->writeData($this->getInputDefinitionData($definition), $options); } - protected function describeCommand(Command $command, array $options = []) + protected function describeCommand(Command $command, array $options = []): void { $this->writeData($this->getCommandData($command, $options['short'] ?? false), $options); } - protected function describeApplication(Application $application, array $options = []) + protected function describeApplication(Application $application, array $options = []): void { $describedNamespace = $options['namespace'] ?? null; $description = new ApplicationDescription($application, $describedNamespace, true); @@ -81,7 +81,7 @@ protected function describeApplication(Application $application, array $options /** * Writes data as json. */ - private function writeData(array $data, array $options) + private function writeData(array $data, array $options): void { $flags = $options['json_encoding'] ?? 0; diff --git a/vendor/symfony/console/Descriptor/MarkdownDescriptor.php b/vendor/symfony/console/Descriptor/MarkdownDescriptor.php index fbd9c534..b3f16ee9 100644 --- a/vendor/symfony/console/Descriptor/MarkdownDescriptor.php +++ b/vendor/symfony/console/Descriptor/MarkdownDescriptor.php @@ -28,7 +28,7 @@ */ class MarkdownDescriptor extends Descriptor { - public function describe(OutputInterface $output, object $object, array $options = []) + public function describe(OutputInterface $output, object $object, array $options = []): void { $decorated = $output->isDecorated(); $output->setDecorated(false); @@ -38,12 +38,12 @@ public function describe(OutputInterface $output, object $object, array $options $output->setDecorated($decorated); } - protected function write(string $content, bool $decorated = true) + protected function write(string $content, bool $decorated = true): void { parent::write($content, $decorated); } - protected function describeInputArgument(InputArgument $argument, array $options = []) + protected function describeInputArgument(InputArgument $argument, array $options = []): void { $this->write( '#### `'.($argument->getName() ?: '')."`\n\n" @@ -54,7 +54,7 @@ protected function describeInputArgument(InputArgument $argument, array $options ); } - protected function describeInputOption(InputOption $option, array $options = []) + protected function describeInputOption(InputOption $option, array $options = []): void { $name = '--'.$option->getName(); if ($option->isNegatable()) { @@ -75,15 +75,13 @@ protected function describeInputOption(InputOption $option, array $options = []) ); } - protected function describeInputDefinition(InputDefinition $definition, array $options = []) + protected function describeInputDefinition(InputDefinition $definition, array $options = []): void { if ($showArguments = \count($definition->getArguments()) > 0) { $this->write('### Arguments'); foreach ($definition->getArguments() as $argument) { $this->write("\n\n"); - if (null !== $describeInputArgument = $this->describeInputArgument($argument)) { - $this->write($describeInputArgument); - } + $this->describeInputArgument($argument); } } @@ -95,14 +93,12 @@ protected function describeInputDefinition(InputDefinition $definition, array $o $this->write('### Options'); foreach ($definition->getOptions() as $option) { $this->write("\n\n"); - if (null !== $describeInputOption = $this->describeInputOption($option)) { - $this->write($describeInputOption); - } + $this->describeInputOption($option); } } } - protected function describeCommand(Command $command, array $options = []) + protected function describeCommand(Command $command, array $options = []): void { if ($options['short'] ?? false) { $this->write( @@ -110,9 +106,7 @@ protected function describeCommand(Command $command, array $options = []) .str_repeat('-', Helper::width($command->getName()) + 2)."\n\n" .($command->getDescription() ? $command->getDescription()."\n\n" : '') .'### Usage'."\n\n" - .array_reduce($command->getAliases(), function ($carry, $usage) { - return $carry.'* `'.$usage.'`'."\n"; - }) + .array_reduce($command->getAliases(), fn ($carry, $usage) => $carry.'* `'.$usage.'`'."\n") ); return; @@ -125,9 +119,7 @@ protected function describeCommand(Command $command, array $options = []) .str_repeat('-', Helper::width($command->getName()) + 2)."\n\n" .($command->getDescription() ? $command->getDescription()."\n\n" : '') .'### Usage'."\n\n" - .array_reduce(array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()), function ($carry, $usage) { - return $carry.'* `'.$usage.'`'."\n"; - }) + .array_reduce(array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()), fn ($carry, $usage) => $carry.'* `'.$usage.'`'."\n") ); if ($help = $command->getProcessedHelp()) { @@ -142,7 +134,7 @@ protected function describeCommand(Command $command, array $options = []) } } - protected function describeApplication(Application $application, array $options = []) + protected function describeApplication(Application $application, array $options = []): void { $describedNamespace = $options['namespace'] ?? null; $description = new ApplicationDescription($application, $describedNamespace); @@ -157,16 +149,12 @@ protected function describeApplication(Application $application, array $options } $this->write("\n\n"); - $this->write(implode("\n", array_map(function ($commandName) use ($description) { - return sprintf('* [`%s`](#%s)', $commandName, str_replace(':', '', $description->getCommand($commandName)->getName())); - }, $namespace['commands']))); + $this->write(implode("\n", array_map(fn ($commandName) => sprintf('* [`%s`](#%s)', $commandName, str_replace(':', '', $description->getCommand($commandName)->getName())), $namespace['commands']))); } foreach ($description->getCommands() as $command) { $this->write("\n\n"); - if (null !== $describeCommand = $this->describeCommand($command, $options)) { - $this->write($describeCommand); - } + $this->describeCommand($command, $options); } } diff --git a/vendor/symfony/console/Descriptor/TextDescriptor.php b/vendor/symfony/console/Descriptor/TextDescriptor.php index 48a0b42a..d04d1023 100644 --- a/vendor/symfony/console/Descriptor/TextDescriptor.php +++ b/vendor/symfony/console/Descriptor/TextDescriptor.php @@ -28,7 +28,7 @@ */ class TextDescriptor extends Descriptor { - protected function describeInputArgument(InputArgument $argument, array $options = []) + protected function describeInputArgument(InputArgument $argument, array $options = []): void { if (null !== $argument->getDefault() && (!\is_array($argument->getDefault()) || \count($argument->getDefault()))) { $default = sprintf(' [default: %s]', $this->formatDefaultValue($argument->getDefault())); @@ -48,7 +48,7 @@ protected function describeInputArgument(InputArgument $argument, array $options ), $options); } - protected function describeInputOption(InputOption $option, array $options = []) + protected function describeInputOption(InputOption $option, array $options = []): void { if ($option->acceptValue() && null !== $option->getDefault() && (!\is_array($option->getDefault()) || \count($option->getDefault()))) { $default = sprintf(' [default: %s]', $this->formatDefaultValue($option->getDefault())); @@ -83,7 +83,7 @@ protected function describeInputOption(InputOption $option, array $options = []) ), $options); } - protected function describeInputDefinition(InputDefinition $definition, array $options = []) + protected function describeInputDefinition(InputDefinition $definition, array $options = []): void { $totalWidth = $this->calculateTotalWidthForOptions($definition->getOptions()); foreach ($definition->getArguments() as $argument) { @@ -122,7 +122,7 @@ protected function describeInputDefinition(InputDefinition $definition, array $o } } - protected function describeCommand(Command $command, array $options = []) + protected function describeCommand(Command $command, array $options = []): void { $command->mergeApplicationDefinition(false); @@ -157,7 +157,7 @@ protected function describeCommand(Command $command, array $options = []) } } - protected function describeApplication(Application $application, array $options = []) + protected function describeApplication(Application $application, array $options = []): void { $describedNamespace = $options['namespace'] ?? null; $description = new ApplicationDescription($application, $describedNamespace); @@ -193,9 +193,7 @@ protected function describeApplication(Application $application, array $options } // calculate max. width based on available commands per namespace - $width = $this->getColumnWidth(array_merge(...array_values(array_map(function ($namespace) use ($commands) { - return array_intersect($namespace['commands'], array_keys($commands)); - }, array_values($namespaces))))); + $width = $this->getColumnWidth(array_merge(...array_values(array_map(fn ($namespace) => array_intersect($namespace['commands'], array_keys($commands)), array_values($namespaces))))); if ($describedNamespace) { $this->writeText(sprintf('Available commands for the "%s" namespace:', $describedNamespace), $options); @@ -204,9 +202,7 @@ protected function describeApplication(Application $application, array $options } foreach ($namespaces as $namespace) { - $namespace['commands'] = array_filter($namespace['commands'], function ($name) use ($commands) { - return isset($commands[$name]); - }); + $namespace['commands'] = array_filter($namespace['commands'], fn ($name) => isset($commands[$name])); if (!$namespace['commands']) { continue; @@ -230,7 +226,7 @@ protected function describeApplication(Application $application, array $options } } - private function writeText(string $content, array $options = []) + private function writeText(string $content, array $options = []): void { $this->write( isset($options['raw_text']) && $options['raw_text'] ? strip_tags($content) : $content, diff --git a/vendor/symfony/console/Descriptor/XmlDescriptor.php b/vendor/symfony/console/Descriptor/XmlDescriptor.php index f4643a9a..72580fd9 100644 --- a/vendor/symfony/console/Descriptor/XmlDescriptor.php +++ b/vendor/symfony/console/Descriptor/XmlDescriptor.php @@ -120,27 +120,27 @@ public function getApplicationDocument(Application $application, string $namespa return $dom; } - protected function describeInputArgument(InputArgument $argument, array $options = []) + protected function describeInputArgument(InputArgument $argument, array $options = []): void { $this->writeDocument($this->getInputArgumentDocument($argument)); } - protected function describeInputOption(InputOption $option, array $options = []) + protected function describeInputOption(InputOption $option, array $options = []): void { $this->writeDocument($this->getInputOptionDocument($option)); } - protected function describeInputDefinition(InputDefinition $definition, array $options = []) + protected function describeInputDefinition(InputDefinition $definition, array $options = []): void { $this->writeDocument($this->getInputDefinitionDocument($definition)); } - protected function describeCommand(Command $command, array $options = []) + protected function describeCommand(Command $command, array $options = []): void { $this->writeDocument($this->getCommandDocument($command, $options['short'] ?? false)); } - protected function describeApplication(Application $application, array $options = []) + protected function describeApplication(Application $application, array $options = []): void { $this->writeDocument($this->getApplicationDocument($application, $options['namespace'] ?? null, $options['short'] ?? false)); } @@ -148,7 +148,7 @@ protected function describeApplication(Application $application, array $options /** * Appends document children to parent node. */ - private function appendDocument(\DOMNode $parentNode, \DOMNode $importedParent) + private function appendDocument(\DOMNode $parentNode, \DOMNode $importedParent): void { foreach ($importedParent->childNodes as $childNode) { $parentNode->appendChild($parentNode->ownerDocument->importNode($childNode, true)); @@ -158,7 +158,7 @@ private function appendDocument(\DOMNode $parentNode, \DOMNode $importedParent) /** * Writes DOM document. */ - private function writeDocument(\DOMDocument $dom) + private function writeDocument(\DOMDocument $dom): void { $dom->formatOutput = true; $this->write($dom->saveXML()); diff --git a/vendor/symfony/console/Event/ConsoleSignalEvent.php b/vendor/symfony/console/Event/ConsoleSignalEvent.php index 766af691..95af1f91 100644 --- a/vendor/symfony/console/Event/ConsoleSignalEvent.php +++ b/vendor/symfony/console/Event/ConsoleSignalEvent.php @@ -21,15 +21,36 @@ final class ConsoleSignalEvent extends ConsoleEvent { private int $handlingSignal; + private int|false $exitCode; - public function __construct(Command $command, InputInterface $input, OutputInterface $output, int $handlingSignal) + public function __construct(Command $command, InputInterface $input, OutputInterface $output, int $handlingSignal, int|false $exitCode = 0) { parent::__construct($command, $input, $output); $this->handlingSignal = $handlingSignal; + $this->exitCode = $exitCode; } public function getHandlingSignal(): int { return $this->handlingSignal; } + + public function setExitCode(int $exitCode): void + { + if ($exitCode < 0 || $exitCode > 255) { + throw new \InvalidArgumentException('Exit code must be between 0 and 255.'); + } + + $this->exitCode = $exitCode; + } + + public function abortExit(): void + { + $this->exitCode = false; + } + + public function getExitCode(): int|false + { + return $this->exitCode; + } } diff --git a/vendor/symfony/console/EventListener/ErrorListener.php b/vendor/symfony/console/EventListener/ErrorListener.php index 773a13a1..9925a5f7 100644 --- a/vendor/symfony/console/EventListener/ErrorListener.php +++ b/vendor/symfony/console/EventListener/ErrorListener.php @@ -31,6 +31,9 @@ public function __construct(LoggerInterface $logger = null) $this->logger = $logger; } + /** + * @return void + */ public function onConsoleError(ConsoleErrorEvent $event) { if (null === $this->logger) { @@ -48,6 +51,9 @@ public function onConsoleError(ConsoleErrorEvent $event) $this->logger->critical('Error thrown while running command "{command}". Message: "{message}"', ['exception' => $error, 'command' => $inputString, 'message' => $error->getMessage()]); } + /** + * @return void + */ public function onConsoleTerminate(ConsoleTerminateEvent $event) { if (null === $this->logger) { diff --git a/vendor/symfony/console/Formatter/OutputFormatter.php b/vendor/symfony/console/Formatter/OutputFormatter.php index 38e75c31..9cb63104 100644 --- a/vendor/symfony/console/Formatter/OutputFormatter.php +++ b/vendor/symfony/console/Formatter/OutputFormatter.php @@ -81,6 +81,9 @@ public function __construct(bool $decorated = false, array $styles = []) $this->styleStack = new OutputFormatterStyleStack(); } + /** + * @return void + */ public function setDecorated(bool $decorated) { $this->decorated = $decorated; @@ -91,6 +94,9 @@ public function isDecorated(): bool return $this->decorated; } + /** + * @return void + */ public function setStyle(string $name, OutputFormatterStyleInterface $style) { $this->styles[strtolower($name)] = $style; @@ -115,6 +121,9 @@ public function format(?string $message): ?string return $this->formatAndWrap($message, 0); } + /** + * @return string + */ public function formatAndWrap(?string $message, int $width) { if (null === $message) { diff --git a/vendor/symfony/console/Formatter/OutputFormatterInterface.php b/vendor/symfony/console/Formatter/OutputFormatterInterface.php index b94e51de..433cd419 100644 --- a/vendor/symfony/console/Formatter/OutputFormatterInterface.php +++ b/vendor/symfony/console/Formatter/OutputFormatterInterface.php @@ -20,6 +20,8 @@ interface OutputFormatterInterface { /** * Sets the decorated flag. + * + * @return void */ public function setDecorated(bool $decorated); @@ -30,6 +32,8 @@ public function isDecorated(): bool; /** * Sets a new style. + * + * @return void */ public function setStyle(string $name, OutputFormatterStyleInterface $style); diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyle.php b/vendor/symfony/console/Formatter/OutputFormatterStyle.php index 3394c9ad..346a474c 100644 --- a/vendor/symfony/console/Formatter/OutputFormatterStyle.php +++ b/vendor/symfony/console/Formatter/OutputFormatterStyle.php @@ -38,6 +38,9 @@ public function __construct(string $foreground = null, string $background = null $this->color = new Color($this->foreground = $foreground ?: '', $this->background = $background ?: '', $this->options = $options); } + /** + * @return void + */ public function setForeground(string $color = null) { if (1 > \func_num_args()) { @@ -46,6 +49,9 @@ public function setForeground(string $color = null) $this->color = new Color($this->foreground = $color ?: '', $this->background, $this->options); } + /** + * @return void + */ public function setBackground(string $color = null) { if (1 > \func_num_args()) { @@ -59,12 +65,18 @@ public function setHref(string $url): void $this->href = $url; } + /** + * @return void + */ public function setOption(string $option) { $this->options[] = $option; $this->color = new Color($this->foreground, $this->background, $this->options); } + /** + * @return void + */ public function unsetOption(string $option) { $pos = array_search($option, $this->options); @@ -75,6 +87,9 @@ public function unsetOption(string $option) $this->color = new Color($this->foreground, $this->background, $this->options); } + /** + * @return void + */ public function setOptions(array $options) { $this->color = new Color($this->foreground, $this->background, $this->options = $options); diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php b/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php index 7ed67d9a..3b15098c 100644 --- a/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php +++ b/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php @@ -20,26 +20,36 @@ interface OutputFormatterStyleInterface { /** * Sets style foreground color. + * + * @return void */ public function setForeground(?string $color); /** * Sets style background color. + * + * @return void */ public function setBackground(?string $color); /** * Sets some specific style option. + * + * @return void */ public function setOption(string $option); /** * Unsets some specific style option. + * + * @return void */ public function unsetOption(string $option); /** * Sets multiple style options at once. + * + * @return void */ public function setOptions(array $options); diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php b/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php index 2c5cdf9b..f98c2eff 100644 --- a/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php +++ b/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php @@ -34,6 +34,8 @@ public function __construct(OutputFormatterStyleInterface $emptyStyle = null) /** * Resets stack (ie. empty internal arrays). + * + * @return void */ public function reset() { @@ -42,6 +44,8 @@ public function reset() /** * Pushes a style in the stack. + * + * @return void */ public function push(OutputFormatterStyleInterface $style) { diff --git a/vendor/symfony/console/Helper/DescriptorHelper.php b/vendor/symfony/console/Helper/DescriptorHelper.php index 3015ff08..eb32bce8 100644 --- a/vendor/symfony/console/Helper/DescriptorHelper.php +++ b/vendor/symfony/console/Helper/DescriptorHelper.php @@ -14,6 +14,7 @@ use Symfony\Component\Console\Descriptor\DescriptorInterface; use Symfony\Component\Console\Descriptor\JsonDescriptor; use Symfony\Component\Console\Descriptor\MarkdownDescriptor; +use Symfony\Component\Console\Descriptor\ReStructuredTextDescriptor; use Symfony\Component\Console\Descriptor\TextDescriptor; use Symfony\Component\Console\Descriptor\XmlDescriptor; use Symfony\Component\Console\Exception\InvalidArgumentException; @@ -38,6 +39,7 @@ public function __construct() ->register('xml', new XmlDescriptor()) ->register('json', new JsonDescriptor()) ->register('md', new MarkdownDescriptor()) + ->register('rst', new ReStructuredTextDescriptor()) ; } @@ -48,6 +50,8 @@ public function __construct() * * format: string, the output format name * * raw_text: boolean, sets output type as raw * + * @return void + * * @throws InvalidArgumentException when the given format is not supported */ public function describe(OutputInterface $output, ?object $object, array $options = []) diff --git a/vendor/symfony/console/Helper/Dumper.php b/vendor/symfony/console/Helper/Dumper.php index ac7571ce..8c6a94d5 100644 --- a/vendor/symfony/console/Helper/Dumper.php +++ b/vendor/symfony/console/Helper/Dumper.php @@ -40,14 +40,12 @@ public function __construct(OutputInterface $output, CliDumper $dumper = null, C return rtrim($dumper->dump(($this->cloner ??= new VarCloner())->cloneVar($var)->withRefHandles(false), true)); }; } else { - $this->handler = function ($var): string { - return match (true) { - null === $var => 'null', - true === $var => 'true', - false === $var => 'false', - \is_string($var) => '"'.$var.'"', - default => rtrim(print_r($var, true)), - }; + $this->handler = fn ($var): string => match (true) { + null === $var => 'null', + true === $var => 'true', + false === $var => 'false', + \is_string($var) => '"'.$var.'"', + default => rtrim(print_r($var, true)), }; } } diff --git a/vendor/symfony/console/Helper/Helper.php b/vendor/symfony/console/Helper/Helper.php index 920196e0..3631b30f 100644 --- a/vendor/symfony/console/Helper/Helper.php +++ b/vendor/symfony/console/Helper/Helper.php @@ -21,8 +21,11 @@ */ abstract class Helper implements HelperInterface { - protected $helperSet = null; + protected $helperSet; + /** + * @return void + */ public function setHelperSet(HelperSet $helperSet = null) { if (1 > \func_num_args()) { @@ -88,6 +91,9 @@ public static function substr(?string $string, int $from, int $length = null): s return mb_substr($string, $from, $length, $encoding); } + /** + * @return string + */ public static function formatTime(int|float $secs) { static $timeFormats = [ @@ -117,6 +123,9 @@ public static function formatTime(int|float $secs) } } + /** + * @return string + */ public static function formatMemory(int $memory) { if ($memory >= 1024 * 1024 * 1024) { @@ -134,6 +143,9 @@ public static function formatMemory(int $memory) return sprintf('%d B', $memory); } + /** + * @return string + */ public static function removeDecoration(OutputFormatterInterface $formatter, ?string $string) { $isDecorated = $formatter->isDecorated(); diff --git a/vendor/symfony/console/Helper/HelperInterface.php b/vendor/symfony/console/Helper/HelperInterface.php index 2762cdf0..ab626c93 100644 --- a/vendor/symfony/console/Helper/HelperInterface.php +++ b/vendor/symfony/console/Helper/HelperInterface.php @@ -20,6 +20,8 @@ interface HelperInterface { /** * Sets the helper set associated with this helper. + * + * @return void */ public function setHelperSet(?HelperSet $helperSet); diff --git a/vendor/symfony/console/Helper/HelperSet.php b/vendor/symfony/console/Helper/HelperSet.php index cefe62be..dc5d499c 100644 --- a/vendor/symfony/console/Helper/HelperSet.php +++ b/vendor/symfony/console/Helper/HelperSet.php @@ -35,6 +35,9 @@ public function __construct(array $helpers = []) } } + /** + * @return void + */ public function set(HelperInterface $helper, string $alias = null) { $this->helpers[$helper->getName()] = $helper; diff --git a/vendor/symfony/console/Helper/InputAwareHelper.php b/vendor/symfony/console/Helper/InputAwareHelper.php index ba81e377..6f822597 100644 --- a/vendor/symfony/console/Helper/InputAwareHelper.php +++ b/vendor/symfony/console/Helper/InputAwareHelper.php @@ -23,6 +23,9 @@ abstract class InputAwareHelper extends Helper implements InputAwareInterface { protected $input; + /** + * @return void + */ public function setInput(InputInterface $input) { $this->input = $input; diff --git a/vendor/symfony/console/Helper/ProgressBar.php b/vendor/symfony/console/Helper/ProgressBar.php index 0d112609..19faea47 100644 --- a/vendor/symfony/console/Helper/ProgressBar.php +++ b/vendor/symfony/console/Helper/ProgressBar.php @@ -59,6 +59,7 @@ final class ProgressBar private Terminal $terminal; private ?string $previousMessage = null; private Cursor $cursor; + private array $placeholders = []; private static array $formatters; private static array $formats; @@ -94,12 +95,12 @@ public function __construct(OutputInterface $output, int $max = 0, float $minSec } /** - * Sets a placeholder formatter for a given name. + * Sets a placeholder formatter for a given name, globally for all instances of ProgressBar. * * This method also allow you to override an existing placeholder. * - * @param string $name The placeholder name (including the delimiter char like %) - * @param callable $callable A PHP callable + * @param string $name The placeholder name (including the delimiter char like %) + * @param callable(ProgressBar):string $callable A PHP callable */ public static function setPlaceholderFormatterDefinition(string $name, callable $callable): void { @@ -120,6 +121,26 @@ public static function getPlaceholderFormatterDefinition(string $name): ?callabl return self::$formatters[$name] ?? null; } + /** + * Sets a placeholder formatter for a given name, for this instance only. + * + * @param callable(ProgressBar):string $callable A PHP callable + */ + public function setPlaceholderFormatter(string $name, callable $callable): void + { + $this->placeholders[$name] = $callable; + } + + /** + * Gets the placeholder formatter for a given name. + * + * @param string $name The placeholder name (including the delimiter char like %) + */ + public function getPlaceholderFormatter(string $name): ?callable + { + return $this->placeholders[$name] ?? $this::getPlaceholderFormatterDefinition($name); + } + /** * Sets a format for a given name. * @@ -157,12 +178,12 @@ public static function getFormatDefinition(string $name): ?string * @param string $message The text to associate with the placeholder * @param string $name The name of the placeholder */ - public function setMessage(string $message, string $name = 'message') + public function setMessage(string $message, string $name = 'message'): void { $this->messages[$name] = $message; } - public function getMessage(string $name = 'message') + public function getMessage(string $name = 'message'): string { return $this->messages[$name]; } @@ -215,7 +236,7 @@ public function getRemaining(): float return round((time() - $this->startTime) / ($this->step - $this->startingStep) * ($this->max - $this->step)); } - public function setBarWidth(int $size) + public function setBarWidth(int $size): void { $this->barWidth = max(1, $size); } @@ -225,7 +246,7 @@ public function getBarWidth(): int return $this->barWidth; } - public function setBarCharacter(string $char) + public function setBarCharacter(string $char): void { $this->barChar = $char; } @@ -235,7 +256,7 @@ public function getBarCharacter(): string return $this->barChar ?? ($this->max ? '=' : $this->emptyBarChar); } - public function setEmptyBarCharacter(string $char) + public function setEmptyBarCharacter(string $char): void { $this->emptyBarChar = $char; } @@ -245,7 +266,7 @@ public function getEmptyBarCharacter(): string return $this->emptyBarChar; } - public function setProgressCharacter(string $char) + public function setProgressCharacter(string $char): void { $this->progressChar = $char; } @@ -255,7 +276,7 @@ public function getProgressCharacter(): string return $this->progressChar; } - public function setFormat(string $format) + public function setFormat(string $format): void { $this->format = null; $this->internalFormat = $format; @@ -266,7 +287,7 @@ public function setFormat(string $format) * * @param int|null $freq The frequency in steps */ - public function setRedrawFrequency(?int $freq) + public function setRedrawFrequency(?int $freq): void { $this->redrawFreq = null !== $freq ? max(1, $freq) : null; } @@ -325,7 +346,7 @@ public function start(int $max = null, int $startAt = 0): void * * @param int $step Number of steps to advance */ - public function advance(int $step = 1) + public function advance(int $step = 1): void { $this->setProgress($this->step + $step); } @@ -333,12 +354,12 @@ public function advance(int $step = 1) /** * Sets whether to overwrite the progressbar, false for new line. */ - public function setOverwrite(bool $overwrite) + public function setOverwrite(bool $overwrite): void { $this->overwrite = $overwrite; } - public function setProgress(int $step) + public function setProgress(int $step): void { if ($this->max && $step > $this->max) { $this->max = $step; @@ -371,7 +392,7 @@ public function setProgress(int $step) } } - public function setMaxSteps(int $max) + public function setMaxSteps(int $max): void { $this->format = null; $this->max = max(0, $max); @@ -431,7 +452,7 @@ public function clear(): void $this->overwrite(''); } - private function setRealFormat(string $format) + private function setRealFormat(string $format): void { // try to use the _nomax variant if available if (!$this->max && null !== self::getFormatDefinition($format.'_nomax')) { @@ -513,9 +534,7 @@ private static function initPlaceholderFormatters(): array return $display; }, - 'elapsed' => function (self $bar) { - return Helper::formatTime(time() - $bar->getStartTime()); - }, + 'elapsed' => fn (self $bar) => Helper::formatTime(time() - $bar->getStartTime()), 'remaining' => function (self $bar) { if (!$bar->getMaxSteps()) { throw new LogicException('Unable to display the remaining time if the maximum number of steps is not set.'); @@ -530,18 +549,10 @@ private static function initPlaceholderFormatters(): array return Helper::formatTime($bar->getEstimated()); }, - 'memory' => function (self $bar) { - return Helper::formatMemory(memory_get_usage(true)); - }, - 'current' => function (self $bar) { - return str_pad($bar->getProgress(), $bar->getStepWidth(), ' ', \STR_PAD_LEFT); - }, - 'max' => function (self $bar) { - return $bar->getMaxSteps(); - }, - 'percent' => function (self $bar) { - return floor($bar->getProgressPercent() * 100); - }, + 'memory' => fn (self $bar) => Helper::formatMemory(memory_get_usage(true)), + 'current' => fn (self $bar) => str_pad($bar->getProgress(), $bar->getStepWidth(), ' ', \STR_PAD_LEFT), + 'max' => fn (self $bar) => $bar->getMaxSteps(), + 'percent' => fn (self $bar) => floor($bar->getProgressPercent() * 100), ]; } @@ -568,7 +579,7 @@ private function buildLine(): string $regex = "{%([a-z\-_]+)(?:\:([^%]+))?%}i"; $callback = function ($matches) { - if ($formatter = $this::getPlaceholderFormatterDefinition($matches[1])) { + if ($formatter = $this->getPlaceholderFormatter($matches[1])) { $text = $formatter($this, $this->output); } elseif (isset($this->messages[$matches[1]])) { $text = $this->messages[$matches[1]]; @@ -585,9 +596,7 @@ private function buildLine(): string $line = preg_replace_callback($regex, $callback, $this->format); // gets string length for each sub line with multiline format - $linesLength = array_map(function ($subLine) { - return Helper::width(Helper::removeDecoration($this->output->getFormatter(), rtrim($subLine, "\r"))); - }, explode("\n", $line)); + $linesLength = array_map(fn ($subLine) => Helper::width(Helper::removeDecoration($this->output->getFormatter(), rtrim($subLine, "\r"))), explode("\n", $line)); $linesWidth = max($linesLength); diff --git a/vendor/symfony/console/Helper/ProgressIndicator.php b/vendor/symfony/console/Helper/ProgressIndicator.php index b5fa24c4..84dbef95 100644 --- a/vendor/symfony/console/Helper/ProgressIndicator.php +++ b/vendor/symfony/console/Helper/ProgressIndicator.php @@ -70,6 +70,8 @@ public function __construct(OutputInterface $output, string $format = null, int /** * Sets the current indicator message. + * + * @return void */ public function setMessage(?string $message) { @@ -80,6 +82,8 @@ public function setMessage(?string $message) /** * Starts the indicator output. + * + * @return void */ public function start(string $message) { @@ -98,6 +102,8 @@ public function start(string $message) /** * Advances the indicator. + * + * @return void */ public function advance() { @@ -123,6 +129,8 @@ public function advance() /** * Finish the indicator with message. + * + * @return void */ public function finish(string $message) { @@ -148,6 +156,8 @@ public static function getFormatDefinition(string $name): ?string * Sets a placeholder formatter for a given name. * * This method also allow you to override an existing placeholder. + * + * @return void */ public static function setPlaceholderFormatterDefinition(string $name, callable $callable) { @@ -166,7 +176,7 @@ public static function getPlaceholderFormatterDefinition(string $name): ?callabl return self::$formatters[$name] ?? null; } - private function display() + private function display(): void { if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) { return; @@ -195,7 +205,7 @@ private function determineBestFormat(): string /** * Overwrites a previous message to the output. */ - private function overwrite(string $message) + private function overwrite(string $message): void { if ($this->output->isDecorated()) { $this->output->write("\x0D\x1B[2K"); @@ -216,18 +226,10 @@ private function getCurrentTimeInMilliseconds(): float private static function initPlaceholderFormatters(): array { return [ - 'indicator' => function (self $indicator) { - return $indicator->indicatorValues[$indicator->indicatorCurrent % \count($indicator->indicatorValues)]; - }, - 'message' => function (self $indicator) { - return $indicator->message; - }, - 'elapsed' => function (self $indicator) { - return Helper::formatTime(time() - $indicator->startTime); - }, - 'memory' => function () { - return Helper::formatMemory(memory_get_usage(true)); - }, + 'indicator' => fn (self $indicator) => $indicator->indicatorValues[$indicator->indicatorCurrent % \count($indicator->indicatorValues)], + 'message' => fn (self $indicator) => $indicator->message, + 'elapsed' => fn (self $indicator) => Helper::formatTime(time() - $indicator->startTime), + 'memory' => fn () => Helper::formatMemory(memory_get_usage(true)), ]; } } diff --git a/vendor/symfony/console/Helper/QuestionHelper.php b/vendor/symfony/console/Helper/QuestionHelper.php index c345b4af..f32813c6 100644 --- a/vendor/symfony/console/Helper/QuestionHelper.php +++ b/vendor/symfony/console/Helper/QuestionHelper.php @@ -68,9 +68,7 @@ public function ask(InputInterface $input, OutputInterface $output, Question $qu return $this->doAsk($output, $question); } - $interviewer = function () use ($output, $question) { - return $this->doAsk($output, $question); - }; + $interviewer = fn () => $this->doAsk($output, $question); return $this->validateAttempts($interviewer, $output, $question); } catch (MissingInputException $exception) { @@ -91,6 +89,8 @@ public function getName(): string /** * Prevents usage of stty. + * + * @return void */ public static function disableStty() { @@ -123,7 +123,18 @@ private function doAsk(OutputInterface $output, Question $question): mixed } if (false === $ret) { + $isBlocked = stream_get_meta_data($inputStream)['blocked'] ?? true; + + if (!$isBlocked) { + stream_set_blocking($inputStream, true); + } + $ret = $this->readInput($inputStream, $question); + + if (!$isBlocked) { + stream_set_blocking($inputStream, false); + } + if (false === $ret) { throw new MissingInputException('Aborted.'); } @@ -159,7 +170,7 @@ private function getDefaultAnswer(Question $question): mixed } if ($validator = $question->getValidator()) { - return \call_user_func($question->getValidator(), $default); + return \call_user_func($validator, $default); } elseif ($question instanceof ChoiceQuestion) { $choices = $question->getChoices(); @@ -179,6 +190,8 @@ private function getDefaultAnswer(Question $question): mixed /** * Outputs the question prompt. + * + * @return void */ protected function writePrompt(OutputInterface $output, Question $question) { @@ -215,6 +228,8 @@ protected function formatChoiceQuestionChoices(ChoiceQuestion $question, string /** * Outputs an error message. + * + * @return void */ protected function writeError(OutputInterface $output, \Exception $error) { @@ -314,9 +329,7 @@ private function autocomplete(OutputInterface $output, Question $question, $inpu $matches = array_filter( $autocomplete($ret), - function ($match) use ($ret) { - return '' === $ret || str_starts_with($match, $ret); - } + fn ($match) => '' === $ret || str_starts_with($match, $ret) ); $numMatches = \count($matches); $ofs = -1; @@ -496,13 +509,11 @@ private function isInteractiveInput($inputStream): bool return self::$stdinIsInteractive = @posix_isatty(fopen('php://stdin', 'r')); } - if (!\function_exists('exec')) { + if (!\function_exists('shell_exec')) { return self::$stdinIsInteractive = true; } - exec('stty 2> /dev/null', $output, $status); - - return self::$stdinIsInteractive = 1 !== $status; + return self::$stdinIsInteractive = (bool) shell_exec('stty 2> '.('\\' === \DIRECTORY_SEPARATOR ? 'NUL' : '/dev/null')); } /** diff --git a/vendor/symfony/console/Helper/SymfonyQuestionHelper.php b/vendor/symfony/console/Helper/SymfonyQuestionHelper.php index 109045d0..8ebc8437 100644 --- a/vendor/symfony/console/Helper/SymfonyQuestionHelper.php +++ b/vendor/symfony/console/Helper/SymfonyQuestionHelper.php @@ -25,6 +25,9 @@ */ class SymfonyQuestionHelper extends QuestionHelper { + /** + * @return void + */ protected function writePrompt(OutputInterface $output, Question $question) { $text = OutputFormatter::escapeTrailingBackslash($question->getQuestion()); @@ -80,6 +83,9 @@ protected function writePrompt(OutputInterface $output, Question $question) $output->write($prompt); } + /** + * @return void + */ protected function writeError(OutputInterface $output, \Exception $error) { if ($output instanceof SymfonyStyle) { diff --git a/vendor/symfony/console/Helper/Table.php b/vendor/symfony/console/Helper/Table.php index 907c9f50..cf714873 100644 --- a/vendor/symfony/console/Helper/Table.php +++ b/vendor/symfony/console/Helper/Table.php @@ -66,6 +66,8 @@ public function __construct(OutputInterface $output) /** * Sets a style definition. + * + * @return void */ public static function setStyleDefinition(string $name, TableStyle $style) { @@ -310,6 +312,8 @@ public function setVertical(bool $vertical = true): static * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | * | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien | * +---------------+-----------------------+------------------+ + * + * @return void */ public function render() { @@ -450,7 +454,7 @@ public function render() * * +-----+-----------+-------+ */ - private function renderRowSeparator(int $type = self::SEPARATOR_MID, string $title = null, string $titleFormat = null) + private function renderRowSeparator(int $type = self::SEPARATOR_MID, string $title = null, string $titleFormat = null): void { if (!$count = $this->numberOfColumns) { return; @@ -515,7 +519,7 @@ private function renderColumnSeparator(int $type = self::BORDER_OUTSIDE): string * * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | */ - private function renderRow(array $row, string $cellFormat, string $firstCellFormat = null) + private function renderRow(array $row, string $cellFormat, string $firstCellFormat = null): void { $rowContent = $this->renderColumnSeparator(self::BORDER_OUTSIDE); $columns = $this->getRowColumns($row); @@ -588,7 +592,7 @@ private function renderCell(array $row, int $column, string $cellFormat): string /** * Calculate number of columns for this table. */ - private function calculateNumberOfColumns(array $rows) + private function calculateNumberOfColumns(array $rows): void { $columns = [0]; foreach ($rows as $row) { @@ -727,7 +731,7 @@ private function fillNextRows(array $rows, int $line): array /** * fill cells for a row that contains colspan > 1. */ - private function fillCells(iterable $row) + private function fillCells(iterable $row): iterable { $newRow = []; @@ -789,7 +793,7 @@ private function getRowColumns(array $row): array /** * Calculates columns widths. */ - private function calculateColumnsWidth(iterable $groups) + private function calculateColumnsWidth(iterable $groups): void { for ($column = 0; $column < $this->numberOfColumns; ++$column) { $lengths = []; @@ -843,7 +847,7 @@ private function getCellWidth(array $row, int $column): int /** * Called after rendering to cleanup cache data. */ - private function cleanup() + private function cleanup(): void { $this->effectiveColumnWidths = []; unset($this->numberOfColumns); diff --git a/vendor/symfony/console/Helper/TableCellStyle.php b/vendor/symfony/console/Helper/TableCellStyle.php index 65ae9e72..9419dcb4 100644 --- a/vendor/symfony/console/Helper/TableCellStyle.php +++ b/vendor/symfony/console/Helper/TableCellStyle.php @@ -67,9 +67,7 @@ public function getTagOptions(): array { return array_filter( $this->getOptions(), - function ($key) { - return \in_array($key, self::TAG_OPTIONS) && isset($this->options[$key]); - }, + fn ($key) => \in_array($key, self::TAG_OPTIONS) && isset($this->options[$key]), \ARRAY_FILTER_USE_KEY ); } diff --git a/vendor/symfony/console/Input/ArgvInput.php b/vendor/symfony/console/Input/ArgvInput.php index c0c28bb5..59f9217e 100644 --- a/vendor/symfony/console/Input/ArgvInput.php +++ b/vendor/symfony/console/Input/ArgvInput.php @@ -55,11 +55,17 @@ public function __construct(array $argv = null, InputDefinition $definition = nu parent::__construct($definition); } + /** + * @return void + */ protected function setTokens(array $tokens) { $this->tokens = $tokens; } + /** + * @return void + */ protected function parse() { $parseOptions = true; @@ -89,7 +95,7 @@ protected function parseToken(string $token, bool $parseOptions): bool /** * Parses a short option. */ - private function parseShortOption(string $token) + private function parseShortOption(string $token): void { $name = substr($token, 1); @@ -110,7 +116,7 @@ private function parseShortOption(string $token) * * @throws RuntimeException When option given doesn't exist */ - private function parseShortOptionSet(string $name) + private function parseShortOptionSet(string $name): void { $len = \strlen($name); for ($i = 0; $i < $len; ++$i) { @@ -133,7 +139,7 @@ private function parseShortOptionSet(string $name) /** * Parses a long option. */ - private function parseLongOption(string $token) + private function parseLongOption(string $token): void { $name = substr($token, 2); @@ -152,7 +158,7 @@ private function parseLongOption(string $token) * * @throws RuntimeException When too many arguments are given */ - private function parseArgument(string $token) + private function parseArgument(string $token): void { $c = \count($this->arguments); @@ -196,7 +202,7 @@ private function parseArgument(string $token) * * @throws RuntimeException When option given doesn't exist */ - private function addShortOption(string $shortcut, mixed $value) + private function addShortOption(string $shortcut, mixed $value): void { if (!$this->definition->hasShortcut($shortcut)) { throw new RuntimeException(sprintf('The "-%s" option does not exist.', $shortcut)); @@ -210,7 +216,7 @@ private function addShortOption(string $shortcut, mixed $value) * * @throws RuntimeException When option given doesn't exist */ - private function addLongOption(string $name, mixed $value) + private function addLongOption(string $name, mixed $value): void { if (!$this->definition->hasOption($name)) { if (!$this->definition->hasNegation($name)) { diff --git a/vendor/symfony/console/Input/ArrayInput.php b/vendor/symfony/console/Input/ArrayInput.php index 02fb4e8e..355de61d 100644 --- a/vendor/symfony/console/Input/ArrayInput.php +++ b/vendor/symfony/console/Input/ArrayInput.php @@ -113,6 +113,9 @@ public function __toString(): string return implode(' ', $params); } + /** + * @return void + */ protected function parse() { foreach ($this->parameters as $key => $value) { @@ -134,7 +137,7 @@ protected function parse() * * @throws InvalidOptionException When option given doesn't exist */ - private function addShortOption(string $shortcut, mixed $value) + private function addShortOption(string $shortcut, mixed $value): void { if (!$this->definition->hasShortcut($shortcut)) { throw new InvalidOptionException(sprintf('The "-%s" option does not exist.', $shortcut)); @@ -149,7 +152,7 @@ private function addShortOption(string $shortcut, mixed $value) * @throws InvalidOptionException When option given doesn't exist * @throws InvalidOptionException When a required value is missing */ - private function addLongOption(string $name, mixed $value) + private function addLongOption(string $name, mixed $value): void { if (!$this->definition->hasOption($name)) { if (!$this->definition->hasNegation($name)) { @@ -182,7 +185,7 @@ private function addLongOption(string $name, mixed $value) * * @throws InvalidArgumentException When argument given doesn't exist */ - private function addArgument(string|int $name, mixed $value) + private function addArgument(string|int $name, mixed $value): void { if (!$this->definition->hasArgument($name)) { throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); diff --git a/vendor/symfony/console/Input/Input.php b/vendor/symfony/console/Input/Input.php index 7b90713c..0f5617cd 100644 --- a/vendor/symfony/console/Input/Input.php +++ b/vendor/symfony/console/Input/Input.php @@ -43,6 +43,9 @@ public function __construct(InputDefinition $definition = null) } } + /** + * @return void + */ public function bind(InputDefinition $definition) { $this->arguments = []; @@ -54,17 +57,20 @@ public function bind(InputDefinition $definition) /** * Processes command line arguments. + * + * @return void */ abstract protected function parse(); + /** + * @return void + */ public function validate() { $definition = $this->definition; $givenArguments = $this->arguments; - $missingArguments = array_filter(array_keys($definition->getArguments()), function ($argument) use ($definition, $givenArguments) { - return !\array_key_exists($argument, $givenArguments) && $definition->getArgument($argument)->isRequired(); - }); + $missingArguments = array_filter(array_keys($definition->getArguments()), fn ($argument) => !\array_key_exists($argument, $givenArguments) && $definition->getArgument($argument)->isRequired()); if (\count($missingArguments) > 0) { throw new RuntimeException(sprintf('Not enough arguments (missing: "%s").', implode(', ', $missingArguments))); @@ -76,6 +82,9 @@ public function isInteractive(): bool return $this->interactive; } + /** + * @return void + */ public function setInteractive(bool $interactive) { $this->interactive = $interactive; @@ -95,6 +104,9 @@ public function getArgument(string $name): mixed return $this->arguments[$name] ?? $this->definition->getArgument($name)->getDefault(); } + /** + * @return void + */ public function setArgument(string $name, mixed $value) { if (!$this->definition->hasArgument($name)) { @@ -131,6 +143,9 @@ public function getOption(string $name): mixed return \array_key_exists($name, $this->options) ? $this->options[$name] : $this->definition->getOption($name)->getDefault(); } + /** + * @return void + */ public function setOption(string $name, mixed $value) { if ($this->definition->hasNegation($name)) { @@ -157,11 +172,19 @@ public function escapeToken(string $token): string return preg_match('{^[\w-]+$}', $token) ? $token : escapeshellarg($token); } + /** + * @param resource $stream + * + * @return void + */ public function setStream($stream) { $this->stream = $stream; } + /** + * @return resource + */ public function getStream() { return $this->stream; diff --git a/vendor/symfony/console/Input/InputArgument.php b/vendor/symfony/console/Input/InputArgument.php index a130c412..5cb15148 100644 --- a/vendor/symfony/console/Input/InputArgument.php +++ b/vendor/symfony/console/Input/InputArgument.php @@ -37,7 +37,7 @@ class InputArgument /** * @param string $name The argument name - * @param int|null $mode The argument mode: self::REQUIRED or self::OPTIONAL + * @param int|null $mode The argument mode: a bit mask of self::REQUIRED, self::OPTIONAL and self::IS_ARRAY * @param string $description A description text * @param string|bool|int|float|array|null $default The default value (for self::OPTIONAL mode only) * @param array|\Closure(CompletionInput,CompletionSuggestions):list $suggestedValues The values used for input completion @@ -91,6 +91,8 @@ public function isArray(): bool /** * Sets the default value. * + * @return void + * * @throws LogicException When incorrect default value is given */ public function setDefault(string|bool|int|float|array $default = null) diff --git a/vendor/symfony/console/Input/InputAwareInterface.php b/vendor/symfony/console/Input/InputAwareInterface.php index 5a288de5..0ad27b45 100644 --- a/vendor/symfony/console/Input/InputAwareInterface.php +++ b/vendor/symfony/console/Input/InputAwareInterface.php @@ -21,6 +21,8 @@ interface InputAwareInterface { /** * Sets the Console Input. + * + * @return void */ public function setInput(InputInterface $input); } diff --git a/vendor/symfony/console/Input/InputDefinition.php b/vendor/symfony/console/Input/InputDefinition.php index f4b14a1c..b7162d77 100644 --- a/vendor/symfony/console/Input/InputDefinition.php +++ b/vendor/symfony/console/Input/InputDefinition.php @@ -46,6 +46,8 @@ public function __construct(array $definition = []) /** * Sets the definition of the input. + * + * @return void */ public function setDefinition(array $definition) { @@ -67,6 +69,8 @@ public function setDefinition(array $definition) * Sets the InputArgument objects. * * @param InputArgument[] $arguments An array of InputArgument objects + * + * @return void */ public function setArguments(array $arguments = []) { @@ -81,6 +85,8 @@ public function setArguments(array $arguments = []) * Adds an array of InputArgument objects. * * @param InputArgument[] $arguments An array of InputArgument objects + * + * @return void */ public function addArguments(?array $arguments = []) { @@ -92,6 +98,8 @@ public function addArguments(?array $arguments = []) } /** + * @return void + * * @throws LogicException When incorrect argument is given */ public function addArgument(InputArgument $argument) @@ -190,6 +198,8 @@ public function getArgumentDefaults(): array * Sets the InputOption objects. * * @param InputOption[] $options An array of InputOption objects + * + * @return void */ public function setOptions(array $options = []) { @@ -203,6 +213,8 @@ public function setOptions(array $options = []) * Adds an array of InputOption objects. * * @param InputOption[] $options An array of InputOption objects + * + * @return void */ public function addOptions(array $options = []) { @@ -212,6 +224,8 @@ public function addOptions(array $options = []) } /** + * @return void + * * @throws LogicException When option given already exist */ public function addOption(InputOption $option) diff --git a/vendor/symfony/console/Input/InputInterface.php b/vendor/symfony/console/Input/InputInterface.php index 3af991a7..aaed5fd0 100644 --- a/vendor/symfony/console/Input/InputInterface.php +++ b/vendor/symfony/console/Input/InputInterface.php @@ -61,6 +61,8 @@ public function getParameterOption(string|array $values, string|bool|int|float|a /** * Binds the current Input instance with the given arguments and options. * + * @return void + * * @throws RuntimeException */ public function bind(InputDefinition $definition); @@ -68,6 +70,8 @@ public function bind(InputDefinition $definition); /** * Validates the input. * + * @return void + * * @throws RuntimeException When not enough arguments are given */ public function validate(); @@ -91,6 +95,8 @@ public function getArgument(string $name); /** * Sets an argument value by name. * + * @return void + * * @throws InvalidArgumentException When argument given doesn't exist */ public function setArgument(string $name, mixed $value); @@ -119,6 +125,8 @@ public function getOption(string $name); /** * Sets an option value by name. * + * @return void + * * @throws InvalidArgumentException When option given doesn't exist */ public function setOption(string $name, mixed $value); @@ -135,6 +143,8 @@ public function isInteractive(): bool; /** * Sets the input interactivity. + * + * @return void */ public function setInteractive(bool $interactive); } diff --git a/vendor/symfony/console/Input/InputOption.php b/vendor/symfony/console/Input/InputOption.php index 9a7032a0..fdf88dcc 100644 --- a/vendor/symfony/console/Input/InputOption.php +++ b/vendor/symfony/console/Input/InputOption.php @@ -178,6 +178,9 @@ public function isNegatable(): bool return self::VALUE_NEGATABLE === (self::VALUE_NEGATABLE & $this->mode); } + /** + * @return void + */ public function setDefault(string|bool|int|float|array $default = null) { if (1 > \func_num_args()) { diff --git a/vendor/symfony/console/Input/StreamableInputInterface.php b/vendor/symfony/console/Input/StreamableInputInterface.php index d7e462f2..4b95fcb1 100644 --- a/vendor/symfony/console/Input/StreamableInputInterface.php +++ b/vendor/symfony/console/Input/StreamableInputInterface.php @@ -25,6 +25,8 @@ interface StreamableInputInterface extends InputInterface * This is mainly useful for testing purpose. * * @param resource $stream The input stream + * + * @return void */ public function setStream($stream); diff --git a/vendor/symfony/console/Output/AnsiColorMode.php b/vendor/symfony/console/Output/AnsiColorMode.php index c6cc5c12..5f9f744f 100644 --- a/vendor/symfony/console/Output/AnsiColorMode.php +++ b/vendor/symfony/console/Output/AnsiColorMode.php @@ -26,7 +26,7 @@ enum AnsiColorMode case Ansi4; /* - * 8-bit Ansi colors (240 differents colors + 16 duplicate color codes, ensuring backward compatibility). + * 8-bit Ansi colors (240 different colors + 16 duplicate color codes, ensuring backward compatibility). * Output syntax is: "ESC[38;5;${foreGroundColorcode};48;5;${backGroundColorcode}m" * Should be compatible with most terminals. */ @@ -78,25 +78,7 @@ private function convertFromRGB(int $r, int $g, int $b): int private function degradeHexColorToAnsi4(int $r, int $g, int $b): int { - if (0 === round($this->getSaturation($r, $g, $b) / 50)) { - return 0; - } - - return (int) ((round($b / 255) << 2) | (round($g / 255) << 1) | round($r / 255)); - } - - private function getSaturation(int $r, int $g, int $b): int - { - $r = $r / 255; - $g = $g / 255; - $b = $b / 255; - $v = max($r, $g, $b); - - if (0 === $diff = $v - min($r, $g, $b)) { - return 0; - } - - return (int) ((int) $diff * 100 / $v); + return round($b / 255) << 2 | (round($g / 255) << 1) | round($r / 255); } /** diff --git a/vendor/symfony/console/Output/BufferedOutput.php b/vendor/symfony/console/Output/BufferedOutput.php index 94d4e414..ef5099bf 100644 --- a/vendor/symfony/console/Output/BufferedOutput.php +++ b/vendor/symfony/console/Output/BufferedOutput.php @@ -29,6 +29,9 @@ public function fetch(): string return $content; } + /** + * @return void + */ protected function doWrite(string $message, bool $newline) { $this->buffer .= $message; diff --git a/vendor/symfony/console/Output/ConsoleOutput.php b/vendor/symfony/console/Output/ConsoleOutput.php index e3aa92c7..c1eb7cd1 100644 --- a/vendor/symfony/console/Output/ConsoleOutput.php +++ b/vendor/symfony/console/Output/ConsoleOutput.php @@ -64,18 +64,27 @@ public function section(): ConsoleSectionOutput return new ConsoleSectionOutput($this->getStream(), $this->consoleSectionOutputs, $this->getVerbosity(), $this->isDecorated(), $this->getFormatter()); } + /** + * @return void + */ public function setDecorated(bool $decorated) { parent::setDecorated($decorated); $this->stderr->setDecorated($decorated); } + /** + * @return void + */ public function setFormatter(OutputFormatterInterface $formatter) { parent::setFormatter($formatter); $this->stderr->setFormatter($formatter); } + /** + * @return void + */ public function setVerbosity(int $level) { parent::setVerbosity($level); @@ -87,6 +96,9 @@ public function getErrorOutput(): OutputInterface return $this->stderr; } + /** + * @return void + */ public function setErrorOutput(OutputInterface $error) { $this->stderr = $error; diff --git a/vendor/symfony/console/Output/ConsoleOutputInterface.php b/vendor/symfony/console/Output/ConsoleOutputInterface.php index 6b4babc6..9c0049c8 100644 --- a/vendor/symfony/console/Output/ConsoleOutputInterface.php +++ b/vendor/symfony/console/Output/ConsoleOutputInterface.php @@ -24,6 +24,9 @@ interface ConsoleOutputInterface extends OutputInterface */ public function getErrorOutput(): OutputInterface; + /** + * @return void + */ public function setErrorOutput(OutputInterface $error); public function section(): ConsoleSectionOutput; diff --git a/vendor/symfony/console/Output/ConsoleSectionOutput.php b/vendor/symfony/console/Output/ConsoleSectionOutput.php index c813c811..3f3f1434 100644 --- a/vendor/symfony/console/Output/ConsoleSectionOutput.php +++ b/vendor/symfony/console/Output/ConsoleSectionOutput.php @@ -60,6 +60,8 @@ public function setMaxHeight(int $maxHeight): void * Clears previous output for this section. * * @param int $lines Number of lines to clear. If null, then the entire output of this section is cleared + * + * @return void */ public function clear(int $lines = null) { @@ -81,6 +83,8 @@ public function clear(int $lines = null) /** * Overwrites the previous output with a new message. + * + * @return void */ public function overwrite(string|iterable $message) { @@ -153,12 +157,15 @@ public function addContent(string $input, bool $newline = true): int /** * @internal */ - public function addNewLineOfInputSubmit() + public function addNewLineOfInputSubmit(): void { $this->content[] = \PHP_EOL; ++$this->lines; } + /** + * @return void + */ protected function doWrite(string $message, bool $newline) { if (!$this->isDecorated()) { diff --git a/vendor/symfony/console/Output/NullOutput.php b/vendor/symfony/console/Output/NullOutput.php index 4884cbad..f3aa15b1 100644 --- a/vendor/symfony/console/Output/NullOutput.php +++ b/vendor/symfony/console/Output/NullOutput.php @@ -26,6 +26,9 @@ class NullOutput implements OutputInterface { private NullOutputFormatter $formatter; + /** + * @return void + */ public function setFormatter(OutputFormatterInterface $formatter) { // do nothing @@ -37,6 +40,9 @@ public function getFormatter(): OutputFormatterInterface return $this->formatter ??= new NullOutputFormatter(); } + /** + * @return void + */ public function setDecorated(bool $decorated) { // do nothing @@ -47,6 +53,9 @@ public function isDecorated(): bool return false; } + /** + * @return void + */ public function setVerbosity(int $level) { // do nothing @@ -77,11 +86,17 @@ public function isDebug(): bool return false; } + /** + * @return void + */ public function writeln(string|iterable $messages, int $options = self::OUTPUT_NORMAL) { // do nothing } + /** + * @return void + */ public function write(string|iterable $messages, bool $newline = false, int $options = self::OUTPUT_NORMAL) { // do nothing diff --git a/vendor/symfony/console/Output/Output.php b/vendor/symfony/console/Output/Output.php index 4cb71acb..3a06311a 100644 --- a/vendor/symfony/console/Output/Output.php +++ b/vendor/symfony/console/Output/Output.php @@ -44,6 +44,9 @@ public function __construct(?int $verbosity = self::VERBOSITY_NORMAL, bool $deco $this->formatter->setDecorated($decorated); } + /** + * @return void + */ public function setFormatter(OutputFormatterInterface $formatter) { $this->formatter = $formatter; @@ -54,6 +57,9 @@ public function getFormatter(): OutputFormatterInterface return $this->formatter; } + /** + * @return void + */ public function setDecorated(bool $decorated) { $this->formatter->setDecorated($decorated); @@ -64,6 +70,9 @@ public function isDecorated(): bool return $this->formatter->isDecorated(); } + /** + * @return void + */ public function setVerbosity(int $level) { $this->verbosity = $level; @@ -94,11 +103,17 @@ public function isDebug(): bool return self::VERBOSITY_DEBUG <= $this->verbosity; } + /** + * @return void + */ public function writeln(string|iterable $messages, int $options = self::OUTPUT_NORMAL) { $this->write($messages, true, $options); } + /** + * @return void + */ public function write(string|iterable $messages, bool $newline = false, int $options = self::OUTPUT_NORMAL) { if (!is_iterable($messages)) { @@ -133,6 +148,8 @@ public function write(string|iterable $messages, bool $newline = false, int $opt /** * Writes a message to the output. + * + * @return void */ abstract protected function doWrite(string $message, bool $newline); } diff --git a/vendor/symfony/console/Output/OutputInterface.php b/vendor/symfony/console/Output/OutputInterface.php index bc927c51..fb155772 100644 --- a/vendor/symfony/console/Output/OutputInterface.php +++ b/vendor/symfony/console/Output/OutputInterface.php @@ -36,6 +36,8 @@ interface OutputInterface * @param bool $newline Whether to add a newline * @param int $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), * 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL + * + * @return void */ public function write(string|iterable $messages, bool $newline = false, int $options = 0); @@ -44,11 +46,15 @@ public function write(string|iterable $messages, bool $newline = false, int $opt * * @param int $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), * 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL + * + * @return void */ public function writeln(string|iterable $messages, int $options = 0); /** * Sets the verbosity of the output. + * + * @return void */ public function setVerbosity(int $level); @@ -79,6 +85,8 @@ public function isDebug(): bool; /** * Sets the decorated flag. + * + * @return void */ public function setDecorated(bool $decorated); @@ -87,6 +95,9 @@ public function setDecorated(bool $decorated); */ public function isDecorated(): bool; + /** + * @return void + */ public function setFormatter(OutputFormatterInterface $formatter); /** diff --git a/vendor/symfony/console/Output/StreamOutput.php b/vendor/symfony/console/Output/StreamOutput.php index 9ec524e4..155066ea 100644 --- a/vendor/symfony/console/Output/StreamOutput.php +++ b/vendor/symfony/console/Output/StreamOutput.php @@ -62,6 +62,9 @@ public function getStream() return $this->stream; } + /** + * @return void + */ protected function doWrite(string $message, bool $newline) { if ($newline) { diff --git a/vendor/symfony/console/Output/TrimmedBufferOutput.php b/vendor/symfony/console/Output/TrimmedBufferOutput.php index 1ca5a13e..b00445ec 100644 --- a/vendor/symfony/console/Output/TrimmedBufferOutput.php +++ b/vendor/symfony/console/Output/TrimmedBufferOutput.php @@ -45,6 +45,9 @@ public function fetch(): string return $content; } + /** + * @return void + */ protected function doWrite(string $message, bool $newline) { $this->buffer .= $message; diff --git a/vendor/symfony/console/Question/Question.php b/vendor/symfony/console/Question/Question.php index b06db945..26896bb5 100644 --- a/vendor/symfony/console/Question/Question.php +++ b/vendor/symfony/console/Question/Question.php @@ -146,12 +146,11 @@ public function setAutocompleterValues(?iterable $values): static if (\is_array($values)) { $values = $this->isAssoc($values) ? array_merge(array_keys($values), array_values($values)) : array_values($values); - $callback = static function () use ($values) { - return $values; - }; + $callback = static fn () => $values; } elseif ($values instanceof \Traversable) { - $valueCache = null; - $callback = static function () use ($values, &$valueCache) { + $callback = static function () use ($values) { + static $valueCache; + return $valueCache ??= iterator_to_array($values, false); }; } else { @@ -267,6 +266,9 @@ public function getNormalizer(): ?callable return $this->normalizer; } + /** + * @return bool + */ protected function isAssoc(array $array) { return (bool) \count(array_filter(array_keys($array), 'is_string')); diff --git a/vendor/symfony/console/README.md b/vendor/symfony/console/README.md index c89b4a1a..bfd48810 100644 --- a/vendor/symfony/console/README.md +++ b/vendor/symfony/console/README.md @@ -4,6 +4,18 @@ Console Component The Console component eases the creation of beautiful and testable command line interfaces. +Sponsor +------- + +The Console component for Symfony 6.3 is [backed][1] by [Les-Tilleuls.coop][2]. + +Les-Tilleuls.coop is a team of 70+ Symfony experts who can help you design, develop and +fix your projects. They provide a wide range of professional services including development, +consulting, coaching, training and audits. They also are highly skilled in JS, Go and DevOps. +They are a worker cooperative! + +Help Symfony by [sponsoring][3] its development! + Resources --------- @@ -18,3 +30,7 @@ Credits `Resources/bin/hiddeninput.exe` is a third party binary provided within this component. Find sources and license at https://github.com/Seldaek/hidden-input. + +[1]: https://symfony.com/backers +[2]: https://les-tilleuls.coop +[3]: https://symfony.com/sponsor diff --git a/vendor/symfony/console/Resources/completion.bash b/vendor/symfony/console/Resources/completion.bash index ad69eab0..0d76eacc 100644 --- a/vendor/symfony/console/Resources/completion.bash +++ b/vendor/symfony/console/Resources/completion.bash @@ -6,6 +6,16 @@ # https://symfony.com/doc/current/contributing/code/license.html _sf_{{ COMMAND_NAME }}() { + + # Use the default completion for shell redirect operators. + for w in '>' '>>' '&>' '<'; do + if [[ $w = "${COMP_WORDS[COMP_CWORD-1]}" ]]; then + compopt -o filenames + COMPREPLY=($(compgen -f -- "${COMP_WORDS[COMP_CWORD]}")) + return 0 + fi + done + # Use newline as only separator to allow space in completion values IFS=$'\n' local sf_cmd="${COMP_WORDS[0]}" diff --git a/vendor/symfony/console/Style/OutputStyle.php b/vendor/symfony/console/Style/OutputStyle.php index b694bb53..ddfa8dec 100644 --- a/vendor/symfony/console/Style/OutputStyle.php +++ b/vendor/symfony/console/Style/OutputStyle.php @@ -30,6 +30,9 @@ public function __construct(OutputInterface $output) $this->output = $output; } + /** + * @return void + */ public function newLine(int $count = 1) { $this->output->write(str_repeat(\PHP_EOL, $count)); @@ -40,16 +43,25 @@ public function createProgressBar(int $max = 0): ProgressBar return new ProgressBar($this->output, $max); } + /** + * @return void + */ public function write(string|iterable $messages, bool $newline = false, int $type = self::OUTPUT_NORMAL) { $this->output->write($messages, $newline, $type); } + /** + * @return void + */ public function writeln(string|iterable $messages, int $type = self::OUTPUT_NORMAL) { $this->output->writeln($messages, $type); } + /** + * @return void + */ public function setVerbosity(int $level) { $this->output->setVerbosity($level); @@ -60,6 +72,9 @@ public function getVerbosity(): int return $this->output->getVerbosity(); } + /** + * @return void + */ public function setDecorated(bool $decorated) { $this->output->setDecorated($decorated); @@ -70,6 +85,9 @@ public function isDecorated(): bool return $this->output->isDecorated(); } + /** + * @return void + */ public function setFormatter(OutputFormatterInterface $formatter) { $this->output->setFormatter($formatter); @@ -100,6 +118,9 @@ public function isDebug(): bool return $this->output->isDebug(); } + /** + * @return OutputInterface + */ protected function getErrorOutput() { if (!$this->output instanceof ConsoleOutputInterface) { diff --git a/vendor/symfony/console/Style/StyleInterface.php b/vendor/symfony/console/Style/StyleInterface.php index 0bb12339..e25a65bd 100644 --- a/vendor/symfony/console/Style/StyleInterface.php +++ b/vendor/symfony/console/Style/StyleInterface.php @@ -20,51 +20,71 @@ interface StyleInterface { /** * Formats a command title. + * + * @return void */ public function title(string $message); /** * Formats a section title. + * + * @return void */ public function section(string $message); /** * Formats a list. + * + * @return void */ public function listing(array $elements); /** * Formats informational text. + * + * @return void */ public function text(string|array $message); /** * Formats a success result bar. + * + * @return void */ public function success(string|array $message); /** * Formats an error result bar. + * + * @return void */ public function error(string|array $message); /** * Formats an warning result bar. + * + * @return void */ public function warning(string|array $message); /** * Formats a note admonition. + * + * @return void */ public function note(string|array $message); /** * Formats a caution admonition. + * + * @return void */ public function caution(string|array $message); /** * Formats a table. + * + * @return void */ public function table(array $headers, array $rows); @@ -90,21 +110,29 @@ public function choice(string $question, array $choices, mixed $default = null): /** * Add newline(s). + * + * @return void */ public function newLine(int $count = 1); /** * Starts the progress output. + * + * @return void */ public function progressStart(int $max = 0); /** * Advances the progress output X steps. + * + * @return void */ public function progressAdvance(int $step = 1); /** * Finishes the progress output. + * + * @return void */ public function progressFinish(); } diff --git a/vendor/symfony/console/Style/SymfonyStyle.php b/vendor/symfony/console/Style/SymfonyStyle.php index 8fd6f849..cecce6c0 100644 --- a/vendor/symfony/console/Style/SymfonyStyle.php +++ b/vendor/symfony/console/Style/SymfonyStyle.php @@ -60,6 +60,8 @@ public function __construct(InputInterface $input, OutputInterface $output) /** * Formats a message as a block of text. + * + * @return void */ public function block(string|array $messages, string $type = null, string $style = null, string $prefix = ' ', bool $padding = false, bool $escape = true) { @@ -70,6 +72,9 @@ public function block(string|array $messages, string $type = null, string $style $this->newLine(); } + /** + * @return void + */ public function title(string $message) { $this->autoPrependBlock(); @@ -80,6 +85,9 @@ public function title(string $message) $this->newLine(); } + /** + * @return void + */ public function section(string $message) { $this->autoPrependBlock(); @@ -90,17 +98,21 @@ public function section(string $message) $this->newLine(); } + /** + * @return void + */ public function listing(array $elements) { $this->autoPrependText(); - $elements = array_map(function ($element) { - return sprintf(' * %s', $element); - }, $elements); + $elements = array_map(fn ($element) => sprintf(' * %s', $element), $elements); $this->writeln($elements); $this->newLine(); } + /** + * @return void + */ public function text(string|array $message) { $this->autoPrependText(); @@ -113,27 +125,41 @@ public function text(string|array $message) /** * Formats a command comment. + * + * @return void */ public function comment(string|array $message) { $this->block($message, null, null, ' // ', false, false); } + /** + * @return void + */ public function success(string|array $message) { $this->block($message, 'OK', 'fg=black;bg=green', ' ', true); } + /** + * @return void + */ public function error(string|array $message) { $this->block($message, 'ERROR', 'fg=white;bg=red', ' ', true); } + /** + * @return void + */ public function warning(string|array $message) { $this->block($message, 'WARNING', 'fg=black;bg=yellow', ' ', true); } + /** + * @return void + */ public function note(string|array $message) { $this->block($message, 'NOTE', 'fg=yellow', ' ! '); @@ -141,17 +167,25 @@ public function note(string|array $message) /** * Formats an info message. + * + * @return void */ public function info(string|array $message) { $this->block($message, 'INFO', 'fg=green', ' ', true); } + /** + * @return void + */ public function caution(string|array $message) { $this->block($message, 'CAUTION', 'fg=white;bg=red', ' ! ', true); } + /** + * @return void + */ public function table(array $headers, array $rows) { $this->createTable() @@ -165,6 +199,8 @@ public function table(array $headers, array $rows) /** * Formats a horizontal table. + * + * @return void */ public function horizontalTable(array $headers, array $rows) { @@ -185,6 +221,8 @@ public function horizontalTable(array $headers, array $rows) * * 'A title' * * ['key' => 'value'] * * new TableSeparator() + * + * @return void */ public function definitionList(string|array|TableSeparator ...$list) { @@ -247,17 +285,26 @@ public function choice(string $question, array $choices, mixed $default = null, return $this->askQuestion($questionChoice); } + /** + * @return void + */ public function progressStart(int $max = 0) { $this->progressBar = $this->createProgressBar($max); $this->progressBar->start(); } + /** + * @return void + */ public function progressAdvance(int $step = 1) { $this->getProgressBar()->advance($step); } + /** + * @return void + */ public function progressFinish() { $this->getProgressBar()->finish(); @@ -311,6 +358,9 @@ public function askQuestion(Question $question): mixed return $answer; } + /** + * @return void + */ public function writeln(string|iterable $messages, int $type = self::OUTPUT_NORMAL) { if (!is_iterable($messages)) { @@ -323,6 +373,9 @@ public function writeln(string|iterable $messages, int $type = self::OUTPUT_NORM } } + /** + * @return void + */ public function write(string|iterable $messages, bool $newline = false, int $type = self::OUTPUT_NORMAL) { if (!is_iterable($messages)) { @@ -335,6 +388,9 @@ public function write(string|iterable $messages, bool $newline = false, int $typ } } + /** + * @return void + */ public function newLine(int $count = 1) { parent::newLine($count); @@ -381,7 +437,7 @@ private function autoPrependText(): void { $fetched = $this->bufferedOutput->fetch(); // Prepend new line if last char isn't EOL: - if (!str_ends_with($fetched, "\n")) { + if ($fetched && !str_ends_with($fetched, "\n")) { $this->newLine(); } } diff --git a/vendor/symfony/console/Terminal.php b/vendor/symfony/console/Terminal.php index 7d10b13a..3eda0376 100644 --- a/vendor/symfony/console/Terminal.php +++ b/vendor/symfony/console/Terminal.php @@ -123,17 +123,15 @@ public static function hasSttyAvailable(): bool return self::$stty; } - // skip check if exec function is disabled - if (!\function_exists('exec')) { + // skip check if shell_exec function is disabled + if (!\function_exists('shell_exec')) { return false; } - exec('stty 2>&1', $output, $exitcode); - - return self::$stty = 0 === $exitcode; + return self::$stty = (bool) shell_exec('stty 2> '.('\\' === \DIRECTORY_SEPARATOR ? 'NUL' : '/dev/null')); } - private static function initDimensions() + private static function initDimensions(): void { if ('\\' === \DIRECTORY_SEPARATOR) { $ansicon = getenv('ANSICON'); @@ -167,7 +165,7 @@ private static function hasVt100Support(): bool /** * Initializes dimensions using the output of an stty columns line. */ - private static function initDimensionsUsingStty() + private static function initDimensionsUsingStty(): void { if ($sttyString = self::getSttyColumns()) { if (preg_match('/rows.(\d+);.columns.(\d+);/is', $sttyString, $matches)) { diff --git a/vendor/symfony/console/Tester/TesterTrait.php b/vendor/symfony/console/Tester/TesterTrait.php index 9670a496..497b8c8c 100644 --- a/vendor/symfony/console/Tester/TesterTrait.php +++ b/vendor/symfony/console/Tester/TesterTrait.php @@ -128,7 +128,7 @@ public function setInputs(array $inputs): static * * verbosity: Sets the output verbosity flag * * capture_stderr_separately: Make output of stdOut and stdErr separately available */ - private function initOutput(array $options) + private function initOutput(array $options): void { $this->captureStreamsIndependently = \array_key_exists('capture_stderr_separately', $options) && $options['capture_stderr_separately']; if (!$this->captureStreamsIndependently) { diff --git a/vendor/symfony/console/composer.json b/vendor/symfony/console/composer.json index 6cc6166d..c3442129 100644 --- a/vendor/symfony/console/composer.json +++ b/vendor/symfony/console/composer.json @@ -17,9 +17,9 @@ ], "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/string": "^5.4|^6.0" }, "require-dev": { @@ -34,12 +34,6 @@ "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, - "suggest": { - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "", - "psr/log": "For using the console logger" - }, "conflict": { "symfony/dependency-injection": "<5.4", "symfony/dotenv": "<5.4", diff --git a/vendor/symfony/deprecation-contracts/composer.json b/vendor/symfony/deprecation-contracts/composer.json index 774200fd..c6d02d87 100644 --- a/vendor/symfony/deprecation-contracts/composer.json +++ b/vendor/symfony/deprecation-contracts/composer.json @@ -25,7 +25,7 @@ "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", diff --git a/vendor/symfony/event-dispatcher-contracts/composer.json b/vendor/symfony/event-dispatcher-contracts/composer.json index 89d7cec9..3618d53e 100644 --- a/vendor/symfony/event-dispatcher-contracts/composer.json +++ b/vendor/symfony/event-dispatcher-contracts/composer.json @@ -19,16 +19,13 @@ "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "autoload": { "psr-4": { "Symfony\\Contracts\\EventDispatcher\\": "" } }, "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", diff --git a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php index d8213781..f1b98231 100644 --- a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php +++ b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php @@ -51,16 +51,25 @@ public function __construct(EventDispatcherInterface $dispatcher, Stopwatch $sto $this->requestStack = $requestStack; } + /** + * @return void + */ public function addListener(string $eventName, callable|array $listener, int $priority = 0) { $this->dispatcher->addListener($eventName, $listener, $priority); } + /** + * @return void + */ public function addSubscriber(EventSubscriberInterface $subscriber) { $this->dispatcher->addSubscriber($subscriber); } + /** + * @return void + */ public function removeListener(string $eventName, callable|array $listener) { if (isset($this->wrappedListeners[$eventName])) { @@ -73,12 +82,15 @@ public function removeListener(string $eventName, callable|array $listener) } } - return $this->dispatcher->removeListener($eventName, $listener); + $this->dispatcher->removeListener($eventName, $listener); } + /** + * @return void + */ public function removeSubscriber(EventSubscriberInterface $subscriber) { - return $this->dispatcher->removeSubscriber($subscriber); + $this->dispatcher->removeSubscriber($subscriber); } public function getListeners(string $eventName = null): array @@ -214,6 +226,9 @@ public function getOrphanedEvents(Request $request = null): array return array_merge(...array_values($this->orphanedEvents)); } + /** + * @return void + */ public function reset() { $this->callStack = null; @@ -234,6 +249,8 @@ public function __call(string $method, array $arguments): mixed /** * Called before dispatching the event. + * + * @return void */ protected function beforeDispatch(string $eventName, object $event) { @@ -241,6 +258,8 @@ protected function beforeDispatch(string $eventName, object $event) /** * Called after dispatching the event. + * + * @return void */ protected function afterDispatch(string $eventName, object $event) { diff --git a/vendor/symfony/event-dispatcher/Debug/WrappedListener.php b/vendor/symfony/event-dispatcher/Debug/WrappedListener.php index 5871578c..6e0de1df 100644 --- a/vendor/symfony/event-dispatcher/Debug/WrappedListener.php +++ b/vendor/symfony/event-dispatcher/Debug/WrappedListener.php @@ -136,7 +136,7 @@ private function parseListener(array $listener): array } if (\is_object($listener[0])) { - return [get_debug_type($listener[0]), \get_class($listener[0])]; + return [get_debug_type($listener[0]), $listener[0]::class]; } return [$listener[0], $listener[0]]; diff --git a/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php b/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php index 57b7bf9b..c86f438d 100644 --- a/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php +++ b/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php @@ -48,6 +48,9 @@ public function setNoPreloadEvents(array $noPreloadEvents): static return $this; } + /** + * @return void + */ public function process(ContainerBuilder $container) { if (!$container->hasDefinition('event_dispatcher') && !$container->hasAlias('event_dispatcher')) { @@ -83,7 +86,7 @@ public function process(ContainerBuilder $container) $event['method'] = 'on'.preg_replace_callback([ '/(?<=\b|_)[a-z]/i', '/[^a-z0-9]/i', - ], function ($matches) { return strtoupper($matches[0]); }, $event['event']); + ], fn ($matches) => strtoupper($matches[0]), $event['event']); $event['method'] = preg_replace('/[^a-z0-9]/i', '', $event['method']); if (null !== ($class = $container->getDefinition($id)->getClass()) && ($r = $container->getReflectionClass($class, false)) && !$r->hasMethod($event['method']) && $r->hasMethod('__invoke')) { @@ -191,7 +194,7 @@ class ExtractingEventDispatcher extends EventDispatcher implements EventSubscrib public static array $aliases = []; public static string $subscriber; - public function addListener(string $eventName, callable|array $listener, int $priority = 0) + public function addListener(string $eventName, callable|array $listener, int $priority = 0): void { $this->listeners[] = [$eventName, $listener[1], $priority]; } diff --git a/vendor/symfony/event-dispatcher/EventDispatcher.php b/vendor/symfony/event-dispatcher/EventDispatcher.php index 41f3f7ae..327803af 100644 --- a/vendor/symfony/event-dispatcher/EventDispatcher.php +++ b/vendor/symfony/event-dispatcher/EventDispatcher.php @@ -123,12 +123,18 @@ public function hasListeners(string $eventName = null): bool return false; } + /** + * @return void + */ public function addListener(string $eventName, callable|array $listener, int $priority = 0) { $this->listeners[$eventName][$priority][] = $listener; unset($this->sorted[$eventName], $this->optimized[$eventName]); } + /** + * @return void + */ public function removeListener(string $eventName, callable|array $listener) { if (empty($this->listeners[$eventName])) { @@ -157,6 +163,9 @@ public function removeListener(string $eventName, callable|array $listener) } } + /** + * @return void + */ public function addSubscriber(EventSubscriberInterface $subscriber) { foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { @@ -172,6 +181,9 @@ public function addSubscriber(EventSubscriberInterface $subscriber) } } + /** + * @return void + */ public function removeSubscriber(EventSubscriberInterface $subscriber) { foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { @@ -194,6 +206,8 @@ public function removeSubscriber(EventSubscriberInterface $subscriber) * @param callable[] $listeners The event listeners * @param string $eventName The name of the event to dispatch * @param object $event The event object to pass to the event handlers/listeners + * + * @return void */ protected function callListeners(iterable $listeners, string $eventName, object $event) { @@ -210,7 +224,7 @@ protected function callListeners(iterable $listeners, string $eventName, object /** * Sorts the internal list of listeners for the given event by priority. */ - private function sortListeners(string $eventName) + private function sortListeners(string $eventName): void { krsort($this->listeners[$eventName]); $this->sorted[$eventName] = []; diff --git a/vendor/symfony/event-dispatcher/EventDispatcherInterface.php b/vendor/symfony/event-dispatcher/EventDispatcherInterface.php index 97a3017a..3cd94c93 100644 --- a/vendor/symfony/event-dispatcher/EventDispatcherInterface.php +++ b/vendor/symfony/event-dispatcher/EventDispatcherInterface.php @@ -27,6 +27,8 @@ interface EventDispatcherInterface extends ContractsEventDispatcherInterface * * @param int $priority The higher this value, the earlier an event * listener will be triggered in the chain (defaults to 0) + * + * @return void */ public function addListener(string $eventName, callable $listener, int $priority = 0); @@ -35,14 +37,21 @@ public function addListener(string $eventName, callable $listener, int $priority * * The subscriber is asked for all the events it is * interested in and added as a listener for these events. + * + * @return void */ public function addSubscriber(EventSubscriberInterface $subscriber); /** * Removes an event listener from the specified events. + * + * @return void */ public function removeListener(string $eventName, callable $listener); + /** + * @return void + */ public function removeSubscriber(EventSubscriberInterface $subscriber); /** diff --git a/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php b/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php index 182ba080..d385d3f8 100644 --- a/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php +++ b/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php @@ -30,21 +30,33 @@ public function dispatch(object $event, string $eventName = null): object return $this->dispatcher->dispatch($event, $eventName); } + /** + * @return never + */ public function addListener(string $eventName, callable|array $listener, int $priority = 0) { throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); } + /** + * @return never + */ public function addSubscriber(EventSubscriberInterface $subscriber) { throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); } + /** + * @return never + */ public function removeListener(string $eventName, callable|array $listener) { throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); } + /** + * @return never + */ public function removeSubscriber(EventSubscriberInterface $subscriber) { throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); diff --git a/vendor/symfony/event-dispatcher/composer.json b/vendor/symfony/event-dispatcher/composer.json index c05373f3..28703782 100644 --- a/vendor/symfony/event-dispatcher/composer.json +++ b/vendor/symfony/event-dispatcher/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "require-dev": { "symfony/dependency-injection": "^5.4|^6.0", @@ -25,21 +25,18 @@ "symfony/config": "^5.4|^6.0", "symfony/error-handler": "^5.4|^6.0", "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/stopwatch": "^5.4|^6.0", "psr/log": "^1|^2|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", "symfony/event-dispatcher-implementation": "2.0|3.0" }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, "autoload": { "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" }, "exclude-from-classmap": [ diff --git a/vendor/symfony/finder/Finder.php b/vendor/symfony/finder/Finder.php index 7baecdf9..62c3f9e2 100644 --- a/vendor/symfony/finder/Finder.php +++ b/vendor/symfony/finder/Finder.php @@ -396,6 +396,8 @@ public function ignoreVCSIgnored(bool $ignoreVCSIgnored): static * @see ignoreVCS() * * @param string|string[] $pattern VCS patterns to ignore + * + * @return void */ public static function addVCSPattern(string|array $pattern) { @@ -671,9 +673,7 @@ public function getIterator(): \Iterator $iterator = new \AppendIterator(); foreach ($this->dirs as $dir) { - $iterator->append(new \IteratorIterator(new LazyIterator(function () use ($dir) { - return $this->searchInDirectory($dir); - }))); + $iterator->append(new \IteratorIterator(new LazyIterator(fn () => $this->searchInDirectory($dir)))); } foreach ($this->iterators as $it) { diff --git a/vendor/symfony/finder/Gitignore.php b/vendor/symfony/finder/Gitignore.php index 070074b3..bf05c5b3 100644 --- a/vendor/symfony/finder/Gitignore.php +++ b/vendor/symfony/finder/Gitignore.php @@ -79,9 +79,7 @@ private static function lineToRegex(string $gitignoreLine): string } $regex = preg_quote(str_replace('\\', '', $gitignoreLine), '~'); - $regex = preg_replace_callback('~\\\\\[((?:\\\\!)?)([^\[\]]*)\\\\\]~', function (array $matches): string { - return '['.('' !== $matches[1] ? '^' : '').str_replace('\\-', '-', $matches[2]).']'; - }, $regex); + $regex = preg_replace_callback('~\\\\\[((?:\\\\!)?)([^\[\]]*)\\\\\]~', fn (array $matches): string => '['.('' !== $matches[1] ? '^' : '').str_replace('\\-', '-', $matches[2]).']', $regex); $regex = preg_replace('~(?:(?:\\\\\*){2,}(/?))+~', '(?:(?:(?!//).(?sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { - return $order * strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); - }; + $this->sort = static fn (\SplFileInfo $a, \SplFileInfo $b) => $order * strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); } elseif (self::SORT_BY_NAME_NATURAL === $sort) { - $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { - return $order * strnatcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); - }; + $this->sort = static fn (\SplFileInfo $a, \SplFileInfo $b) => $order * strnatcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); } elseif (self::SORT_BY_NAME_CASE_INSENSITIVE === $sort) { - $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { - return $order * strcasecmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); - }; + $this->sort = static fn (\SplFileInfo $a, \SplFileInfo $b) => $order * strcasecmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); } elseif (self::SORT_BY_NAME_NATURAL_CASE_INSENSITIVE === $sort) { - $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { - return $order * strnatcasecmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); - }; + $this->sort = static fn (\SplFileInfo $a, \SplFileInfo $b) => $order * strnatcasecmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); } elseif (self::SORT_BY_TYPE === $sort) { $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { if ($a->isDir() && $b->isFile()) { @@ -74,29 +66,19 @@ public function __construct(\Traversable $iterator, int|callable $sort, bool $re return $order * strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); }; } elseif (self::SORT_BY_ACCESSED_TIME === $sort) { - $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { - return $order * ($a->getATime() - $b->getATime()); - }; + $this->sort = static fn (\SplFileInfo $a, \SplFileInfo $b) => $order * ($a->getATime() - $b->getATime()); } elseif (self::SORT_BY_CHANGED_TIME === $sort) { - $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { - return $order * ($a->getCTime() - $b->getCTime()); - }; + $this->sort = static fn (\SplFileInfo $a, \SplFileInfo $b) => $order * ($a->getCTime() - $b->getCTime()); } elseif (self::SORT_BY_MODIFIED_TIME === $sort) { - $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { - return $order * ($a->getMTime() - $b->getMTime()); - }; + $this->sort = static fn (\SplFileInfo $a, \SplFileInfo $b) => $order * ($a->getMTime() - $b->getMTime()); } elseif (self::SORT_BY_EXTENSION === $sort) { - $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { - return $order * strnatcmp($a->getExtension(), $b->getExtension()); - }; + $this->sort = static fn (\SplFileInfo $a, \SplFileInfo $b) => $order * strnatcmp($a->getExtension(), $b->getExtension()); } elseif (self::SORT_BY_SIZE === $sort) { - $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { - return $order * ($a->getSize() - $b->getSize()); - }; + $this->sort = static fn (\SplFileInfo $a, \SplFileInfo $b) => $order * ($a->getSize() - $b->getSize()); } elseif (self::SORT_BY_NONE === $sort) { $this->sort = $order; } elseif (\is_callable($sort)) { - $this->sort = $reverseOrder ? static function (\SplFileInfo $a, \SplFileInfo $b) use ($sort) { return -$sort($a, $b); } : $sort(...); + $this->sort = $reverseOrder ? static fn (\SplFileInfo $a, \SplFileInfo $b) => -$sort($a, $b) : $sort(...); } else { throw new \InvalidArgumentException('The SortableIterator takes a PHP callable or a valid built-in sort algorithm as an argument.'); } diff --git a/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php b/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php index 29fc2d99..7e6051d3 100644 --- a/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php +++ b/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php @@ -126,9 +126,7 @@ private function parentDirectoriesUpTo(string $from, string $upTo): array { return array_filter( $this->parentDirectoriesUpwards($from), - static function (string $directory) use ($upTo): bool { - return str_starts_with($directory, $upTo); - } + static fn (string $directory): bool => str_starts_with($directory, $upTo) ); } diff --git a/vendor/symfony/process/Exception/ProcessFailedException.php b/vendor/symfony/process/Exception/ProcessFailedException.php index 328acfde..cf006dae 100644 --- a/vendor/symfony/process/Exception/ProcessFailedException.php +++ b/vendor/symfony/process/Exception/ProcessFailedException.php @@ -47,6 +47,9 @@ public function __construct(Process $process) $this->process = $process; } + /** + * @return Process + */ public function getProcess() { return $this->process; diff --git a/vendor/symfony/process/Exception/ProcessTimedOutException.php b/vendor/symfony/process/Exception/ProcessTimedOutException.php index b052d72c..e507ca30 100644 --- a/vendor/symfony/process/Exception/ProcessTimedOutException.php +++ b/vendor/symfony/process/Exception/ProcessTimedOutException.php @@ -38,22 +38,31 @@ public function __construct(Process $process, int $timeoutType) )); } + /** + * @return Process + */ public function getProcess() { return $this->process; } + /** + * @return bool + */ public function isGeneralTimeout() { return self::TYPE_GENERAL === $this->timeoutType; } + /** + * @return bool + */ public function isIdleTimeout() { return self::TYPE_IDLE === $this->timeoutType; } - public function getExceededTimeout() + public function getExceededTimeout(): ?float { return match ($this->timeoutType) { self::TYPE_GENERAL => $this->process->getTimeout(), diff --git a/vendor/symfony/process/ExecutableFinder.php b/vendor/symfony/process/ExecutableFinder.php index d9d11102..e3387dfe 100644 --- a/vendor/symfony/process/ExecutableFinder.php +++ b/vendor/symfony/process/ExecutableFinder.php @@ -23,6 +23,8 @@ class ExecutableFinder /** * Replaces default suffixes of executable. + * + * @return void */ public function setSuffixes(array $suffixes) { @@ -31,6 +33,8 @@ public function setSuffixes(array $suffixes) /** * Adds new possible suffix to check for executable. + * + * @return void */ public function addSuffix(string $suffix) { diff --git a/vendor/symfony/process/InputStream.php b/vendor/symfony/process/InputStream.php index b8682bae..086f5a9e 100644 --- a/vendor/symfony/process/InputStream.php +++ b/vendor/symfony/process/InputStream.php @@ -23,12 +23,14 @@ class InputStream implements \IteratorAggregate { /** @var callable|null */ - private $onEmpty = null; + private $onEmpty; private $input = []; private $open = true; /** * Sets a callback that is called when the write buffer becomes empty. + * + * @return void */ public function onEmpty(callable $onEmpty = null) { @@ -40,6 +42,8 @@ public function onEmpty(callable $onEmpty = null) * * @param resource|string|int|float|bool|\Traversable|null $input The input to append as scalar, * stream resource or \Traversable + * + * @return void */ public function write(mixed $input) { @@ -54,6 +58,8 @@ public function write(mixed $input) /** * Closes the write buffer. + * + * @return void */ public function close() { @@ -62,6 +68,8 @@ public function close() /** * Tells whether the write buffer is closed or not. + * + * @return bool */ public function isClosed() { diff --git a/vendor/symfony/process/PhpProcess.php b/vendor/symfony/process/PhpProcess.php index 486bc1da..ef54a3d2 100644 --- a/vendor/symfony/process/PhpProcess.php +++ b/vendor/symfony/process/PhpProcess.php @@ -55,6 +55,9 @@ public static function fromShellCommandline(string $command, string $cwd = null, throw new LogicException(sprintf('The "%s()" method cannot be called when using "%s".', __METHOD__, self::class)); } + /** + * @return void + */ public function start(callable $callback = null, array $env = []) { if (null === $this->getCommandLine()) { diff --git a/vendor/symfony/process/Pipes/AbstractPipes.php b/vendor/symfony/process/Pipes/AbstractPipes.php index 51d3af0b..ba3a97a3 100644 --- a/vendor/symfony/process/Pipes/AbstractPipes.php +++ b/vendor/symfony/process/Pipes/AbstractPipes.php @@ -41,7 +41,7 @@ public function __construct(mixed $input) } } - public function close() + public function close(): void { foreach ($this->pipes as $pipe) { if (\is_resource($pipe)) { @@ -66,7 +66,7 @@ protected function hasSystemCallBeenInterrupted(): bool /** * Unblocks streams. */ - protected function unblock() + protected function unblock(): void { if (!$this->blocked) { return; @@ -170,7 +170,7 @@ protected function write(): ?array /** * @internal */ - public function handleError(int $type, string $msg) + public function handleError(int $type, string $msg): void { $this->lastError = $msg; } diff --git a/vendor/symfony/process/Pipes/PipesInterface.php b/vendor/symfony/process/Pipes/PipesInterface.php index 50eb5c47..967f8de7 100644 --- a/vendor/symfony/process/Pipes/PipesInterface.php +++ b/vendor/symfony/process/Pipes/PipesInterface.php @@ -57,5 +57,5 @@ public function haveReadSupport(): bool; /** * Closes file handles and pipes. */ - public function close(); + public function close(): void; } diff --git a/vendor/symfony/process/Pipes/WindowsPipes.php b/vendor/symfony/process/Pipes/WindowsPipes.php index 9f4dedb2..0d6ab12d 100644 --- a/vendor/symfony/process/Pipes/WindowsPipes.php +++ b/vendor/symfony/process/Pipes/WindowsPipes.php @@ -172,7 +172,7 @@ public function areOpen(): bool return $this->pipes && $this->fileHandles; } - public function close() + public function close(): void { parent::close(); foreach ($this->fileHandles as $type => $handle) { diff --git a/vendor/symfony/process/Process.php b/vendor/symfony/process/Process.php index 63a402a5..40dbd416 100644 --- a/vendor/symfony/process/Process.php +++ b/vendor/symfony/process/Process.php @@ -285,6 +285,8 @@ public function mustRun(callable $callback = null, array $env = []): static * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * + * @return void + * * @throws RuntimeException When process can't be launched * @throws RuntimeException When process is already running * @throws LogicException In case a callback is provided and output has been disabled @@ -421,7 +423,7 @@ public function wait(callable $callback = null): int do { $this->checkTimeout(); - $running = '\\' === \DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen(); + $running = $this->isRunning() && ('\\' === \DIRECTORY_SEPARATOR || $this->processPipes->areOpen()); $this->readPipes($running, '\\' !== \DIRECTORY_SEPARATOR || !$running); } while ($running); @@ -912,7 +914,7 @@ public function stop(float $timeout = 10, int $signal = null): ?int * * @internal */ - public function addOutput(string $line) + public function addOutput(string $line): void { $this->lastOutputTime = microtime(true); @@ -926,7 +928,7 @@ public function addOutput(string $line) * * @internal */ - public function addErrorOutput(string $line) + public function addErrorOutput(string $line): void { $this->lastOutputTime = microtime(true); @@ -1140,6 +1142,8 @@ public function setInput(mixed $input): static * In case you run a background process (with the start method), you should * trigger this method regularly to ensure the process timeout * + * @return void + * * @throws ProcessTimedOutException In case the timeout was reached */ public function checkTimeout() @@ -1180,6 +1184,8 @@ public function getStartTime(): float * * Enabling the "create_new_console" option allows a subprocess to continue * to run after the main process exited, on both Windows and *nix + * + * @return void */ public function setOptions(array $options) { @@ -1255,9 +1261,7 @@ private function getDescriptors(): array protected function buildCallback(callable $callback = null): \Closure { if ($this->outputDisabled) { - return function ($type, $data) use ($callback): bool { - return null !== $callback && $callback($type, $data); - }; + return fn ($type, $data): bool => null !== $callback && $callback($type, $data); } $out = self::OUT; @@ -1277,6 +1281,8 @@ protected function buildCallback(callable $callback = null): \Closure * Updates the status of the process, reads pipes. * * @param bool $blocking Whether to use a blocking read call + * + * @return void */ protected function updateStatus(bool $blocking) { @@ -1325,7 +1331,7 @@ protected function isSigchildEnabled(): bool * * @throws LogicException in case output has been disabled or process is not started */ - private function readPipesForOutput(string $caller, bool $blocking = false) + private function readPipesForOutput(string $caller, bool $blocking = false): void { if ($this->outputDisabled) { throw new LogicException('Output has been disabled.'); @@ -1360,7 +1366,7 @@ private function validateTimeout(?float $timeout): ?float * @param bool $blocking Whether to use blocking calls or not * @param bool $close Whether to close file handles or not */ - private function readPipes(bool $blocking, bool $close) + private function readPipes(bool $blocking, bool $close): void { $result = $this->processPipes->readAndWrite($blocking, $close); @@ -1409,7 +1415,7 @@ private function close(): int /** * Resets data related to the latest run of the process. */ - private function resetProcessData() + private function resetProcessData(): void { $this->starttime = null; $this->callback = null; @@ -1482,8 +1488,6 @@ private function doSignal(int $signal, bool $throwException): bool private function prepareWindowsCommandLine(string $cmd, array &$env): string { $uid = uniqid('', true); - $varCount = 0; - $varCache = []; $cmd = preg_replace_callback( '/"(?:( [^"%!^]*+ @@ -1492,7 +1496,9 @@ private function prepareWindowsCommandLine(string $cmd, array &$env): string [^"%!^]*+ )++ ) | [^"]*+ )"/x', - function ($m) use (&$env, &$varCache, &$varCount, $uid) { + function ($m) use (&$env, $uid) { + static $varCount = 0; + static $varCache = []; if (!isset($m[1])) { return $m[0]; } @@ -1530,7 +1536,7 @@ function ($m) use (&$env, &$varCache, &$varCount, $uid) { * * @throws LogicException if the process has not run */ - private function requireProcessIsStarted(string $functionName) + private function requireProcessIsStarted(string $functionName): void { if (!$this->isStarted()) { throw new LogicException(sprintf('Process must be started before calling "%s()".', $functionName)); @@ -1542,7 +1548,7 @@ private function requireProcessIsStarted(string $functionName) * * @throws LogicException if the process is not yet terminated */ - private function requireProcessIsTerminated(string $functionName) + private function requireProcessIsTerminated(string $functionName): void { if (!$this->isTerminated()) { throw new LogicException(sprintf('Process must be terminated before calling "%s()".', $functionName)); @@ -1571,7 +1577,7 @@ private function escapeArgument(?string $argument): string return '"'.str_replace(['"', '^', '%', '!', "\n"], ['""', '"^^"', '"^%"', '"^!"', '!LF!'], $argument).'"'; } - private function replacePlaceholders(string $commandline, array $env) + private function replacePlaceholders(string $commandline, array $env): string { return preg_replace_callback('/"\$\{:([_a-zA-Z]++[_a-zA-Z0-9]*+)\}"/', function ($matches) use ($commandline, $env) { if (!isset($env[$matches[1]]) || false === $env[$matches[1]]) { diff --git a/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php b/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php index 88f6a068..07d12b4a 100644 --- a/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php +++ b/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php @@ -11,82 +11,13 @@ namespace Symfony\Contracts\Service\Test; -use PHPUnit\Framework\TestCase; -use Psr\Container\ContainerInterface; -use Symfony\Contracts\Service\ServiceLocatorTrait; +class_alias(ServiceLocatorTestCase::class, ServiceLocatorTest::class); -abstract class ServiceLocatorTest extends TestCase -{ - protected function getServiceLocator(array $factories): ContainerInterface +if (false) { + /** + * @deprecated since PHPUnit 9.6 + */ + class ServiceLocatorTest { - return new class($factories) implements ContainerInterface { - use ServiceLocatorTrait; - }; - } - - public function testHas() - { - $locator = $this->getServiceLocator([ - 'foo' => function () { return 'bar'; }, - 'bar' => function () { return 'baz'; }, - function () { return 'dummy'; }, - ]); - - $this->assertTrue($locator->has('foo')); - $this->assertTrue($locator->has('bar')); - $this->assertFalse($locator->has('dummy')); - } - - public function testGet() - { - $locator = $this->getServiceLocator([ - 'foo' => function () { return 'bar'; }, - 'bar' => function () { return 'baz'; }, - ]); - - $this->assertSame('bar', $locator->get('foo')); - $this->assertSame('baz', $locator->get('bar')); - } - - public function testGetDoesNotMemoize() - { - $i = 0; - $locator = $this->getServiceLocator([ - 'foo' => function () use (&$i) { - ++$i; - - return 'bar'; - }, - ]); - - $this->assertSame('bar', $locator->get('foo')); - $this->assertSame('bar', $locator->get('foo')); - $this->assertSame(2, $i); - } - - public function testThrowsOnUndefinedInternalService() - { - if (!$this->getExpectedException()) { - $this->expectException(\Psr\Container\NotFoundExceptionInterface::class); - $this->expectExceptionMessage('The service "foo" has a dependency on a non-existent service "bar". This locator only knows about the "foo" service.'); - } - $locator = $this->getServiceLocator([ - 'foo' => function () use (&$locator) { return $locator->get('bar'); }, - ]); - - $locator->get('foo'); - } - - public function testThrowsOnCircularReference() - { - $this->expectException(\Psr\Container\ContainerExceptionInterface::class); - $this->expectExceptionMessage('Circular reference detected for service "bar", path: "bar -> baz -> bar".'); - $locator = $this->getServiceLocator([ - 'foo' => function () use (&$locator) { return $locator->get('bar'); }, - 'bar' => function () use (&$locator) { return $locator->get('baz'); }, - 'baz' => function () use (&$locator) { return $locator->get('bar'); }, - ]); - - $locator->get('foo'); } } diff --git a/vendor/symfony/service-contracts/composer.json b/vendor/symfony/service-contracts/composer.json index 36b0d95e..a64188b5 100644 --- a/vendor/symfony/service-contracts/composer.json +++ b/vendor/symfony/service-contracts/composer.json @@ -22,9 +22,6 @@ "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" }, "exclude-from-classmap": [ @@ -34,7 +31,7 @@ "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", diff --git a/vendor/symfony/string/AbstractUnicodeString.php b/vendor/symfony/string/AbstractUnicodeString.php index 2a2bed71..d19a61a9 100644 --- a/vendor/symfony/string/AbstractUnicodeString.php +++ b/vendor/symfony/string/AbstractUnicodeString.php @@ -40,10 +40,6 @@ abstract class AbstractUnicodeString extends AbstractString private const FOLD_FROM = ['İ', 'µ', 'ſ', "\xCD\x85", 'ς', 'ϐ', 'ϑ', 'ϕ', 'ϖ', 'ϰ', 'ϱ', 'ϵ', 'ẛ', "\xE1\xBE\xBE", 'ß', 'ʼn', 'ǰ', 'ΐ', 'ΰ', 'և', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'ẚ', 'ẞ', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ᾀ', 'ᾁ', 'ᾂ', 'ᾃ', 'ᾄ', 'ᾅ', 'ᾆ', 'ᾇ', 'ᾈ', 'ᾉ', 'ᾊ', 'ᾋ', 'ᾌ', 'ᾍ', 'ᾎ', 'ᾏ', 'ᾐ', 'ᾑ', 'ᾒ', 'ᾓ', 'ᾔ', 'ᾕ', 'ᾖ', 'ᾗ', 'ᾘ', 'ᾙ', 'ᾚ', 'ᾛ', 'ᾜ', 'ᾝ', 'ᾞ', 'ᾟ', 'ᾠ', 'ᾡ', 'ᾢ', 'ᾣ', 'ᾤ', 'ᾥ', 'ᾦ', 'ᾧ', 'ᾨ', 'ᾩ', 'ᾪ', 'ᾫ', 'ᾬ', 'ᾭ', 'ᾮ', 'ᾯ', 'ᾲ', 'ᾳ', 'ᾴ', 'ᾶ', 'ᾷ', 'ᾼ', 'ῂ', 'ῃ', 'ῄ', 'ῆ', 'ῇ', 'ῌ', 'ῒ', 'ῖ', 'ῗ', 'ῢ', 'ῤ', 'ῦ', 'ῧ', 'ῲ', 'ῳ', 'ῴ', 'ῶ', 'ῷ', 'ῼ', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'ſt', 'st', 'ﬓ', 'ﬔ', 'ﬕ', 'ﬖ', 'ﬗ']; private const FOLD_TO = ['i̇', 'μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', 'ṡ', 'ι', 'ss', 'ʼn', 'ǰ', 'ΐ', 'ΰ', 'եւ', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'aʾ', 'ss', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ἀι', 'ἁι', 'ἂι', 'ἃι', 'ἄι', 'ἅι', 'ἆι', 'ἇι', 'ἀι', 'ἁι', 'ἂι', 'ἃι', 'ἄι', 'ἅι', 'ἆι', 'ἇι', 'ἠι', 'ἡι', 'ἢι', 'ἣι', 'ἤι', 'ἥι', 'ἦι', 'ἧι', 'ἠι', 'ἡι', 'ἢι', 'ἣι', 'ἤι', 'ἥι', 'ἦι', 'ἧι', 'ὠι', 'ὡι', 'ὢι', 'ὣι', 'ὤι', 'ὥι', 'ὦι', 'ὧι', 'ὠι', 'ὡι', 'ὢι', 'ὣι', 'ὤι', 'ὥι', 'ὦι', 'ὧι', 'ὰι', 'αι', 'άι', 'ᾶ', 'ᾶι', 'αι', 'ὴι', 'ηι', 'ήι', 'ῆ', 'ῆι', 'ηι', 'ῒ', 'ῖ', 'ῗ', 'ῢ', 'ῤ', 'ῦ', 'ῧ', 'ὼι', 'ωι', 'ώι', 'ῶ', 'ῶι', 'ωι', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'st', 'st', 'մն', 'մե', 'մի', 'վն', 'մխ']; - // the subset of upper case mappings that map one code point to many code points - private const UPPER_FROM = ['ß', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'ſt', 'st', 'և', 'ﬓ', 'ﬔ', 'ﬕ', 'ﬖ', 'ﬗ', 'ʼn', 'ΐ', 'ΰ', 'ǰ', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'ẚ', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ᾶ', 'ῆ', 'ῒ', 'ΐ', 'ῖ', 'ῗ', 'ῢ', 'ΰ', 'ῤ', 'ῦ', 'ῧ', 'ῶ']; - private const UPPER_TO = ['SS', 'FF', 'FI', 'FL', 'FFI', 'FFL', 'ST', 'ST', 'ԵՒ', 'ՄՆ', 'ՄԵ', 'ՄԻ', 'ՎՆ', 'ՄԽ', 'ʼN', 'Ϊ́', 'Ϋ́', 'J̌', 'H̱', 'T̈', 'W̊', 'Y̊', 'Aʾ', 'Υ̓', 'Υ̓̀', 'Υ̓́', 'Υ̓͂', 'Α͂', 'Η͂', 'Ϊ̀', 'Ϊ́', 'Ι͂', 'Ϊ͂', 'Ϋ̀', 'Ϋ́', 'Ρ̓', 'Υ͂', 'Ϋ͂', 'Ω͂']; - // the subset of https://github.com/unicode-org/cldr/blob/master/common/transforms/Latin-ASCII.xml that is not in NFKD private const TRANSLIT_FROM = ['Æ', 'Ð', 'Ø', 'Þ', 'ß', 'æ', 'ð', 'ø', 'þ', 'Đ', 'đ', 'Ħ', 'ħ', 'ı', 'ĸ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'ʼn', 'Ŋ', 'ŋ', 'Œ', 'œ', 'Ŧ', 'ŧ', 'ƀ', 'Ɓ', 'Ƃ', 'ƃ', 'Ƈ', 'ƈ', 'Ɖ', 'Ɗ', 'Ƌ', 'ƌ', 'Ɛ', 'Ƒ', 'ƒ', 'Ɠ', 'ƕ', 'Ɩ', 'Ɨ', 'Ƙ', 'ƙ', 'ƚ', 'Ɲ', 'ƞ', 'Ƣ', 'ƣ', 'Ƥ', 'ƥ', 'ƫ', 'Ƭ', 'ƭ', 'Ʈ', 'Ʋ', 'Ƴ', 'ƴ', 'Ƶ', 'ƶ', 'DŽ', 'Dž', 'dž', 'Ǥ', 'ǥ', 'ȡ', 'Ȥ', 'ȥ', 'ȴ', 'ȵ', 'ȶ', 'ȷ', 'ȸ', 'ȹ', 'Ⱥ', 'Ȼ', 'ȼ', 'Ƚ', 'Ⱦ', 'ȿ', 'ɀ', 'Ƀ', 'Ʉ', 'Ɇ', 'ɇ', 'Ɉ', 'ɉ', 'Ɍ', 'ɍ', 'Ɏ', 'ɏ', 'ɓ', 'ɕ', 'ɖ', 'ɗ', 'ɛ', 'ɟ', 'ɠ', 'ɡ', 'ɢ', 'ɦ', 'ɧ', 'ɨ', 'ɪ', 'ɫ', 'ɬ', 'ɭ', 'ɱ', 'ɲ', 'ɳ', 'ɴ', 'ɶ', 'ɼ', 'ɽ', 'ɾ', 'ʀ', 'ʂ', 'ʈ', 'ʉ', 'ʋ', 'ʏ', 'ʐ', 'ʑ', 'ʙ', 'ʛ', 'ʜ', 'ʝ', 'ʟ', 'ʠ', 'ʣ', 'ʥ', 'ʦ', 'ʪ', 'ʫ', 'ᴀ', 'ᴁ', 'ᴃ', 'ᴄ', 'ᴅ', 'ᴆ', 'ᴇ', 'ᴊ', 'ᴋ', 'ᴌ', 'ᴍ', 'ᴏ', 'ᴘ', 'ᴛ', 'ᴜ', 'ᴠ', 'ᴡ', 'ᴢ', 'ᵫ', 'ᵬ', 'ᵭ', 'ᵮ', 'ᵯ', 'ᵰ', 'ᵱ', 'ᵲ', 'ᵳ', 'ᵴ', 'ᵵ', 'ᵶ', 'ᵺ', 'ᵻ', 'ᵽ', 'ᵾ', 'ᶀ', 'ᶁ', 'ᶂ', 'ᶃ', 'ᶄ', 'ᶅ', 'ᶆ', 'ᶇ', 'ᶈ', 'ᶉ', 'ᶊ', 'ᶌ', 'ᶍ', 'ᶎ', 'ᶏ', 'ᶑ', 'ᶒ', 'ᶓ', 'ᶖ', 'ᶙ', 'ẚ', 'ẜ', 'ẝ', 'ẞ', 'Ỻ', 'ỻ', 'Ỽ', 'ỽ', 'Ỿ', 'ỿ', '©', '®', '₠', '₢', '₣', '₤', '₧', '₺', '₹', 'ℌ', '℞', '㎧', '㎮', '㏆', '㏗', '㏞', '㏟', '¼', '½', '¾', '⅓', '⅔', '⅕', '⅖', '⅗', '⅘', '⅙', '⅚', '⅛', '⅜', '⅝', '⅞', '⅟', '〇', '‘', '’', '‚', '‛', '“', '”', '„', '‟', '′', '″', '〝', '〞', '«', '»', '‹', '›', '‐', '‑', '‒', '–', '—', '―', '︱', '︲', '﹘', '‖', '⁄', '⁅', '⁆', '⁎', '、', '。', '〈', '〉', '《', '》', '〔', '〕', '〘', '〙', '〚', '〛', '︑', '︒', '︹', '︺', '︽', '︾', '︿', '﹀', '﹑', '﹝', '﹞', '⦅', '⦆', '。', '、', '×', '÷', '−', '∕', '∖', '∣', '∥', '≪', '≫', '⦅', '⦆']; private const TRANSLIT_TO = ['AE', 'D', 'O', 'TH', 'ss', 'ae', 'd', 'o', 'th', 'D', 'd', 'H', 'h', 'i', 'q', 'L', 'l', 'L', 'l', '\'n', 'N', 'n', 'OE', 'oe', 'T', 't', 'b', 'B', 'B', 'b', 'C', 'c', 'D', 'D', 'D', 'd', 'E', 'F', 'f', 'G', 'hv', 'I', 'I', 'K', 'k', 'l', 'N', 'n', 'OI', 'oi', 'P', 'p', 't', 'T', 't', 'T', 'V', 'Y', 'y', 'Z', 'z', 'DZ', 'Dz', 'dz', 'G', 'g', 'd', 'Z', 'z', 'l', 'n', 't', 'j', 'db', 'qp', 'A', 'C', 'c', 'L', 'T', 's', 'z', 'B', 'U', 'E', 'e', 'J', 'j', 'R', 'r', 'Y', 'y', 'b', 'c', 'd', 'd', 'e', 'j', 'g', 'g', 'G', 'h', 'h', 'i', 'I', 'l', 'l', 'l', 'm', 'n', 'n', 'N', 'OE', 'r', 'r', 'r', 'R', 's', 't', 'u', 'v', 'Y', 'z', 'z', 'B', 'G', 'H', 'j', 'L', 'q', 'dz', 'dz', 'ts', 'ls', 'lz', 'A', 'AE', 'B', 'C', 'D', 'D', 'E', 'J', 'K', 'L', 'M', 'O', 'P', 'T', 'U', 'V', 'W', 'Z', 'ue', 'b', 'd', 'f', 'm', 'n', 'p', 'r', 'r', 's', 't', 'z', 'th', 'I', 'p', 'U', 'b', 'd', 'f', 'g', 'k', 'l', 'm', 'n', 'p', 'r', 's', 'v', 'x', 'z', 'a', 'd', 'e', 'e', 'i', 'u', 'a', 's', 's', 'SS', 'LL', 'll', 'V', 'v', 'Y', 'y', '(C)', '(R)', 'CE', 'Cr', 'Fr.', 'L.', 'Pts', 'TL', 'Rs', 'x', 'Rx', 'm/s', 'rad/s', 'C/kg', 'pH', 'V/m', 'A/m', ' 1/4', ' 1/2', ' 3/4', ' 1/3', ' 2/3', ' 1/5', ' 2/5', ' 3/5', ' 4/5', ' 1/6', ' 5/6', ' 1/8', ' 3/8', ' 5/8', ' 7/8', ' 1/', '0', '\'', '\'', ',', '\'', '"', '"', ',,', '"', '\'', '"', '"', '"', '<<', '>>', '<', '>', '-', '-', '-', '-', '-', '-', '-', '-', '-', '||', '/', '[', ']', '*', ',', '.', '<', '>', '<<', '>>', '[', ']', '[', ']', '[', ']', ',', '.', '[', ']', '<<', '>>', '<', '>', ',', '[', ']', '((', '))', '.', ',', '*', '/', '-', '/', '\\', '|', '||', '<<', '>>', '((', '))']; @@ -159,7 +155,9 @@ public function ascii(array $rules = []): self public function camel(): static { $str = clone $this; - $str->string = str_replace(' ', '', preg_replace_callback('/\b.(?![A-Z]{2,})/u', static function ($m) use (&$i) { + $str->string = str_replace(' ', '', preg_replace_callback('/\b.(?![A-Z]{2,})/u', static function ($m) { + static $i = 0; + return 1 === ++$i ? ('İ' === $m[0] ? 'i̇' : mb_strtolower($m[0], 'UTF-8')) : mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'); }, preg_replace('/[^\pL0-9]++/u', ' ', $this->string))); @@ -360,9 +358,7 @@ public function title(bool $allWords = false): static $limit = $allWords ? -1 : 1; - $str->string = preg_replace_callback('/\b./u', static function (array $m): string { - return mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'); - }, $str->string, $limit); + $str->string = preg_replace_callback('/\b./u', static fn (array $m): string => mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'), $str->string, $limit); return $str; } diff --git a/vendor/symfony/string/LazyString.php b/vendor/symfony/string/LazyString.php index 9523b8cd..3128ebb3 100644 --- a/vendor/symfony/string/LazyString.php +++ b/vendor/symfony/string/LazyString.php @@ -30,7 +30,9 @@ public static function fromCallable(callable|array $callback, mixed ...$argument } $lazyString = new static(); - $lazyString->value = static function () use (&$callback, &$arguments, &$value): string { + $lazyString->value = static function () use (&$callback, &$arguments): string { + static $value; + if (null !== $arguments) { if (!\is_callable($callback)) { $callback[0] = $callback[0](); diff --git a/vendor/symfony/string/Slugger/AsciiSlugger.php b/vendor/symfony/string/Slugger/AsciiSlugger.php index 826d07ca..6e550c61 100644 --- a/vendor/symfony/string/Slugger/AsciiSlugger.php +++ b/vendor/symfony/string/Slugger/AsciiSlugger.php @@ -74,6 +74,9 @@ public function __construct(string $defaultLocale = null, array|\Closure $symbol $this->symbolsMap = $symbolsMap ?? $this->symbolsMap; } + /** + * @return void + */ public function setLocale(string $locale) { $this->defaultLocale = $locale; @@ -121,9 +124,7 @@ public function slug(string $string, string $separator = '-', string $locale = n // If the symbols map is passed as a closure, there is no need to fallback to the parent locale // as the closure can just provide substitutions for all locales of interest. $symbolsMap = $this->symbolsMap; - array_unshift($transliterator, static function ($s) use ($symbolsMap, $locale) { - return $symbolsMap($s, $locale); - }); + array_unshift($transliterator, static fn ($s) => $symbolsMap($s, $locale)); } $unicodeString = (new UnicodeString($string))->ascii($transliterator); diff --git a/vendor/symfony/string/composer.json b/vendor/symfony/string/composer.json index 44a809d5..3545c853 100644 --- a/vendor/symfony/string/composer.json +++ b/vendor/symfony/string/composer.json @@ -26,11 +26,11 @@ "symfony/error-handler": "^5.4|^6.0", "symfony/intl": "^6.2", "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", + "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "autoload": { "psr-4": { "Symfony\\Component\\String\\": "" }, diff --git a/vendor/symfony/translation-contracts/Test/TranslatorTest.php b/vendor/symfony/translation-contracts/Test/TranslatorTest.php index e4168cc1..674b78b3 100644 --- a/vendor/symfony/translation-contracts/Test/TranslatorTest.php +++ b/vendor/symfony/translation-contracts/Test/TranslatorTest.php @@ -255,13 +255,13 @@ public static function getChooseTests() new-line in it. Selector = 0.|{1}This is a text with a new-line in it. Selector = 1.|[1,Inf]This is a text with a new-line in it. Selector > 1.', 5], - // with double-quotes and id split accros lines + // with double-quotes and id split across lines ['This is a text with a new-line in it. Selector = 1.', '{0}This is a text with a new-line in it. Selector = 0.|{1}This is a text with a new-line in it. Selector = 1.|[1,Inf]This is a text with a new-line in it. Selector > 1.', 1], - // with single-quotes and id split accros lines + // with single-quotes and id split across lines ['This is a text with a new-line in it. Selector > 1.', '{0}This is a text with a new-line in it. Selector = 0.|{1}This is a text with a @@ -269,7 +269,7 @@ public static function getChooseTests() new-line in it. Selector > 1.', 5], // with single-quotes and \n in text ['This is a text with a\nnew-line in it. Selector = 0.', '{0}This is a text with a\nnew-line in it. Selector = 0.|{1}This is a text with a\nnew-line in it. Selector = 1.|[1,Inf]This is a text with a\nnew-line in it. Selector > 1.', 0], - // with double-quotes and id split accros lines + // with double-quotes and id split across lines ["This is a text with a\nnew-line in it. Selector = 1.", "{0}This is a text with a\nnew-line in it. Selector = 0.|{1}This is a text with a\nnew-line in it. Selector = 1.|[1,Inf]This is a text with a\nnew-line in it. Selector > 1.", 1], // escape pipe ['This is a text with | in it. Selector = 0.', '{0}This is a text with || in it. Selector = 0.|{1}This is a text with || in it. Selector = 1.', 0], diff --git a/vendor/symfony/translation-contracts/composer.json b/vendor/symfony/translation-contracts/composer.json index 3454800a..213b5cda 100644 --- a/vendor/symfony/translation-contracts/composer.json +++ b/vendor/symfony/translation-contracts/composer.json @@ -18,9 +18,6 @@ "require": { "php": ">=8.1" }, - "suggest": { - "symfony/translation-implementation": "" - }, "autoload": { "psr-4": { "Symfony\\Contracts\\Translation\\": "" }, "exclude-from-classmap": [ @@ -30,7 +27,7 @@ "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", diff --git a/vendor/symfony/yaml/CHANGELOG.md b/vendor/symfony/yaml/CHANGELOG.md index 50852cb1..0c2021f4 100644 --- a/vendor/symfony/yaml/CHANGELOG.md +++ b/vendor/symfony/yaml/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +6.3 +--- + + * Add support to dump int keys as strings by using the `Yaml::DUMP_NUMERIC_KEY_AS_STRING` flag + 6.2 --- diff --git a/vendor/symfony/yaml/Command/LintCommand.php b/vendor/symfony/yaml/Command/LintCommand.php index 19a0af08..95352ac1 100644 --- a/vendor/symfony/yaml/Command/LintCommand.php +++ b/vendor/symfony/yaml/Command/LintCommand.php @@ -50,11 +50,14 @@ public function __construct(string $name = null, callable $directoryIteratorProv $this->isReadableProvider = null === $isReadableProvider ? null : $isReadableProvider(...); } + /** + * @return void + */ protected function configure() { $this ->addArgument('filename', InputArgument::IS_ARRAY, 'A file, a directory or "-" for reading from STDIN') - ->addOption('format', null, InputOption::VALUE_REQUIRED, 'The output format') + ->addOption('format', null, InputOption::VALUE_REQUIRED, sprintf('The output format ("%s")', implode('", "', $this->getAvailableFormatOptions()))) ->addOption('exclude', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Path(s) to exclude') ->addOption('parse-tags', null, InputOption::VALUE_NEGATABLE, 'Parse custom tags', null) ->setHelp(<<format = $input->getOption('format'); $flags = $input->getOption('parse-tags'); - if ('github' === $this->format && !class_exists(GithubActionReporter::class)) { - throw new \InvalidArgumentException('The "github" format is only available since "symfony/console" >= 5.3.'); - } - if (null === $this->format) { // Autodetect format according to CI environment $this->format = class_exists(GithubActionReporter::class) && GithubActionReporter::isGithubActionEnvironment() ? 'github' : 'txt'; @@ -128,7 +127,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int return $this->display($io, $filesInfo); } - private function validate(string $content, int $flags, string $file = null) + private function validate(string $content, int $flags, string $file = null): array { $prevErrorHandler = set_error_handler(function ($level, $message, $file, $line) use (&$prevErrorHandler) { if (\E_USER_DEPRECATED === $level) { @@ -155,7 +154,7 @@ private function display(SymfonyStyle $io, array $files): int 'txt' => $this->displayTxt($io, $files), 'json' => $this->displayJson($io, $files), 'github' => $this->displayTxt($io, $files, true), - default => throw new InvalidArgumentException(sprintf('The format "%s" is not supported.', $this->format)), + default => throw new InvalidArgumentException(sprintf('Supported formats are "%s".', implode('", "', $this->getAvailableFormatOptions()))), }; } @@ -240,12 +239,10 @@ private function getParser(): Parser private function getDirectoryIterator(string $directory): iterable { - $default = function ($directory) { - return new \RecursiveIteratorIterator( - new \RecursiveDirectoryIterator($directory, \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS), - \RecursiveIteratorIterator::LEAVES_ONLY - ); - }; + $default = fn ($directory) => new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($directory, \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS), + \RecursiveIteratorIterator::LEAVES_ONLY + ); if (null !== $this->directoryIteratorProvider) { return ($this->directoryIteratorProvider)($directory, $default); @@ -256,9 +253,7 @@ private function getDirectoryIterator(string $directory): iterable private function isReadable(string $fileOrDirectory): bool { - $default = function ($fileOrDirectory) { - return is_readable($fileOrDirectory); - }; + $default = is_readable(...); if (null !== $this->isReadableProvider) { return ($this->isReadableProvider)($fileOrDirectory, $default); @@ -270,7 +265,12 @@ private function isReadable(string $fileOrDirectory): bool public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void { if ($input->mustSuggestOptionValuesFor('format')) { - $suggestions->suggestValues(['txt', 'json', 'github']); + $suggestions->suggestValues($this->getAvailableFormatOptions()); } } + + private function getAvailableFormatOptions(): array + { + return ['txt', 'json', 'github']; + } } diff --git a/vendor/symfony/yaml/Dumper.php b/vendor/symfony/yaml/Dumper.php index 9249d21d..04646c5c 100644 --- a/vendor/symfony/yaml/Dumper.php +++ b/vendor/symfony/yaml/Dumper.php @@ -66,6 +66,10 @@ public function dump(mixed $input, int $inline = 0, int $indent = 0, int $flags $output .= "\n"; } + if (\is_int($key) && Yaml::DUMP_NUMERIC_KEY_AS_STRING & $flags) { + $key = (string) $key; + } + if (Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK & $flags && \is_string($value) && str_contains($value, "\n") && !str_contains($value, "\r")) { $blockIndentationIndicator = $this->getBlockIndentationIndicator($value); diff --git a/vendor/symfony/yaml/Exception/ParseException.php b/vendor/symfony/yaml/Exception/ParseException.php index 07c59b96..c1a77ad1 100644 --- a/vendor/symfony/yaml/Exception/ParseException.php +++ b/vendor/symfony/yaml/Exception/ParseException.php @@ -51,6 +51,8 @@ public function getSnippet(): string /** * Sets the snippet of code near the error. + * + * @return void */ public function setSnippet(string $snippet) { @@ -71,6 +73,8 @@ public function getParsedFile(): string /** * Sets the filename where the error occurred. + * + * @return void */ public function setParsedFile(string $parsedFile) { @@ -89,6 +93,8 @@ public function getParsedLine(): int /** * Sets the line where the error occurred. + * + * @return void */ public function setParsedLine(int $parsedLine) { @@ -97,7 +103,7 @@ public function setParsedLine(int $parsedLine) $this->updateRepr(); } - private function updateRepr() + private function updateRepr(): void { $this->message = $this->rawMessage; diff --git a/vendor/symfony/yaml/Inline.php b/vendor/symfony/yaml/Inline.php index 127e50e8..c2a93bab 100644 --- a/vendor/symfony/yaml/Inline.php +++ b/vendor/symfony/yaml/Inline.php @@ -34,7 +34,7 @@ class Inline private static bool $objectForMap = false; private static bool $constantSupport = false; - public static function initialize(int $flags, int $parsedLineNumber = null, string $parsedFilename = null) + public static function initialize(int $flags, int $parsedLineNumber = null, string $parsedFilename = null): void { self::$exceptionOnInvalidType = (bool) (Yaml::PARSE_EXCEPTION_ON_INVALID_TYPE & $flags); self::$objectSupport = (bool) (Yaml::PARSE_OBJECT & $flags); @@ -110,7 +110,11 @@ public static function dump(mixed $value, int $flags = 0): string return self::dumpNull($flags); case $value instanceof \DateTimeInterface: - return $value->format('c'); + return $value->format(match (true) { + !$length = \strlen(rtrim($value->format('u'), '0')) => 'c', + $length < 4 => 'Y-m-d\TH:i:s.vP', + default => 'Y-m-d\TH:i:s.uP', + }); case $value instanceof \UnitEnum: return sprintf('!php/const %s::%s', $value::class, $value->name); case \is_object($value): @@ -239,6 +243,10 @@ private static function dumpHashArray(array|\ArrayObject|\stdClass $value, int $ { $output = []; foreach ($value as $key => $val) { + if (\is_int($key) && Yaml::DUMP_NUMERIC_KEY_AS_STRING & $flags) { + $key = (string) $key; + } + $output[] = sprintf('%s: %s', self::dump($key, $flags), self::dump($val, $flags)); } @@ -708,6 +716,10 @@ private static function evaluateScalar(string $scalar, int $flags, array &$refer return $time; } + if ('' !== rtrim($time->format('u'), '0')) { + return (float) $time->format('U.u'); + } + try { if (false !== $scalar = $time->getTimestamp()) { return $scalar; diff --git a/vendor/symfony/yaml/Parser.php b/vendor/symfony/yaml/Parser.php index 32eb429f..ddfbcfd8 100644 --- a/vendor/symfony/yaml/Parser.php +++ b/vendor/symfony/yaml/Parser.php @@ -99,7 +99,7 @@ public function parse(string $value, int $flags = 0): mixed return $data; } - private function doParse(string $value, int $flags) + private function doParse(string $value, int $flags): mixed { $this->currentLineNb = -1; $this->currentLine = ''; @@ -503,7 +503,7 @@ private function doParse(string $value, int $flags) return empty($data) ? null : $data; } - private function parseBlock(int $offset, string $yaml, int $flags) + private function parseBlock(int $offset, string $yaml, int $flags): mixed { $skippedLineNumbers = $this->skippedLineNumbers; @@ -844,8 +844,8 @@ private function parseBlockScalar(string $style, string $chomping = '', int $ind while ( $notEOF && ( - $isCurrentLineBlank || - self::preg_match($pattern, $this->currentLine, $matches) + $isCurrentLineBlank + || self::preg_match($pattern, $this->currentLine, $matches) ) ) { if ($isCurrentLineBlank && \strlen($this->currentLine) > $indentation) { diff --git a/vendor/symfony/yaml/Tag/TaggedValue.php b/vendor/symfony/yaml/Tag/TaggedValue.php index c7946c27..3e09b93e 100644 --- a/vendor/symfony/yaml/Tag/TaggedValue.php +++ b/vendor/symfony/yaml/Tag/TaggedValue.php @@ -31,7 +31,7 @@ public function getTag(): string return $this->tag; } - public function getValue() + public function getValue(): mixed { return $this->value; } diff --git a/vendor/symfony/yaml/Unescaper.php b/vendor/symfony/yaml/Unescaper.php index 2238210d..9e640ff2 100644 --- a/vendor/symfony/yaml/Unescaper.php +++ b/vendor/symfony/yaml/Unescaper.php @@ -45,9 +45,7 @@ public function unescapeSingleQuotedString(string $value): string */ public function unescapeDoubleQuotedString(string $value): string { - $callback = function ($match) { - return $this->unescapeCharacter($match[0]); - }; + $callback = fn ($match) => $this->unescapeCharacter($match[0]); // evaluate the string return preg_replace_callback('/'.self::REGEX_ESCAPED_CHARACTER.'/u', $callback, $value); diff --git a/vendor/symfony/yaml/Yaml.php b/vendor/symfony/yaml/Yaml.php index 49784216..e2d2af73 100644 --- a/vendor/symfony/yaml/Yaml.php +++ b/vendor/symfony/yaml/Yaml.php @@ -34,6 +34,7 @@ class Yaml public const PARSE_CUSTOM_TAGS = 512; public const DUMP_EMPTY_ARRAY_AS_SEQUENCE = 1024; public const DUMP_NULL_AS_TILDE = 2048; + public const DUMP_NUMERIC_KEY_AS_STRING = 4096; /** * Parses a YAML file into a PHP value. diff --git a/vendor/symfony/yaml/composer.json b/vendor/symfony/yaml/composer.json index 839314bf..019776ce 100644 --- a/vendor/symfony/yaml/composer.json +++ b/vendor/symfony/yaml/composer.json @@ -25,9 +25,6 @@ "conflict": { "symfony/console": "<5.4" }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" }, "exclude-from-classmap": [ From 82702fe5e4064aeaae5fc77e6a44bc35f1eaf698 Mon Sep 17 00:00:00 2001 From: Andrei-Chiorian Date: Tue, 27 Jun 2023 19:22:11 +0200 Subject: [PATCH 2/4] 19:22 --- .github/workflows/firebase-hosting-merge.yml | 19 ---- .../firebase-hosting-pull-request.yml | 16 ---- public/index.html | 89 ------------------- 3 files changed, 124 deletions(-) delete mode 100644 .github/workflows/firebase-hosting-merge.yml delete mode 100644 .github/workflows/firebase-hosting-pull-request.yml delete mode 100644 public/index.html diff --git a/.github/workflows/firebase-hosting-merge.yml b/.github/workflows/firebase-hosting-merge.yml deleted file mode 100644 index d16117b3..00000000 --- a/.github/workflows/firebase-hosting-merge.yml +++ /dev/null @@ -1,19 +0,0 @@ -# This file was auto-generated by the Firebase CLI -# https://github.com/firebase/firebase-tools - -name: Deploy to Firebase Hosting on merge -'on': - push: - branches: - - build -jobs: - build_and_deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: FirebaseExtended/action-hosting-deploy@v0 - with: - repoToken: '${{ secrets.GITHUB_TOKEN }}' - firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_CLOUDLIB_8060E }}' - channelId: live - projectId: cloudlib-8060e diff --git a/.github/workflows/firebase-hosting-pull-request.yml b/.github/workflows/firebase-hosting-pull-request.yml deleted file mode 100644 index 5d12230d..00000000 --- a/.github/workflows/firebase-hosting-pull-request.yml +++ /dev/null @@ -1,16 +0,0 @@ -# This file was auto-generated by the Firebase CLI -# https://github.com/firebase/firebase-tools - -name: Deploy to Firebase Hosting on PR -'on': pull_request -jobs: - build_and_preview: - if: '${{ github.event.pull_request.head.repo.full_name == github.repository }}' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: FirebaseExtended/action-hosting-deploy@v0 - with: - repoToken: '${{ secrets.GITHUB_TOKEN }}' - firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_CLOUDLIB_8060E }}' - projectId: cloudlib-8060e diff --git a/public/index.html b/public/index.html deleted file mode 100644 index a839d050..00000000 --- a/public/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Welcome to Firebase Hosting - - - - - - - - - - - - - - - - - - - -
    -

    Welcome

    -

    Firebase Hosting Setup Complete

    -

    You're seeing this because you've successfully setup Firebase Hosting. Now it's time to go build something extraordinary!

    - Open Hosting Documentation -
    -

    Firebase SDK Loading…

    - - - - From 8eb37833fd478edaaf94e5e96c5cf3e69b8b8986 Mon Sep 17 00:00:00 2001 From: "ionos-deploy-now[bot]" <78917126+ionos-deploy-now[bot]@users.noreply.github.com> Date: Tue, 27 Jun 2023 17:25:27 +0000 Subject: [PATCH 3/4] Add IONOS Deploy Now workflow --- .deploy-now/cloudLib/.env.template | 58 ++++++++ .deploy-now/cloudLib/.htaccess.template | 25 ++++ .deploy-now/cloudLib/config.yaml | 54 ++++++++ .github/workflows/cloudLib-build.yaml | 84 ++++++++++++ .github/workflows/cloudLib-orchestration.yaml | 58 ++++++++ .github/workflows/deploy-to-ionos.yaml | 125 ++++++++++++++++++ 6 files changed, 404 insertions(+) create mode 100644 .deploy-now/cloudLib/.env.template create mode 100644 .deploy-now/cloudLib/.htaccess.template create mode 100644 .deploy-now/cloudLib/config.yaml create mode 100644 .github/workflows/cloudLib-build.yaml create mode 100644 .github/workflows/cloudLib-orchestration.yaml create mode 100644 .github/workflows/deploy-to-ionos.yaml diff --git a/.deploy-now/cloudLib/.env.template b/.deploy-now/cloudLib/.env.template new file mode 100644 index 00000000..9e1e5770 --- /dev/null +++ b/.deploy-now/cloudLib/.env.template @@ -0,0 +1,58 @@ +APP_NAME=CloudLib +APP_ENV=production +APP_KEY=base64:eqC6TWnIZ77hryG4g0U74ySYNEZWSslw2SCoZIZcJOU= +APP_DEBUG=false +APP_URL=$IONOS_APP_URL + +LOG_CHANNEL=stack +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_HOST=$IONOS_DB_HOST +DB_PORT=3306 +DB_DATABASE=$IONOS_DB_NAME +DB_USERNAME="$IONOS_DB_USERNAME" +DB_PASSWORD="$IONOS_DB_PASSWORD" + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +FILESYSTEM_DISK=local +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +MEMCACHED_HOST=127.0.0.1 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=$IONOS_MAIL_HOST +MAIL_PORT=$IONOS_MAIL_PORT +MAIL_USERNAME="$IONOS_MAIL_USERNAME" +MAIL_PASSWORD="$IONOS_MAIL_PASSWORD" +MAIL_ENCRYPTION=$IONOS_MAIL_ENCRYPTION +MAIL_FROM_ADDRESS=$IONOS_MAIL_FROM_ADDRESS +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_HOST= +PUSHER_PORT=443 +PUSHER_SCHEME=https +PUSHER_APP_CLUSTER=mt1 + +VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +VITE_PUSHER_HOST="${PUSHER_HOST}" +VITE_PUSHER_PORT="${PUSHER_PORT}" +VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" +VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/.deploy-now/cloudLib/.htaccess.template b/.deploy-now/cloudLib/.htaccess.template new file mode 100644 index 00000000..f5aeb669 --- /dev/null +++ b/.deploy-now/cloudLib/.htaccess.template @@ -0,0 +1,25 @@ +# enable gzip compressing for the following mime-types + + AddOutputFilterByType DEFLATE text/plain + AddOutputFilterByType DEFLATE text/html + AddOutputFilterByType DEFLATE text/xml + AddOutputFilterByType DEFLATE text/shtml + AddOutputFilterByType DEFLATE text/css + AddOutputFilterByType DEFLATE application/xml + AddOutputFilterByType DEFLATE application/xhtml+xml + AddOutputFilterByType DEFLATE application/rss+xml + AddOutputFilterByType DEFLATE application/javascript + AddOutputFilterByType DEFLATE application/x-javascript + + +### IMPORTANT ### +### Because we can't change the webroot folder to a subfolder of the document root, we need this rewrite rules ### + +RewriteEngine on + +# serve existing files in the /public folder as if they were in / +RewriteCond %{REQUEST_URI} !public/ +RewriteRule (.*) /public/$1 [L] + +# route everything else to /public/index.php +RewriteRule ^ /public/index.php [L] \ No newline at end of file diff --git a/.deploy-now/cloudLib/config.yaml b/.deploy-now/cloudLib/config.yaml new file mode 100644 index 00000000..47abdd8b --- /dev/null +++ b/.deploy-now/cloudLib/config.yaml @@ -0,0 +1,54 @@ +version: 1.0 + +deploy: + # configuration part, which is taken at the FIRST deployment of each branch + bootstrap: + # folders that are not copied to IONOS webspace + excludes: + - tests + - node_modules + - DOCKER_ENV + - docker_tag + - output.log + # commands that are executed at the real webspace NOT at build servers AFTER copying new files + post-deployment-remote-commands: + - mkdir storage/logs + - php artisan down + - find $(pwd) -type f -not -path "$(pwd)/logs/*" -exec chmod 664 {} \; + - find $(pwd) -type d -not -name "logs" -exec chmod 775 {} \; + - chmod -R o+w storage bootstrap/cache + - php artisan optimize:clear + - php artisan migrate --force -n + - php artisan storage:link + - php artisan optimize + - php artisan up + + # configuration part, which is taken at ALL FURTHER deployments of this branch + recurring: + # folders that are not copied to IONOS webspace + excludes: + - tests + - node_modules + - DOCKER_ENV + - docker_tag + - output.log + - storage + # commands that are executed at the real webspace NOT at build servers BEFORE copying new files + pre-deployment-remote-commands: + - php artisan down + # commands that are executed at the real webspace NOT at build servers AFTER copying new files + post-deployment-remote-commands: + - find $(pwd) -type f -not -path "$(pwd)/logs/*" -exec chmod 664 {} \; + - find $(pwd) -type d -not -name "logs" -exec chmod 775 {} \; + - chmod -R o+w storage bootstrap/cache + - php artisan optimize:clear + - php artisan migrate --force -n + - php artisan storage:link + - php artisan optimize + - php artisan up + +# uncomment the following lines to configure cron jobs +#runtime: +# cron-jobs: +# - command: my-cron-job-command # the deployment is located at $HOME/htdocs/ to execute a deployed script just prefix it accordingly +# schedule: 0 5 * * * # run every day at 5:00 diff --git a/.github/workflows/cloudLib-build.yaml b/.github/workflows/cloudLib-build.yaml new file mode 100644 index 00000000..bf4a2176 --- /dev/null +++ b/.github/workflows/cloudLib-build.yaml @@ -0,0 +1,84 @@ +# To better understand this file read this: +# https://docs.ionos.space/docs/github-actions-customization/ + +name: "Deploy Now: Execute Build" + +on: + workflow_call: + inputs: + site-url: + required: true + type: string + branch-id: + required: true + type: string + +env: + DEPLOYMENT_FOLDER: ./ + +jobs: +# Please do not rename this job + build-project: + name: build cloudLib + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + # if you add permissions here this needs to be done in the cloudLib-orchestration.yaml as well + steps: + - name: checkout + uses: actions/checkout@v3 + with: + submodules: 'recursive' + + - name: Render templates + uses: ionos-deploy-now/template-renderer-action@v2 + id: template + with: + input-directory: .deploy-now/cloudLib + output-directory: ${{ env.DEPLOYMENT_FOLDER }} + intermediate-data-file: ${{ env.DEPLOYMENT_FOLDER }}/.template-renderer-data + + - name: Setup composer + uses: php-actions/composer@v6 +# uncomment the following lines if you want to add environment variables for this step +# env: +# MY_ENV_VAR: value-for-my-env-var +# MY_SECRET_ENV_VAR: ${{ secrets.MY_SECRET }} # here you can find information how to create secrets: https://docs.github.com/en/actions/security-guides/encrypted-secrets + with: + php_version: '8.1' + version: '2' + args: --optimize-autoloader --no-dev + + - name: Build PHP assets +# uncomment the following lines if you want to add environment variables for this step +# env: +# MY_ENV_VAR: value-for-my-env-var +# MY_SECRET_ENV_VAR: ${{ secrets.MY_SECRET }} # here you can find information how to create secrets: https://docs.github.com/en/actions/security-guides/encrypted-secrets + run: php artisan key:generate --force -n + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: v16.x + + - name: Build Node assets + env: + CI: true + SITE_URL: ${{ inputs.site-url }} + run: | + npm ci + npm run build + +# Please do not touch the following action + - name: Store deployment content + uses: ionos-deploy-now/artifact-action@v1 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: e203b8de-5df6-42bb-b1a2-6636801e7e02 + branch-id: ${{ inputs.branch-id }} + version: ${{ github.sha }} + folder: ${{ env.DEPLOYMENT_FOLDER }} + config-file: .deploy-now/cloudLib/config.yaml + action: upload diff --git a/.github/workflows/cloudLib-orchestration.yaml b/.github/workflows/cloudLib-orchestration.yaml new file mode 100644 index 00000000..57d56ef8 --- /dev/null +++ b/.github/workflows/cloudLib-orchestration.yaml @@ -0,0 +1,58 @@ +# Please do not edit this file. +# Build steps can be customized in the cloudLib-build.yaml. +# More information under https://docs.ionos.space/docs/github-actions-customization/ +# version: 2022-07-21 + +name: "Deploy Now: Orchestration" +run-name: "Deploy Now: Build cloudLib · ${{ github.event.head_commit.message || format('Triggered by {0}', github.triggering_actor) }}" + +on: + - push + - workflow_dispatch + +jobs: + retrieve-project: + name: check readiness + runs-on: ubuntu-latest + outputs: + deployment-enabled: ${{ fromJson(steps.project.outputs.info).deployment-enabled }} + branch-id: ${{ fromJson(steps.project.outputs.info).branch-id }} + steps: + - name: Fetch project data + uses: ionos-deploy-now/project-action@v1 + id: project + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: e203b8de-5df6-42bb-b1a2-6636801e7e02 + action: retrieve-info + + + build: + name: build + needs: retrieve-project + permissions: + contents: read + packages: write + if: ${{ needs.retrieve-project.outputs.deployment-enabled == 'true' }} + uses: ./.github/workflows/cloudLib-build.yaml + with: + site-url: https://IONOS_DEPLOY_NOW_SITE_URL + branch-id: ${{ needs.retrieve-project.outputs.branch-id }} + secrets: inherit + + deploy: + name: trigger deployment + needs: + - retrieve-project + - build + runs-on: ubuntu-latest + steps: + - name: Dispatch deployment(s) + uses: ionos-deploy-now/project-action@v1 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: e203b8de-5df6-42bb-b1a2-6636801e7e02 + branch-id: ${{ needs.retrieve-project.outputs.branch-id }} + action: dispatch-deployments diff --git a/.github/workflows/deploy-to-ionos.yaml b/.github/workflows/deploy-to-ionos.yaml new file mode 100644 index 00000000..f27b685f --- /dev/null +++ b/.github/workflows/deploy-to-ionos.yaml @@ -0,0 +1,125 @@ +# Please do not edit this file. +# More information under https://docs.ionos.space/docs/github-actions-customization/ +# version: 2022-07-21 + +name: "Deploy Now: Deploy to IONOS" + +on: + workflow_dispatch: + inputs: + version: + required: true + type: string + project-id: + required: true + type: string + branch-id: + required: true + type: string + deployment-ids: + require: true + type: string + push: + path: + - ./.github/workflows/deploy-to-ionos.yaml + +concurrency: ${{ github.ref }} + +jobs: + deploy-to-ionos: + if: ${{ github.event_name == 'workflow_dispatch' }} + runs-on: ubuntu-latest + permissions: + actions: read + strategy: + matrix: + deployment-id: ${{ fromJson(inputs.deployment-ids) }} + steps: + - name: Update deployment status + uses: ionos-deploy-now/project-action@v1 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: ${{ inputs.project-id }} + branch-id: ${{ inputs.branch-id }} + deployment-id: ${{ matrix.deployment-id }} + action: update-status + status: in_progress + + - name: Retrieve stored deployment + uses: ionos-deploy-now/artifact-action@v1 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: ${{ inputs.project-id }} + branch-id: ${{ inputs.branch-id }} + version: ${{ inputs.version }} + action: download + + - name: Fetch deployment info + uses: ionos-deploy-now/project-action@v1 + id: deployment + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: ${{ inputs.project-id }} + branch-id: ${{ inputs.branch-id }} + deployment-id: ${{ matrix.deployment-id }} + action: retrieve-info + + - name: Render templates + uses: ionos-deploy-now/template-renderer-action@v2 + id: template + with: + deployment-id: ${{ matrix.deployment-id }} + data: "[${{ steps.deployment.outputs.template-variables }}, ${{ toJson(secrets) }}]" + input-directory: deployment + output-directory: deployment + intermediate-data-file: deployment/.template-renderer-data + + - name: Render real site-url to all files + run: | + for file in `grep -rl 'https://IONOS_DEPLOY_NOW_SITE_URL' .`; do + sed -i $file -e 's|https://IONOS_DEPLOY_NOW_SITE_URL|${{ fromJson(steps.deployment.outputs.info).site-url }}|g' + done + + - name: Render SSH user secret name + run: echo SSH_USERNAME_SECRET=IONOS_DEPLOYMENT_`echo ${{ matrix.deployment-id }} | tr '[:lower:]' '[:upper:]' | tr '-' '_'`_SSH_USERNAME >> $GITHUB_ENV + + - name: Deploy to IONOS + uses: ionos-deploy-now/deploy-to-ionos-action@v2 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: ${{ inputs.project-id }} + branch-id: ${{ inputs.branch-id }} + deployment-id: ${{ matrix.deployment-id }} + deployment-info: ${{ steps.deployment.outputs.info }} + ssh-user: ${{ secrets[env.SSH_USERNAME_SECRET] }} + ssh-key: ${{ secrets.IONOS_SSH_KEY }} + + - name: Update deployment status + if: ${{ always() }} + uses: ionos-deploy-now/project-action@v1 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: ${{ inputs.project-id }} + branch-id: ${{ inputs.branch-id }} + deployment-id: ${{ matrix.deployment-id }} + action: update-status + status: ${{ job.status }} + + notify-deployment-finished: + needs: deploy-to-ionos + if: ${{ github.event_name == 'workflow_dispatch' && always() }} + runs-on: ubuntu-latest + steps: + - name: Notify all deployments finished + uses: ionos-deploy-now/project-action@v1 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: ${{ inputs.project-id }} + branch-id: ${{ inputs.branch-id }} + action: set-deployments-finished From 89bfd1e2036cc7a10da2f537d853b6fc982d61de Mon Sep 17 00:00:00 2001 From: "ionos-deploy-now[bot]" <78917126+ionos-deploy-now[bot]@users.noreply.github.com> Date: Tue, 17 Sep 2024 08:44:21 +0000 Subject: [PATCH 4/4] Remove IONOS Deploy Now workflow from project --- .deploy-now/cloudLib/.env.template | 58 ------------- .deploy-now/cloudLib/.htaccess.template | 25 ------ .deploy-now/cloudLib/config.yaml | 54 ------------ .github/workflows/cloudLib-build.yaml | 84 ------------------- .github/workflows/cloudLib-orchestration.yaml | 58 ------------- 5 files changed, 279 deletions(-) delete mode 100644 .deploy-now/cloudLib/.env.template delete mode 100644 .deploy-now/cloudLib/.htaccess.template delete mode 100644 .deploy-now/cloudLib/config.yaml delete mode 100644 .github/workflows/cloudLib-build.yaml delete mode 100644 .github/workflows/cloudLib-orchestration.yaml diff --git a/.deploy-now/cloudLib/.env.template b/.deploy-now/cloudLib/.env.template deleted file mode 100644 index 9e1e5770..00000000 --- a/.deploy-now/cloudLib/.env.template +++ /dev/null @@ -1,58 +0,0 @@ -APP_NAME=CloudLib -APP_ENV=production -APP_KEY=base64:eqC6TWnIZ77hryG4g0U74ySYNEZWSslw2SCoZIZcJOU= -APP_DEBUG=false -APP_URL=$IONOS_APP_URL - -LOG_CHANNEL=stack -LOG_DEPRECATIONS_CHANNEL=null -LOG_LEVEL=debug - -DB_CONNECTION=mysql -DB_HOST=$IONOS_DB_HOST -DB_PORT=3306 -DB_DATABASE=$IONOS_DB_NAME -DB_USERNAME="$IONOS_DB_USERNAME" -DB_PASSWORD="$IONOS_DB_PASSWORD" - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=$IONOS_MAIL_HOST -MAIL_PORT=$IONOS_MAIL_PORT -MAIL_USERNAME="$IONOS_MAIL_USERNAME" -MAIL_PASSWORD="$IONOS_MAIL_PASSWORD" -MAIL_ENCRYPTION=$IONOS_MAIL_ENCRYPTION -MAIL_FROM_ADDRESS=$IONOS_MAIL_FROM_ADDRESS -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= -AWS_USE_PATH_STYLE_ENDPOINT=false - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= -PUSHER_HOST= -PUSHER_PORT=443 -PUSHER_SCHEME=https -PUSHER_APP_CLUSTER=mt1 - -VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -VITE_PUSHER_HOST="${PUSHER_HOST}" -VITE_PUSHER_PORT="${PUSHER_PORT}" -VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" -VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/.deploy-now/cloudLib/.htaccess.template b/.deploy-now/cloudLib/.htaccess.template deleted file mode 100644 index f5aeb669..00000000 --- a/.deploy-now/cloudLib/.htaccess.template +++ /dev/null @@ -1,25 +0,0 @@ -# enable gzip compressing for the following mime-types - - AddOutputFilterByType DEFLATE text/plain - AddOutputFilterByType DEFLATE text/html - AddOutputFilterByType DEFLATE text/xml - AddOutputFilterByType DEFLATE text/shtml - AddOutputFilterByType DEFLATE text/css - AddOutputFilterByType DEFLATE application/xml - AddOutputFilterByType DEFLATE application/xhtml+xml - AddOutputFilterByType DEFLATE application/rss+xml - AddOutputFilterByType DEFLATE application/javascript - AddOutputFilterByType DEFLATE application/x-javascript - - -### IMPORTANT ### -### Because we can't change the webroot folder to a subfolder of the document root, we need this rewrite rules ### - -RewriteEngine on - -# serve existing files in the /public folder as if they were in / -RewriteCond %{REQUEST_URI} !public/ -RewriteRule (.*) /public/$1 [L] - -# route everything else to /public/index.php -RewriteRule ^ /public/index.php [L] \ No newline at end of file diff --git a/.deploy-now/cloudLib/config.yaml b/.deploy-now/cloudLib/config.yaml deleted file mode 100644 index 47abdd8b..00000000 --- a/.deploy-now/cloudLib/config.yaml +++ /dev/null @@ -1,54 +0,0 @@ -version: 1.0 - -deploy: - # configuration part, which is taken at the FIRST deployment of each branch - bootstrap: - # folders that are not copied to IONOS webspace - excludes: - - tests - - node_modules - - DOCKER_ENV - - docker_tag - - output.log - # commands that are executed at the real webspace NOT at build servers AFTER copying new files - post-deployment-remote-commands: - - mkdir storage/logs - - php artisan down - - find $(pwd) -type f -not -path "$(pwd)/logs/*" -exec chmod 664 {} \; - - find $(pwd) -type d -not -name "logs" -exec chmod 775 {} \; - - chmod -R o+w storage bootstrap/cache - - php artisan optimize:clear - - php artisan migrate --force -n - - php artisan storage:link - - php artisan optimize - - php artisan up - - # configuration part, which is taken at ALL FURTHER deployments of this branch - recurring: - # folders that are not copied to IONOS webspace - excludes: - - tests - - node_modules - - DOCKER_ENV - - docker_tag - - output.log - - storage - # commands that are executed at the real webspace NOT at build servers BEFORE copying new files - pre-deployment-remote-commands: - - php artisan down - # commands that are executed at the real webspace NOT at build servers AFTER copying new files - post-deployment-remote-commands: - - find $(pwd) -type f -not -path "$(pwd)/logs/*" -exec chmod 664 {} \; - - find $(pwd) -type d -not -name "logs" -exec chmod 775 {} \; - - chmod -R o+w storage bootstrap/cache - - php artisan optimize:clear - - php artisan migrate --force -n - - php artisan storage:link - - php artisan optimize - - php artisan up - -# uncomment the following lines to configure cron jobs -#runtime: -# cron-jobs: -# - command: my-cron-job-command # the deployment is located at $HOME/htdocs/ to execute a deployed script just prefix it accordingly -# schedule: 0 5 * * * # run every day at 5:00 diff --git a/.github/workflows/cloudLib-build.yaml b/.github/workflows/cloudLib-build.yaml deleted file mode 100644 index bf4a2176..00000000 --- a/.github/workflows/cloudLib-build.yaml +++ /dev/null @@ -1,84 +0,0 @@ -# To better understand this file read this: -# https://docs.ionos.space/docs/github-actions-customization/ - -name: "Deploy Now: Execute Build" - -on: - workflow_call: - inputs: - site-url: - required: true - type: string - branch-id: - required: true - type: string - -env: - DEPLOYMENT_FOLDER: ./ - -jobs: -# Please do not rename this job - build-project: - name: build cloudLib - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - # if you add permissions here this needs to be done in the cloudLib-orchestration.yaml as well - steps: - - name: checkout - uses: actions/checkout@v3 - with: - submodules: 'recursive' - - - name: Render templates - uses: ionos-deploy-now/template-renderer-action@v2 - id: template - with: - input-directory: .deploy-now/cloudLib - output-directory: ${{ env.DEPLOYMENT_FOLDER }} - intermediate-data-file: ${{ env.DEPLOYMENT_FOLDER }}/.template-renderer-data - - - name: Setup composer - uses: php-actions/composer@v6 -# uncomment the following lines if you want to add environment variables for this step -# env: -# MY_ENV_VAR: value-for-my-env-var -# MY_SECRET_ENV_VAR: ${{ secrets.MY_SECRET }} # here you can find information how to create secrets: https://docs.github.com/en/actions/security-guides/encrypted-secrets - with: - php_version: '8.1' - version: '2' - args: --optimize-autoloader --no-dev - - - name: Build PHP assets -# uncomment the following lines if you want to add environment variables for this step -# env: -# MY_ENV_VAR: value-for-my-env-var -# MY_SECRET_ENV_VAR: ${{ secrets.MY_SECRET }} # here you can find information how to create secrets: https://docs.github.com/en/actions/security-guides/encrypted-secrets - run: php artisan key:generate --force -n - - - name: Setup Node - uses: actions/setup-node@v3 - with: - node-version: v16.x - - - name: Build Node assets - env: - CI: true - SITE_URL: ${{ inputs.site-url }} - run: | - npm ci - npm run build - -# Please do not touch the following action - - name: Store deployment content - uses: ionos-deploy-now/artifact-action@v1 - with: - api-key: ${{ secrets.IONOS_API_KEY }} - service-host: api-eu.ionos.space - project-id: e203b8de-5df6-42bb-b1a2-6636801e7e02 - branch-id: ${{ inputs.branch-id }} - version: ${{ github.sha }} - folder: ${{ env.DEPLOYMENT_FOLDER }} - config-file: .deploy-now/cloudLib/config.yaml - action: upload diff --git a/.github/workflows/cloudLib-orchestration.yaml b/.github/workflows/cloudLib-orchestration.yaml deleted file mode 100644 index 57d56ef8..00000000 --- a/.github/workflows/cloudLib-orchestration.yaml +++ /dev/null @@ -1,58 +0,0 @@ -# Please do not edit this file. -# Build steps can be customized in the cloudLib-build.yaml. -# More information under https://docs.ionos.space/docs/github-actions-customization/ -# version: 2022-07-21 - -name: "Deploy Now: Orchestration" -run-name: "Deploy Now: Build cloudLib · ${{ github.event.head_commit.message || format('Triggered by {0}', github.triggering_actor) }}" - -on: - - push - - workflow_dispatch - -jobs: - retrieve-project: - name: check readiness - runs-on: ubuntu-latest - outputs: - deployment-enabled: ${{ fromJson(steps.project.outputs.info).deployment-enabled }} - branch-id: ${{ fromJson(steps.project.outputs.info).branch-id }} - steps: - - name: Fetch project data - uses: ionos-deploy-now/project-action@v1 - id: project - with: - api-key: ${{ secrets.IONOS_API_KEY }} - service-host: api-eu.ionos.space - project-id: e203b8de-5df6-42bb-b1a2-6636801e7e02 - action: retrieve-info - - - build: - name: build - needs: retrieve-project - permissions: - contents: read - packages: write - if: ${{ needs.retrieve-project.outputs.deployment-enabled == 'true' }} - uses: ./.github/workflows/cloudLib-build.yaml - with: - site-url: https://IONOS_DEPLOY_NOW_SITE_URL - branch-id: ${{ needs.retrieve-project.outputs.branch-id }} - secrets: inherit - - deploy: - name: trigger deployment - needs: - - retrieve-project - - build - runs-on: ubuntu-latest - steps: - - name: Dispatch deployment(s) - uses: ionos-deploy-now/project-action@v1 - with: - api-key: ${{ secrets.IONOS_API_KEY }} - service-host: api-eu.ionos.space - project-id: e203b8de-5df6-42bb-b1a2-6636801e7e02 - branch-id: ${{ needs.retrieve-project.outputs.branch-id }} - action: dispatch-deployments