From 785c03322f2bd56bee34fd00a95d8899236caf82 Mon Sep 17 00:00:00 2001 From: Anyon Date: Sat, 9 Nov 2019 16:53:51 +0800 Subject: [PATCH] ComposerUpdate --- composer.lock | 8 +- vendor/autoload.php | 7 - vendor/composer/ClassLoader.php | 445 ---- vendor/composer/LICENSE | 21 - vendor/composer/autoload_classmap.php | 377 --- vendor/composer/autoload_files.php | 12 - vendor/composer/autoload_namespaces.php | 9 - vendor/composer/autoload_psr4.php | 21 - vendor/composer/autoload_real.php | 70 - vendor/composer/autoload_static.php | 479 ---- vendor/composer/installed.json | 860 ------- .../flysystem-cached-adapter/.editorconfig | 10 - .../flysystem-cached-adapter/.gitignore | 4 - .../league/flysystem-cached-adapter/.php_cs | 7 - .../flysystem-cached-adapter/.scrutinizer.yml | 34 - .../flysystem-cached-adapter/.travis.yml | 29 - .../league/flysystem-cached-adapter/LICENSE | 19 - .../clover/.gitignore | 2 - .../flysystem-cached-adapter/composer.json | 30 - .../flysystem-cached-adapter/phpspec.yml | 6 - .../flysystem-cached-adapter/phpunit.php | 3 - .../flysystem-cached-adapter/phpunit.xml | 29 - .../league/flysystem-cached-adapter/readme.md | 20 - .../spec/CachedAdapterSpec.php | 435 ---- .../src/CacheInterface.php | 101 - .../src/CachedAdapter.php | 324 --- .../src/Storage/AbstractCache.php | 417 ---- .../src/Storage/Adapter.php | 115 - .../src/Storage/Memcached.php | 59 - .../src/Storage/Memory.php | 22 - .../src/Storage/Noop.php | 171 -- .../src/Storage/PhpRedis.php | 62 - .../src/Storage/Predis.php | 75 - .../src/Storage/Psr6Cache.php | 59 - .../src/Storage/Stash.php | 60 - .../tests/AdapterCacheTests.php | 104 - .../tests/InspectionTests.php | 16 - .../tests/MemcachedTests.php | 35 - .../tests/MemoryCacheTests.php | 255 -- .../tests/NoopCacheTests.php | 35 - .../tests/PhpRedisTests.php | 45 - .../tests/PredisTests.php | 55 - .../tests/Psr6CacheTest.php | 45 - .../tests/StashTest.php | 43 - vendor/league/flysystem/LICENSE | 19 - vendor/league/flysystem/composer.json | 64 - vendor/league/flysystem/deprecations.md | 19 - .../flysystem/src/Adapter/AbstractAdapter.php | 72 - .../src/Adapter/AbstractFtpAdapter.php | 693 ------ .../src/Adapter/CanOverwriteFiles.php | 12 - vendor/league/flysystem/src/Adapter/Ftp.php | 572 ----- vendor/league/flysystem/src/Adapter/Ftpd.php | 45 - vendor/league/flysystem/src/Adapter/Local.php | 528 ---- .../flysystem/src/Adapter/NullAdapter.php | 144 -- .../Polyfill/NotSupportingVisibilityTrait.php | 33 - .../Adapter/Polyfill/StreamedCopyTrait.php | 51 - .../Adapter/Polyfill/StreamedReadingTrait.php | 44 - .../src/Adapter/Polyfill/StreamedTrait.php | 9 - .../Adapter/Polyfill/StreamedWritingTrait.php | 60 - .../flysystem/src/Adapter/SynologyFtp.php | 8 - .../league/flysystem/src/AdapterInterface.php | 118 - vendor/league/flysystem/src/Config.php | 107 - .../league/flysystem/src/ConfigAwareTrait.php | 49 - vendor/league/flysystem/src/Directory.php | 31 - vendor/league/flysystem/src/Exception.php | 8 - vendor/league/flysystem/src/File.php | 205 -- .../flysystem/src/FileExistsException.php | 37 - .../flysystem/src/FileNotFoundException.php | 37 - vendor/league/flysystem/src/Filesystem.php | 408 ---- .../flysystem/src/FilesystemInterface.php | 284 --- .../src/FilesystemNotFoundException.php | 12 - vendor/league/flysystem/src/Handler.php | 137 -- vendor/league/flysystem/src/MountManager.php | 648 ----- .../flysystem/src/NotSupportedException.php | 37 - .../flysystem/src/Plugin/AbstractPlugin.php | 24 - .../league/flysystem/src/Plugin/EmptyDir.php | 34 - .../flysystem/src/Plugin/ForcedCopy.php | 44 - .../flysystem/src/Plugin/ForcedRename.php | 44 - .../flysystem/src/Plugin/GetWithMetadata.php | 51 - .../league/flysystem/src/Plugin/ListFiles.php | 35 - .../league/flysystem/src/Plugin/ListPaths.php | 36 - .../league/flysystem/src/Plugin/ListWith.php | 60 - .../flysystem/src/Plugin/PluggableTrait.php | 97 - .../src/Plugin/PluginNotFoundException.php | 10 - .../league/flysystem/src/PluginInterface.php | 20 - vendor/league/flysystem/src/ReadInterface.php | 88 - .../flysystem/src/RootViolationException.php | 10 - vendor/league/flysystem/src/SafeStorage.php | 39 - .../flysystem/src/UnreadableFileException.php | 18 - vendor/league/flysystem/src/Util.php | 349 --- .../src/Util/ContentListingFormatter.php | 122 - vendor/league/flysystem/src/Util/MimeType.php | 245 -- .../flysystem/src/Util/StreamHasher.php | 36 - vendor/opis/closure/CHANGELOG.md | 207 -- vendor/opis/closure/LICENSE | 20 - vendor/opis/closure/NOTICE | 9 - vendor/opis/closure/README.md | 98 - vendor/opis/closure/autoload.php | 39 - vendor/opis/closure/composer.json | 40 - vendor/opis/closure/functions.php | 38 - vendor/opis/closure/src/Analyzer.php | 59 - vendor/opis/closure/src/ClosureContext.php | 34 - vendor/opis/closure/src/ClosureScope.php | 25 - vendor/opis/closure/src/ClosureStream.php | 94 - vendor/opis/closure/src/ISecurityProvider.php | 25 - vendor/opis/closure/src/ReflectionClosure.php | 939 -------- vendor/opis/closure/src/SecurityException.php | 18 - vendor/opis/closure/src/SecurityProvider.php | 42 - vendor/opis/closure/src/SelfReference.php | 31 - .../opis/closure/src/SerializableClosure.php | 668 ------ vendor/psr/cache/CHANGELOG.md | 16 - vendor/psr/cache/LICENSE.txt | 19 - vendor/psr/cache/README.md | 9 - vendor/psr/cache/composer.json | 25 - vendor/psr/cache/src/CacheException.php | 10 - vendor/psr/cache/src/CacheItemInterface.php | 105 - .../psr/cache/src/CacheItemPoolInterface.php | 138 -- .../cache/src/InvalidArgumentException.php | 13 - vendor/psr/container/.gitignore | 3 - vendor/psr/container/LICENSE | 21 - vendor/psr/container/README.md | 5 - vendor/psr/container/composer.json | 27 - .../src/ContainerExceptionInterface.php | 13 - .../psr/container/src/ContainerInterface.php | 37 - .../src/NotFoundExceptionInterface.php | 13 - vendor/psr/log/.gitignore | 1 - vendor/psr/log/LICENSE | 19 - vendor/psr/log/Psr/Log/AbstractLogger.php | 128 - .../log/Psr/Log/InvalidArgumentException.php | 7 - vendor/psr/log/Psr/Log/LogLevel.php | 18 - .../psr/log/Psr/Log/LoggerAwareInterface.php | 18 - vendor/psr/log/Psr/Log/LoggerAwareTrait.php | 26 - vendor/psr/log/Psr/Log/LoggerInterface.php | 125 - vendor/psr/log/Psr/Log/LoggerTrait.php | 142 -- vendor/psr/log/Psr/Log/NullLogger.php | 30 - .../log/Psr/Log/Test/LoggerInterfaceTest.php | 146 -- vendor/psr/log/Psr/Log/Test/TestLogger.php | 147 -- vendor/psr/log/README.md | 58 - vendor/psr/log/composer.json | 26 - vendor/psr/simple-cache/.editorconfig | 12 - vendor/psr/simple-cache/LICENSE.md | 21 - vendor/psr/simple-cache/README.md | 8 - vendor/psr/simple-cache/composer.json | 25 - .../psr/simple-cache/src/CacheException.php | 10 - .../psr/simple-cache/src/CacheInterface.php | 114 - .../src/InvalidArgumentException.php | 13 - vendor/services.php | 7 - vendor/topthink/framework/.gitignore | 7 - vendor/topthink/framework/.travis.yml | 34 - vendor/topthink/framework/CONTRIBUTING.md | 119 - vendor/topthink/framework/LICENSE.txt | 32 - vendor/topthink/framework/README.md | 86 - vendor/topthink/framework/composer.json | 55 - vendor/topthink/framework/logo.png | Bin 6995 -> 0 bytes vendor/topthink/framework/phpunit.xml.dist | 25 - vendor/topthink/framework/src/helper.php | 663 ------ vendor/topthink/framework/src/lang/zh-cn.php | 148 -- vendor/topthink/framework/src/think/App.php | 610 ----- vendor/topthink/framework/src/think/Cache.php | 197 -- .../topthink/framework/src/think/Config.php | 193 -- .../topthink/framework/src/think/Console.php | 732 ------ .../framework/src/think/Container.php | 551 ----- .../topthink/framework/src/think/Cookie.php | 207 -- vendor/topthink/framework/src/think/Db.php | 114 - vendor/topthink/framework/src/think/Env.php | 181 -- vendor/topthink/framework/src/think/Event.php | 300 --- .../framework/src/think/Exception.php | 60 - .../topthink/framework/src/think/Facade.php | 98 - vendor/topthink/framework/src/think/File.php | 187 -- .../framework/src/think/Filesystem.php | 89 - vendor/topthink/framework/src/think/Http.php | 285 --- vendor/topthink/framework/src/think/Lang.php | 277 --- vendor/topthink/framework/src/think/Log.php | 342 --- .../topthink/framework/src/think/Manager.php | 176 -- .../framework/src/think/Middleware.php | 259 -- .../topthink/framework/src/think/Pipeline.php | 106 - .../topthink/framework/src/think/Request.php | 2119 ----------------- .../topthink/framework/src/think/Response.php | 409 ---- vendor/topthink/framework/src/think/Route.php | 894 ------- .../topthink/framework/src/think/Service.php | 66 - .../topthink/framework/src/think/Session.php | 65 - .../topthink/framework/src/think/Validate.php | 1674 ------------- vendor/topthink/framework/src/think/View.php | 187 -- .../framework/src/think/cache/Driver.php | 346 --- .../framework/src/think/cache/TagSet.php | 130 - .../framework/src/think/cache/driver/File.php | 304 --- .../src/think/cache/driver/Memcache.php | 209 -- .../src/think/cache/driver/Memcached.php | 218 -- .../src/think/cache/driver/Redis.php | 248 -- .../src/think/cache/driver/Wincache.php | 175 -- .../framework/src/think/console/Command.php | 504 ---- .../framework/src/think/console/Input.php | 465 ---- .../framework/src/think/console/LICENSE | 19 - .../framework/src/think/console/Output.php | 224 -- .../framework/src/think/console/Table.php | 300 --- .../framework/src/think/console/bin/README.md | 1 - .../src/think/console/bin/hiddeninput.exe | Bin 9216 -> 0 bytes .../src/think/console/command/Clear.php | 64 - .../src/think/console/command/Help.php | 69 - .../src/think/console/command/Lists.php | 73 - .../src/think/console/command/Make.php | 99 - .../src/think/console/command/RouteList.php | 129 - .../src/think/console/command/RunServer.php | 57 - .../think/console/command/ServiceDiscover.php | 48 - .../think/console/command/VendorPublish.php | 66 - .../src/think/console/command/Version.php | 33 - .../think/console/command/make/Command.php | 55 - .../think/console/command/make/Controller.php | 56 - .../src/think/console/command/make/Event.php | 35 - .../think/console/command/make/Listener.php | 35 - .../think/console/command/make/Middleware.php | 36 - .../src/think/console/command/make/Model.php | 36 - .../think/console/command/make/Service.php | 36 - .../think/console/command/make/Subscribe.php | 35 - .../think/console/command/make/Validate.php | 39 - .../console/command/make/stubs/command.stub | 26 - .../command/make/stubs/controller.api.stub | 64 - .../command/make/stubs/controller.plain.stub | 9 - .../command/make/stubs/controller.stub | 85 - .../console/command/make/stubs/event.stub | 8 - .../console/command/make/stubs/listener.stub | 17 - .../command/make/stubs/middleware.stub | 19 - .../console/command/make/stubs/model.stub | 14 - .../console/command/make/stubs/service.stub | 29 - .../console/command/make/stubs/subscribe.stub | 8 - .../console/command/make/stubs/validate.stub | 25 - .../think/console/command/optimize/Route.php | 67 - .../think/console/command/optimize/Schema.php | 116 - .../src/think/console/input/Argument.php | 115 - .../src/think/console/input/Definition.php | 375 --- .../src/think/console/input/Option.php | 190 -- .../src/think/console/output/Ask.php | 336 --- .../src/think/console/output/Descriptor.php | 319 --- .../src/think/console/output/Formatter.php | 198 -- .../src/think/console/output/Question.php | 211 -- .../console/output/descriptor/Console.php | 153 -- .../think/console/output/driver/Buffer.php | 52 - .../think/console/output/driver/Console.php | 368 --- .../think/console/output/driver/Nothing.php | 33 - .../think/console/output/formatter/Stack.php | 116 - .../think/console/output/formatter/Style.php | 190 -- .../think/console/output/question/Choice.php | 163 -- .../console/output/question/Confirmation.php | 57 - .../think/contract/CacheHandlerInterface.php | 88 - .../think/contract/LogHandlerInterface.php | 28 - .../think/contract/ModelRelationInterface.php | 99 - .../contract/SessionHandlerInterface.php | 23 - .../contract/TemplateHandlerInterface.php | 61 - .../framework/src/think/event/AppInit.php | 19 - .../framework/src/think/event/HttpEnd.php | 19 - .../framework/src/think/event/HttpRun.php | 19 - .../framework/src/think/event/LogWrite.php | 31 - .../framework/src/think/event/RouteLoaded.php | 21 - .../exception/ClassNotFoundException.php | 39 - .../src/think/exception/ErrorException.php | 57 - .../src/think/exception/FileException.php | 17 - .../think/exception/FuncNotFoundException.php | 30 - .../framework/src/think/exception/Handle.php | 323 --- .../src/think/exception/HttpException.php | 42 - .../think/exception/HttpResponseException.php | 37 - .../exception/InvalidArgumentException.php | 22 - .../exception/RouteNotFoundException.php | 26 - .../src/think/exception/ValidateException.php | 37 - .../framework/src/think/facade/App.php | 33 - .../framework/src/think/facade/Cache.php | 33 - .../framework/src/think/facade/Config.php | 33 - .../framework/src/think/facade/Console.php | 33 - .../framework/src/think/facade/Cookie.php | 33 - .../framework/src/think/facade/Env.php | 33 - .../framework/src/think/facade/Event.php | 33 - .../framework/src/think/facade/Filesystem.php | 28 - .../framework/src/think/facade/Lang.php | 33 - .../framework/src/think/facade/Log.php | 33 - .../framework/src/think/facade/Middleware.php | 33 - .../framework/src/think/facade/Request.php | 33 - .../framework/src/think/facade/Route.php | 33 - .../framework/src/think/facade/Session.php | 33 - .../framework/src/think/facade/Validate.php | 39 - .../framework/src/think/facade/View.php | 33 - .../framework/src/think/file/UploadedFile.php | 143 -- .../src/think/filesystem/CacheStore.php | 54 - .../framework/src/think/filesystem/Driver.php | 133 -- .../src/think/filesystem/driver/Local.php | 41 - .../src/think/initializer/BootService.php | 26 - .../framework/src/think/initializer/Error.php | 117 - .../src/think/initializer/RegisterService.php | 48 - .../framework/src/think/log/Channel.php | 282 --- .../framework/src/think/log/ChannelSet.php | 39 - .../framework/src/think/log/driver/File.php | 205 -- .../framework/src/think/log/driver/Socket.php | 271 --- .../src/think/middleware/AllowCrossDomain.php | 66 - .../think/middleware/CheckRequestCache.php | 163 -- .../src/think/middleware/FormTokenCheck.php | 45 - .../src/think/middleware/LoadLangPack.php | 61 - .../src/think/middleware/SessionInit.php | 80 - .../framework/src/think/response/File.php | 145 -- .../framework/src/think/response/Html.php | 34 - .../framework/src/think/response/Json.php | 62 - .../framework/src/think/response/Jsonp.php | 74 - .../framework/src/think/response/Redirect.php | 98 - .../framework/src/think/response/View.php | 149 -- .../framework/src/think/response/Xml.php | 127 - .../framework/src/think/route/Dispatch.php | 265 --- .../framework/src/think/route/Domain.php | 183 -- .../framework/src/think/route/Resource.php | 251 -- .../framework/src/think/route/Rule.php | 925 ------- .../framework/src/think/route/RuleGroup.php | 541 ----- .../framework/src/think/route/RuleItem.php | 330 --- .../framework/src/think/route/RuleName.php | 195 -- .../framework/src/think/route/Url.php | 507 ---- .../src/think/route/dispatch/Callback.php | 30 - .../src/think/route/dispatch/Controller.php | 175 -- .../src/think/route/dispatch/Redirect.php | 27 - .../src/think/route/dispatch/Response.php | 27 - .../src/think/route/dispatch/Url.php | 118 - .../src/think/route/dispatch/View.php | 28 - .../src/think/service/ModelService.php | 47 - .../src/think/service/PaginatorService.php | 52 - .../src/think/service/ValidateService.php | 31 - .../framework/src/think/session/Store.php | 340 --- .../src/think/session/driver/Cache.php | 50 - .../src/think/session/driver/File.php | 249 -- .../src/think/validate/ValidateRule.php | 172 -- .../framework/src/think/view/driver/Php.php | 195 -- .../framework/src/tpl/think_exception.tpl | 505 ---- vendor/topthink/framework/tests/AppTest.php | 215 -- vendor/topthink/framework/tests/CacheTest.php | 149 -- .../topthink/framework/tests/ConfigTest.php | 46 - .../framework/tests/ContainerTest.php | 313 --- vendor/topthink/framework/tests/DbTest.php | 44 - vendor/topthink/framework/tests/EnvTest.php | 82 - vendor/topthink/framework/tests/EventTest.php | 143 -- .../framework/tests/FilesystemTest.php | 131 - vendor/topthink/framework/tests/HttpTest.php | 154 -- vendor/topthink/framework/tests/LogTest.php | 143 -- .../framework/tests/MiddlewareTest.php | 121 - .../topthink/framework/tests/SessionTest.php | 225 -- vendor/topthink/framework/tests/ViewTest.php | 127 - vendor/topthink/framework/tests/bootstrap.php | 3 - vendor/topthink/think-helper/.gitignore | 3 - vendor/topthink/think-helper/LICENSE | 201 -- vendor/topthink/think-helper/README.md | 33 - vendor/topthink/think-helper/composer.json | 22 - .../topthink/think-helper/src/Collection.php | 651 ----- .../think-helper/src/contract/Arrayable.php | 8 - .../think-helper/src/contract/Jsonable.php | 8 - vendor/topthink/think-helper/src/helper.php | 279 --- .../topthink/think-helper/src/helper/Arr.php | 634 ----- .../topthink/think-helper/src/helper/Str.php | 234 -- vendor/topthink/think-multi-app/LICENSE | 201 -- vendor/topthink/think-multi-app/README.md | 14 - vendor/topthink/think-multi-app/composer.json | 28 - .../topthink/think-multi-app/src/MultiApp.php | 255 -- .../topthink/think-multi-app/src/Service.php | 29 - vendor/topthink/think-multi-app/src/Url.php | 224 -- .../think-multi-app/src/command/Build.php | 180 -- .../src/command/stubs/controller.stub | 12 - vendor/topthink/think-orm/.gitignore | 3 - vendor/topthink/think-orm/LICENSE | 201 -- vendor/topthink/think-orm/README.md | 27 - vendor/topthink/think-orm/composer.json | 28 - vendor/topthink/think-orm/src/DbManager.php | 406 ---- vendor/topthink/think-orm/src/Model.php | 981 -------- vendor/topthink/think-orm/src/Paginator.php | 497 ---- .../topthink/think-orm/src/db/BaseQuery.php | 1270 ---------- vendor/topthink/think-orm/src/db/Builder.php | 1281 ---------- .../topthink/think-orm/src/db/CacheItem.php | 209 -- .../topthink/think-orm/src/db/Connection.php | 275 --- .../think-orm/src/db/ConnectionInterface.php | 196 -- vendor/topthink/think-orm/src/db/Fetch.php | 493 ---- vendor/topthink/think-orm/src/db/Mongo.php | 715 ------ .../think-orm/src/db/PDOConnection.php | 1686 ------------- vendor/topthink/think-orm/src/db/Query.php | 493 ---- vendor/topthink/think-orm/src/db/Raw.php | 52 - vendor/topthink/think-orm/src/db/Where.php | 182 -- .../think-orm/src/db/builder/Mongo.php | 675 ------ .../think-orm/src/db/builder/Mysql.php | 421 ---- .../think-orm/src/db/builder/Oracle.php | 95 - .../think-orm/src/db/builder/Pgsql.php | 118 - .../think-orm/src/db/builder/Sqlite.php | 97 - .../think-orm/src/db/builder/Sqlsrv.php | 184 -- .../src/db/concern/AggregateQuery.php | 107 - .../src/db/concern/JoinAndViewQuery.php | 229 -- .../src/db/concern/ModelRelationQuery.php | 516 ---- .../think-orm/src/db/concern/ParamsBind.php | 106 - .../src/db/concern/ResultOperation.php | 248 -- .../src/db/concern/TableFieldInfo.php | 99 - .../src/db/concern/TimeFieldQuery.php | 214 -- .../think-orm/src/db/concern/Transaction.php | 117 - .../think-orm/src/db/concern/WhereQuery.php | 540 ----- .../think-orm/src/db/connector/Mongo.php | 1055 -------- .../think-orm/src/db/connector/Mysql.php | 162 -- .../think-orm/src/db/connector/Oracle.php | 117 - .../think-orm/src/db/connector/Pgsql.php | 108 - .../think-orm/src/db/connector/Sqlite.php | 96 - .../think-orm/src/db/connector/Sqlsrv.php | 122 - .../think-orm/src/db/connector/pgsql.sql | 117 - .../src/db/exception/BindParamException.php | 35 - .../db/exception/DataNotFoundException.php | 43 - .../src/db/exception/DbException.php | 81 - .../db/exception/InvalidArgumentException.php | 21 - .../src/db/exception/ModelEventException.php | 19 - .../db/exception/ModelNotFoundException.php | 44 - .../src/db/exception/PDOException.php | 41 - vendor/topthink/think-orm/src/facade/Db.php | 86 - .../think-orm/src/model/Collection.php | 250 -- vendor/topthink/think-orm/src/model/Pivot.php | 53 - .../topthink/think-orm/src/model/Relation.php | 258 -- .../think-orm/src/model/concern/Attribute.php | 651 ----- .../src/model/concern/Conversion.php | 278 --- .../src/model/concern/ModelEvent.php | 88 - .../think-orm/src/model/concern/OptimLock.php | 85 - .../src/model/concern/RelationShip.php | 781 ------ .../src/model/concern/SoftDelete.php | 246 -- .../think-orm/src/model/concern/TimeStamp.php | 208 -- .../src/model/relation/BelongsTo.php | 331 --- .../src/model/relation/BelongsToMany.php | 708 ------ .../think-orm/src/model/relation/HasMany.php | 367 --- .../src/model/relation/HasManyThrough.php | 382 --- .../think-orm/src/model/relation/HasOne.php | 300 --- .../src/model/relation/HasOneThrough.php | 163 -- .../src/model/relation/MorphMany.php | 353 --- .../think-orm/src/model/relation/MorphOne.php | 280 --- .../think-orm/src/model/relation/MorphTo.php | 333 --- .../think-orm/src/model/relation/OneToOne.php | 332 --- .../src/paginator/driver/Bootstrap.php | 209 -- vendor/topthink/think-template/.gitignore | 1 - vendor/topthink/think-template/LICENSE | 201 -- vendor/topthink/think-template/README.md | 70 - vendor/topthink/think-template/composer.json | 20 - .../topthink/think-template/src/Template.php | 1320 ---------- .../think-template/src/facade/Template.php | 83 - .../think-template/src/template/TagLib.php | 349 --- .../src/template/driver/File.php | 83 - .../exception/TemplateNotFoundException.php | 33 - .../think-template/src/template/taglib/Cx.php | 715 ------ vendor/topthink/think-view/.gitignore | 1 - vendor/topthink/think-view/LICENSE | 201 -- vendor/topthink/think-view/README.md | 36 - vendor/topthink/think-view/composer.json | 20 - vendor/topthink/think-view/src/Think.php | 263 -- vendor/zoujingli/ip2region/.gitignore | 2 - vendor/zoujingli/ip2region/Ip2Region.php | 343 --- vendor/zoujingli/ip2region/LICENSE.md | 225 -- vendor/zoujingli/ip2region/README.md | 50 - vendor/zoujingli/ip2region/composer.json | 25 - vendor/zoujingli/ip2region/ip2region.db | Bin 7516319 -> 0 bytes vendor/zoujingli/ip2region/test.php | 20 - vendor/zoujingli/think-library/.gitignore | 8 - vendor/zoujingli/think-library/composer.json | 35 - vendor/zoujingli/think-library/readme.md | 225 -- .../think-library/src/Controller.php | 259 -- vendor/zoujingli/think-library/src/Helper.php | 77 - vendor/zoujingli/think-library/src/Queue.php | 117 - .../zoujingli/think-library/src/Service.php | 70 - .../zoujingli/think-library/src/Storage.php | 129 - .../think-library/src/ThinkLibrary.php | 80 - vendor/zoujingli/think-library/src/common.php | 196 -- .../think-library/src/extend/CodeExtend.php | 71 - .../think-library/src/extend/CsvExtend.php | 71 - .../think-library/src/extend/DataExtend.php | 115 - .../src/extend/ExpressExtend.php | 58 - .../think-library/src/extend/HttpExtend.php | 142 -- .../src/extend/ProcessExtend.php | 141 -- .../think-library/src/extend/bin/console.exe | Bin 1536 -> 0 bytes .../think-library/src/helper/DeleteHelper.php | 86 - .../think-library/src/helper/FormHelper.php | 103 - .../think-library/src/helper/PageHelper.php | 114 - .../think-library/src/helper/QueryHelper.php | 227 -- .../think-library/src/helper/SaveHelper.php | 91 - .../think-library/src/helper/TokenHelper.php | 77 - .../src/install/CommandInstall.php | 122 - .../think-library/src/queue/ListenQueue.php | 72 - .../think-library/src/queue/QueryQueue.php | 52 - .../think-library/src/queue/StartQueue.php | 61 - .../think-library/src/queue/StateQueue.php | 52 - .../think-library/src/queue/StopQueue.php | 54 - .../think-library/src/queue/WorkQueue.php | 109 - .../think-library/src/service/AuthService.php | 108 - .../src/service/CaptchaService.php | 143 -- .../src/service/InstallService.php | 233 -- .../think-library/src/service/MenuService.php | 98 - .../think-library/src/service/NodeService.php | 139 -- .../src/service/TokenService.php | 67 - .../think-library/src/service/bin/font.ttf | Bin 34852 -> 0 bytes .../src/storage/LocalStorage.php | 142 -- .../src/storage/QiniuStorage.php | 227 -- .../think-library/src/storage/bin/mimes.php | 1000 -------- 488 files changed, 4 insertions(+), 78860 deletions(-) delete mode 100644 vendor/autoload.php delete mode 100644 vendor/composer/ClassLoader.php delete mode 100644 vendor/composer/LICENSE delete mode 100644 vendor/composer/autoload_classmap.php delete mode 100644 vendor/composer/autoload_files.php delete mode 100644 vendor/composer/autoload_namespaces.php delete mode 100644 vendor/composer/autoload_psr4.php delete mode 100644 vendor/composer/autoload_real.php delete mode 100644 vendor/composer/autoload_static.php delete mode 100644 vendor/composer/installed.json delete mode 100644 vendor/league/flysystem-cached-adapter/.editorconfig delete mode 100644 vendor/league/flysystem-cached-adapter/.gitignore delete mode 100644 vendor/league/flysystem-cached-adapter/.php_cs delete mode 100644 vendor/league/flysystem-cached-adapter/.scrutinizer.yml delete mode 100644 vendor/league/flysystem-cached-adapter/.travis.yml delete mode 100644 vendor/league/flysystem-cached-adapter/LICENSE delete mode 100644 vendor/league/flysystem-cached-adapter/clover/.gitignore delete mode 100644 vendor/league/flysystem-cached-adapter/composer.json delete mode 100644 vendor/league/flysystem-cached-adapter/phpspec.yml delete mode 100644 vendor/league/flysystem-cached-adapter/phpunit.php delete mode 100644 vendor/league/flysystem-cached-adapter/phpunit.xml delete mode 100644 vendor/league/flysystem-cached-adapter/readme.md delete mode 100644 vendor/league/flysystem-cached-adapter/spec/CachedAdapterSpec.php delete mode 100644 vendor/league/flysystem-cached-adapter/src/CacheInterface.php delete mode 100644 vendor/league/flysystem-cached-adapter/src/CachedAdapter.php delete mode 100644 vendor/league/flysystem-cached-adapter/src/Storage/AbstractCache.php delete mode 100644 vendor/league/flysystem-cached-adapter/src/Storage/Adapter.php delete mode 100644 vendor/league/flysystem-cached-adapter/src/Storage/Memcached.php delete mode 100644 vendor/league/flysystem-cached-adapter/src/Storage/Memory.php delete mode 100644 vendor/league/flysystem-cached-adapter/src/Storage/Noop.php delete mode 100644 vendor/league/flysystem-cached-adapter/src/Storage/PhpRedis.php delete mode 100644 vendor/league/flysystem-cached-adapter/src/Storage/Predis.php delete mode 100644 vendor/league/flysystem-cached-adapter/src/Storage/Psr6Cache.php delete mode 100644 vendor/league/flysystem-cached-adapter/src/Storage/Stash.php delete mode 100644 vendor/league/flysystem-cached-adapter/tests/AdapterCacheTests.php delete mode 100644 vendor/league/flysystem-cached-adapter/tests/InspectionTests.php delete mode 100644 vendor/league/flysystem-cached-adapter/tests/MemcachedTests.php delete mode 100644 vendor/league/flysystem-cached-adapter/tests/MemoryCacheTests.php delete mode 100644 vendor/league/flysystem-cached-adapter/tests/NoopCacheTests.php delete mode 100644 vendor/league/flysystem-cached-adapter/tests/PhpRedisTests.php delete mode 100644 vendor/league/flysystem-cached-adapter/tests/PredisTests.php delete mode 100644 vendor/league/flysystem-cached-adapter/tests/Psr6CacheTest.php delete mode 100644 vendor/league/flysystem-cached-adapter/tests/StashTest.php delete mode 100644 vendor/league/flysystem/LICENSE delete mode 100644 vendor/league/flysystem/composer.json delete mode 100644 vendor/league/flysystem/deprecations.md delete mode 100644 vendor/league/flysystem/src/Adapter/AbstractAdapter.php delete mode 100644 vendor/league/flysystem/src/Adapter/AbstractFtpAdapter.php delete mode 100644 vendor/league/flysystem/src/Adapter/CanOverwriteFiles.php delete mode 100644 vendor/league/flysystem/src/Adapter/Ftp.php delete mode 100644 vendor/league/flysystem/src/Adapter/Ftpd.php delete mode 100644 vendor/league/flysystem/src/Adapter/Local.php delete mode 100644 vendor/league/flysystem/src/Adapter/NullAdapter.php delete mode 100644 vendor/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php delete mode 100644 vendor/league/flysystem/src/Adapter/Polyfill/StreamedCopyTrait.php delete mode 100644 vendor/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php delete mode 100644 vendor/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php delete mode 100644 vendor/league/flysystem/src/Adapter/Polyfill/StreamedWritingTrait.php delete mode 100644 vendor/league/flysystem/src/Adapter/SynologyFtp.php delete mode 100644 vendor/league/flysystem/src/AdapterInterface.php delete mode 100644 vendor/league/flysystem/src/Config.php delete mode 100644 vendor/league/flysystem/src/ConfigAwareTrait.php delete mode 100644 vendor/league/flysystem/src/Directory.php delete mode 100644 vendor/league/flysystem/src/Exception.php delete mode 100644 vendor/league/flysystem/src/File.php delete mode 100644 vendor/league/flysystem/src/FileExistsException.php delete mode 100644 vendor/league/flysystem/src/FileNotFoundException.php delete mode 100644 vendor/league/flysystem/src/Filesystem.php delete mode 100644 vendor/league/flysystem/src/FilesystemInterface.php delete mode 100644 vendor/league/flysystem/src/FilesystemNotFoundException.php delete mode 100644 vendor/league/flysystem/src/Handler.php delete mode 100644 vendor/league/flysystem/src/MountManager.php delete mode 100644 vendor/league/flysystem/src/NotSupportedException.php delete mode 100644 vendor/league/flysystem/src/Plugin/AbstractPlugin.php delete mode 100644 vendor/league/flysystem/src/Plugin/EmptyDir.php delete mode 100644 vendor/league/flysystem/src/Plugin/ForcedCopy.php delete mode 100644 vendor/league/flysystem/src/Plugin/ForcedRename.php delete mode 100644 vendor/league/flysystem/src/Plugin/GetWithMetadata.php delete mode 100644 vendor/league/flysystem/src/Plugin/ListFiles.php delete mode 100644 vendor/league/flysystem/src/Plugin/ListPaths.php delete mode 100644 vendor/league/flysystem/src/Plugin/ListWith.php delete mode 100644 vendor/league/flysystem/src/Plugin/PluggableTrait.php delete mode 100644 vendor/league/flysystem/src/Plugin/PluginNotFoundException.php delete mode 100644 vendor/league/flysystem/src/PluginInterface.php delete mode 100644 vendor/league/flysystem/src/ReadInterface.php delete mode 100644 vendor/league/flysystem/src/RootViolationException.php delete mode 100644 vendor/league/flysystem/src/SafeStorage.php delete mode 100644 vendor/league/flysystem/src/UnreadableFileException.php delete mode 100644 vendor/league/flysystem/src/Util.php delete mode 100644 vendor/league/flysystem/src/Util/ContentListingFormatter.php delete mode 100644 vendor/league/flysystem/src/Util/MimeType.php delete mode 100644 vendor/league/flysystem/src/Util/StreamHasher.php delete mode 100644 vendor/opis/closure/CHANGELOG.md delete mode 100644 vendor/opis/closure/LICENSE delete mode 100644 vendor/opis/closure/NOTICE delete mode 100644 vendor/opis/closure/README.md delete mode 100644 vendor/opis/closure/autoload.php delete mode 100644 vendor/opis/closure/composer.json delete mode 100644 vendor/opis/closure/functions.php delete mode 100644 vendor/opis/closure/src/Analyzer.php delete mode 100644 vendor/opis/closure/src/ClosureContext.php delete mode 100644 vendor/opis/closure/src/ClosureScope.php delete mode 100644 vendor/opis/closure/src/ClosureStream.php delete mode 100644 vendor/opis/closure/src/ISecurityProvider.php delete mode 100644 vendor/opis/closure/src/ReflectionClosure.php delete mode 100644 vendor/opis/closure/src/SecurityException.php delete mode 100644 vendor/opis/closure/src/SecurityProvider.php delete mode 100644 vendor/opis/closure/src/SelfReference.php delete mode 100644 vendor/opis/closure/src/SerializableClosure.php delete mode 100644 vendor/psr/cache/CHANGELOG.md delete mode 100644 vendor/psr/cache/LICENSE.txt delete mode 100644 vendor/psr/cache/README.md delete mode 100644 vendor/psr/cache/composer.json delete mode 100644 vendor/psr/cache/src/CacheException.php delete mode 100644 vendor/psr/cache/src/CacheItemInterface.php delete mode 100644 vendor/psr/cache/src/CacheItemPoolInterface.php delete mode 100644 vendor/psr/cache/src/InvalidArgumentException.php delete mode 100644 vendor/psr/container/.gitignore delete mode 100644 vendor/psr/container/LICENSE delete mode 100644 vendor/psr/container/README.md delete mode 100644 vendor/psr/container/composer.json delete mode 100644 vendor/psr/container/src/ContainerExceptionInterface.php delete mode 100644 vendor/psr/container/src/ContainerInterface.php delete mode 100644 vendor/psr/container/src/NotFoundExceptionInterface.php delete mode 100644 vendor/psr/log/.gitignore delete mode 100644 vendor/psr/log/LICENSE delete mode 100644 vendor/psr/log/Psr/Log/AbstractLogger.php delete mode 100644 vendor/psr/log/Psr/Log/InvalidArgumentException.php delete mode 100644 vendor/psr/log/Psr/Log/LogLevel.php delete mode 100644 vendor/psr/log/Psr/Log/LoggerAwareInterface.php delete mode 100644 vendor/psr/log/Psr/Log/LoggerAwareTrait.php delete mode 100644 vendor/psr/log/Psr/Log/LoggerInterface.php delete mode 100644 vendor/psr/log/Psr/Log/LoggerTrait.php delete mode 100644 vendor/psr/log/Psr/Log/NullLogger.php delete mode 100644 vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php delete mode 100644 vendor/psr/log/Psr/Log/Test/TestLogger.php delete mode 100644 vendor/psr/log/README.md delete mode 100644 vendor/psr/log/composer.json delete mode 100644 vendor/psr/simple-cache/.editorconfig delete mode 100644 vendor/psr/simple-cache/LICENSE.md delete mode 100644 vendor/psr/simple-cache/README.md delete mode 100644 vendor/psr/simple-cache/composer.json delete mode 100644 vendor/psr/simple-cache/src/CacheException.php delete mode 100644 vendor/psr/simple-cache/src/CacheInterface.php delete mode 100644 vendor/psr/simple-cache/src/InvalidArgumentException.php delete mode 100644 vendor/services.php delete mode 100644 vendor/topthink/framework/.gitignore delete mode 100644 vendor/topthink/framework/.travis.yml delete mode 100644 vendor/topthink/framework/CONTRIBUTING.md delete mode 100644 vendor/topthink/framework/LICENSE.txt delete mode 100644 vendor/topthink/framework/README.md delete mode 100644 vendor/topthink/framework/composer.json delete mode 100644 vendor/topthink/framework/logo.png delete mode 100644 vendor/topthink/framework/phpunit.xml.dist delete mode 100644 vendor/topthink/framework/src/helper.php delete mode 100644 vendor/topthink/framework/src/lang/zh-cn.php delete mode 100644 vendor/topthink/framework/src/think/App.php delete mode 100644 vendor/topthink/framework/src/think/Cache.php delete mode 100644 vendor/topthink/framework/src/think/Config.php delete mode 100644 vendor/topthink/framework/src/think/Console.php delete mode 100644 vendor/topthink/framework/src/think/Container.php delete mode 100644 vendor/topthink/framework/src/think/Cookie.php delete mode 100644 vendor/topthink/framework/src/think/Db.php delete mode 100644 vendor/topthink/framework/src/think/Env.php delete mode 100644 vendor/topthink/framework/src/think/Event.php delete mode 100644 vendor/topthink/framework/src/think/Exception.php delete mode 100644 vendor/topthink/framework/src/think/Facade.php delete mode 100644 vendor/topthink/framework/src/think/File.php delete mode 100644 vendor/topthink/framework/src/think/Filesystem.php delete mode 100644 vendor/topthink/framework/src/think/Http.php delete mode 100644 vendor/topthink/framework/src/think/Lang.php delete mode 100644 vendor/topthink/framework/src/think/Log.php delete mode 100644 vendor/topthink/framework/src/think/Manager.php delete mode 100644 vendor/topthink/framework/src/think/Middleware.php delete mode 100644 vendor/topthink/framework/src/think/Pipeline.php delete mode 100644 vendor/topthink/framework/src/think/Request.php delete mode 100644 vendor/topthink/framework/src/think/Response.php delete mode 100644 vendor/topthink/framework/src/think/Route.php delete mode 100644 vendor/topthink/framework/src/think/Service.php delete mode 100644 vendor/topthink/framework/src/think/Session.php delete mode 100644 vendor/topthink/framework/src/think/Validate.php delete mode 100644 vendor/topthink/framework/src/think/View.php delete mode 100644 vendor/topthink/framework/src/think/cache/Driver.php delete mode 100644 vendor/topthink/framework/src/think/cache/TagSet.php delete mode 100644 vendor/topthink/framework/src/think/cache/driver/File.php delete mode 100644 vendor/topthink/framework/src/think/cache/driver/Memcache.php delete mode 100644 vendor/topthink/framework/src/think/cache/driver/Memcached.php delete mode 100644 vendor/topthink/framework/src/think/cache/driver/Redis.php delete mode 100644 vendor/topthink/framework/src/think/cache/driver/Wincache.php delete mode 100644 vendor/topthink/framework/src/think/console/Command.php delete mode 100644 vendor/topthink/framework/src/think/console/Input.php delete mode 100644 vendor/topthink/framework/src/think/console/LICENSE delete mode 100644 vendor/topthink/framework/src/think/console/Output.php delete mode 100644 vendor/topthink/framework/src/think/console/Table.php delete mode 100644 vendor/topthink/framework/src/think/console/bin/README.md delete mode 100644 vendor/topthink/framework/src/think/console/bin/hiddeninput.exe delete mode 100644 vendor/topthink/framework/src/think/console/command/Clear.php delete mode 100644 vendor/topthink/framework/src/think/console/command/Help.php delete mode 100644 vendor/topthink/framework/src/think/console/command/Lists.php delete mode 100644 vendor/topthink/framework/src/think/console/command/Make.php delete mode 100644 vendor/topthink/framework/src/think/console/command/RouteList.php delete mode 100644 vendor/topthink/framework/src/think/console/command/RunServer.php delete mode 100644 vendor/topthink/framework/src/think/console/command/ServiceDiscover.php delete mode 100644 vendor/topthink/framework/src/think/console/command/VendorPublish.php delete mode 100644 vendor/topthink/framework/src/think/console/command/Version.php delete mode 100644 vendor/topthink/framework/src/think/console/command/make/Command.php delete mode 100644 vendor/topthink/framework/src/think/console/command/make/Controller.php delete mode 100644 vendor/topthink/framework/src/think/console/command/make/Event.php delete mode 100644 vendor/topthink/framework/src/think/console/command/make/Listener.php delete mode 100644 vendor/topthink/framework/src/think/console/command/make/Middleware.php delete mode 100644 vendor/topthink/framework/src/think/console/command/make/Model.php delete mode 100644 vendor/topthink/framework/src/think/console/command/make/Service.php delete mode 100644 vendor/topthink/framework/src/think/console/command/make/Subscribe.php delete mode 100644 vendor/topthink/framework/src/think/console/command/make/Validate.php delete mode 100644 vendor/topthink/framework/src/think/console/command/make/stubs/command.stub delete mode 100644 vendor/topthink/framework/src/think/console/command/make/stubs/controller.api.stub delete mode 100644 vendor/topthink/framework/src/think/console/command/make/stubs/controller.plain.stub delete mode 100644 vendor/topthink/framework/src/think/console/command/make/stubs/controller.stub delete mode 100644 vendor/topthink/framework/src/think/console/command/make/stubs/event.stub delete mode 100644 vendor/topthink/framework/src/think/console/command/make/stubs/listener.stub delete mode 100644 vendor/topthink/framework/src/think/console/command/make/stubs/middleware.stub delete mode 100644 vendor/topthink/framework/src/think/console/command/make/stubs/model.stub delete mode 100644 vendor/topthink/framework/src/think/console/command/make/stubs/service.stub delete mode 100644 vendor/topthink/framework/src/think/console/command/make/stubs/subscribe.stub delete mode 100644 vendor/topthink/framework/src/think/console/command/make/stubs/validate.stub delete mode 100644 vendor/topthink/framework/src/think/console/command/optimize/Route.php delete mode 100644 vendor/topthink/framework/src/think/console/command/optimize/Schema.php delete mode 100644 vendor/topthink/framework/src/think/console/input/Argument.php delete mode 100644 vendor/topthink/framework/src/think/console/input/Definition.php delete mode 100644 vendor/topthink/framework/src/think/console/input/Option.php delete mode 100644 vendor/topthink/framework/src/think/console/output/Ask.php delete mode 100644 vendor/topthink/framework/src/think/console/output/Descriptor.php delete mode 100644 vendor/topthink/framework/src/think/console/output/Formatter.php delete mode 100644 vendor/topthink/framework/src/think/console/output/Question.php delete mode 100644 vendor/topthink/framework/src/think/console/output/descriptor/Console.php delete mode 100644 vendor/topthink/framework/src/think/console/output/driver/Buffer.php delete mode 100644 vendor/topthink/framework/src/think/console/output/driver/Console.php delete mode 100644 vendor/topthink/framework/src/think/console/output/driver/Nothing.php delete mode 100644 vendor/topthink/framework/src/think/console/output/formatter/Stack.php delete mode 100644 vendor/topthink/framework/src/think/console/output/formatter/Style.php delete mode 100644 vendor/topthink/framework/src/think/console/output/question/Choice.php delete mode 100644 vendor/topthink/framework/src/think/console/output/question/Confirmation.php delete mode 100644 vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php delete mode 100644 vendor/topthink/framework/src/think/contract/LogHandlerInterface.php delete mode 100644 vendor/topthink/framework/src/think/contract/ModelRelationInterface.php delete mode 100644 vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php delete mode 100644 vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php delete mode 100644 vendor/topthink/framework/src/think/event/AppInit.php delete mode 100644 vendor/topthink/framework/src/think/event/HttpEnd.php delete mode 100644 vendor/topthink/framework/src/think/event/HttpRun.php delete mode 100644 vendor/topthink/framework/src/think/event/LogWrite.php delete mode 100644 vendor/topthink/framework/src/think/event/RouteLoaded.php delete mode 100644 vendor/topthink/framework/src/think/exception/ClassNotFoundException.php delete mode 100644 vendor/topthink/framework/src/think/exception/ErrorException.php delete mode 100644 vendor/topthink/framework/src/think/exception/FileException.php delete mode 100644 vendor/topthink/framework/src/think/exception/FuncNotFoundException.php delete mode 100644 vendor/topthink/framework/src/think/exception/Handle.php delete mode 100644 vendor/topthink/framework/src/think/exception/HttpException.php delete mode 100644 vendor/topthink/framework/src/think/exception/HttpResponseException.php delete mode 100644 vendor/topthink/framework/src/think/exception/InvalidArgumentException.php delete mode 100644 vendor/topthink/framework/src/think/exception/RouteNotFoundException.php delete mode 100644 vendor/topthink/framework/src/think/exception/ValidateException.php delete mode 100644 vendor/topthink/framework/src/think/facade/App.php delete mode 100644 vendor/topthink/framework/src/think/facade/Cache.php delete mode 100644 vendor/topthink/framework/src/think/facade/Config.php delete mode 100644 vendor/topthink/framework/src/think/facade/Console.php delete mode 100644 vendor/topthink/framework/src/think/facade/Cookie.php delete mode 100644 vendor/topthink/framework/src/think/facade/Env.php delete mode 100644 vendor/topthink/framework/src/think/facade/Event.php delete mode 100644 vendor/topthink/framework/src/think/facade/Filesystem.php delete mode 100644 vendor/topthink/framework/src/think/facade/Lang.php delete mode 100644 vendor/topthink/framework/src/think/facade/Log.php delete mode 100644 vendor/topthink/framework/src/think/facade/Middleware.php delete mode 100644 vendor/topthink/framework/src/think/facade/Request.php delete mode 100644 vendor/topthink/framework/src/think/facade/Route.php delete mode 100644 vendor/topthink/framework/src/think/facade/Session.php delete mode 100644 vendor/topthink/framework/src/think/facade/Validate.php delete mode 100644 vendor/topthink/framework/src/think/facade/View.php delete mode 100644 vendor/topthink/framework/src/think/file/UploadedFile.php delete mode 100644 vendor/topthink/framework/src/think/filesystem/CacheStore.php delete mode 100644 vendor/topthink/framework/src/think/filesystem/Driver.php delete mode 100644 vendor/topthink/framework/src/think/filesystem/driver/Local.php delete mode 100644 vendor/topthink/framework/src/think/initializer/BootService.php delete mode 100644 vendor/topthink/framework/src/think/initializer/Error.php delete mode 100644 vendor/topthink/framework/src/think/initializer/RegisterService.php delete mode 100644 vendor/topthink/framework/src/think/log/Channel.php delete mode 100644 vendor/topthink/framework/src/think/log/ChannelSet.php delete mode 100644 vendor/topthink/framework/src/think/log/driver/File.php delete mode 100644 vendor/topthink/framework/src/think/log/driver/Socket.php delete mode 100644 vendor/topthink/framework/src/think/middleware/AllowCrossDomain.php delete mode 100644 vendor/topthink/framework/src/think/middleware/CheckRequestCache.php delete mode 100644 vendor/topthink/framework/src/think/middleware/FormTokenCheck.php delete mode 100644 vendor/topthink/framework/src/think/middleware/LoadLangPack.php delete mode 100644 vendor/topthink/framework/src/think/middleware/SessionInit.php delete mode 100644 vendor/topthink/framework/src/think/response/File.php delete mode 100644 vendor/topthink/framework/src/think/response/Html.php delete mode 100644 vendor/topthink/framework/src/think/response/Json.php delete mode 100644 vendor/topthink/framework/src/think/response/Jsonp.php delete mode 100644 vendor/topthink/framework/src/think/response/Redirect.php delete mode 100644 vendor/topthink/framework/src/think/response/View.php delete mode 100644 vendor/topthink/framework/src/think/response/Xml.php delete mode 100644 vendor/topthink/framework/src/think/route/Dispatch.php delete mode 100644 vendor/topthink/framework/src/think/route/Domain.php delete mode 100644 vendor/topthink/framework/src/think/route/Resource.php delete mode 100644 vendor/topthink/framework/src/think/route/Rule.php delete mode 100644 vendor/topthink/framework/src/think/route/RuleGroup.php delete mode 100644 vendor/topthink/framework/src/think/route/RuleItem.php delete mode 100644 vendor/topthink/framework/src/think/route/RuleName.php delete mode 100644 vendor/topthink/framework/src/think/route/Url.php delete mode 100644 vendor/topthink/framework/src/think/route/dispatch/Callback.php delete mode 100644 vendor/topthink/framework/src/think/route/dispatch/Controller.php delete mode 100644 vendor/topthink/framework/src/think/route/dispatch/Redirect.php delete mode 100644 vendor/topthink/framework/src/think/route/dispatch/Response.php delete mode 100644 vendor/topthink/framework/src/think/route/dispatch/Url.php delete mode 100644 vendor/topthink/framework/src/think/route/dispatch/View.php delete mode 100644 vendor/topthink/framework/src/think/service/ModelService.php delete mode 100644 vendor/topthink/framework/src/think/service/PaginatorService.php delete mode 100644 vendor/topthink/framework/src/think/service/ValidateService.php delete mode 100644 vendor/topthink/framework/src/think/session/Store.php delete mode 100644 vendor/topthink/framework/src/think/session/driver/Cache.php delete mode 100644 vendor/topthink/framework/src/think/session/driver/File.php delete mode 100644 vendor/topthink/framework/src/think/validate/ValidateRule.php delete mode 100644 vendor/topthink/framework/src/think/view/driver/Php.php delete mode 100644 vendor/topthink/framework/src/tpl/think_exception.tpl delete mode 100644 vendor/topthink/framework/tests/AppTest.php delete mode 100644 vendor/topthink/framework/tests/CacheTest.php delete mode 100644 vendor/topthink/framework/tests/ConfigTest.php delete mode 100644 vendor/topthink/framework/tests/ContainerTest.php delete mode 100644 vendor/topthink/framework/tests/DbTest.php delete mode 100644 vendor/topthink/framework/tests/EnvTest.php delete mode 100644 vendor/topthink/framework/tests/EventTest.php delete mode 100644 vendor/topthink/framework/tests/FilesystemTest.php delete mode 100644 vendor/topthink/framework/tests/HttpTest.php delete mode 100644 vendor/topthink/framework/tests/LogTest.php delete mode 100644 vendor/topthink/framework/tests/MiddlewareTest.php delete mode 100644 vendor/topthink/framework/tests/SessionTest.php delete mode 100644 vendor/topthink/framework/tests/ViewTest.php delete mode 100644 vendor/topthink/framework/tests/bootstrap.php delete mode 100644 vendor/topthink/think-helper/.gitignore delete mode 100644 vendor/topthink/think-helper/LICENSE delete mode 100644 vendor/topthink/think-helper/README.md delete mode 100644 vendor/topthink/think-helper/composer.json delete mode 100644 vendor/topthink/think-helper/src/Collection.php delete mode 100644 vendor/topthink/think-helper/src/contract/Arrayable.php delete mode 100644 vendor/topthink/think-helper/src/contract/Jsonable.php delete mode 100644 vendor/topthink/think-helper/src/helper.php delete mode 100644 vendor/topthink/think-helper/src/helper/Arr.php delete mode 100644 vendor/topthink/think-helper/src/helper/Str.php delete mode 100644 vendor/topthink/think-multi-app/LICENSE delete mode 100644 vendor/topthink/think-multi-app/README.md delete mode 100644 vendor/topthink/think-multi-app/composer.json delete mode 100644 vendor/topthink/think-multi-app/src/MultiApp.php delete mode 100644 vendor/topthink/think-multi-app/src/Service.php delete mode 100644 vendor/topthink/think-multi-app/src/Url.php delete mode 100644 vendor/topthink/think-multi-app/src/command/Build.php delete mode 100644 vendor/topthink/think-multi-app/src/command/stubs/controller.stub delete mode 100644 vendor/topthink/think-orm/.gitignore delete mode 100644 vendor/topthink/think-orm/LICENSE delete mode 100644 vendor/topthink/think-orm/README.md delete mode 100644 vendor/topthink/think-orm/composer.json delete mode 100644 vendor/topthink/think-orm/src/DbManager.php delete mode 100644 vendor/topthink/think-orm/src/Model.php delete mode 100644 vendor/topthink/think-orm/src/Paginator.php delete mode 100644 vendor/topthink/think-orm/src/db/BaseQuery.php delete mode 100644 vendor/topthink/think-orm/src/db/Builder.php delete mode 100644 vendor/topthink/think-orm/src/db/CacheItem.php delete mode 100644 vendor/topthink/think-orm/src/db/Connection.php delete mode 100644 vendor/topthink/think-orm/src/db/ConnectionInterface.php delete mode 100644 vendor/topthink/think-orm/src/db/Fetch.php delete mode 100644 vendor/topthink/think-orm/src/db/Mongo.php delete mode 100644 vendor/topthink/think-orm/src/db/PDOConnection.php delete mode 100644 vendor/topthink/think-orm/src/db/Query.php delete mode 100644 vendor/topthink/think-orm/src/db/Raw.php delete mode 100644 vendor/topthink/think-orm/src/db/Where.php delete mode 100644 vendor/topthink/think-orm/src/db/builder/Mongo.php delete mode 100644 vendor/topthink/think-orm/src/db/builder/Mysql.php delete mode 100644 vendor/topthink/think-orm/src/db/builder/Oracle.php delete mode 100644 vendor/topthink/think-orm/src/db/builder/Pgsql.php delete mode 100644 vendor/topthink/think-orm/src/db/builder/Sqlite.php delete mode 100644 vendor/topthink/think-orm/src/db/builder/Sqlsrv.php delete mode 100644 vendor/topthink/think-orm/src/db/concern/AggregateQuery.php delete mode 100644 vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php delete mode 100644 vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php delete mode 100644 vendor/topthink/think-orm/src/db/concern/ParamsBind.php delete mode 100644 vendor/topthink/think-orm/src/db/concern/ResultOperation.php delete mode 100644 vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php delete mode 100644 vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php delete mode 100644 vendor/topthink/think-orm/src/db/concern/Transaction.php delete mode 100644 vendor/topthink/think-orm/src/db/concern/WhereQuery.php delete mode 100644 vendor/topthink/think-orm/src/db/connector/Mongo.php delete mode 100644 vendor/topthink/think-orm/src/db/connector/Mysql.php delete mode 100644 vendor/topthink/think-orm/src/db/connector/Oracle.php delete mode 100644 vendor/topthink/think-orm/src/db/connector/Pgsql.php delete mode 100644 vendor/topthink/think-orm/src/db/connector/Sqlite.php delete mode 100644 vendor/topthink/think-orm/src/db/connector/Sqlsrv.php delete mode 100644 vendor/topthink/think-orm/src/db/connector/pgsql.sql delete mode 100644 vendor/topthink/think-orm/src/db/exception/BindParamException.php delete mode 100644 vendor/topthink/think-orm/src/db/exception/DataNotFoundException.php delete mode 100644 vendor/topthink/think-orm/src/db/exception/DbException.php delete mode 100644 vendor/topthink/think-orm/src/db/exception/InvalidArgumentException.php delete mode 100644 vendor/topthink/think-orm/src/db/exception/ModelEventException.php delete mode 100644 vendor/topthink/think-orm/src/db/exception/ModelNotFoundException.php delete mode 100644 vendor/topthink/think-orm/src/db/exception/PDOException.php delete mode 100644 vendor/topthink/think-orm/src/facade/Db.php delete mode 100644 vendor/topthink/think-orm/src/model/Collection.php delete mode 100644 vendor/topthink/think-orm/src/model/Pivot.php delete mode 100644 vendor/topthink/think-orm/src/model/Relation.php delete mode 100644 vendor/topthink/think-orm/src/model/concern/Attribute.php delete mode 100644 vendor/topthink/think-orm/src/model/concern/Conversion.php delete mode 100644 vendor/topthink/think-orm/src/model/concern/ModelEvent.php delete mode 100644 vendor/topthink/think-orm/src/model/concern/OptimLock.php delete mode 100644 vendor/topthink/think-orm/src/model/concern/RelationShip.php delete mode 100644 vendor/topthink/think-orm/src/model/concern/SoftDelete.php delete mode 100644 vendor/topthink/think-orm/src/model/concern/TimeStamp.php delete mode 100644 vendor/topthink/think-orm/src/model/relation/BelongsTo.php delete mode 100644 vendor/topthink/think-orm/src/model/relation/BelongsToMany.php delete mode 100644 vendor/topthink/think-orm/src/model/relation/HasMany.php delete mode 100644 vendor/topthink/think-orm/src/model/relation/HasManyThrough.php delete mode 100644 vendor/topthink/think-orm/src/model/relation/HasOne.php delete mode 100644 vendor/topthink/think-orm/src/model/relation/HasOneThrough.php delete mode 100644 vendor/topthink/think-orm/src/model/relation/MorphMany.php delete mode 100644 vendor/topthink/think-orm/src/model/relation/MorphOne.php delete mode 100644 vendor/topthink/think-orm/src/model/relation/MorphTo.php delete mode 100644 vendor/topthink/think-orm/src/model/relation/OneToOne.php delete mode 100644 vendor/topthink/think-orm/src/paginator/driver/Bootstrap.php delete mode 100644 vendor/topthink/think-template/.gitignore delete mode 100644 vendor/topthink/think-template/LICENSE delete mode 100644 vendor/topthink/think-template/README.md delete mode 100644 vendor/topthink/think-template/composer.json delete mode 100644 vendor/topthink/think-template/src/Template.php delete mode 100644 vendor/topthink/think-template/src/facade/Template.php delete mode 100644 vendor/topthink/think-template/src/template/TagLib.php delete mode 100644 vendor/topthink/think-template/src/template/driver/File.php delete mode 100644 vendor/topthink/think-template/src/template/exception/TemplateNotFoundException.php delete mode 100644 vendor/topthink/think-template/src/template/taglib/Cx.php delete mode 100644 vendor/topthink/think-view/.gitignore delete mode 100644 vendor/topthink/think-view/LICENSE delete mode 100644 vendor/topthink/think-view/README.md delete mode 100644 vendor/topthink/think-view/composer.json delete mode 100644 vendor/topthink/think-view/src/Think.php delete mode 100644 vendor/zoujingli/ip2region/.gitignore delete mode 100644 vendor/zoujingli/ip2region/Ip2Region.php delete mode 100644 vendor/zoujingli/ip2region/LICENSE.md delete mode 100644 vendor/zoujingli/ip2region/README.md delete mode 100644 vendor/zoujingli/ip2region/composer.json delete mode 100644 vendor/zoujingli/ip2region/ip2region.db delete mode 100644 vendor/zoujingli/ip2region/test.php delete mode 100644 vendor/zoujingli/think-library/.gitignore delete mode 100644 vendor/zoujingli/think-library/composer.json delete mode 100644 vendor/zoujingli/think-library/readme.md delete mode 100644 vendor/zoujingli/think-library/src/Controller.php delete mode 100644 vendor/zoujingli/think-library/src/Helper.php delete mode 100644 vendor/zoujingli/think-library/src/Queue.php delete mode 100644 vendor/zoujingli/think-library/src/Service.php delete mode 100644 vendor/zoujingli/think-library/src/Storage.php delete mode 100644 vendor/zoujingli/think-library/src/ThinkLibrary.php delete mode 100644 vendor/zoujingli/think-library/src/common.php delete mode 100644 vendor/zoujingli/think-library/src/extend/CodeExtend.php delete mode 100644 vendor/zoujingli/think-library/src/extend/CsvExtend.php delete mode 100644 vendor/zoujingli/think-library/src/extend/DataExtend.php delete mode 100644 vendor/zoujingli/think-library/src/extend/ExpressExtend.php delete mode 100644 vendor/zoujingli/think-library/src/extend/HttpExtend.php delete mode 100644 vendor/zoujingli/think-library/src/extend/ProcessExtend.php delete mode 100644 vendor/zoujingli/think-library/src/extend/bin/console.exe delete mode 100644 vendor/zoujingli/think-library/src/helper/DeleteHelper.php delete mode 100644 vendor/zoujingli/think-library/src/helper/FormHelper.php delete mode 100644 vendor/zoujingli/think-library/src/helper/PageHelper.php delete mode 100644 vendor/zoujingli/think-library/src/helper/QueryHelper.php delete mode 100644 vendor/zoujingli/think-library/src/helper/SaveHelper.php delete mode 100644 vendor/zoujingli/think-library/src/helper/TokenHelper.php delete mode 100644 vendor/zoujingli/think-library/src/install/CommandInstall.php delete mode 100644 vendor/zoujingli/think-library/src/queue/ListenQueue.php delete mode 100644 vendor/zoujingli/think-library/src/queue/QueryQueue.php delete mode 100644 vendor/zoujingli/think-library/src/queue/StartQueue.php delete mode 100644 vendor/zoujingli/think-library/src/queue/StateQueue.php delete mode 100644 vendor/zoujingli/think-library/src/queue/StopQueue.php delete mode 100644 vendor/zoujingli/think-library/src/queue/WorkQueue.php delete mode 100644 vendor/zoujingli/think-library/src/service/AuthService.php delete mode 100644 vendor/zoujingli/think-library/src/service/CaptchaService.php delete mode 100644 vendor/zoujingli/think-library/src/service/InstallService.php delete mode 100644 vendor/zoujingli/think-library/src/service/MenuService.php delete mode 100644 vendor/zoujingli/think-library/src/service/NodeService.php delete mode 100644 vendor/zoujingli/think-library/src/service/TokenService.php delete mode 100644 vendor/zoujingli/think-library/src/service/bin/font.ttf delete mode 100644 vendor/zoujingli/think-library/src/storage/LocalStorage.php delete mode 100644 vendor/zoujingli/think-library/src/storage/QiniuStorage.php delete mode 100644 vendor/zoujingli/think-library/src/storage/bin/mimes.php diff --git a/composer.lock b/composer.lock index c92910fe3..b5a2abc37 100644 --- a/composer.lock +++ b/composer.lock @@ -783,12 +783,12 @@ "source": { "type": "git", "url": "https://github.com/zoujingli/ThinkLibrary.git", - "reference": "397b530b37fc26f3fe6fa6c9730f2f013b53b734" + "reference": "7a15cd255ad668fe0b7505d1b886e74190640aec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/397b530b37fc26f3fe6fa6c9730f2f013b53b734", - "reference": "397b530b37fc26f3fe6fa6c9730f2f013b53b734", + "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/7a15cd255ad668fe0b7505d1b886e74190640aec", + "reference": "7a15cd255ad668fe0b7505d1b886e74190640aec", "shasum": "", "mirrors": [ { @@ -832,7 +832,7 @@ ], "description": "ThinkPHP v6.0 Development Library", "homepage": "http://framework.thinkadmin.top", - "time": "2019-11-09T08:17:20+00:00" + "time": "2019-11-09T08:50:25+00:00" } ], "packages-dev": [], diff --git a/vendor/autoload.php b/vendor/autoload.php deleted file mode 100644 index 173cb894c..000000000 --- a/vendor/autoload.php +++ /dev/null @@ -1,7 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see http://www.php-fig.org/psr/psr-0/ - * @see http://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - // PSR-4 - private $prefixLengthsPsr4 = array(); - private $prefixDirsPsr4 = array(); - private $fallbackDirsPsr4 = array(); - - // PSR-0 - private $prefixesPsr0 = array(); - private $fallbackDirsPsr0 = array(); - - private $useIncludePath = false; - private $classMap = array(); - private $classMapAuthoritative = false; - private $missingClasses = array(); - private $apcuPrefix; - - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', $this->prefixesPsr0); - } - - return array(); - } - - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - (array) $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - (array) $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - (array) $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 base directories - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - } - - /** - * Unregisters this instance as an autoloader. - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return bool|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - includeFile($file); - - return true; - } - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } -} - -/** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - */ -function includeFile($file) -{ - include $file; -} diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE deleted file mode 100644 index f27399a04..000000000 --- a/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php deleted file mode 100644 index 595f23c20..000000000 --- a/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,377 +0,0 @@ - $vendorDir . '/zoujingli/ip2region/Ip2Region.php', - 'League\\Flysystem\\AdapterInterface' => $vendorDir . '/league/flysystem/src/AdapterInterface.php', - 'League\\Flysystem\\Adapter\\AbstractAdapter' => $vendorDir . '/league/flysystem/src/Adapter/AbstractAdapter.php', - 'League\\Flysystem\\Adapter\\AbstractFtpAdapter' => $vendorDir . '/league/flysystem/src/Adapter/AbstractFtpAdapter.php', - 'League\\Flysystem\\Adapter\\CanOverwriteFiles' => $vendorDir . '/league/flysystem/src/Adapter/CanOverwriteFiles.php', - 'League\\Flysystem\\Adapter\\Ftp' => $vendorDir . '/league/flysystem/src/Adapter/Ftp.php', - 'League\\Flysystem\\Adapter\\Ftpd' => $vendorDir . '/league/flysystem/src/Adapter/Ftpd.php', - 'League\\Flysystem\\Adapter\\Local' => $vendorDir . '/league/flysystem/src/Adapter/Local.php', - 'League\\Flysystem\\Adapter\\NullAdapter' => $vendorDir . '/league/flysystem/src/Adapter/NullAdapter.php', - 'League\\Flysystem\\Adapter\\Polyfill\\NotSupportingVisibilityTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php', - 'League\\Flysystem\\Adapter\\Polyfill\\StreamedCopyTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/StreamedCopyTrait.php', - 'League\\Flysystem\\Adapter\\Polyfill\\StreamedReadingTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php', - 'League\\Flysystem\\Adapter\\Polyfill\\StreamedTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php', - 'League\\Flysystem\\Adapter\\Polyfill\\StreamedWritingTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/StreamedWritingTrait.php', - 'League\\Flysystem\\Adapter\\SynologyFtp' => $vendorDir . '/league/flysystem/src/Adapter/SynologyFtp.php', - 'League\\Flysystem\\Cached\\CacheInterface' => $vendorDir . '/league/flysystem-cached-adapter/src/CacheInterface.php', - 'League\\Flysystem\\Cached\\CachedAdapter' => $vendorDir . '/league/flysystem-cached-adapter/src/CachedAdapter.php', - 'League\\Flysystem\\Cached\\Storage\\AbstractCache' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/AbstractCache.php', - 'League\\Flysystem\\Cached\\Storage\\Adapter' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Adapter.php', - 'League\\Flysystem\\Cached\\Storage\\Memcached' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Memcached.php', - 'League\\Flysystem\\Cached\\Storage\\Memory' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Memory.php', - 'League\\Flysystem\\Cached\\Storage\\Noop' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Noop.php', - 'League\\Flysystem\\Cached\\Storage\\PhpRedis' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/PhpRedis.php', - 'League\\Flysystem\\Cached\\Storage\\Predis' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Predis.php', - 'League\\Flysystem\\Cached\\Storage\\Psr6Cache' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Psr6Cache.php', - 'League\\Flysystem\\Cached\\Storage\\Stash' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Stash.php', - 'League\\Flysystem\\Config' => $vendorDir . '/league/flysystem/src/Config.php', - 'League\\Flysystem\\ConfigAwareTrait' => $vendorDir . '/league/flysystem/src/ConfigAwareTrait.php', - 'League\\Flysystem\\Directory' => $vendorDir . '/league/flysystem/src/Directory.php', - 'League\\Flysystem\\Exception' => $vendorDir . '/league/flysystem/src/Exception.php', - 'League\\Flysystem\\File' => $vendorDir . '/league/flysystem/src/File.php', - 'League\\Flysystem\\FileExistsException' => $vendorDir . '/league/flysystem/src/FileExistsException.php', - 'League\\Flysystem\\FileNotFoundException' => $vendorDir . '/league/flysystem/src/FileNotFoundException.php', - 'League\\Flysystem\\Filesystem' => $vendorDir . '/league/flysystem/src/Filesystem.php', - 'League\\Flysystem\\FilesystemInterface' => $vendorDir . '/league/flysystem/src/FilesystemInterface.php', - 'League\\Flysystem\\FilesystemNotFoundException' => $vendorDir . '/league/flysystem/src/FilesystemNotFoundException.php', - 'League\\Flysystem\\Handler' => $vendorDir . '/league/flysystem/src/Handler.php', - 'League\\Flysystem\\MountManager' => $vendorDir . '/league/flysystem/src/MountManager.php', - 'League\\Flysystem\\NotSupportedException' => $vendorDir . '/league/flysystem/src/NotSupportedException.php', - 'League\\Flysystem\\PluginInterface' => $vendorDir . '/league/flysystem/src/PluginInterface.php', - 'League\\Flysystem\\Plugin\\AbstractPlugin' => $vendorDir . '/league/flysystem/src/Plugin/AbstractPlugin.php', - 'League\\Flysystem\\Plugin\\EmptyDir' => $vendorDir . '/league/flysystem/src/Plugin/EmptyDir.php', - 'League\\Flysystem\\Plugin\\ForcedCopy' => $vendorDir . '/league/flysystem/src/Plugin/ForcedCopy.php', - 'League\\Flysystem\\Plugin\\ForcedRename' => $vendorDir . '/league/flysystem/src/Plugin/ForcedRename.php', - 'League\\Flysystem\\Plugin\\GetWithMetadata' => $vendorDir . '/league/flysystem/src/Plugin/GetWithMetadata.php', - 'League\\Flysystem\\Plugin\\ListFiles' => $vendorDir . '/league/flysystem/src/Plugin/ListFiles.php', - 'League\\Flysystem\\Plugin\\ListPaths' => $vendorDir . '/league/flysystem/src/Plugin/ListPaths.php', - 'League\\Flysystem\\Plugin\\ListWith' => $vendorDir . '/league/flysystem/src/Plugin/ListWith.php', - 'League\\Flysystem\\Plugin\\PluggableTrait' => $vendorDir . '/league/flysystem/src/Plugin/PluggableTrait.php', - 'League\\Flysystem\\Plugin\\PluginNotFoundException' => $vendorDir . '/league/flysystem/src/Plugin/PluginNotFoundException.php', - 'League\\Flysystem\\ReadInterface' => $vendorDir . '/league/flysystem/src/ReadInterface.php', - 'League\\Flysystem\\RootViolationException' => $vendorDir . '/league/flysystem/src/RootViolationException.php', - 'League\\Flysystem\\SafeStorage' => $vendorDir . '/league/flysystem/src/SafeStorage.php', - 'League\\Flysystem\\UnreadableFileException' => $vendorDir . '/league/flysystem/src/UnreadableFileException.php', - 'League\\Flysystem\\Util' => $vendorDir . '/league/flysystem/src/Util.php', - 'League\\Flysystem\\Util\\ContentListingFormatter' => $vendorDir . '/league/flysystem/src/Util/ContentListingFormatter.php', - 'League\\Flysystem\\Util\\MimeType' => $vendorDir . '/league/flysystem/src/Util/MimeType.php', - 'League\\Flysystem\\Util\\StreamHasher' => $vendorDir . '/league/flysystem/src/Util/StreamHasher.php', - 'Opis\\Closure\\Analyzer' => $vendorDir . '/opis/closure/src/Analyzer.php', - 'Opis\\Closure\\ClosureContext' => $vendorDir . '/opis/closure/src/ClosureContext.php', - 'Opis\\Closure\\ClosureScope' => $vendorDir . '/opis/closure/src/ClosureScope.php', - 'Opis\\Closure\\ClosureStream' => $vendorDir . '/opis/closure/src/ClosureStream.php', - 'Opis\\Closure\\ISecurityProvider' => $vendorDir . '/opis/closure/src/ISecurityProvider.php', - 'Opis\\Closure\\ReflectionClosure' => $vendorDir . '/opis/closure/src/ReflectionClosure.php', - 'Opis\\Closure\\SecurityException' => $vendorDir . '/opis/closure/src/SecurityException.php', - 'Opis\\Closure\\SecurityProvider' => $vendorDir . '/opis/closure/src/SecurityProvider.php', - 'Opis\\Closure\\SelfReference' => $vendorDir . '/opis/closure/src/SelfReference.php', - 'Opis\\Closure\\SerializableClosure' => $vendorDir . '/opis/closure/src/SerializableClosure.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\\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', - 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/Psr/Log/AbstractLogger.php', - 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php', - 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php', - 'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareInterface.php', - 'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareTrait.php', - 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php', - 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php', - 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php', - 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', - 'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', - 'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php', - 'Psr\\SimpleCache\\CacheException' => $vendorDir . '/psr/simple-cache/src/CacheException.php', - 'Psr\\SimpleCache\\CacheInterface' => $vendorDir . '/psr/simple-cache/src/CacheInterface.php', - 'Psr\\SimpleCache\\InvalidArgumentException' => $vendorDir . '/psr/simple-cache/src/InvalidArgumentException.php', - 'app\\admin\\controller\\Auth' => $baseDir . '/app/admin/controller/Auth.php', - 'app\\admin\\controller\\Config' => $baseDir . '/app/admin/controller/Config.php', - 'app\\admin\\controller\\Index' => $baseDir . '/app/admin/controller/Index.php', - 'app\\admin\\controller\\Login' => $baseDir . '/app/admin/controller/Login.php', - 'app\\admin\\controller\\Menu' => $baseDir . '/app/admin/controller/Menu.php', - 'app\\admin\\controller\\Oplog' => $baseDir . '/app/admin/controller/Oplog.php', - 'app\\admin\\controller\\Queue' => $baseDir . '/app/admin/controller/Queue.php', - 'app\\admin\\controller\\User' => $baseDir . '/app/admin/controller/User.php', - 'app\\admin\\controller\\api\\Plugs' => $baseDir . '/app/admin/controller/api/Plugs.php', - 'app\\admin\\controller\\api\\Update' => $baseDir . '/app/admin/controller/api/Update.php', - 'app\\admin\\controller\\api\\Upload' => $baseDir . '/app/admin/controller/api/Upload.php', - 'app\\index\\controller\\Index' => $baseDir . '/app/index/controller/Index.php', - 'think\\App' => $vendorDir . '/topthink/framework/src/think/App.php', - 'think\\Cache' => $vendorDir . '/topthink/framework/src/think/Cache.php', - 'think\\Collection' => $vendorDir . '/topthink/think-helper/src/Collection.php', - 'think\\Config' => $vendorDir . '/topthink/framework/src/think/Config.php', - 'think\\Console' => $vendorDir . '/topthink/framework/src/think/Console.php', - 'think\\Container' => $vendorDir . '/topthink/framework/src/think/Container.php', - 'think\\Cookie' => $vendorDir . '/topthink/framework/src/think/Cookie.php', - 'think\\Db' => $vendorDir . '/topthink/framework/src/think/Db.php', - 'think\\DbManager' => $vendorDir . '/topthink/think-orm/src/DbManager.php', - 'think\\Env' => $vendorDir . '/topthink/framework/src/think/Env.php', - 'think\\Event' => $vendorDir . '/topthink/framework/src/think/Event.php', - 'think\\Exception' => $vendorDir . '/topthink/framework/src/think/Exception.php', - 'think\\Facade' => $vendorDir . '/topthink/framework/src/think/Facade.php', - 'think\\File' => $vendorDir . '/topthink/framework/src/think/File.php', - 'think\\Filesystem' => $vendorDir . '/topthink/framework/src/think/Filesystem.php', - 'think\\Http' => $vendorDir . '/topthink/framework/src/think/Http.php', - 'think\\Lang' => $vendorDir . '/topthink/framework/src/think/Lang.php', - 'think\\Log' => $vendorDir . '/topthink/framework/src/think/Log.php', - 'think\\Manager' => $vendorDir . '/topthink/framework/src/think/Manager.php', - 'think\\Middleware' => $vendorDir . '/topthink/framework/src/think/Middleware.php', - 'think\\Model' => $vendorDir . '/topthink/think-orm/src/Model.php', - 'think\\Paginator' => $vendorDir . '/topthink/think-orm/src/Paginator.php', - 'think\\Pipeline' => $vendorDir . '/topthink/framework/src/think/Pipeline.php', - 'think\\Request' => $vendorDir . '/topthink/framework/src/think/Request.php', - 'think\\Response' => $vendorDir . '/topthink/framework/src/think/Response.php', - 'think\\Route' => $vendorDir . '/topthink/framework/src/think/Route.php', - 'think\\Service' => $vendorDir . '/topthink/framework/src/think/Service.php', - 'think\\Session' => $vendorDir . '/topthink/framework/src/think/Session.php', - 'think\\Template' => $vendorDir . '/topthink/think-template/src/Template.php', - 'think\\Validate' => $vendorDir . '/topthink/framework/src/think/Validate.php', - 'think\\View' => $vendorDir . '/topthink/framework/src/think/View.php', - 'think\\admin\\Controller' => $vendorDir . '/zoujingli/think-library/src/Controller.php', - 'think\\admin\\Helper' => $vendorDir . '/zoujingli/think-library/src/Helper.php', - 'think\\admin\\Queue' => $vendorDir . '/zoujingli/think-library/src/Queue.php', - 'think\\admin\\Service' => $vendorDir . '/zoujingli/think-library/src/Service.php', - 'think\\admin\\Storage' => $vendorDir . '/zoujingli/think-library/src/Storage.php', - 'think\\admin\\ThinkLibrary' => $vendorDir . '/zoujingli/think-library/src/ThinkLibrary.php', - 'think\\admin\\extend\\CodeExtend' => $vendorDir . '/zoujingli/think-library/src/extend/CodeExtend.php', - 'think\\admin\\extend\\CsvExtend' => $vendorDir . '/zoujingli/think-library/src/extend/CsvExtend.php', - 'think\\admin\\extend\\DataExtend' => $vendorDir . '/zoujingli/think-library/src/extend/DataExtend.php', - 'think\\admin\\extend\\ExpressExtend' => $vendorDir . '/zoujingli/think-library/src/extend/ExpressExtend.php', - 'think\\admin\\extend\\HttpExtend' => $vendorDir . '/zoujingli/think-library/src/extend/HttpExtend.php', - 'think\\admin\\extend\\ProcessExtend' => $vendorDir . '/zoujingli/think-library/src/extend/ProcessExtend.php', - 'think\\admin\\helper\\DeleteHelper' => $vendorDir . '/zoujingli/think-library/src/helper/DeleteHelper.php', - 'think\\admin\\helper\\FormHelper' => $vendorDir . '/zoujingli/think-library/src/helper/FormHelper.php', - 'think\\admin\\helper\\PageHelper' => $vendorDir . '/zoujingli/think-library/src/helper/PageHelper.php', - 'think\\admin\\helper\\QueryHelper' => $vendorDir . '/zoujingli/think-library/src/helper/QueryHelper.php', - 'think\\admin\\helper\\SaveHelper' => $vendorDir . '/zoujingli/think-library/src/helper/SaveHelper.php', - 'think\\admin\\helper\\TokenHelper' => $vendorDir . '/zoujingli/think-library/src/helper/TokenHelper.php', - 'think\\admin\\install\\CommandInstall' => $vendorDir . '/zoujingli/think-library/src/install/CommandInstall.php', - 'think\\admin\\queue\\ListenQueue' => $vendorDir . '/zoujingli/think-library/src/queue/ListenQueue.php', - 'think\\admin\\queue\\QueryQueue' => $vendorDir . '/zoujingli/think-library/src/queue/QueryQueue.php', - 'think\\admin\\queue\\StartQueue' => $vendorDir . '/zoujingli/think-library/src/queue/StartQueue.php', - 'think\\admin\\queue\\StateQueue' => $vendorDir . '/zoujingli/think-library/src/queue/StateQueue.php', - 'think\\admin\\queue\\StopQueue' => $vendorDir . '/zoujingli/think-library/src/queue/StopQueue.php', - 'think\\admin\\queue\\WorkQueue' => $vendorDir . '/zoujingli/think-library/src/queue/WorkQueue.php', - 'think\\admin\\service\\AuthService' => $vendorDir . '/zoujingli/think-library/src/service/AuthService.php', - 'think\\admin\\service\\CaptchaService' => $vendorDir . '/zoujingli/think-library/src/service/CaptchaService.php', - 'think\\admin\\service\\InstallService' => $vendorDir . '/zoujingli/think-library/src/service/InstallService.php', - 'think\\admin\\service\\MenuService' => $vendorDir . '/zoujingli/think-library/src/service/MenuService.php', - 'think\\admin\\service\\NodeService' => $vendorDir . '/zoujingli/think-library/src/service/NodeService.php', - 'think\\admin\\service\\TokenService' => $vendorDir . '/zoujingli/think-library/src/service/TokenService.php', - 'think\\admin\\storage\\LocalStorage' => $vendorDir . '/zoujingli/think-library/src/storage/LocalStorage.php', - 'think\\admin\\storage\\QiniuStorage' => $vendorDir . '/zoujingli/think-library/src/storage/QiniuStorage.php', - 'think\\app\\MultiApp' => $vendorDir . '/topthink/think-multi-app/src/MultiApp.php', - 'think\\app\\Service' => $vendorDir . '/topthink/think-multi-app/src/Service.php', - 'think\\app\\Url' => $vendorDir . '/topthink/think-multi-app/src/Url.php', - 'think\\app\\command\\Build' => $vendorDir . '/topthink/think-multi-app/src/command/Build.php', - 'think\\cache\\Driver' => $vendorDir . '/topthink/framework/src/think/cache/Driver.php', - 'think\\cache\\TagSet' => $vendorDir . '/topthink/framework/src/think/cache/TagSet.php', - 'think\\cache\\driver\\File' => $vendorDir . '/topthink/framework/src/think/cache/driver/File.php', - 'think\\cache\\driver\\Memcache' => $vendorDir . '/topthink/framework/src/think/cache/driver/Memcache.php', - 'think\\cache\\driver\\Memcached' => $vendorDir . '/topthink/framework/src/think/cache/driver/Memcached.php', - 'think\\cache\\driver\\Redis' => $vendorDir . '/topthink/framework/src/think/cache/driver/Redis.php', - 'think\\cache\\driver\\Wincache' => $vendorDir . '/topthink/framework/src/think/cache/driver/Wincache.php', - 'think\\console\\Command' => $vendorDir . '/topthink/framework/src/think/console/Command.php', - 'think\\console\\Input' => $vendorDir . '/topthink/framework/src/think/console/Input.php', - 'think\\console\\Output' => $vendorDir . '/topthink/framework/src/think/console/Output.php', - 'think\\console\\Table' => $vendorDir . '/topthink/framework/src/think/console/Table.php', - 'think\\console\\command\\Clear' => $vendorDir . '/topthink/framework/src/think/console/command/Clear.php', - 'think\\console\\command\\Help' => $vendorDir . '/topthink/framework/src/think/console/command/Help.php', - 'think\\console\\command\\Lists' => $vendorDir . '/topthink/framework/src/think/console/command/Lists.php', - 'think\\console\\command\\Make' => $vendorDir . '/topthink/framework/src/think/console/command/Make.php', - 'think\\console\\command\\RouteList' => $vendorDir . '/topthink/framework/src/think/console/command/RouteList.php', - 'think\\console\\command\\RunServer' => $vendorDir . '/topthink/framework/src/think/console/command/RunServer.php', - 'think\\console\\command\\ServiceDiscover' => $vendorDir . '/topthink/framework/src/think/console/command/ServiceDiscover.php', - 'think\\console\\command\\VendorPublish' => $vendorDir . '/topthink/framework/src/think/console/command/VendorPublish.php', - 'think\\console\\command\\Version' => $vendorDir . '/topthink/framework/src/think/console/command/Version.php', - 'think\\console\\command\\make\\Command' => $vendorDir . '/topthink/framework/src/think/console/command/make/Command.php', - 'think\\console\\command\\make\\Controller' => $vendorDir . '/topthink/framework/src/think/console/command/make/Controller.php', - 'think\\console\\command\\make\\Event' => $vendorDir . '/topthink/framework/src/think/console/command/make/Event.php', - 'think\\console\\command\\make\\Listener' => $vendorDir . '/topthink/framework/src/think/console/command/make/Listener.php', - 'think\\console\\command\\make\\Middleware' => $vendorDir . '/topthink/framework/src/think/console/command/make/Middleware.php', - 'think\\console\\command\\make\\Model' => $vendorDir . '/topthink/framework/src/think/console/command/make/Model.php', - 'think\\console\\command\\make\\Service' => $vendorDir . '/topthink/framework/src/think/console/command/make/Service.php', - 'think\\console\\command\\make\\Subscribe' => $vendorDir . '/topthink/framework/src/think/console/command/make/Subscribe.php', - 'think\\console\\command\\make\\Validate' => $vendorDir . '/topthink/framework/src/think/console/command/make/Validate.php', - 'think\\console\\command\\optimize\\Route' => $vendorDir . '/topthink/framework/src/think/console/command/optimize/Route.php', - 'think\\console\\command\\optimize\\Schema' => $vendorDir . '/topthink/framework/src/think/console/command/optimize/Schema.php', - 'think\\console\\input\\Argument' => $vendorDir . '/topthink/framework/src/think/console/input/Argument.php', - 'think\\console\\input\\Definition' => $vendorDir . '/topthink/framework/src/think/console/input/Definition.php', - 'think\\console\\input\\Option' => $vendorDir . '/topthink/framework/src/think/console/input/Option.php', - 'think\\console\\output\\Ask' => $vendorDir . '/topthink/framework/src/think/console/output/Ask.php', - 'think\\console\\output\\Descriptor' => $vendorDir . '/topthink/framework/src/think/console/output/Descriptor.php', - 'think\\console\\output\\Formatter' => $vendorDir . '/topthink/framework/src/think/console/output/Formatter.php', - 'think\\console\\output\\Question' => $vendorDir . '/topthink/framework/src/think/console/output/Question.php', - 'think\\console\\output\\descriptor\\Console' => $vendorDir . '/topthink/framework/src/think/console/output/descriptor/Console.php', - 'think\\console\\output\\driver\\Buffer' => $vendorDir . '/topthink/framework/src/think/console/output/driver/Buffer.php', - 'think\\console\\output\\driver\\Console' => $vendorDir . '/topthink/framework/src/think/console/output/driver/Console.php', - 'think\\console\\output\\driver\\Nothing' => $vendorDir . '/topthink/framework/src/think/console/output/driver/Nothing.php', - 'think\\console\\output\\formatter\\Stack' => $vendorDir . '/topthink/framework/src/think/console/output/formatter/Stack.php', - 'think\\console\\output\\formatter\\Style' => $vendorDir . '/topthink/framework/src/think/console/output/formatter/Style.php', - 'think\\console\\output\\question\\Choice' => $vendorDir . '/topthink/framework/src/think/console/output/question/Choice.php', - 'think\\console\\output\\question\\Confirmation' => $vendorDir . '/topthink/framework/src/think/console/output/question/Confirmation.php', - 'think\\contract\\Arrayable' => $vendorDir . '/topthink/think-helper/src/contract/Arrayable.php', - 'think\\contract\\CacheHandlerInterface' => $vendorDir . '/topthink/framework/src/think/contract/CacheHandlerInterface.php', - 'think\\contract\\Jsonable' => $vendorDir . '/topthink/think-helper/src/contract/Jsonable.php', - 'think\\contract\\LogHandlerInterface' => $vendorDir . '/topthink/framework/src/think/contract/LogHandlerInterface.php', - 'think\\contract\\ModelRelationInterface' => $vendorDir . '/topthink/framework/src/think/contract/ModelRelationInterface.php', - 'think\\contract\\SessionHandlerInterface' => $vendorDir . '/topthink/framework/src/think/contract/SessionHandlerInterface.php', - 'think\\contract\\TemplateHandlerInterface' => $vendorDir . '/topthink/framework/src/think/contract/TemplateHandlerInterface.php', - 'think\\db\\BaseQuery' => $vendorDir . '/topthink/think-orm/src/db/BaseQuery.php', - 'think\\db\\Builder' => $vendorDir . '/topthink/think-orm/src/db/Builder.php', - 'think\\db\\CacheItem' => $vendorDir . '/topthink/think-orm/src/db/CacheItem.php', - 'think\\db\\Connection' => $vendorDir . '/topthink/think-orm/src/db/Connection.php', - 'think\\db\\ConnectionInterface' => $vendorDir . '/topthink/think-orm/src/db/ConnectionInterface.php', - 'think\\db\\Fetch' => $vendorDir . '/topthink/think-orm/src/db/Fetch.php', - 'think\\db\\Mongo' => $vendorDir . '/topthink/think-orm/src/db/Mongo.php', - 'think\\db\\PDOConnection' => $vendorDir . '/topthink/think-orm/src/db/PDOConnection.php', - 'think\\db\\Query' => $vendorDir . '/topthink/think-orm/src/db/Query.php', - 'think\\db\\Raw' => $vendorDir . '/topthink/think-orm/src/db/Raw.php', - 'think\\db\\Where' => $vendorDir . '/topthink/think-orm/src/db/Where.php', - 'think\\db\\builder\\Mongo' => $vendorDir . '/topthink/think-orm/src/db/builder/Mongo.php', - 'think\\db\\builder\\Mysql' => $vendorDir . '/topthink/think-orm/src/db/builder/Mysql.php', - 'think\\db\\builder\\Oracle' => $vendorDir . '/topthink/think-orm/src/db/builder/Oracle.php', - 'think\\db\\builder\\Pgsql' => $vendorDir . '/topthink/think-orm/src/db/builder/Pgsql.php', - 'think\\db\\builder\\Sqlite' => $vendorDir . '/topthink/think-orm/src/db/builder/Sqlite.php', - 'think\\db\\builder\\Sqlsrv' => $vendorDir . '/topthink/think-orm/src/db/builder/Sqlsrv.php', - 'think\\db\\concern\\AggregateQuery' => $vendorDir . '/topthink/think-orm/src/db/concern/AggregateQuery.php', - 'think\\db\\concern\\JoinAndViewQuery' => $vendorDir . '/topthink/think-orm/src/db/concern/JoinAndViewQuery.php', - 'think\\db\\concern\\ModelRelationQuery' => $vendorDir . '/topthink/think-orm/src/db/concern/ModelRelationQuery.php', - 'think\\db\\concern\\ParamsBind' => $vendorDir . '/topthink/think-orm/src/db/concern/ParamsBind.php', - 'think\\db\\concern\\ResultOperation' => $vendorDir . '/topthink/think-orm/src/db/concern/ResultOperation.php', - 'think\\db\\concern\\TableFieldInfo' => $vendorDir . '/topthink/think-orm/src/db/concern/TableFieldInfo.php', - 'think\\db\\concern\\TimeFieldQuery' => $vendorDir . '/topthink/think-orm/src/db/concern/TimeFieldQuery.php', - 'think\\db\\concern\\Transaction' => $vendorDir . '/topthink/think-orm/src/db/concern/Transaction.php', - 'think\\db\\concern\\WhereQuery' => $vendorDir . '/topthink/think-orm/src/db/concern/WhereQuery.php', - 'think\\db\\connector\\Mongo' => $vendorDir . '/topthink/think-orm/src/db/connector/Mongo.php', - 'think\\db\\connector\\Mysql' => $vendorDir . '/topthink/think-orm/src/db/connector/Mysql.php', - 'think\\db\\connector\\Oracle' => $vendorDir . '/topthink/think-orm/src/db/connector/Oracle.php', - 'think\\db\\connector\\Pgsql' => $vendorDir . '/topthink/think-orm/src/db/connector/Pgsql.php', - 'think\\db\\connector\\Sqlite' => $vendorDir . '/topthink/think-orm/src/db/connector/Sqlite.php', - 'think\\db\\connector\\Sqlsrv' => $vendorDir . '/topthink/think-orm/src/db/connector/Sqlsrv.php', - 'think\\db\\exception\\BindParamException' => $vendorDir . '/topthink/think-orm/src/db/exception/BindParamException.php', - 'think\\db\\exception\\DataNotFoundException' => $vendorDir . '/topthink/think-orm/src/db/exception/DataNotFoundException.php', - 'think\\db\\exception\\DbException' => $vendorDir . '/topthink/think-orm/src/db/exception/DbException.php', - 'think\\db\\exception\\InvalidArgumentException' => $vendorDir . '/topthink/think-orm/src/db/exception/InvalidArgumentException.php', - 'think\\db\\exception\\ModelEventException' => $vendorDir . '/topthink/think-orm/src/db/exception/ModelEventException.php', - 'think\\db\\exception\\ModelNotFoundException' => $vendorDir . '/topthink/think-orm/src/db/exception/ModelNotFoundException.php', - 'think\\db\\exception\\PDOException' => $vendorDir . '/topthink/think-orm/src/db/exception/PDOException.php', - 'think\\event\\AppInit' => $vendorDir . '/topthink/framework/src/think/event/AppInit.php', - 'think\\event\\HttpEnd' => $vendorDir . '/topthink/framework/src/think/event/HttpEnd.php', - 'think\\event\\HttpRun' => $vendorDir . '/topthink/framework/src/think/event/HttpRun.php', - 'think\\event\\LogWrite' => $vendorDir . '/topthink/framework/src/think/event/LogWrite.php', - 'think\\event\\RouteLoaded' => $vendorDir . '/topthink/framework/src/think/event/RouteLoaded.php', - 'think\\exception\\ClassNotFoundException' => $vendorDir . '/topthink/framework/src/think/exception/ClassNotFoundException.php', - 'think\\exception\\ErrorException' => $vendorDir . '/topthink/framework/src/think/exception/ErrorException.php', - 'think\\exception\\FileException' => $vendorDir . '/topthink/framework/src/think/exception/FileException.php', - 'think\\exception\\FuncNotFoundException' => $vendorDir . '/topthink/framework/src/think/exception/FuncNotFoundException.php', - 'think\\exception\\Handle' => $vendorDir . '/topthink/framework/src/think/exception/Handle.php', - 'think\\exception\\HttpException' => $vendorDir . '/topthink/framework/src/think/exception/HttpException.php', - 'think\\exception\\HttpResponseException' => $vendorDir . '/topthink/framework/src/think/exception/HttpResponseException.php', - 'think\\exception\\InvalidArgumentException' => $vendorDir . '/topthink/framework/src/think/exception/InvalidArgumentException.php', - 'think\\exception\\RouteNotFoundException' => $vendorDir . '/topthink/framework/src/think/exception/RouteNotFoundException.php', - 'think\\exception\\ValidateException' => $vendorDir . '/topthink/framework/src/think/exception/ValidateException.php', - 'think\\facade\\App' => $vendorDir . '/topthink/framework/src/think/facade/App.php', - 'think\\facade\\Cache' => $vendorDir . '/topthink/framework/src/think/facade/Cache.php', - 'think\\facade\\Config' => $vendorDir . '/topthink/framework/src/think/facade/Config.php', - 'think\\facade\\Console' => $vendorDir . '/topthink/framework/src/think/facade/Console.php', - 'think\\facade\\Cookie' => $vendorDir . '/topthink/framework/src/think/facade/Cookie.php', - 'think\\facade\\Db' => $vendorDir . '/topthink/think-orm/src/facade/Db.php', - 'think\\facade\\Env' => $vendorDir . '/topthink/framework/src/think/facade/Env.php', - 'think\\facade\\Event' => $vendorDir . '/topthink/framework/src/think/facade/Event.php', - 'think\\facade\\Facade' => $vendorDir . '/topthink/think-orm/src/facade/Db.php', - 'think\\facade\\Filesystem' => $vendorDir . '/topthink/framework/src/think/facade/Filesystem.php', - 'think\\facade\\Lang' => $vendorDir . '/topthink/framework/src/think/facade/Lang.php', - 'think\\facade\\Log' => $vendorDir . '/topthink/framework/src/think/facade/Log.php', - 'think\\facade\\Middleware' => $vendorDir . '/topthink/framework/src/think/facade/Middleware.php', - 'think\\facade\\Request' => $vendorDir . '/topthink/framework/src/think/facade/Request.php', - 'think\\facade\\Route' => $vendorDir . '/topthink/framework/src/think/facade/Route.php', - 'think\\facade\\Session' => $vendorDir . '/topthink/framework/src/think/facade/Session.php', - 'think\\facade\\Template' => $vendorDir . '/topthink/think-template/src/facade/Template.php', - 'think\\facade\\Validate' => $vendorDir . '/topthink/framework/src/think/facade/Validate.php', - 'think\\facade\\View' => $vendorDir . '/topthink/framework/src/think/facade/View.php', - 'think\\file\\UploadedFile' => $vendorDir . '/topthink/framework/src/think/file/UploadedFile.php', - 'think\\filesystem\\CacheStore' => $vendorDir . '/topthink/framework/src/think/filesystem/CacheStore.php', - 'think\\filesystem\\Driver' => $vendorDir . '/topthink/framework/src/think/filesystem/Driver.php', - 'think\\filesystem\\driver\\Local' => $vendorDir . '/topthink/framework/src/think/filesystem/driver/Local.php', - 'think\\helper\\Arr' => $vendorDir . '/topthink/think-helper/src/helper/Arr.php', - 'think\\helper\\Str' => $vendorDir . '/topthink/think-helper/src/helper/Str.php', - 'think\\initializer\\BootService' => $vendorDir . '/topthink/framework/src/think/initializer/BootService.php', - 'think\\initializer\\Error' => $vendorDir . '/topthink/framework/src/think/initializer/Error.php', - 'think\\initializer\\RegisterService' => $vendorDir . '/topthink/framework/src/think/initializer/RegisterService.php', - 'think\\log\\Channel' => $vendorDir . '/topthink/framework/src/think/log/Channel.php', - 'think\\log\\ChannelSet' => $vendorDir . '/topthink/framework/src/think/log/ChannelSet.php', - 'think\\log\\driver\\File' => $vendorDir . '/topthink/framework/src/think/log/driver/File.php', - 'think\\log\\driver\\Socket' => $vendorDir . '/topthink/framework/src/think/log/driver/Socket.php', - 'think\\middleware\\AllowCrossDomain' => $vendorDir . '/topthink/framework/src/think/middleware/AllowCrossDomain.php', - 'think\\middleware\\CheckRequestCache' => $vendorDir . '/topthink/framework/src/think/middleware/CheckRequestCache.php', - 'think\\middleware\\FormTokenCheck' => $vendorDir . '/topthink/framework/src/think/middleware/FormTokenCheck.php', - 'think\\middleware\\LoadLangPack' => $vendorDir . '/topthink/framework/src/think/middleware/LoadLangPack.php', - 'think\\middleware\\SessionInit' => $vendorDir . '/topthink/framework/src/think/middleware/SessionInit.php', - 'think\\model\\Collection' => $vendorDir . '/topthink/think-orm/src/model/Collection.php', - 'think\\model\\Pivot' => $vendorDir . '/topthink/think-orm/src/model/Pivot.php', - 'think\\model\\Relation' => $vendorDir . '/topthink/think-orm/src/model/Relation.php', - 'think\\model\\concern\\Attribute' => $vendorDir . '/topthink/think-orm/src/model/concern/Attribute.php', - 'think\\model\\concern\\Conversion' => $vendorDir . '/topthink/think-orm/src/model/concern/Conversion.php', - 'think\\model\\concern\\ModelEvent' => $vendorDir . '/topthink/think-orm/src/model/concern/ModelEvent.php', - 'think\\model\\concern\\OptimLock' => $vendorDir . '/topthink/think-orm/src/model/concern/OptimLock.php', - 'think\\model\\concern\\RelationShip' => $vendorDir . '/topthink/think-orm/src/model/concern/RelationShip.php', - 'think\\model\\concern\\SoftDelete' => $vendorDir . '/topthink/think-orm/src/model/concern/SoftDelete.php', - 'think\\model\\concern\\TimeStamp' => $vendorDir . '/topthink/think-orm/src/model/concern/TimeStamp.php', - 'think\\model\\relation\\BelongsTo' => $vendorDir . '/topthink/think-orm/src/model/relation/BelongsTo.php', - 'think\\model\\relation\\BelongsToMany' => $vendorDir . '/topthink/think-orm/src/model/relation/BelongsToMany.php', - 'think\\model\\relation\\HasMany' => $vendorDir . '/topthink/think-orm/src/model/relation/HasMany.php', - 'think\\model\\relation\\HasManyThrough' => $vendorDir . '/topthink/think-orm/src/model/relation/HasManyThrough.php', - 'think\\model\\relation\\HasOne' => $vendorDir . '/topthink/think-orm/src/model/relation/HasOne.php', - 'think\\model\\relation\\HasOneThrough' => $vendorDir . '/topthink/think-orm/src/model/relation/HasOneThrough.php', - 'think\\model\\relation\\MorphMany' => $vendorDir . '/topthink/think-orm/src/model/relation/MorphMany.php', - 'think\\model\\relation\\MorphOne' => $vendorDir . '/topthink/think-orm/src/model/relation/MorphOne.php', - 'think\\model\\relation\\MorphTo' => $vendorDir . '/topthink/think-orm/src/model/relation/MorphTo.php', - 'think\\model\\relation\\OneToOne' => $vendorDir . '/topthink/think-orm/src/model/relation/OneToOne.php', - 'think\\paginator\\driver\\Bootstrap' => $vendorDir . '/topthink/think-orm/src/paginator/driver/Bootstrap.php', - 'think\\response\\File' => $vendorDir . '/topthink/framework/src/think/response/File.php', - 'think\\response\\Html' => $vendorDir . '/topthink/framework/src/think/response/Html.php', - 'think\\response\\Json' => $vendorDir . '/topthink/framework/src/think/response/Json.php', - 'think\\response\\Jsonp' => $vendorDir . '/topthink/framework/src/think/response/Jsonp.php', - 'think\\response\\Redirect' => $vendorDir . '/topthink/framework/src/think/response/Redirect.php', - 'think\\response\\View' => $vendorDir . '/topthink/framework/src/think/response/View.php', - 'think\\response\\Xml' => $vendorDir . '/topthink/framework/src/think/response/Xml.php', - 'think\\route\\Dispatch' => $vendorDir . '/topthink/framework/src/think/route/Dispatch.php', - 'think\\route\\Domain' => $vendorDir . '/topthink/framework/src/think/route/Domain.php', - 'think\\route\\Resource' => $vendorDir . '/topthink/framework/src/think/route/Resource.php', - 'think\\route\\Rule' => $vendorDir . '/topthink/framework/src/think/route/Rule.php', - 'think\\route\\RuleGroup' => $vendorDir . '/topthink/framework/src/think/route/RuleGroup.php', - 'think\\route\\RuleItem' => $vendorDir . '/topthink/framework/src/think/route/RuleItem.php', - 'think\\route\\RuleName' => $vendorDir . '/topthink/framework/src/think/route/RuleName.php', - 'think\\route\\Url' => $vendorDir . '/topthink/framework/src/think/route/Url.php', - 'think\\route\\dispatch\\Callback' => $vendorDir . '/topthink/framework/src/think/route/dispatch/Callback.php', - 'think\\route\\dispatch\\Controller' => $vendorDir . '/topthink/framework/src/think/route/dispatch/Controller.php', - 'think\\route\\dispatch\\Redirect' => $vendorDir . '/topthink/framework/src/think/route/dispatch/Redirect.php', - 'think\\route\\dispatch\\Response' => $vendorDir . '/topthink/framework/src/think/route/dispatch/Response.php', - 'think\\route\\dispatch\\Url' => $vendorDir . '/topthink/framework/src/think/route/dispatch/Url.php', - 'think\\route\\dispatch\\View' => $vendorDir . '/topthink/framework/src/think/route/dispatch/View.php', - 'think\\service\\ModelService' => $vendorDir . '/topthink/framework/src/think/service/ModelService.php', - 'think\\service\\PaginatorService' => $vendorDir . '/topthink/framework/src/think/service/PaginatorService.php', - 'think\\service\\ValidateService' => $vendorDir . '/topthink/framework/src/think/service/ValidateService.php', - 'think\\session\\Store' => $vendorDir . '/topthink/framework/src/think/session/Store.php', - 'think\\session\\driver\\Cache' => $vendorDir . '/topthink/framework/src/think/session/driver/Cache.php', - 'think\\session\\driver\\File' => $vendorDir . '/topthink/framework/src/think/session/driver/File.php', - 'think\\template\\TagLib' => $vendorDir . '/topthink/think-template/src/template/TagLib.php', - 'think\\template\\driver\\File' => $vendorDir . '/topthink/think-template/src/template/driver/File.php', - 'think\\template\\exception\\TemplateNotFoundException' => $vendorDir . '/topthink/think-template/src/template/exception/TemplateNotFoundException.php', - 'think\\template\\taglib\\Cx' => $vendorDir . '/topthink/think-template/src/template/taglib/Cx.php', - 'think\\validate\\ValidateRule' => $vendorDir . '/topthink/framework/src/think/validate/ValidateRule.php', - 'think\\view\\driver\\Php' => $vendorDir . '/topthink/framework/src/think/view/driver/Php.php', - 'think\\view\\driver\\Think' => $vendorDir . '/topthink/think-view/src/Think.php', -); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php deleted file mode 100644 index b5149744b..000000000 --- a/vendor/composer/autoload_files.php +++ /dev/null @@ -1,12 +0,0 @@ - $vendorDir . '/topthink/think-helper/src/helper.php', - '538ca81a9a966a6716601ecf48f4eaef' => $vendorDir . '/opis/closure/functions.php', - '8dafcc6956460bc297e00381fed53e11' => $vendorDir . '/zoujingli/think-library/src/common.php', -); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php deleted file mode 100644 index b7fc0125d..000000000 --- a/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ - array($vendorDir . '/topthink/think-view/src'), - 'think\\app\\' => array($vendorDir . '/topthink/think-multi-app/src'), - 'think\\admin\\' => array($vendorDir . '/zoujingli/think-library/src'), - 'think\\' => array($vendorDir . '/topthink/framework/src/think', $vendorDir . '/topthink/think-helper/src', $vendorDir . '/topthink/think-orm/src', $vendorDir . '/topthink/think-template/src'), - 'app\\' => array($baseDir . '/app'), - 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), - 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), - 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), - 'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'), - 'Opis\\Closure\\' => array($vendorDir . '/opis/closure/src'), - 'League\\Flysystem\\Cached\\' => array($vendorDir . '/league/flysystem-cached-adapter/src'), - 'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'), -); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php deleted file mode 100644 index 489eae174..000000000 --- a/vendor/composer/autoload_real.php +++ /dev/null @@ -1,70 +0,0 @@ -= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); - if ($useStaticLoader) { - require_once __DIR__ . '/autoload_static.php'; - - call_user_func(\Composer\Autoload\ComposerStaticInit2989e522f6b5791430f792353154d986::getInitializer($loader)); - } else { - $map = require __DIR__ . '/autoload_namespaces.php'; - foreach ($map as $namespace => $path) { - $loader->set($namespace, $path); - } - - $map = require __DIR__ . '/autoload_psr4.php'; - foreach ($map as $namespace => $path) { - $loader->setPsr4($namespace, $path); - } - - $classMap = require __DIR__ . '/autoload_classmap.php'; - if ($classMap) { - $loader->addClassMap($classMap); - } - } - - $loader->register(true); - - if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit2989e522f6b5791430f792353154d986::$files; - } else { - $includeFiles = require __DIR__ . '/autoload_files.php'; - } - foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire2989e522f6b5791430f792353154d986($fileIdentifier, $file); - } - - return $loader; - } -} - -function composerRequire2989e522f6b5791430f792353154d986($fileIdentifier, $file) -{ - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - require $file; - - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - } -} diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php deleted file mode 100644 index 0f01a368c..000000000 --- a/vendor/composer/autoload_static.php +++ /dev/null @@ -1,479 +0,0 @@ - __DIR__ . '/..' . '/topthink/think-helper/src/helper.php', - '538ca81a9a966a6716601ecf48f4eaef' => __DIR__ . '/..' . '/opis/closure/functions.php', - '8dafcc6956460bc297e00381fed53e11' => __DIR__ . '/..' . '/zoujingli/think-library/src/common.php', - ); - - public static $prefixLengthsPsr4 = array ( - 't' => - array ( - 'think\\view\\driver\\' => 18, - 'think\\app\\' => 10, - 'think\\admin\\' => 12, - 'think\\' => 6, - ), - 'a' => - array ( - 'app\\' => 4, - ), - 'P' => - array ( - 'Psr\\SimpleCache\\' => 16, - 'Psr\\Log\\' => 8, - 'Psr\\Container\\' => 14, - 'Psr\\Cache\\' => 10, - ), - 'O' => - array ( - 'Opis\\Closure\\' => 13, - ), - 'L' => - array ( - 'League\\Flysystem\\Cached\\' => 24, - 'League\\Flysystem\\' => 17, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'think\\view\\driver\\' => - array ( - 0 => __DIR__ . '/..' . '/topthink/think-view/src', - ), - 'think\\app\\' => - array ( - 0 => __DIR__ . '/..' . '/topthink/think-multi-app/src', - ), - 'think\\admin\\' => - array ( - 0 => __DIR__ . '/..' . '/zoujingli/think-library/src', - ), - 'think\\' => - array ( - 0 => __DIR__ . '/..' . '/topthink/framework/src/think', - 1 => __DIR__ . '/..' . '/topthink/think-helper/src', - 2 => __DIR__ . '/..' . '/topthink/think-orm/src', - 3 => __DIR__ . '/..' . '/topthink/think-template/src', - ), - 'app\\' => - array ( - 0 => __DIR__ . '/../..' . '/app', - ), - 'Psr\\SimpleCache\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/simple-cache/src', - ), - 'Psr\\Log\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/log/Psr/Log', - ), - 'Psr\\Container\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/container/src', - ), - 'Psr\\Cache\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/cache/src', - ), - 'Opis\\Closure\\' => - array ( - 0 => __DIR__ . '/..' . '/opis/closure/src', - ), - 'League\\Flysystem\\Cached\\' => - array ( - 0 => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src', - ), - 'League\\Flysystem\\' => - array ( - 0 => __DIR__ . '/..' . '/league/flysystem/src', - ), - ); - - public static $classMap = array ( - 'Ip2Region' => __DIR__ . '/..' . '/zoujingli/ip2region/Ip2Region.php', - 'League\\Flysystem\\AdapterInterface' => __DIR__ . '/..' . '/league/flysystem/src/AdapterInterface.php', - 'League\\Flysystem\\Adapter\\AbstractAdapter' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/AbstractAdapter.php', - 'League\\Flysystem\\Adapter\\AbstractFtpAdapter' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/AbstractFtpAdapter.php', - 'League\\Flysystem\\Adapter\\CanOverwriteFiles' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/CanOverwriteFiles.php', - 'League\\Flysystem\\Adapter\\Ftp' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Ftp.php', - 'League\\Flysystem\\Adapter\\Ftpd' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Ftpd.php', - 'League\\Flysystem\\Adapter\\Local' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Local.php', - 'League\\Flysystem\\Adapter\\NullAdapter' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/NullAdapter.php', - 'League\\Flysystem\\Adapter\\Polyfill\\NotSupportingVisibilityTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php', - 'League\\Flysystem\\Adapter\\Polyfill\\StreamedCopyTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/StreamedCopyTrait.php', - 'League\\Flysystem\\Adapter\\Polyfill\\StreamedReadingTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php', - 'League\\Flysystem\\Adapter\\Polyfill\\StreamedTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php', - 'League\\Flysystem\\Adapter\\Polyfill\\StreamedWritingTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/StreamedWritingTrait.php', - 'League\\Flysystem\\Adapter\\SynologyFtp' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/SynologyFtp.php', - 'League\\Flysystem\\Cached\\CacheInterface' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/CacheInterface.php', - 'League\\Flysystem\\Cached\\CachedAdapter' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/CachedAdapter.php', - 'League\\Flysystem\\Cached\\Storage\\AbstractCache' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/AbstractCache.php', - 'League\\Flysystem\\Cached\\Storage\\Adapter' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Adapter.php', - 'League\\Flysystem\\Cached\\Storage\\Memcached' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Memcached.php', - 'League\\Flysystem\\Cached\\Storage\\Memory' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Memory.php', - 'League\\Flysystem\\Cached\\Storage\\Noop' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Noop.php', - 'League\\Flysystem\\Cached\\Storage\\PhpRedis' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/PhpRedis.php', - 'League\\Flysystem\\Cached\\Storage\\Predis' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Predis.php', - 'League\\Flysystem\\Cached\\Storage\\Psr6Cache' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Psr6Cache.php', - 'League\\Flysystem\\Cached\\Storage\\Stash' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Stash.php', - 'League\\Flysystem\\Config' => __DIR__ . '/..' . '/league/flysystem/src/Config.php', - 'League\\Flysystem\\ConfigAwareTrait' => __DIR__ . '/..' . '/league/flysystem/src/ConfigAwareTrait.php', - 'League\\Flysystem\\Directory' => __DIR__ . '/..' . '/league/flysystem/src/Directory.php', - 'League\\Flysystem\\Exception' => __DIR__ . '/..' . '/league/flysystem/src/Exception.php', - 'League\\Flysystem\\File' => __DIR__ . '/..' . '/league/flysystem/src/File.php', - 'League\\Flysystem\\FileExistsException' => __DIR__ . '/..' . '/league/flysystem/src/FileExistsException.php', - 'League\\Flysystem\\FileNotFoundException' => __DIR__ . '/..' . '/league/flysystem/src/FileNotFoundException.php', - 'League\\Flysystem\\Filesystem' => __DIR__ . '/..' . '/league/flysystem/src/Filesystem.php', - 'League\\Flysystem\\FilesystemInterface' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemInterface.php', - 'League\\Flysystem\\FilesystemNotFoundException' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemNotFoundException.php', - 'League\\Flysystem\\Handler' => __DIR__ . '/..' . '/league/flysystem/src/Handler.php', - 'League\\Flysystem\\MountManager' => __DIR__ . '/..' . '/league/flysystem/src/MountManager.php', - 'League\\Flysystem\\NotSupportedException' => __DIR__ . '/..' . '/league/flysystem/src/NotSupportedException.php', - 'League\\Flysystem\\PluginInterface' => __DIR__ . '/..' . '/league/flysystem/src/PluginInterface.php', - 'League\\Flysystem\\Plugin\\AbstractPlugin' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/AbstractPlugin.php', - 'League\\Flysystem\\Plugin\\EmptyDir' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/EmptyDir.php', - 'League\\Flysystem\\Plugin\\ForcedCopy' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ForcedCopy.php', - 'League\\Flysystem\\Plugin\\ForcedRename' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ForcedRename.php', - 'League\\Flysystem\\Plugin\\GetWithMetadata' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/GetWithMetadata.php', - 'League\\Flysystem\\Plugin\\ListFiles' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ListFiles.php', - 'League\\Flysystem\\Plugin\\ListPaths' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ListPaths.php', - 'League\\Flysystem\\Plugin\\ListWith' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ListWith.php', - 'League\\Flysystem\\Plugin\\PluggableTrait' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/PluggableTrait.php', - 'League\\Flysystem\\Plugin\\PluginNotFoundException' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/PluginNotFoundException.php', - 'League\\Flysystem\\ReadInterface' => __DIR__ . '/..' . '/league/flysystem/src/ReadInterface.php', - 'League\\Flysystem\\RootViolationException' => __DIR__ . '/..' . '/league/flysystem/src/RootViolationException.php', - 'League\\Flysystem\\SafeStorage' => __DIR__ . '/..' . '/league/flysystem/src/SafeStorage.php', - 'League\\Flysystem\\UnreadableFileException' => __DIR__ . '/..' . '/league/flysystem/src/UnreadableFileException.php', - 'League\\Flysystem\\Util' => __DIR__ . '/..' . '/league/flysystem/src/Util.php', - 'League\\Flysystem\\Util\\ContentListingFormatter' => __DIR__ . '/..' . '/league/flysystem/src/Util/ContentListingFormatter.php', - 'League\\Flysystem\\Util\\MimeType' => __DIR__ . '/..' . '/league/flysystem/src/Util/MimeType.php', - 'League\\Flysystem\\Util\\StreamHasher' => __DIR__ . '/..' . '/league/flysystem/src/Util/StreamHasher.php', - 'Opis\\Closure\\Analyzer' => __DIR__ . '/..' . '/opis/closure/src/Analyzer.php', - 'Opis\\Closure\\ClosureContext' => __DIR__ . '/..' . '/opis/closure/src/ClosureContext.php', - 'Opis\\Closure\\ClosureScope' => __DIR__ . '/..' . '/opis/closure/src/ClosureScope.php', - 'Opis\\Closure\\ClosureStream' => __DIR__ . '/..' . '/opis/closure/src/ClosureStream.php', - 'Opis\\Closure\\ISecurityProvider' => __DIR__ . '/..' . '/opis/closure/src/ISecurityProvider.php', - 'Opis\\Closure\\ReflectionClosure' => __DIR__ . '/..' . '/opis/closure/src/ReflectionClosure.php', - 'Opis\\Closure\\SecurityException' => __DIR__ . '/..' . '/opis/closure/src/SecurityException.php', - 'Opis\\Closure\\SecurityProvider' => __DIR__ . '/..' . '/opis/closure/src/SecurityProvider.php', - 'Opis\\Closure\\SelfReference' => __DIR__ . '/..' . '/opis/closure/src/SelfReference.php', - 'Opis\\Closure\\SerializableClosure' => __DIR__ . '/..' . '/opis/closure/src/SerializableClosure.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\\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', - 'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/AbstractLogger.php', - 'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/Psr/Log/InvalidArgumentException.php', - 'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/Psr/Log/LogLevel.php', - 'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareInterface.php', - 'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareTrait.php', - 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php', - 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php', - 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php', - 'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', - 'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', - 'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php', - 'Psr\\SimpleCache\\CacheException' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheException.php', - 'Psr\\SimpleCache\\CacheInterface' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheInterface.php', - 'Psr\\SimpleCache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/simple-cache/src/InvalidArgumentException.php', - 'app\\admin\\controller\\Auth' => __DIR__ . '/../..' . '/app/admin/controller/Auth.php', - 'app\\admin\\controller\\Config' => __DIR__ . '/../..' . '/app/admin/controller/Config.php', - 'app\\admin\\controller\\Index' => __DIR__ . '/../..' . '/app/admin/controller/Index.php', - 'app\\admin\\controller\\Login' => __DIR__ . '/../..' . '/app/admin/controller/Login.php', - 'app\\admin\\controller\\Menu' => __DIR__ . '/../..' . '/app/admin/controller/Menu.php', - 'app\\admin\\controller\\Oplog' => __DIR__ . '/../..' . '/app/admin/controller/Oplog.php', - 'app\\admin\\controller\\Queue' => __DIR__ . '/../..' . '/app/admin/controller/Queue.php', - 'app\\admin\\controller\\User' => __DIR__ . '/../..' . '/app/admin/controller/User.php', - 'app\\admin\\controller\\api\\Plugs' => __DIR__ . '/../..' . '/app/admin/controller/api/Plugs.php', - 'app\\admin\\controller\\api\\Update' => __DIR__ . '/../..' . '/app/admin/controller/api/Update.php', - 'app\\admin\\controller\\api\\Upload' => __DIR__ . '/../..' . '/app/admin/controller/api/Upload.php', - 'app\\index\\controller\\Index' => __DIR__ . '/../..' . '/app/index/controller/Index.php', - 'think\\App' => __DIR__ . '/..' . '/topthink/framework/src/think/App.php', - 'think\\Cache' => __DIR__ . '/..' . '/topthink/framework/src/think/Cache.php', - 'think\\Collection' => __DIR__ . '/..' . '/topthink/think-helper/src/Collection.php', - 'think\\Config' => __DIR__ . '/..' . '/topthink/framework/src/think/Config.php', - 'think\\Console' => __DIR__ . '/..' . '/topthink/framework/src/think/Console.php', - 'think\\Container' => __DIR__ . '/..' . '/topthink/framework/src/think/Container.php', - 'think\\Cookie' => __DIR__ . '/..' . '/topthink/framework/src/think/Cookie.php', - 'think\\Db' => __DIR__ . '/..' . '/topthink/framework/src/think/Db.php', - 'think\\DbManager' => __DIR__ . '/..' . '/topthink/think-orm/src/DbManager.php', - 'think\\Env' => __DIR__ . '/..' . '/topthink/framework/src/think/Env.php', - 'think\\Event' => __DIR__ . '/..' . '/topthink/framework/src/think/Event.php', - 'think\\Exception' => __DIR__ . '/..' . '/topthink/framework/src/think/Exception.php', - 'think\\Facade' => __DIR__ . '/..' . '/topthink/framework/src/think/Facade.php', - 'think\\File' => __DIR__ . '/..' . '/topthink/framework/src/think/File.php', - 'think\\Filesystem' => __DIR__ . '/..' . '/topthink/framework/src/think/Filesystem.php', - 'think\\Http' => __DIR__ . '/..' . '/topthink/framework/src/think/Http.php', - 'think\\Lang' => __DIR__ . '/..' . '/topthink/framework/src/think/Lang.php', - 'think\\Log' => __DIR__ . '/..' . '/topthink/framework/src/think/Log.php', - 'think\\Manager' => __DIR__ . '/..' . '/topthink/framework/src/think/Manager.php', - 'think\\Middleware' => __DIR__ . '/..' . '/topthink/framework/src/think/Middleware.php', - 'think\\Model' => __DIR__ . '/..' . '/topthink/think-orm/src/Model.php', - 'think\\Paginator' => __DIR__ . '/..' . '/topthink/think-orm/src/Paginator.php', - 'think\\Pipeline' => __DIR__ . '/..' . '/topthink/framework/src/think/Pipeline.php', - 'think\\Request' => __DIR__ . '/..' . '/topthink/framework/src/think/Request.php', - 'think\\Response' => __DIR__ . '/..' . '/topthink/framework/src/think/Response.php', - 'think\\Route' => __DIR__ . '/..' . '/topthink/framework/src/think/Route.php', - 'think\\Service' => __DIR__ . '/..' . '/topthink/framework/src/think/Service.php', - 'think\\Session' => __DIR__ . '/..' . '/topthink/framework/src/think/Session.php', - 'think\\Template' => __DIR__ . '/..' . '/topthink/think-template/src/Template.php', - 'think\\Validate' => __DIR__ . '/..' . '/topthink/framework/src/think/Validate.php', - 'think\\View' => __DIR__ . '/..' . '/topthink/framework/src/think/View.php', - 'think\\admin\\Controller' => __DIR__ . '/..' . '/zoujingli/think-library/src/Controller.php', - 'think\\admin\\Helper' => __DIR__ . '/..' . '/zoujingli/think-library/src/Helper.php', - 'think\\admin\\Queue' => __DIR__ . '/..' . '/zoujingli/think-library/src/Queue.php', - 'think\\admin\\Service' => __DIR__ . '/..' . '/zoujingli/think-library/src/Service.php', - 'think\\admin\\Storage' => __DIR__ . '/..' . '/zoujingli/think-library/src/Storage.php', - 'think\\admin\\ThinkLibrary' => __DIR__ . '/..' . '/zoujingli/think-library/src/ThinkLibrary.php', - 'think\\admin\\extend\\CodeExtend' => __DIR__ . '/..' . '/zoujingli/think-library/src/extend/CodeExtend.php', - 'think\\admin\\extend\\CsvExtend' => __DIR__ . '/..' . '/zoujingli/think-library/src/extend/CsvExtend.php', - 'think\\admin\\extend\\DataExtend' => __DIR__ . '/..' . '/zoujingli/think-library/src/extend/DataExtend.php', - 'think\\admin\\extend\\ExpressExtend' => __DIR__ . '/..' . '/zoujingli/think-library/src/extend/ExpressExtend.php', - 'think\\admin\\extend\\HttpExtend' => __DIR__ . '/..' . '/zoujingli/think-library/src/extend/HttpExtend.php', - 'think\\admin\\extend\\ProcessExtend' => __DIR__ . '/..' . '/zoujingli/think-library/src/extend/ProcessExtend.php', - 'think\\admin\\helper\\DeleteHelper' => __DIR__ . '/..' . '/zoujingli/think-library/src/helper/DeleteHelper.php', - 'think\\admin\\helper\\FormHelper' => __DIR__ . '/..' . '/zoujingli/think-library/src/helper/FormHelper.php', - 'think\\admin\\helper\\PageHelper' => __DIR__ . '/..' . '/zoujingli/think-library/src/helper/PageHelper.php', - 'think\\admin\\helper\\QueryHelper' => __DIR__ . '/..' . '/zoujingli/think-library/src/helper/QueryHelper.php', - 'think\\admin\\helper\\SaveHelper' => __DIR__ . '/..' . '/zoujingli/think-library/src/helper/SaveHelper.php', - 'think\\admin\\helper\\TokenHelper' => __DIR__ . '/..' . '/zoujingli/think-library/src/helper/TokenHelper.php', - 'think\\admin\\install\\CommandInstall' => __DIR__ . '/..' . '/zoujingli/think-library/src/install/CommandInstall.php', - 'think\\admin\\queue\\ListenQueue' => __DIR__ . '/..' . '/zoujingli/think-library/src/queue/ListenQueue.php', - 'think\\admin\\queue\\QueryQueue' => __DIR__ . '/..' . '/zoujingli/think-library/src/queue/QueryQueue.php', - 'think\\admin\\queue\\StartQueue' => __DIR__ . '/..' . '/zoujingli/think-library/src/queue/StartQueue.php', - 'think\\admin\\queue\\StateQueue' => __DIR__ . '/..' . '/zoujingli/think-library/src/queue/StateQueue.php', - 'think\\admin\\queue\\StopQueue' => __DIR__ . '/..' . '/zoujingli/think-library/src/queue/StopQueue.php', - 'think\\admin\\queue\\WorkQueue' => __DIR__ . '/..' . '/zoujingli/think-library/src/queue/WorkQueue.php', - 'think\\admin\\service\\AuthService' => __DIR__ . '/..' . '/zoujingli/think-library/src/service/AuthService.php', - 'think\\admin\\service\\CaptchaService' => __DIR__ . '/..' . '/zoujingli/think-library/src/service/CaptchaService.php', - 'think\\admin\\service\\InstallService' => __DIR__ . '/..' . '/zoujingli/think-library/src/service/InstallService.php', - 'think\\admin\\service\\MenuService' => __DIR__ . '/..' . '/zoujingli/think-library/src/service/MenuService.php', - 'think\\admin\\service\\NodeService' => __DIR__ . '/..' . '/zoujingli/think-library/src/service/NodeService.php', - 'think\\admin\\service\\TokenService' => __DIR__ . '/..' . '/zoujingli/think-library/src/service/TokenService.php', - 'think\\admin\\storage\\LocalStorage' => __DIR__ . '/..' . '/zoujingli/think-library/src/storage/LocalStorage.php', - 'think\\admin\\storage\\QiniuStorage' => __DIR__ . '/..' . '/zoujingli/think-library/src/storage/QiniuStorage.php', - 'think\\app\\MultiApp' => __DIR__ . '/..' . '/topthink/think-multi-app/src/MultiApp.php', - 'think\\app\\Service' => __DIR__ . '/..' . '/topthink/think-multi-app/src/Service.php', - 'think\\app\\Url' => __DIR__ . '/..' . '/topthink/think-multi-app/src/Url.php', - 'think\\app\\command\\Build' => __DIR__ . '/..' . '/topthink/think-multi-app/src/command/Build.php', - 'think\\cache\\Driver' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/Driver.php', - 'think\\cache\\TagSet' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/TagSet.php', - 'think\\cache\\driver\\File' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/driver/File.php', - 'think\\cache\\driver\\Memcache' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/driver/Memcache.php', - 'think\\cache\\driver\\Memcached' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/driver/Memcached.php', - 'think\\cache\\driver\\Redis' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/driver/Redis.php', - 'think\\cache\\driver\\Wincache' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/driver/Wincache.php', - 'think\\console\\Command' => __DIR__ . '/..' . '/topthink/framework/src/think/console/Command.php', - 'think\\console\\Input' => __DIR__ . '/..' . '/topthink/framework/src/think/console/Input.php', - 'think\\console\\Output' => __DIR__ . '/..' . '/topthink/framework/src/think/console/Output.php', - 'think\\console\\Table' => __DIR__ . '/..' . '/topthink/framework/src/think/console/Table.php', - 'think\\console\\command\\Clear' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/Clear.php', - 'think\\console\\command\\Help' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/Help.php', - 'think\\console\\command\\Lists' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/Lists.php', - 'think\\console\\command\\Make' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/Make.php', - 'think\\console\\command\\RouteList' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/RouteList.php', - 'think\\console\\command\\RunServer' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/RunServer.php', - 'think\\console\\command\\ServiceDiscover' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/ServiceDiscover.php', - 'think\\console\\command\\VendorPublish' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/VendorPublish.php', - 'think\\console\\command\\Version' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/Version.php', - 'think\\console\\command\\make\\Command' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Command.php', - 'think\\console\\command\\make\\Controller' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Controller.php', - 'think\\console\\command\\make\\Event' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Event.php', - 'think\\console\\command\\make\\Listener' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Listener.php', - 'think\\console\\command\\make\\Middleware' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Middleware.php', - 'think\\console\\command\\make\\Model' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Model.php', - 'think\\console\\command\\make\\Service' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Service.php', - 'think\\console\\command\\make\\Subscribe' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Subscribe.php', - 'think\\console\\command\\make\\Validate' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Validate.php', - 'think\\console\\command\\optimize\\Route' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/optimize/Route.php', - 'think\\console\\command\\optimize\\Schema' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/optimize/Schema.php', - 'think\\console\\input\\Argument' => __DIR__ . '/..' . '/topthink/framework/src/think/console/input/Argument.php', - 'think\\console\\input\\Definition' => __DIR__ . '/..' . '/topthink/framework/src/think/console/input/Definition.php', - 'think\\console\\input\\Option' => __DIR__ . '/..' . '/topthink/framework/src/think/console/input/Option.php', - 'think\\console\\output\\Ask' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/Ask.php', - 'think\\console\\output\\Descriptor' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/Descriptor.php', - 'think\\console\\output\\Formatter' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/Formatter.php', - 'think\\console\\output\\Question' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/Question.php', - 'think\\console\\output\\descriptor\\Console' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/descriptor/Console.php', - 'think\\console\\output\\driver\\Buffer' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/driver/Buffer.php', - 'think\\console\\output\\driver\\Console' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/driver/Console.php', - 'think\\console\\output\\driver\\Nothing' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/driver/Nothing.php', - 'think\\console\\output\\formatter\\Stack' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/formatter/Stack.php', - 'think\\console\\output\\formatter\\Style' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/formatter/Style.php', - 'think\\console\\output\\question\\Choice' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/question/Choice.php', - 'think\\console\\output\\question\\Confirmation' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/question/Confirmation.php', - 'think\\contract\\Arrayable' => __DIR__ . '/..' . '/topthink/think-helper/src/contract/Arrayable.php', - 'think\\contract\\CacheHandlerInterface' => __DIR__ . '/..' . '/topthink/framework/src/think/contract/CacheHandlerInterface.php', - 'think\\contract\\Jsonable' => __DIR__ . '/..' . '/topthink/think-helper/src/contract/Jsonable.php', - 'think\\contract\\LogHandlerInterface' => __DIR__ . '/..' . '/topthink/framework/src/think/contract/LogHandlerInterface.php', - 'think\\contract\\ModelRelationInterface' => __DIR__ . '/..' . '/topthink/framework/src/think/contract/ModelRelationInterface.php', - 'think\\contract\\SessionHandlerInterface' => __DIR__ . '/..' . '/topthink/framework/src/think/contract/SessionHandlerInterface.php', - 'think\\contract\\TemplateHandlerInterface' => __DIR__ . '/..' . '/topthink/framework/src/think/contract/TemplateHandlerInterface.php', - 'think\\db\\BaseQuery' => __DIR__ . '/..' . '/topthink/think-orm/src/db/BaseQuery.php', - 'think\\db\\Builder' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Builder.php', - 'think\\db\\CacheItem' => __DIR__ . '/..' . '/topthink/think-orm/src/db/CacheItem.php', - 'think\\db\\Connection' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Connection.php', - 'think\\db\\ConnectionInterface' => __DIR__ . '/..' . '/topthink/think-orm/src/db/ConnectionInterface.php', - 'think\\db\\Fetch' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Fetch.php', - 'think\\db\\Mongo' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Mongo.php', - 'think\\db\\PDOConnection' => __DIR__ . '/..' . '/topthink/think-orm/src/db/PDOConnection.php', - 'think\\db\\Query' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Query.php', - 'think\\db\\Raw' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Raw.php', - 'think\\db\\Where' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Where.php', - 'think\\db\\builder\\Mongo' => __DIR__ . '/..' . '/topthink/think-orm/src/db/builder/Mongo.php', - 'think\\db\\builder\\Mysql' => __DIR__ . '/..' . '/topthink/think-orm/src/db/builder/Mysql.php', - 'think\\db\\builder\\Oracle' => __DIR__ . '/..' . '/topthink/think-orm/src/db/builder/Oracle.php', - 'think\\db\\builder\\Pgsql' => __DIR__ . '/..' . '/topthink/think-orm/src/db/builder/Pgsql.php', - 'think\\db\\builder\\Sqlite' => __DIR__ . '/..' . '/topthink/think-orm/src/db/builder/Sqlite.php', - 'think\\db\\builder\\Sqlsrv' => __DIR__ . '/..' . '/topthink/think-orm/src/db/builder/Sqlsrv.php', - 'think\\db\\concern\\AggregateQuery' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/AggregateQuery.php', - 'think\\db\\concern\\JoinAndViewQuery' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/JoinAndViewQuery.php', - 'think\\db\\concern\\ModelRelationQuery' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/ModelRelationQuery.php', - 'think\\db\\concern\\ParamsBind' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/ParamsBind.php', - 'think\\db\\concern\\ResultOperation' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/ResultOperation.php', - 'think\\db\\concern\\TableFieldInfo' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/TableFieldInfo.php', - 'think\\db\\concern\\TimeFieldQuery' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/TimeFieldQuery.php', - 'think\\db\\concern\\Transaction' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/Transaction.php', - 'think\\db\\concern\\WhereQuery' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/WhereQuery.php', - 'think\\db\\connector\\Mongo' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Mongo.php', - 'think\\db\\connector\\Mysql' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Mysql.php', - 'think\\db\\connector\\Oracle' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Oracle.php', - 'think\\db\\connector\\Pgsql' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Pgsql.php', - 'think\\db\\connector\\Sqlite' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Sqlite.php', - 'think\\db\\connector\\Sqlsrv' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Sqlsrv.php', - 'think\\db\\exception\\BindParamException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/BindParamException.php', - 'think\\db\\exception\\DataNotFoundException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/DataNotFoundException.php', - 'think\\db\\exception\\DbException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/DbException.php', - 'think\\db\\exception\\InvalidArgumentException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/InvalidArgumentException.php', - 'think\\db\\exception\\ModelEventException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/ModelEventException.php', - 'think\\db\\exception\\ModelNotFoundException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/ModelNotFoundException.php', - 'think\\db\\exception\\PDOException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/PDOException.php', - 'think\\event\\AppInit' => __DIR__ . '/..' . '/topthink/framework/src/think/event/AppInit.php', - 'think\\event\\HttpEnd' => __DIR__ . '/..' . '/topthink/framework/src/think/event/HttpEnd.php', - 'think\\event\\HttpRun' => __DIR__ . '/..' . '/topthink/framework/src/think/event/HttpRun.php', - 'think\\event\\LogWrite' => __DIR__ . '/..' . '/topthink/framework/src/think/event/LogWrite.php', - 'think\\event\\RouteLoaded' => __DIR__ . '/..' . '/topthink/framework/src/think/event/RouteLoaded.php', - 'think\\exception\\ClassNotFoundException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/ClassNotFoundException.php', - 'think\\exception\\ErrorException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/ErrorException.php', - 'think\\exception\\FileException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/FileException.php', - 'think\\exception\\FuncNotFoundException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/FuncNotFoundException.php', - 'think\\exception\\Handle' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/Handle.php', - 'think\\exception\\HttpException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/HttpException.php', - 'think\\exception\\HttpResponseException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/HttpResponseException.php', - 'think\\exception\\InvalidArgumentException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/InvalidArgumentException.php', - 'think\\exception\\RouteNotFoundException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/RouteNotFoundException.php', - 'think\\exception\\ValidateException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/ValidateException.php', - 'think\\facade\\App' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/App.php', - 'think\\facade\\Cache' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Cache.php', - 'think\\facade\\Config' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Config.php', - 'think\\facade\\Console' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Console.php', - 'think\\facade\\Cookie' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Cookie.php', - 'think\\facade\\Db' => __DIR__ . '/..' . '/topthink/think-orm/src/facade/Db.php', - 'think\\facade\\Env' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Env.php', - 'think\\facade\\Event' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Event.php', - 'think\\facade\\Facade' => __DIR__ . '/..' . '/topthink/think-orm/src/facade/Db.php', - 'think\\facade\\Filesystem' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Filesystem.php', - 'think\\facade\\Lang' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Lang.php', - 'think\\facade\\Log' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Log.php', - 'think\\facade\\Middleware' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Middleware.php', - 'think\\facade\\Request' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Request.php', - 'think\\facade\\Route' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Route.php', - 'think\\facade\\Session' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Session.php', - 'think\\facade\\Template' => __DIR__ . '/..' . '/topthink/think-template/src/facade/Template.php', - 'think\\facade\\Validate' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Validate.php', - 'think\\facade\\View' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/View.php', - 'think\\file\\UploadedFile' => __DIR__ . '/..' . '/topthink/framework/src/think/file/UploadedFile.php', - 'think\\filesystem\\CacheStore' => __DIR__ . '/..' . '/topthink/framework/src/think/filesystem/CacheStore.php', - 'think\\filesystem\\Driver' => __DIR__ . '/..' . '/topthink/framework/src/think/filesystem/Driver.php', - 'think\\filesystem\\driver\\Local' => __DIR__ . '/..' . '/topthink/framework/src/think/filesystem/driver/Local.php', - 'think\\helper\\Arr' => __DIR__ . '/..' . '/topthink/think-helper/src/helper/Arr.php', - 'think\\helper\\Str' => __DIR__ . '/..' . '/topthink/think-helper/src/helper/Str.php', - 'think\\initializer\\BootService' => __DIR__ . '/..' . '/topthink/framework/src/think/initializer/BootService.php', - 'think\\initializer\\Error' => __DIR__ . '/..' . '/topthink/framework/src/think/initializer/Error.php', - 'think\\initializer\\RegisterService' => __DIR__ . '/..' . '/topthink/framework/src/think/initializer/RegisterService.php', - 'think\\log\\Channel' => __DIR__ . '/..' . '/topthink/framework/src/think/log/Channel.php', - 'think\\log\\ChannelSet' => __DIR__ . '/..' . '/topthink/framework/src/think/log/ChannelSet.php', - 'think\\log\\driver\\File' => __DIR__ . '/..' . '/topthink/framework/src/think/log/driver/File.php', - 'think\\log\\driver\\Socket' => __DIR__ . '/..' . '/topthink/framework/src/think/log/driver/Socket.php', - 'think\\middleware\\AllowCrossDomain' => __DIR__ . '/..' . '/topthink/framework/src/think/middleware/AllowCrossDomain.php', - 'think\\middleware\\CheckRequestCache' => __DIR__ . '/..' . '/topthink/framework/src/think/middleware/CheckRequestCache.php', - 'think\\middleware\\FormTokenCheck' => __DIR__ . '/..' . '/topthink/framework/src/think/middleware/FormTokenCheck.php', - 'think\\middleware\\LoadLangPack' => __DIR__ . '/..' . '/topthink/framework/src/think/middleware/LoadLangPack.php', - 'think\\middleware\\SessionInit' => __DIR__ . '/..' . '/topthink/framework/src/think/middleware/SessionInit.php', - 'think\\model\\Collection' => __DIR__ . '/..' . '/topthink/think-orm/src/model/Collection.php', - 'think\\model\\Pivot' => __DIR__ . '/..' . '/topthink/think-orm/src/model/Pivot.php', - 'think\\model\\Relation' => __DIR__ . '/..' . '/topthink/think-orm/src/model/Relation.php', - 'think\\model\\concern\\Attribute' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/Attribute.php', - 'think\\model\\concern\\Conversion' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/Conversion.php', - 'think\\model\\concern\\ModelEvent' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/ModelEvent.php', - 'think\\model\\concern\\OptimLock' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/OptimLock.php', - 'think\\model\\concern\\RelationShip' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/RelationShip.php', - 'think\\model\\concern\\SoftDelete' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/SoftDelete.php', - 'think\\model\\concern\\TimeStamp' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/TimeStamp.php', - 'think\\model\\relation\\BelongsTo' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/BelongsTo.php', - 'think\\model\\relation\\BelongsToMany' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/BelongsToMany.php', - 'think\\model\\relation\\HasMany' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/HasMany.php', - 'think\\model\\relation\\HasManyThrough' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/HasManyThrough.php', - 'think\\model\\relation\\HasOne' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/HasOne.php', - 'think\\model\\relation\\HasOneThrough' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/HasOneThrough.php', - 'think\\model\\relation\\MorphMany' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/MorphMany.php', - 'think\\model\\relation\\MorphOne' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/MorphOne.php', - 'think\\model\\relation\\MorphTo' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/MorphTo.php', - 'think\\model\\relation\\OneToOne' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/OneToOne.php', - 'think\\paginator\\driver\\Bootstrap' => __DIR__ . '/..' . '/topthink/think-orm/src/paginator/driver/Bootstrap.php', - 'think\\response\\File' => __DIR__ . '/..' . '/topthink/framework/src/think/response/File.php', - 'think\\response\\Html' => __DIR__ . '/..' . '/topthink/framework/src/think/response/Html.php', - 'think\\response\\Json' => __DIR__ . '/..' . '/topthink/framework/src/think/response/Json.php', - 'think\\response\\Jsonp' => __DIR__ . '/..' . '/topthink/framework/src/think/response/Jsonp.php', - 'think\\response\\Redirect' => __DIR__ . '/..' . '/topthink/framework/src/think/response/Redirect.php', - 'think\\response\\View' => __DIR__ . '/..' . '/topthink/framework/src/think/response/View.php', - 'think\\response\\Xml' => __DIR__ . '/..' . '/topthink/framework/src/think/response/Xml.php', - 'think\\route\\Dispatch' => __DIR__ . '/..' . '/topthink/framework/src/think/route/Dispatch.php', - 'think\\route\\Domain' => __DIR__ . '/..' . '/topthink/framework/src/think/route/Domain.php', - 'think\\route\\Resource' => __DIR__ . '/..' . '/topthink/framework/src/think/route/Resource.php', - 'think\\route\\Rule' => __DIR__ . '/..' . '/topthink/framework/src/think/route/Rule.php', - 'think\\route\\RuleGroup' => __DIR__ . '/..' . '/topthink/framework/src/think/route/RuleGroup.php', - 'think\\route\\RuleItem' => __DIR__ . '/..' . '/topthink/framework/src/think/route/RuleItem.php', - 'think\\route\\RuleName' => __DIR__ . '/..' . '/topthink/framework/src/think/route/RuleName.php', - 'think\\route\\Url' => __DIR__ . '/..' . '/topthink/framework/src/think/route/Url.php', - 'think\\route\\dispatch\\Callback' => __DIR__ . '/..' . '/topthink/framework/src/think/route/dispatch/Callback.php', - 'think\\route\\dispatch\\Controller' => __DIR__ . '/..' . '/topthink/framework/src/think/route/dispatch/Controller.php', - 'think\\route\\dispatch\\Redirect' => __DIR__ . '/..' . '/topthink/framework/src/think/route/dispatch/Redirect.php', - 'think\\route\\dispatch\\Response' => __DIR__ . '/..' . '/topthink/framework/src/think/route/dispatch/Response.php', - 'think\\route\\dispatch\\Url' => __DIR__ . '/..' . '/topthink/framework/src/think/route/dispatch/Url.php', - 'think\\route\\dispatch\\View' => __DIR__ . '/..' . '/topthink/framework/src/think/route/dispatch/View.php', - 'think\\service\\ModelService' => __DIR__ . '/..' . '/topthink/framework/src/think/service/ModelService.php', - 'think\\service\\PaginatorService' => __DIR__ . '/..' . '/topthink/framework/src/think/service/PaginatorService.php', - 'think\\service\\ValidateService' => __DIR__ . '/..' . '/topthink/framework/src/think/service/ValidateService.php', - 'think\\session\\Store' => __DIR__ . '/..' . '/topthink/framework/src/think/session/Store.php', - 'think\\session\\driver\\Cache' => __DIR__ . '/..' . '/topthink/framework/src/think/session/driver/Cache.php', - 'think\\session\\driver\\File' => __DIR__ . '/..' . '/topthink/framework/src/think/session/driver/File.php', - 'think\\template\\TagLib' => __DIR__ . '/..' . '/topthink/think-template/src/template/TagLib.php', - 'think\\template\\driver\\File' => __DIR__ . '/..' . '/topthink/think-template/src/template/driver/File.php', - 'think\\template\\exception\\TemplateNotFoundException' => __DIR__ . '/..' . '/topthink/think-template/src/template/exception/TemplateNotFoundException.php', - 'think\\template\\taglib\\Cx' => __DIR__ . '/..' . '/topthink/think-template/src/template/taglib/Cx.php', - 'think\\validate\\ValidateRule' => __DIR__ . '/..' . '/topthink/framework/src/think/validate/ValidateRule.php', - 'think\\view\\driver\\Php' => __DIR__ . '/..' . '/topthink/framework/src/think/view/driver/Php.php', - 'think\\view\\driver\\Think' => __DIR__ . '/..' . '/topthink/think-view/src/Think.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit2989e522f6b5791430f792353154d986::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit2989e522f6b5791430f792353154d986::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit2989e522f6b5791430f792353154d986::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json deleted file mode 100644 index 2d7f20ac1..000000000 --- a/vendor/composer/installed.json +++ /dev/null @@ -1,860 +0,0 @@ -[ - { - "name": "league/flysystem", - "version": "1.0.57", - "version_normalized": "1.0.57.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "0e9db7f0b96b9f12dcf6f65bc34b72b1a30ea55a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/0e9db7f0b96b9f12dcf6f65bc34b72b1a30ea55a", - "reference": "0e9db7f0b96b9f12dcf6f65bc34b72b1a30ea55a", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-fileinfo": "*", - "php": ">=5.5.9" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" - }, - "require-dev": { - "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7.10" - }, - "suggest": { - "ext-fileinfo": "Required for MimeType", - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" - }, - "time": "2019-10-16T21:01:05+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "description": "Filesystem abstraction: Many filesystems, one API.", - "keywords": [ - "Cloud Files", - "WebDAV", - "abstraction", - "aws", - "cloud", - "copy.com", - "dropbox", - "file systems", - "files", - "filesystem", - "filesystems", - "ftp", - "rackspace", - "remote", - "s3", - "sftp", - "storage" - ] - }, - { - "name": "league/flysystem-cached-adapter", - "version": "1.0.9", - "version_normalized": "1.0.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem-cached-adapter.git", - "reference": "08ef74e9be88100807a3b92cc9048a312bf01d6f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-cached-adapter/zipball/08ef74e9be88100807a3b92cc9048a312bf01d6f", - "reference": "08ef74e9be88100807a3b92cc9048a312bf01d6f", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "league/flysystem": "~1.0", - "psr/cache": "^1.0.0" - }, - "require-dev": { - "mockery/mockery": "~0.9", - "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7", - "predis/predis": "~1.0", - "tedivm/stash": "~0.12" - }, - "suggest": { - "ext-phpredis": "Pure C implemented extension for PHP" - }, - "time": "2018-07-09T20:51:04+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "League\\Flysystem\\Cached\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "frankdejonge", - "email": "info@frenky.net" - } - ], - "description": "An adapter decorator to enable meta-data caching." - }, - { - "name": "opis/closure", - "version": "3.4.1", - "version_normalized": "3.4.1.0", - "source": { - "type": "git", - "url": "https://github.com/opis/closure.git", - "reference": "e79f851749c3caa836d7ccc01ede5828feb762c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/e79f851749c3caa836d7ccc01ede5828feb762c7", - "reference": "e79f851749c3caa836d7ccc01ede5828feb762c7", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^5.4 || ^7.0" - }, - "require-dev": { - "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "time": "2019-10-19T18:38:51+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Opis\\Closure\\": "src/" - }, - "files": [ - "functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - }, - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" - } - ], - "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", - "homepage": "https://opis.io/closure", - "keywords": [ - "anonymous functions", - "closure", - "function", - "serializable", - "serialization", - "serialize" - ] - }, - { - "name": "psr/cache", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2016-08-06T20:24:11+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": "http://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ] - }, - { - "name": "psr/container", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2017-02-14T16:28:37+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ] - }, - { - "name": "psr/log", - "version": "1.1.2", - "version_normalized": "1.1.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2019-11-01T11:05:21+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ] - }, - { - "name": "psr/simple-cache", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2017-10-23T01:57:42+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ] - }, - { - "name": "topthink/framework", - "version": "v6.0.0", - "version_normalized": "6.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/framework.git", - "reference": "79c555aab0313d1a33ddcdb3c395f2c47f37f597" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/framework/zipball/79c555aab0313d1a33ddcdb3c395f2c47f37f597", - "reference": "79c555aab0313d1a33ddcdb3c395f2c47f37f597", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "league/flysystem": "^1.0", - "league/flysystem-cached-adapter": "^1.0", - "opis/closure": "^3.1", - "php": ">=7.1.0", - "psr/container": "~1.0", - "psr/log": "~1.0", - "psr/simple-cache": "^1.0", - "topthink/think-helper": "^3.1.1", - "topthink/think-orm": "^2.0" - }, - "require-dev": { - "mikey179/vfsstream": "^1.6", - "mockery/mockery": "^1.2", - "phpunit/phpunit": "^7.0" - }, - "time": "2019-10-23T23:28:43+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [], - "psr-4": { - "think\\": "src/think/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - }, - { - "name": "yunwuxin", - "email": "448901948@qq.com" - } - ], - "description": "The ThinkPHP Framework.", - "homepage": "http://thinkphp.cn/", - "keywords": [ - "framework", - "orm", - "thinkphp" - ] - }, - { - "name": "topthink/think-helper", - "version": "v3.1.3", - "version_normalized": "3.1.3.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-helper.git", - "reference": "4d85dfd3778623bbb1de3648f1dcd0c82f4439f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-helper/zipball/4d85dfd3778623bbb1de3648f1dcd0c82f4439f4", - "reference": "4d85dfd3778623bbb1de3648f1dcd0c82f4439f4", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1.0" - }, - "time": "2019-09-30T02:36:48+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "think\\": "src" - }, - "files": [ - "src/helper.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "yunwuxin", - "email": "448901948@qq.com" - } - ], - "description": "The ThinkPHP6 Helper Package" - }, - { - "name": "topthink/think-multi-app", - "version": "v1.0.11", - "version_normalized": "1.0.11.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-multi-app.git", - "reference": "215f4a6bb88e53ad41b448c61957336eb55ce6f9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-multi-app/zipball/215f4a6bb88e53ad41b448c61957336eb55ce6f9", - "reference": "215f4a6bb88e53ad41b448c61957336eb55ce6f9", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1.0", - "topthink/framework": "^6.0.0" - }, - "time": "2019-10-29T06:34:59+00:00", - "type": "library", - "extra": { - "think": { - "services": [ - "think\\app\\Service" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "think\\app\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "description": "thinkphp6 multi app support" - }, - { - "name": "topthink/think-orm", - "version": "v2.0.27", - "version_normalized": "2.0.27.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-orm.git", - "reference": "02affaaccade2cdd8bbb2d2f5d15e46113e6eb50" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-orm/zipball/02affaaccade2cdd8bbb2d2f5d15e46113e6eb50", - "reference": "02affaaccade2cdd8bbb2d2f5d15e46113e6eb50", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-json": "*", - "php": ">=7.1.0", - "psr/log": "~1.0", - "psr/simple-cache": "^1.0", - "topthink/think-helper": "^3.1" - }, - "time": "2019-10-23T02:16:50+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "think\\": "src" - }, - "files": [] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "description": "think orm", - "keywords": [ - "database", - "orm" - ] - }, - { - "name": "topthink/think-template", - "version": "v2.0.7", - "version_normalized": "2.0.7.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-template.git", - "reference": "e98bdbb4a4c94b442f17dfceba81e0134d4fbd19" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-template/zipball/e98bdbb4a4c94b442f17dfceba81e0134d4fbd19", - "reference": "e98bdbb4a4c94b442f17dfceba81e0134d4fbd19", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1.0", - "psr/simple-cache": "^1.0" - }, - "time": "2019-09-20T15:31:04+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "think\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "description": "the php template engine" - }, - { - "name": "topthink/think-view", - "version": "v1.0.13", - "version_normalized": "1.0.13.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-view.git", - "reference": "90803b73f781db5d42619082c4597afc58b2d4c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-view/zipball/90803b73f781db5d42619082c4597afc58b2d4c5", - "reference": "90803b73f781db5d42619082c4597afc58b2d4c5", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1.0", - "topthink/think-template": "^2.0" - }, - "time": "2019-10-07T12:23:10+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "think\\view\\driver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "description": "thinkphp template driver" - }, - { - "name": "zoujingli/ip2region", - "version": "v1.0.7", - "version_normalized": "1.0.7.0", - "source": { - "type": "git", - "url": "https://github.com/zoujingli/ip2region.git", - "reference": "f898a7d90cfacd54433de4028190c336164f2ae4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zoujingli/ip2region/zipball/f898a7d90cfacd54433de4028190c336164f2ae4", - "reference": "f898a7d90cfacd54433de4028190c336164f2ae4", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3" - }, - "time": "2019-10-29T09:03:57+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "classmap": [ - "Ip2Region.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Anyon", - "email": "zoujingli@qq.com", - "homepage": "http://ctolog.com" - } - ], - "description": "Ip2Region for PHP", - "homepage": "https://github.com/zoujingli/Ip2Region", - "keywords": [ - "Ip2Region" - ] - }, - { - "name": "zoujingli/think-library", - "version": "v6.0.x-dev", - "version_normalized": "6.0.9999999.9999999-dev", - "source": { - "type": "git", - "url": "https://github.com/zoujingli/ThinkLibrary.git", - "reference": "397b530b37fc26f3fe6fa6c9730f2f013b53b734" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/397b530b37fc26f3fe6fa6c9730f2f013b53b734", - "reference": "397b530b37fc26f3fe6fa6c9730f2f013b53b734", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-curl": "*", - "ext-gd": "*", - "ext-iconv": "*", - "ext-json": "*", - "topthink/framework": "^6.0" - }, - "time": "2019-11-09T08:17:20+00:00", - "type": "library", - "extra": { - "think": { - "services": [ - "think\\admin\\ThinkLibrary" - ] - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/common.php" - ], - "psr-4": { - "think\\admin\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Anyon", - "email": "zoujingli@qq.com" - } - ], - "description": "ThinkPHP v6.0 Development Library", - "homepage": "http://framework.thinkadmin.top" - } -] diff --git a/vendor/league/flysystem-cached-adapter/.editorconfig b/vendor/league/flysystem-cached-adapter/.editorconfig deleted file mode 100644 index 153cf3ef5..000000000 --- a/vendor/league/flysystem-cached-adapter/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -; top-most EditorConfig file -root = true - -; Unix-style newlines -[*] -end_of_line = LF - -[*.php] -indent_style = space -indent_size = 4 diff --git a/vendor/league/flysystem-cached-adapter/.gitignore b/vendor/league/flysystem-cached-adapter/.gitignore deleted file mode 100644 index 7aea75f4f..000000000 --- a/vendor/league/flysystem-cached-adapter/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -coverage -coverage.xml -composer.lock -vendor \ No newline at end of file diff --git a/vendor/league/flysystem-cached-adapter/.php_cs b/vendor/league/flysystem-cached-adapter/.php_cs deleted file mode 100644 index 6643a32cf..000000000 --- a/vendor/league/flysystem-cached-adapter/.php_cs +++ /dev/null @@ -1,7 +0,0 @@ -level(Symfony\CS\FixerInterface::PSR2_LEVEL) - ->fixers(['-yoda_conditions', 'ordered_use', 'short_array_syntax']) - ->finder(Symfony\CS\Finder\DefaultFinder::create() - ->in(__DIR__.'/src/')); \ No newline at end of file diff --git a/vendor/league/flysystem-cached-adapter/.scrutinizer.yml b/vendor/league/flysystem-cached-adapter/.scrutinizer.yml deleted file mode 100644 index fa39b52b3..000000000 --- a/vendor/league/flysystem-cached-adapter/.scrutinizer.yml +++ /dev/null @@ -1,34 +0,0 @@ -filter: - paths: [src/*] -checks: - php: - code_rating: true - remove_extra_empty_lines: true - remove_php_closing_tag: true - remove_trailing_whitespace: true - fix_use_statements: - remove_unused: true - preserve_multiple: false - preserve_blanklines: true - order_alphabetically: true - fix_php_opening_tag: true - fix_linefeed: true - fix_line_ending: true - fix_identation_4spaces: true - fix_doc_comments: true -tools: - external_code_coverage: - timeout: 900 - runs: 6 - php_code_coverage: false - php_code_sniffer: - config: - standard: PSR2 - filter: - paths: ['src'] - php_loc: - enabled: true - excluded_dirs: [vendor, spec, stubs] - php_cpd: - enabled: true - excluded_dirs: [vendor, spec, stubs] \ No newline at end of file diff --git a/vendor/league/flysystem-cached-adapter/.travis.yml b/vendor/league/flysystem-cached-adapter/.travis.yml deleted file mode 100644 index 6706449fd..000000000 --- a/vendor/league/flysystem-cached-adapter/.travis.yml +++ /dev/null @@ -1,29 +0,0 @@ -language: php - -php: - - 5.5 - - 5.6 - - 7.0 - - 7.1 - - 7.2 - -matrix: - allow_failures: - - php: 5.5 - -env: - - COMPOSER_OPTS="" - - COMPOSER_OPTS="--prefer-lowest" - -install: - - if [[ "${TRAVIS_PHP_VERSION}" == "5.5" ]]; then composer require phpunit/phpunit:^4.8.36 phpspec/phpspec:^2 --prefer-dist --update-with-dependencies; fi - - if [[ "${TRAVIS_PHP_VERSION}" == "7.2" ]]; then composer require phpunit/phpunit:^6.0 --prefer-dist --update-with-dependencies; fi - - travis_retry composer update --prefer-dist $COMPOSER_OPTS - -script: - - vendor/bin/phpspec run - - vendor/bin/phpunit - -after_script: - - wget https://scrutinizer-ci.com/ocular.phar' - - php ocular.phar code-coverage:upload --format=php-clover ./clover/phpunit.xml' diff --git a/vendor/league/flysystem-cached-adapter/LICENSE b/vendor/league/flysystem-cached-adapter/LICENSE deleted file mode 100644 index 666f6c826..000000000 --- a/vendor/league/flysystem-cached-adapter/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015 Frank de Jonge - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/league/flysystem-cached-adapter/clover/.gitignore b/vendor/league/flysystem-cached-adapter/clover/.gitignore deleted file mode 100644 index d6b7ef32c..000000000 --- a/vendor/league/flysystem-cached-adapter/clover/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/vendor/league/flysystem-cached-adapter/composer.json b/vendor/league/flysystem-cached-adapter/composer.json deleted file mode 100644 index df7fb7fd9..000000000 --- a/vendor/league/flysystem-cached-adapter/composer.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "league/flysystem-cached-adapter", - "description": "An adapter decorator to enable meta-data caching.", - "autoload": { - "psr-4": { - "League\\Flysystem\\Cached\\": "src/" - } - }, - "require": { - "league/flysystem": "~1.0", - "psr/cache": "^1.0.0" - }, - "require-dev": { - "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7", - "mockery/mockery": "~0.9", - "predis/predis": "~1.0", - "tedivm/stash": "~0.12" - }, - "suggest": { - "ext-phpredis": "Pure C implemented extension for PHP" - }, - "license": "MIT", - "authors": [ - { - "name": "frankdejonge", - "email": "info@frenky.net" - } - ] -} diff --git a/vendor/league/flysystem-cached-adapter/phpspec.yml b/vendor/league/flysystem-cached-adapter/phpspec.yml deleted file mode 100644 index 5eabcb21b..000000000 --- a/vendor/league/flysystem-cached-adapter/phpspec.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -suites: - cached_adapter_suite: - namespace: League\Flysystem\Cached - psr4_prefix: League\Flysystem\Cached -formatter.name: pretty diff --git a/vendor/league/flysystem-cached-adapter/phpunit.php b/vendor/league/flysystem-cached-adapter/phpunit.php deleted file mode 100644 index d10958796..000000000 --- a/vendor/league/flysystem-cached-adapter/phpunit.php +++ /dev/null @@ -1,3 +0,0 @@ - - - - - ./tests/ - - - - - ./src/ - - - - - - - - diff --git a/vendor/league/flysystem-cached-adapter/readme.md b/vendor/league/flysystem-cached-adapter/readme.md deleted file mode 100644 index dd1433d98..000000000 --- a/vendor/league/flysystem-cached-adapter/readme.md +++ /dev/null @@ -1,20 +0,0 @@ -# Flysystem Cached CachedAdapter - -[![Author](http://img.shields.io/badge/author-@frankdejonge-blue.svg?style=flat-square)](https://twitter.com/frankdejonge) -[![Build Status](https://img.shields.io/travis/thephpleague/flysystem-cached-adapter/master.svg?style=flat-square)](https://travis-ci.org/thephpleague/flysystem-cached-adapter) -[![Coverage Status](https://img.shields.io/scrutinizer/coverage/g/thephpleague/flysystem-cached-adapter.svg?style=flat-square)](https://scrutinizer-ci.com/g/thephpleague/flysystem-cached-adapter/code-structure) -[![Quality Score](https://img.shields.io/scrutinizer/g/thephpleague/flysystem-cached-adapter.svg?style=flat-square)](https://scrutinizer-ci.com/g/thephpleague/flysystem-cached-adapter) -[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE) -[![Packagist Version](https://img.shields.io/packagist/v/league/flysystem-cached-adapter.svg?style=flat-square)](https://packagist.org/packages/league/flysystem-cached-adapter) -[![Total Downloads](https://img.shields.io/packagist/dt/league/flysystem-cached-adapter.svg?style=flat-square)](https://packagist.org/packages/league/flysystem-cached-adapter) - - -The adapter decorator caches metadata and directory listings. - -```bash -composer require league/flysystem-cached-adapter -``` - -## Usage - -[Check out the docs.](https://flysystem.thephpleague.com/docs/advanced/caching/) diff --git a/vendor/league/flysystem-cached-adapter/spec/CachedAdapterSpec.php b/vendor/league/flysystem-cached-adapter/spec/CachedAdapterSpec.php deleted file mode 100644 index 69428d990..000000000 --- a/vendor/league/flysystem-cached-adapter/spec/CachedAdapterSpec.php +++ /dev/null @@ -1,435 +0,0 @@ -adapter = $adapter; - $this->cache = $cache; - $this->cache->load()->shouldBeCalled(); - $this->beConstructedWith($adapter, $cache); - } - - public function it_is_initializable() - { - $this->shouldHaveType('League\Flysystem\Cached\CachedAdapter'); - $this->shouldHaveType('League\Flysystem\AdapterInterface'); - } - - public function it_should_forward_read_streams() - { - $path = 'path.txt'; - $response = ['path' => $path]; - $this->adapter->readStream($path)->willReturn($response); - $this->readStream($path)->shouldbe($response); - } - - public function it_should_cache_writes() - { - $type = 'file'; - $path = 'path.txt'; - $contents = 'contents'; - $config = new Config(); - $response = compact('path', 'contents', 'type'); - $this->adapter->write($path, $contents, $config)->willReturn($response); - $this->cache->updateObject($path, $response, true)->shouldBeCalled(); - $this->write($path, $contents, $config)->shouldBe($response); - } - - public function it_should_cache_streamed_writes() - { - $type = 'file'; - $path = 'path.txt'; - $stream = tmpfile(); - $config = new Config(); - $response = compact('path', 'stream', 'type'); - $this->adapter->writeStream($path, $stream, $config)->willReturn($response); - $this->cache->updateObject($path, ['contents' => false] + $response, true)->shouldBeCalled(); - $this->writeStream($path, $stream, $config)->shouldBe($response); - fclose($stream); - } - - public function it_should_cache_streamed_updates() - { - $type = 'file'; - $path = 'path.txt'; - $stream = tmpfile(); - $config = new Config(); - $response = compact('path', 'stream', 'type'); - $this->adapter->updateStream($path, $stream, $config)->willReturn($response); - $this->cache->updateObject($path, ['contents' => false] + $response, true)->shouldBeCalled(); - $this->updateStream($path, $stream, $config)->shouldBe($response); - fclose($stream); - } - - public function it_should_ignore_failed_writes() - { - $path = 'path.txt'; - $contents = 'contents'; - $config = new Config(); - $this->adapter->write($path, $contents, $config)->willReturn(false); - $this->write($path, $contents, $config)->shouldBe(false); - } - - public function it_should_ignore_failed_streamed_writes() - { - $path = 'path.txt'; - $contents = tmpfile(); - $config = new Config(); - $this->adapter->writeStream($path, $contents, $config)->willReturn(false); - $this->writeStream($path, $contents, $config)->shouldBe(false); - fclose($contents); - } - - public function it_should_cache_updated() - { - $type = 'file'; - $path = 'path.txt'; - $contents = 'contents'; - $config = new Config(); - $response = compact('path', 'contents', 'type'); - $this->adapter->update($path, $contents, $config)->willReturn($response); - $this->cache->updateObject($path, $response, true)->shouldBeCalled(); - $this->update($path, $contents, $config)->shouldBe($response); - } - - public function it_should_ignore_failed_updates() - { - $path = 'path.txt'; - $contents = 'contents'; - $config = new Config(); - $this->adapter->update($path, $contents, $config)->willReturn(false); - $this->update($path, $contents, $config)->shouldBe(false); - } - - public function it_should_ignore_failed_streamed_updates() - { - $path = 'path.txt'; - $contents = tmpfile(); - $config = new Config(); - $this->adapter->updateStream($path, $contents, $config)->willReturn(false); - $this->updateStream($path, $contents, $config)->shouldBe(false); - fclose($contents); - } - - public function it_should_cache_renames() - { - $old = 'old.txt'; - $new = 'new.txt'; - $this->adapter->rename($old, $new)->willReturn(true); - $this->cache->rename($old, $new)->shouldBeCalled(); - $this->rename($old, $new)->shouldBe(true); - } - - public function it_should_ignore_rename_fails() - { - $old = 'old.txt'; - $new = 'new.txt'; - $this->adapter->rename($old, $new)->willReturn(false); - $this->rename($old, $new)->shouldBe(false); - } - - public function it_should_cache_copies() - { - $old = 'old.txt'; - $new = 'new.txt'; - $this->adapter->copy($old, $new)->willReturn(true); - $this->cache->copy($old, $new)->shouldBeCalled(); - $this->copy($old, $new)->shouldBe(true); - } - - public function it_should_ignore_copy_fails() - { - $old = 'old.txt'; - $new = 'new.txt'; - $this->adapter->copy($old, $new)->willReturn(false); - $this->copy($old, $new)->shouldBe(false); - } - - public function it_should_cache_deletes() - { - $delete = 'delete.txt'; - $this->adapter->delete($delete)->willReturn(true); - $this->cache->delete($delete)->shouldBeCalled(); - $this->delete($delete)->shouldBe(true); - } - - public function it_should_ignore_delete_fails() - { - $delete = 'delete.txt'; - $this->adapter->delete($delete)->willReturn(false); - $this->delete($delete)->shouldBe(false); - } - - public function it_should_cache_dir_deletes() - { - $delete = 'delete'; - $this->adapter->deleteDir($delete)->willReturn(true); - $this->cache->deleteDir($delete)->shouldBeCalled(); - $this->deleteDir($delete)->shouldBe(true); - } - - public function it_should_ignore_delete_dir_fails() - { - $delete = 'delete'; - $this->adapter->deleteDir($delete)->willReturn(false); - $this->deleteDir($delete)->shouldBe(false); - } - - public function it_should_cache_dir_creates() - { - $dirname = 'dirname'; - $config = new Config(); - $response = ['path' => $dirname, 'type' => 'dir']; - $this->adapter->createDir($dirname, $config)->willReturn($response); - $this->cache->updateObject($dirname, $response, true)->shouldBeCalled(); - $this->createDir($dirname, $config)->shouldBe($response); - } - - public function it_should_ignore_create_dir_fails() - { - $dirname = 'dirname'; - $config = new Config(); - $this->adapter->createDir($dirname, $config)->willReturn(false); - $this->createDir($dirname, $config)->shouldBe(false); - } - - public function it_should_cache_set_visibility() - { - $path = 'path.txt'; - $visibility = AdapterInterface::VISIBILITY_PUBLIC; - $this->adapter->setVisibility($path, $visibility)->willReturn(true); - $this->cache->updateObject($path, ['path' => $path, 'visibility' => $visibility], true)->shouldBeCalled(); - $this->setVisibility($path, $visibility)->shouldBe(true); - } - - public function it_should_ignore_set_visibility_fails() - { - $dirname = 'delete'; - $visibility = AdapterInterface::VISIBILITY_PUBLIC; - $this->adapter->setVisibility($dirname, $visibility)->willReturn(false); - $this->setVisibility($dirname, $visibility)->shouldBe(false); - } - - public function it_should_indicate_missing_files() - { - $this->cache->has($path = 'path.txt')->willReturn(false); - $this->has($path)->shouldBe(false); - } - - public function it_should_indicate_file_existance() - { - $this->cache->has($path = 'path.txt')->willReturn(true); - $this->has($path)->shouldBe(true); - } - - public function it_should_cache_missing_files() - { - $this->cache->has($path = 'path.txt')->willReturn(null); - $this->adapter->has($path)->willReturn(false); - $this->cache->storeMiss($path)->shouldBeCalled(); - $this->has($path)->shouldBe(false); - } - - public function it_should_delete_when_metadata_is_missing() - { - $path = 'path.txt'; - $this->cache->has($path)->willReturn(true); - $this->cache->getSize($path)->willReturn(['path' => $path]); - $this->adapter->getSize($path)->willReturn($response = ['path' => $path, 'size' => 1024]); - $this->cache->updateObject($path, $response, true)->shouldBeCalled(); - $this->getSize($path)->shouldBe($response); - } - - public function it_should_cache_has() - { - $this->cache->has($path = 'path.txt')->willReturn(null); - $this->adapter->has($path)->willReturn(true); - $this->cache->updateObject($path, compact('path'), true)->shouldBeCalled(); - $this->has($path)->shouldBe(true); - } - - public function it_should_list_cached_contents() - { - $this->cache->isComplete($dirname = 'dirname', $recursive = true)->willReturn(true); - $response = [['path' => 'path.txt']]; - $this->cache->listContents($dirname, $recursive)->willReturn($response); - $this->listContents($dirname, $recursive)->shouldBe($response); - } - - public function it_should_ignore_failed_list_contents() - { - $this->cache->isComplete($dirname = 'dirname', $recursive = true)->willReturn(false); - $this->adapter->listContents($dirname, $recursive)->willReturn(false); - $this->listContents($dirname, $recursive)->shouldBe(false); - } - - public function it_should_cache_contents_listings() - { - $this->cache->isComplete($dirname = 'dirname', $recursive = true)->willReturn(false); - $response = [['path' => 'path.txt']]; - $this->adapter->listContents($dirname, $recursive)->willReturn($response); - $this->cache->storeContents($dirname, $response, $recursive)->shouldBeCalled(); - $this->listContents($dirname, $recursive)->shouldBe($response); - } - - public function it_should_use_cached_visibility() - { - $this->make_it_use_getter_cache('getVisibility', 'path.txt', [ - 'path' => 'path.txt', - 'visibility' => AdapterInterface::VISIBILITY_PUBLIC, - ]); - } - - public function it_should_cache_get_visibility() - { - $path = 'path.txt'; - $response = ['visibility' => AdapterInterface::VISIBILITY_PUBLIC, 'path' => $path]; - $this->make_it_cache_getter('getVisibility', $path, $response); - } - - public function it_should_ignore_failed_get_visibility() - { - $path = 'path.txt'; - $this->make_it_ignore_failed_getter('getVisibility', $path); - } - - public function it_should_use_cached_timestamp() - { - $this->make_it_use_getter_cache('getTimestamp', 'path.txt', [ - 'path' => 'path.txt', - 'timestamp' => 1234, - ]); - } - - public function it_should_cache_timestamps() - { - $this->make_it_cache_getter('getTimestamp', 'path.txt', [ - 'path' => 'path.txt', - 'timestamp' => 1234, - ]); - } - - public function it_should_ignore_failed_get_timestamps() - { - $this->make_it_ignore_failed_getter('getTimestamp', 'path.txt'); - } - - public function it_should_cache_get_metadata() - { - $path = 'path.txt'; - $response = ['visibility' => AdapterInterface::VISIBILITY_PUBLIC, 'path' => $path]; - $this->make_it_cache_getter('getMetadata', $path, $response); - } - - public function it_should_use_cached_metadata() - { - $this->make_it_use_getter_cache('getMetadata', 'path.txt', [ - 'path' => 'path.txt', - 'timestamp' => 1234, - ]); - } - - public function it_should_ignore_failed_get_metadata() - { - $this->make_it_ignore_failed_getter('getMetadata', 'path.txt'); - } - - public function it_should_cache_get_size() - { - $path = 'path.txt'; - $response = ['size' => 1234, 'path' => $path]; - $this->make_it_cache_getter('getSize', $path, $response); - } - - public function it_should_use_cached_size() - { - $this->make_it_use_getter_cache('getSize', 'path.txt', [ - 'path' => 'path.txt', - 'size' => 1234, - ]); - } - - public function it_should_ignore_failed_get_size() - { - $this->make_it_ignore_failed_getter('getSize', 'path.txt'); - } - - public function it_should_cache_get_mimetype() - { - $path = 'path.txt'; - $response = ['mimetype' => 'text/plain', 'path' => $path]; - $this->make_it_cache_getter('getMimetype', $path, $response); - } - - public function it_should_use_cached_mimetype() - { - $this->make_it_use_getter_cache('getMimetype', 'path.txt', [ - 'path' => 'path.txt', - 'mimetype' => 'text/plain', - ]); - } - - public function it_should_ignore_failed_get_mimetype() - { - $this->make_it_ignore_failed_getter('getMimetype', 'path.txt'); - } - - public function it_should_cache_reads() - { - $path = 'path.txt'; - $response = ['path' => $path, 'contents' => 'contents']; - $this->make_it_cache_getter('read', $path, $response); - } - - public function it_should_use_cached_file_contents() - { - $this->make_it_use_getter_cache('read', 'path.txt', [ - 'path' => 'path.txt', - 'contents' => 'contents' - ]); - } - - public function it_should_ignore_failed_reads() - { - $this->make_it_ignore_failed_getter('read', 'path.txt'); - } - - protected function make_it_use_getter_cache($method, $path, $response) - { - $this->cache->{$method}($path)->willReturn($response); - $this->{$method}($path)->shouldBe($response); - } - - protected function make_it_cache_getter($method, $path, $response) - { - $this->cache->{$method}($path)->willReturn(false); - $this->adapter->{$method}($path)->willReturn($response); - $this->cache->updateObject($path, $response, true)->shouldBeCalled(); - $this->{$method}($path)->shouldBe($response); - } - - protected function make_it_ignore_failed_getter($method, $path) - { - $this->cache->{$method}($path)->willReturn(false); - $this->adapter->{$method}($path)->willReturn(false); - $this->{$method}($path)->shouldBe(false); - } -} diff --git a/vendor/league/flysystem-cached-adapter/src/CacheInterface.php b/vendor/league/flysystem-cached-adapter/src/CacheInterface.php deleted file mode 100644 index de3ab3d90..000000000 --- a/vendor/league/flysystem-cached-adapter/src/CacheInterface.php +++ /dev/null @@ -1,101 +0,0 @@ -adapter = $adapter; - $this->cache = $cache; - $this->cache->load(); - } - - /** - * Get the underlying Adapter implementation. - * - * @return AdapterInterface - */ - public function getAdapter() - { - return $this->adapter; - } - - /** - * Get the used Cache implementation. - * - * @return CacheInterface - */ - public function getCache() - { - return $this->cache; - } - - /** - * {@inheritdoc} - */ - public function write($path, $contents, Config $config) - { - $result = $this->adapter->write($path, $contents, $config); - - if ($result !== false) { - $result['type'] = 'file'; - $this->cache->updateObject($path, $result + compact('path', 'contents'), true); - } - - return $result; - } - - /** - * {@inheritdoc} - */ - public function writeStream($path, $resource, Config $config) - { - $result = $this->adapter->writeStream($path, $resource, $config); - - if ($result !== false) { - $result['type'] = 'file'; - $contents = false; - $this->cache->updateObject($path, $result + compact('path', 'contents'), true); - } - - return $result; - } - - /** - * {@inheritdoc} - */ - public function update($path, $contents, Config $config) - { - $result = $this->adapter->update($path, $contents, $config); - - if ($result !== false) { - $result['type'] = 'file'; - $this->cache->updateObject($path, $result + compact('path', 'contents'), true); - } - - return $result; - } - - /** - * {@inheritdoc} - */ - public function updateStream($path, $resource, Config $config) - { - $result = $this->adapter->updateStream($path, $resource, $config); - - if ($result !== false) { - $result['type'] = 'file'; - $contents = false; - $this->cache->updateObject($path, $result + compact('path', 'contents'), true); - } - - return $result; - } - - /** - * {@inheritdoc} - */ - public function rename($path, $newPath) - { - $result = $this->adapter->rename($path, $newPath); - - if ($result !== false) { - $this->cache->rename($path, $newPath); - } - - return $result; - } - - /** - * {@inheritdoc} - */ - public function copy($path, $newpath) - { - $result = $this->adapter->copy($path, $newpath); - - if ($result !== false) { - $this->cache->copy($path, $newpath); - } - - return $result; - } - - /** - * {@inheritdoc} - */ - public function delete($path) - { - $result = $this->adapter->delete($path); - - if ($result !== false) { - $this->cache->delete($path); - } - - return $result; - } - - /** - * {@inheritdoc} - */ - public function deleteDir($dirname) - { - $result = $this->adapter->deleteDir($dirname); - - if ($result !== false) { - $this->cache->deleteDir($dirname); - } - - return $result; - } - - /** - * {@inheritdoc} - */ - public function createDir($dirname, Config $config) - { - $result = $this->adapter->createDir($dirname, $config); - - if ($result !== false) { - $type = 'dir'; - $path = $dirname; - $this->cache->updateObject($dirname, compact('path', 'type'), true); - } - - return $result; - } - - /** - * {@inheritdoc} - */ - public function setVisibility($path, $visibility) - { - $result = $this->adapter->setVisibility($path, $visibility); - - if ($result !== false) { - $this->cache->updateObject($path, compact('path', 'visibility'), true); - } - - return $result; - } - - /** - * {@inheritdoc} - */ - public function has($path) - { - $cacheHas = $this->cache->has($path); - - if ($cacheHas !== null) { - return $cacheHas; - } - - $adapterResponse = $this->adapter->has($path); - - if (! $adapterResponse) { - $this->cache->storeMiss($path); - } else { - $cacheEntry = is_array($adapterResponse) ? $adapterResponse : compact('path'); - $this->cache->updateObject($path, $cacheEntry, true); - } - - return $adapterResponse; - } - - /** - * {@inheritdoc} - */ - public function read($path) - { - return $this->callWithFallback('contents', $path, 'read'); - } - - /** - * {@inheritdoc} - */ - public function readStream($path) - { - return $this->adapter->readStream($path); - } - - /** - * {@inheritdoc} - */ - public function listContents($directory = '', $recursive = false) - { - if ($this->cache->isComplete($directory, $recursive)) { - return $this->cache->listContents($directory, $recursive); - } - - $result = $this->adapter->listContents($directory, $recursive); - - if ($result !== false) { - $this->cache->storeContents($directory, $result, $recursive); - } - - return $result; - } - - /** - * {@inheritdoc} - */ - public function getMetadata($path) - { - return $this->callWithFallback(null, $path, 'getMetadata'); - } - - /** - * {@inheritdoc} - */ - public function getSize($path) - { - return $this->callWithFallback('size', $path, 'getSize'); - } - - /** - * {@inheritdoc} - */ - public function getMimetype($path) - { - return $this->callWithFallback('mimetype', $path, 'getMimetype'); - } - - /** - * {@inheritdoc} - */ - public function getTimestamp($path) - { - return $this->callWithFallback('timestamp', $path, 'getTimestamp'); - } - - /** - * {@inheritdoc} - */ - public function getVisibility($path) - { - return $this->callWithFallback('visibility', $path, 'getVisibility'); - } - - /** - * Call a method and cache the response. - * - * @param string $property - * @param string $path - * @param string $method - * - * @return mixed - */ - protected function callWithFallback($property, $path, $method) - { - $result = $this->cache->{$method}($path); - - if ($result !== false && ($property === null || array_key_exists($property, $result))) { - return $result; - } - - $result = $this->adapter->{$method}($path); - - if ($result) { - $object = $result + compact('path'); - $this->cache->updateObject($path, $object, true); - } - - return $result; - } -} diff --git a/vendor/league/flysystem-cached-adapter/src/Storage/AbstractCache.php b/vendor/league/flysystem-cached-adapter/src/Storage/AbstractCache.php deleted file mode 100644 index c2076d490..000000000 --- a/vendor/league/flysystem-cached-adapter/src/Storage/AbstractCache.php +++ /dev/null @@ -1,417 +0,0 @@ -autosave) { - $this->save(); - } - } - - /** - * Get the autosave setting. - * - * @return bool autosave - */ - public function getAutosave() - { - return $this->autosave; - } - - /** - * Get the autosave setting. - * - * @param bool $autosave - */ - public function setAutosave($autosave) - { - $this->autosave = $autosave; - } - - /** - * Store the contents listing. - * - * @param string $directory - * @param array $contents - * @param bool $recursive - * - * @return array contents listing - */ - public function storeContents($directory, array $contents, $recursive = false) - { - $directories = [$directory]; - - foreach ($contents as $object) { - $this->updateObject($object['path'], $object); - $object = $this->cache[$object['path']]; - - if ($recursive && $this->pathIsInDirectory($directory, $object['path'])) { - $directories[] = $object['dirname']; - } - } - - foreach (array_unique($directories) as $directory) { - $this->setComplete($directory, $recursive); - } - - $this->autosave(); - } - - /** - * Update the metadata for an object. - * - * @param string $path object path - * @param array $object object metadata - * @param bool $autosave whether to trigger the autosave routine - */ - public function updateObject($path, array $object, $autosave = false) - { - if (! $this->has($path)) { - $this->cache[$path] = Util::pathinfo($path); - } - - $this->cache[$path] = array_merge($this->cache[$path], $object); - - if ($autosave) { - $this->autosave(); - } - - $this->ensureParentDirectories($path); - } - - /** - * Store object hit miss. - * - * @param string $path - */ - public function storeMiss($path) - { - $this->cache[$path] = false; - $this->autosave(); - } - - /** - * Get the contents listing. - * - * @param string $dirname - * @param bool $recursive - * - * @return array contents listing - */ - public function listContents($dirname = '', $recursive = false) - { - $result = []; - - foreach ($this->cache as $object) { - if ($object === false) { - continue; - } - if ($object['dirname'] === $dirname) { - $result[] = $object; - } elseif ($recursive && $this->pathIsInDirectory($dirname, $object['path'])) { - $result[] = $object; - } - } - - return $result; - } - - /** - * {@inheritdoc} - */ - public function has($path) - { - if ($path !== false && array_key_exists($path, $this->cache)) { - return $this->cache[$path] !== false; - } - - if ($this->isComplete(Util::dirname($path), false)) { - return false; - } - } - - /** - * {@inheritdoc} - */ - public function read($path) - { - if (isset($this->cache[$path]['contents']) && $this->cache[$path]['contents'] !== false) { - return $this->cache[$path]; - } - - return false; - } - - /** - * {@inheritdoc} - */ - public function readStream($path) - { - return false; - } - - /** - * {@inheritdoc} - */ - public function rename($path, $newpath) - { - if ($this->has($path)) { - $object = $this->cache[$path]; - unset($this->cache[$path]); - $object['path'] = $newpath; - $object = array_merge($object, Util::pathinfo($newpath)); - $this->cache[$newpath] = $object; - $this->autosave(); - } - } - - /** - * {@inheritdoc} - */ - public function copy($path, $newpath) - { - if ($this->has($path)) { - $object = $this->cache[$path]; - $object = array_merge($object, Util::pathinfo($newpath)); - $this->updateObject($newpath, $object, true); - } - } - - /** - * {@inheritdoc} - */ - public function delete($path) - { - $this->storeMiss($path); - } - - /** - * {@inheritdoc} - */ - public function deleteDir($dirname) - { - foreach ($this->cache as $path => $object) { - if ($this->pathIsInDirectory($dirname, $path) || $path === $dirname) { - unset($this->cache[$path]); - } - } - - unset($this->complete[$dirname]); - - $this->autosave(); - } - - /** - * {@inheritdoc} - */ - public function getMimetype($path) - { - if (isset($this->cache[$path]['mimetype'])) { - return $this->cache[$path]; - } - - if (! $result = $this->read($path)) { - return false; - } - - $mimetype = Util::guessMimeType($path, $result['contents']); - $this->cache[$path]['mimetype'] = $mimetype; - - return $this->cache[$path]; - } - - /** - * {@inheritdoc} - */ - public function getSize($path) - { - if (isset($this->cache[$path]['size'])) { - return $this->cache[$path]; - } - - return false; - } - - /** - * {@inheritdoc} - */ - public function getTimestamp($path) - { - if (isset($this->cache[$path]['timestamp'])) { - return $this->cache[$path]; - } - - return false; - } - - /** - * {@inheritdoc} - */ - public function getVisibility($path) - { - if (isset($this->cache[$path]['visibility'])) { - return $this->cache[$path]; - } - - return false; - } - - /** - * {@inheritdoc} - */ - public function getMetadata($path) - { - if (isset($this->cache[$path]['type'])) { - return $this->cache[$path]; - } - - return false; - } - - /** - * {@inheritdoc} - */ - public function isComplete($dirname, $recursive) - { - if (! array_key_exists($dirname, $this->complete)) { - return false; - } - - if ($recursive && $this->complete[$dirname] !== 'recursive') { - return false; - } - - return true; - } - - /** - * {@inheritdoc} - */ - public function setComplete($dirname, $recursive) - { - $this->complete[$dirname] = $recursive ? 'recursive' : true; - } - - /** - * Filter the contents from a listing. - * - * @param array $contents object listing - * - * @return array filtered contents - */ - public function cleanContents(array $contents) - { - $cachedProperties = array_flip([ - 'path', 'dirname', 'basename', 'extension', 'filename', - 'size', 'mimetype', 'visibility', 'timestamp', 'type', - ]); - - foreach ($contents as $path => $object) { - if (is_array($object)) { - $contents[$path] = array_intersect_key($object, $cachedProperties); - } - } - - return $contents; - } - - /** - * {@inheritdoc} - */ - public function flush() - { - $this->cache = []; - $this->complete = []; - $this->autosave(); - } - - /** - * {@inheritdoc} - */ - public function autosave() - { - if ($this->autosave) { - $this->save(); - } - } - - /** - * Retrieve serialized cache data. - * - * @return string serialized data - */ - public function getForStorage() - { - $cleaned = $this->cleanContents($this->cache); - - return json_encode([$cleaned, $this->complete]); - } - - /** - * Load from serialized cache data. - * - * @param string $json - */ - public function setFromStorage($json) - { - list($cache, $complete) = json_decode($json, true); - - if (json_last_error() === JSON_ERROR_NONE && is_array($cache) && is_array($complete)) { - $this->cache = $cache; - $this->complete = $complete; - } - } - - /** - * Ensure parent directories of an object. - * - * @param string $path object path - */ - public function ensureParentDirectories($path) - { - $object = $this->cache[$path]; - - while ($object['dirname'] !== '' && ! isset($this->cache[$object['dirname']])) { - $object = Util::pathinfo($object['dirname']); - $object['type'] = 'dir'; - $this->cache[$object['path']] = $object; - } - } - - /** - * Determines if the path is inside the directory. - * - * @param string $directory - * @param string $path - * - * @return bool - */ - protected function pathIsInDirectory($directory, $path) - { - return $directory === '' || strpos($path, $directory . '/') === 0; - } -} diff --git a/vendor/league/flysystem-cached-adapter/src/Storage/Adapter.php b/vendor/league/flysystem-cached-adapter/src/Storage/Adapter.php deleted file mode 100644 index 3aa8b1aee..000000000 --- a/vendor/league/flysystem-cached-adapter/src/Storage/Adapter.php +++ /dev/null @@ -1,115 +0,0 @@ -adapter = $adapter; - $this->file = $file; - $this->setExpire($expire); - } - - /** - * Set the expiration time in seconds. - * - * @param int $expire relative expiration time - */ - protected function setExpire($expire) - { - if ($expire) { - $this->expire = $this->getTime($expire); - } - } - - /** - * Get expiration time in seconds. - * - * @param int $time relative expiration time - * - * @return int actual expiration time - */ - protected function getTime($time = 0) - { - return intval(microtime(true)) + $time; - } - - /** - * {@inheritdoc} - */ - public function setFromStorage($json) - { - list($cache, $complete, $expire) = json_decode($json, true); - - if (! $expire || $expire > $this->getTime()) { - $this->cache = $cache; - $this->complete = $complete; - } else { - $this->adapter->delete($this->file); - } - } - - /** - * {@inheritdoc} - */ - public function load() - { - if ($this->adapter->has($this->file)) { - $file = $this->adapter->read($this->file); - if ($file && !empty($file['contents'])) { - $this->setFromStorage($file['contents']); - } - } - } - - /** - * {@inheritdoc} - */ - public function getForStorage() - { - $cleaned = $this->cleanContents($this->cache); - - return json_encode([$cleaned, $this->complete, $this->expire]); - } - - /** - * {@inheritdoc} - */ - public function save() - { - $config = new Config(); - $contents = $this->getForStorage(); - - if ($this->adapter->has($this->file)) { - $this->adapter->update($this->file, $contents, $config); - } else { - $this->adapter->write($this->file, $contents, $config); - } - } -} diff --git a/vendor/league/flysystem-cached-adapter/src/Storage/Memcached.php b/vendor/league/flysystem-cached-adapter/src/Storage/Memcached.php deleted file mode 100644 index f67d2717a..000000000 --- a/vendor/league/flysystem-cached-adapter/src/Storage/Memcached.php +++ /dev/null @@ -1,59 +0,0 @@ -key = $key; - $this->expire = $expire; - $this->memcached = $memcached; - } - - /** - * {@inheritdoc} - */ - public function load() - { - $contents = $this->memcached->get($this->key); - - if ($contents !== false) { - $this->setFromStorage($contents); - } - } - - /** - * {@inheritdoc} - */ - public function save() - { - $contents = $this->getForStorage(); - $expiration = $this->expire === null ? 0 : time() + $this->expire; - $this->memcached->set($this->key, $contents, $expiration); - } -} diff --git a/vendor/league/flysystem-cached-adapter/src/Storage/Memory.php b/vendor/league/flysystem-cached-adapter/src/Storage/Memory.php deleted file mode 100644 index d0914fabd..000000000 --- a/vendor/league/flysystem-cached-adapter/src/Storage/Memory.php +++ /dev/null @@ -1,22 +0,0 @@ -client = $client ?: new Redis(); - $this->key = $key; - $this->expire = $expire; - } - - /** - * {@inheritdoc} - */ - public function load() - { - $contents = $this->client->get($this->key); - - if ($contents !== false) { - $this->setFromStorage($contents); - } - } - - /** - * {@inheritdoc} - */ - public function save() - { - $contents = $this->getForStorage(); - $this->client->set($this->key, $contents); - - if ($this->expire !== null) { - $this->client->expire($this->key, $this->expire); - } - } -} diff --git a/vendor/league/flysystem-cached-adapter/src/Storage/Predis.php b/vendor/league/flysystem-cached-adapter/src/Storage/Predis.php deleted file mode 100644 index 8a295744b..000000000 --- a/vendor/league/flysystem-cached-adapter/src/Storage/Predis.php +++ /dev/null @@ -1,75 +0,0 @@ -client = $client ?: new Client(); - $this->key = $key; - $this->expire = $expire; - } - - /** - * {@inheritdoc} - */ - public function load() - { - if (($contents = $this->executeCommand('get', [$this->key])) !== null) { - $this->setFromStorage($contents); - } - } - - /** - * {@inheritdoc} - */ - public function save() - { - $contents = $this->getForStorage(); - $this->executeCommand('set', [$this->key, $contents]); - - if ($this->expire !== null) { - $this->executeCommand('expire', [$this->key, $this->expire]); - } - } - - /** - * Execute a Predis command. - * - * @param string $name - * @param array $arguments - * - * @return string - */ - protected function executeCommand($name, array $arguments) - { - $command = $this->client->createCommand($name, $arguments); - - return $this->client->executeCommand($command); - } -} diff --git a/vendor/league/flysystem-cached-adapter/src/Storage/Psr6Cache.php b/vendor/league/flysystem-cached-adapter/src/Storage/Psr6Cache.php deleted file mode 100644 index 43be87e53..000000000 --- a/vendor/league/flysystem-cached-adapter/src/Storage/Psr6Cache.php +++ /dev/null @@ -1,59 +0,0 @@ -pool = $pool; - $this->key = $key; - $this->expire = $expire; - } - - /** - * {@inheritdoc} - */ - public function save() - { - $item = $this->pool->getItem($this->key); - $item->set($this->getForStorage()); - $item->expiresAfter($this->expire); - $this->pool->save($item); - } - - /** - * {@inheritdoc} - */ - public function load() - { - $item = $this->pool->getItem($this->key); - if ($item->isHit()) { - $this->setFromStorage($item->get()); - } - } -} \ No newline at end of file diff --git a/vendor/league/flysystem-cached-adapter/src/Storage/Stash.php b/vendor/league/flysystem-cached-adapter/src/Storage/Stash.php deleted file mode 100644 index e05b83228..000000000 --- a/vendor/league/flysystem-cached-adapter/src/Storage/Stash.php +++ /dev/null @@ -1,60 +0,0 @@ -key = $key; - $this->expire = $expire; - $this->pool = $pool; - } - - /** - * {@inheritdoc} - */ - public function load() - { - $item = $this->pool->getItem($this->key); - $contents = $item->get(); - - if ($item->isMiss() === false) { - $this->setFromStorage($contents); - } - } - - /** - * {@inheritdoc} - */ - public function save() - { - $contents = $this->getForStorage(); - $item = $this->pool->getItem($this->key); - $item->set($contents, $this->expire); - } -} diff --git a/vendor/league/flysystem-cached-adapter/tests/AdapterCacheTests.php b/vendor/league/flysystem-cached-adapter/tests/AdapterCacheTests.php deleted file mode 100644 index b63cba788..000000000 --- a/vendor/league/flysystem-cached-adapter/tests/AdapterCacheTests.php +++ /dev/null @@ -1,104 +0,0 @@ -shouldReceive('has')->once()->with('file.json')->andReturn(false); - $cache = new Adapter($adapter, 'file.json', 10); - $cache->load(); - $this->assertFalse($cache->isComplete('', false)); - } - - public function testLoadExpired() - { - $response = ['contents' => json_encode([[], ['' => true], 1234567890]), 'path' => 'file.json']; - $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); - $adapter->shouldReceive('has')->once()->with('file.json')->andReturn(true); - $adapter->shouldReceive('read')->once()->with('file.json')->andReturn($response); - $adapter->shouldReceive('delete')->once()->with('file.json'); - $cache = new Adapter($adapter, 'file.json', 10); - $cache->load(); - $this->assertFalse($cache->isComplete('', false)); - } - - public function testLoadSuccess() - { - $response = ['contents' => json_encode([[], ['' => true], 9876543210]), 'path' => 'file.json']; - $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); - $adapter->shouldReceive('has')->once()->with('file.json')->andReturn(true); - $adapter->shouldReceive('read')->once()->with('file.json')->andReturn($response); - $cache = new Adapter($adapter, 'file.json', 10); - $cache->load(); - $this->assertTrue($cache->isComplete('', false)); - } - - public function testSaveExists() - { - $response = json_encode([[], [], null]); - $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); - $adapter->shouldReceive('has')->once()->with('file.json')->andReturn(true); - $adapter->shouldReceive('update')->once()->with('file.json', $response, Mockery::any()); - $cache = new Adapter($adapter, 'file.json', null); - $cache->save(); - } - - public function testSaveNew() - { - $response = json_encode([[], [], null]); - $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); - $adapter->shouldReceive('has')->once()->with('file.json')->andReturn(false); - $adapter->shouldReceive('write')->once()->with('file.json', $response, Mockery::any()); - $cache = new Adapter($adapter, 'file.json', null); - $cache->save(); - } - - public function testStoreContentsRecursive() - { - $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); - $adapter->shouldReceive('has')->once()->with('file.json')->andReturn(false); - $adapter->shouldReceive('write')->once()->with('file.json', Mockery::any(), Mockery::any()); - - $cache = new Adapter($adapter, 'file.json', null); - - $contents = [ - ['path' => 'foo/bar', 'dirname' => 'foo'], - ['path' => 'afoo/bang', 'dirname' => 'afoo'], - ]; - - $cache->storeContents('foo', $contents, true); - - $this->assertTrue($cache->isComplete('foo', true)); - $this->assertFalse($cache->isComplete('afoo', true)); - } - - public function testDeleteDir() - { - $cache_data = [ - 'foo' => ['path' => 'foo', 'type' => 'dir', 'dirname' => ''], - 'foo/bar' => ['path' => 'foo/bar', 'type' => 'file', 'dirname' => 'foo'], - 'foobaz' => ['path' => 'foobaz', 'type' => 'file', 'dirname' => ''], - ]; - - $response = [ - 'contents' => json_encode([$cache_data, [], null]), - 'path' => 'file.json', - ]; - - $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); - $adapter->shouldReceive('has')->zeroOrMoreTimes()->with('file.json')->andReturn(true); - $adapter->shouldReceive('read')->once()->with('file.json')->andReturn($response); - $adapter->shouldReceive('update')->once()->with('file.json', Mockery::any(), Mockery::any())->andReturn(true); - - $cache = new Adapter($adapter, 'file.json', null); - $cache->load(); - - $cache->deleteDir('foo', true); - - $this->assertSame(1, count($cache->listContents('', true))); - } -} diff --git a/vendor/league/flysystem-cached-adapter/tests/InspectionTests.php b/vendor/league/flysystem-cached-adapter/tests/InspectionTests.php deleted file mode 100644 index 40d4c915e..000000000 --- a/vendor/league/flysystem-cached-adapter/tests/InspectionTests.php +++ /dev/null @@ -1,16 +0,0 @@ -shouldReceive('load')->once(); - $cached_adapter = new CachedAdapter($adapter, $cache); - $this->assertInstanceOf('League\Flysystem\AdapterInterface', $cached_adapter->getAdapter()); - } -} diff --git a/vendor/league/flysystem-cached-adapter/tests/MemcachedTests.php b/vendor/league/flysystem-cached-adapter/tests/MemcachedTests.php deleted file mode 100644 index e3d9ad939..000000000 --- a/vendor/league/flysystem-cached-adapter/tests/MemcachedTests.php +++ /dev/null @@ -1,35 +0,0 @@ -shouldReceive('get')->once()->andReturn(false); - $cache = new Memcached($client); - $cache->load(); - $this->assertFalse($cache->isComplete('', false)); - } - - public function testLoadSuccess() - { - $response = json_encode([[], ['' => true]]); - $client = Mockery::mock('Memcached'); - $client->shouldReceive('get')->once()->andReturn($response); - $cache = new Memcached($client); - $cache->load(); - $this->assertTrue($cache->isComplete('', false)); - } - - public function testSave() - { - $response = json_encode([[], []]); - $client = Mockery::mock('Memcached'); - $client->shouldReceive('set')->once()->andReturn($response); - $cache = new Memcached($client); - $cache->save(); - } -} diff --git a/vendor/league/flysystem-cached-adapter/tests/MemoryCacheTests.php b/vendor/league/flysystem-cached-adapter/tests/MemoryCacheTests.php deleted file mode 100644 index 3ac58fd08..000000000 --- a/vendor/league/flysystem-cached-adapter/tests/MemoryCacheTests.php +++ /dev/null @@ -1,255 +0,0 @@ -setAutosave(true); - $this->assertTrue($cache->getAutosave()); - $cache->setAutosave(false); - $this->assertFalse($cache->getAutosave()); - } - - public function testCacheMiss() - { - $cache = new Memory(); - $cache->storeMiss('path.txt'); - $this->assertFalse($cache->has('path.txt')); - } - - public function testIsComplete() - { - $cache = new Memory(); - $this->assertFalse($cache->isComplete('dirname', false)); - $cache->setComplete('dirname', false); - $this->assertFalse($cache->isComplete('dirname', true)); - $cache->setComplete('dirname', true); - $this->assertTrue($cache->isComplete('dirname', true)); - } - - public function testCleanContents() - { - $cache = new Memory(); - $input = [[ - 'path' => 'path.txt', - 'visibility' => 'public', - 'invalid' => 'thing', - ]]; - - $expected = [[ - 'path' => 'path.txt', - 'visibility' => 'public', - ]]; - - $output = $cache->cleanContents($input); - $this->assertEquals($expected, $output); - } - - public function testGetForStorage() - { - $cache = new Memory(); - $input = [[ - 'path' => 'path.txt', - 'visibility' => 'public', - 'type' => 'file', - ]]; - - $cache->storeContents('', $input, true); - $contents = $cache->listContents('', true); - $cached = []; - foreach ($contents as $item) { - $cached[$item['path']] = $item; - } - - $this->assertEquals(json_encode([$cached, ['' => 'recursive']]), $cache->getForStorage()); - } - - public function testParentCompleteIsUsedDuringHas() - { - $cache = new Memory(); - $cache->setComplete('dirname', false); - $this->assertFalse($cache->has('dirname/path.txt')); - } - - public function testFlush() - { - $cache = new Memory(); - $cache->setComplete('dirname', true); - $cache->updateObject('path.txt', [ - 'path' => 'path.txt', - 'visibility' => 'public', - ]); - $cache->flush(); - $this->assertFalse($cache->isComplete('dirname', true)); - $this->assertNull($cache->has('path.txt')); - } - - public function testSetFromStorage() - { - $cache = new Memory(); - $json = [[ - 'path.txt' => ['path' => 'path.txt', 'type' => 'file'], - ], ['dirname' => 'recursive']]; - $jsonString = json_encode($json); - $cache->setFromStorage($jsonString); - $this->assertTrue($cache->has('path.txt')); - $this->assertTrue($cache->isComplete('dirname', true)); - } - - public function testGetMetadataFail() - { - $cache = new Memory(); - $this->assertFalse($cache->getMetadata('path.txt')); - } - - public function metaGetterProvider() - { - return [ - ['getTimestamp', 'timestamp', 12344], - ['getMimetype', 'mimetype', 'text/plain'], - ['getSize', 'size', 12], - ['getVisibility', 'visibility', 'private'], - ['read', 'contents', '__contents__'], - ]; - } - - /** - * @dataProvider metaGetterProvider - * - * @param $method - * @param $key - * @param $value - */ - public function testMetaGetters($method, $key, $value) - { - $cache = new Memory(); - $this->assertFalse($cache->{$method}('path.txt')); - $cache->updateObject('path.txt', $object = [ - 'path' => 'path.txt', - 'type' => 'file', - $key => $value, - ] + Util::pathinfo('path.txt'), true); - $this->assertEquals($object, $cache->{$method}('path.txt')); - $this->assertEquals($object, $cache->getMetadata('path.txt')); - } - - public function testGetDerivedMimetype() - { - $cache = new Memory(); - $cache->updateObject('path.txt', [ - 'contents' => 'something', - ]); - $response = $cache->getMimetype('path.txt'); - $this->assertEquals('text/plain', $response['mimetype']); - } - - public function testCopyFail() - { - $cache = new Memory(); - $cache->copy('one', 'two'); - $this->assertNull($cache->has('two')); - $this->assertNull($cache->load()); - } - - public function testStoreContents() - { - $cache = new Memory(); - $cache->storeContents('dirname', [ - ['path' => 'dirname', 'type' => 'dir'], - ['path' => 'dirname/nested', 'type' => 'dir'], - ['path' => 'dirname/nested/deep', 'type' => 'dir'], - ['path' => 'other/nested/deep', 'type' => 'dir'], - ], true); - - $this->isTrue($cache->isComplete('other/nested', true)); - } - - public function testDelete() - { - $cache = new Memory(); - $cache->updateObject('path.txt', ['type' => 'file']); - $this->assertTrue($cache->has('path.txt')); - $cache->delete('path.txt'); - $this->assertFalse($cache->has('path.txt')); - } - - public function testDeleteDir() - { - $cache = new Memory(); - $cache->storeContents('dirname', [ - ['path' => 'dirname/path.txt', 'type' => 'file'], - ]); - $this->assertTrue($cache->isComplete('dirname', false)); - $this->assertTrue($cache->has('dirname/path.txt')); - $cache->deleteDir('dirname'); - $this->assertFalse($cache->isComplete('dirname', false)); - $this->assertNull($cache->has('dirname/path.txt')); - } - - public function testReadStream() - { - $cache = new Memory(); - $this->assertFalse($cache->readStream('path.txt')); - } - - public function testRename() - { - $cache = new Memory(); - $cache->updateObject('path.txt', ['type' => 'file']); - $cache->rename('path.txt', 'newpath.txt'); - $this->assertTrue($cache->has('newpath.txt')); - } - - public function testCopy() - { - $cache = new Memory(); - $cache->updateObject('path.txt', ['type' => 'file']); - $cache->copy('path.txt', 'newpath.txt'); - $this->assertTrue($cache->has('newpath.txt')); - } - - public function testComplextListContents() - { - $cache = new Memory(); - $cache->storeContents('', [ - ['path' => 'dirname', 'type' => 'dir'], - ['path' => 'dirname/file.txt', 'type' => 'file'], - ['path' => 'other', 'type' => 'dir'], - ['path' => 'other/file.txt', 'type' => 'file'], - ['path' => 'other/nested/file.txt', 'type' => 'file'], - ]); - - $this->assertCount(3, $cache->listContents('other', true)); - } - - public function testComplextListContentsWithDeletedFile() - { - $cache = new Memory(); - $cache->storeContents('', [ - ['path' => 'dirname', 'type' => 'dir'], - ['path' => 'dirname/file.txt', 'type' => 'file'], - ['path' => 'other', 'type' => 'dir'], - ['path' => 'other/file.txt', 'type' => 'file'], - ['path' => 'other/another_file.txt', 'type' => 'file'], - ]); - - $cache->delete('other/another_file.txt'); - $this->assertCount(4, $cache->listContents('', true)); - } - - public function testCacheMissIfContentsIsFalse() - { - $cache = new Memory(); - $cache->updateObject('path.txt', [ - 'path' => 'path.txt', - 'contents' => false, - ], true); - - $this->assertFalse($cache->read('path.txt')); - } -} diff --git a/vendor/league/flysystem-cached-adapter/tests/NoopCacheTests.php b/vendor/league/flysystem-cached-adapter/tests/NoopCacheTests.php deleted file mode 100644 index 148616ff1..000000000 --- a/vendor/league/flysystem-cached-adapter/tests/NoopCacheTests.php +++ /dev/null @@ -1,35 +0,0 @@ -assertEquals($cache, $cache->storeMiss('file.txt')); - $this->assertNull($cache->setComplete('', false)); - $this->assertNull($cache->load()); - $this->assertNull($cache->flush()); - $this->assertNull($cache->has('path.txt')); - $this->assertNull($cache->autosave()); - $this->assertFalse($cache->isComplete('', false)); - $this->assertFalse($cache->read('something')); - $this->assertFalse($cache->readStream('something')); - $this->assertFalse($cache->getMetadata('something')); - $this->assertFalse($cache->getMimetype('something')); - $this->assertFalse($cache->getSize('something')); - $this->assertFalse($cache->getTimestamp('something')); - $this->assertFalse($cache->getVisibility('something')); - $this->assertEmpty($cache->listContents('', false)); - $this->assertFalse($cache->rename('', '')); - $this->assertFalse($cache->copy('', '')); - $this->assertNull($cache->save()); - $object = ['path' => 'path.ext']; - $this->assertEquals($object, $cache->updateObject('path.txt', $object)); - $this->assertEquals([['path' => 'some/file.txt']], $cache->storeContents('unknwon', [ - ['path' => 'some/file.txt'], - ], false)); - } -} diff --git a/vendor/league/flysystem-cached-adapter/tests/PhpRedisTests.php b/vendor/league/flysystem-cached-adapter/tests/PhpRedisTests.php deleted file mode 100644 index d1ccb6545..000000000 --- a/vendor/league/flysystem-cached-adapter/tests/PhpRedisTests.php +++ /dev/null @@ -1,45 +0,0 @@ -shouldReceive('get')->with('flysystem')->once()->andReturn(false); - $cache = new PhpRedis($client); - $cache->load(); - $this->assertFalse($cache->isComplete('', false)); - } - - public function testLoadSuccess() - { - $response = json_encode([[], ['' => true]]); - $client = Mockery::mock('Redis'); - $client->shouldReceive('get')->with('flysystem')->once()->andReturn($response); - $cache = new PhpRedis($client); - $cache->load(); - $this->assertTrue($cache->isComplete('', false)); - } - - public function testSave() - { - $data = json_encode([[], []]); - $client = Mockery::mock('Redis'); - $client->shouldReceive('set')->with('flysystem', $data)->once(); - $cache = new PhpRedis($client); - $cache->save(); - } - - public function testSaveWithExpire() - { - $data = json_encode([[], []]); - $client = Mockery::mock('Redis'); - $client->shouldReceive('set')->with('flysystem', $data)->once(); - $client->shouldReceive('expire')->with('flysystem', 20)->once(); - $cache = new PhpRedis($client, 'flysystem', 20); - $cache->save(); - } -} diff --git a/vendor/league/flysystem-cached-adapter/tests/PredisTests.php b/vendor/league/flysystem-cached-adapter/tests/PredisTests.php deleted file mode 100644 index e33e10468..000000000 --- a/vendor/league/flysystem-cached-adapter/tests/PredisTests.php +++ /dev/null @@ -1,55 +0,0 @@ -shouldReceive('createCommand')->with('get', ['flysystem'])->once()->andReturn($command); - $client->shouldReceive('executeCommand')->with($command)->andReturn(null); - $cache = new Predis($client); - $cache->load(); - $this->assertFalse($cache->isComplete('', false)); - } - - public function testLoadSuccess() - { - $response = json_encode([[], ['' => true]]); - $client = Mockery::mock('Predis\Client'); - $command = Mockery::mock('Predis\Command\CommandInterface'); - $client->shouldReceive('createCommand')->with('get', ['flysystem'])->once()->andReturn($command); - $client->shouldReceive('executeCommand')->with($command)->andReturn($response); - $cache = new Predis($client); - $cache->load(); - $this->assertTrue($cache->isComplete('', false)); - } - - public function testSave() - { - $data = json_encode([[], []]); - $client = Mockery::mock('Predis\Client'); - $command = Mockery::mock('Predis\Command\CommandInterface'); - $client->shouldReceive('createCommand')->with('set', ['flysystem', $data])->once()->andReturn($command); - $client->shouldReceive('executeCommand')->with($command)->once(); - $cache = new Predis($client); - $cache->save(); - } - - public function testSaveWithExpire() - { - $data = json_encode([[], []]); - $client = Mockery::mock('Predis\Client'); - $command = Mockery::mock('Predis\Command\CommandInterface'); - $client->shouldReceive('createCommand')->with('set', ['flysystem', $data])->once()->andReturn($command); - $client->shouldReceive('executeCommand')->with($command)->once(); - $expireCommand = Mockery::mock('Predis\Command\CommandInterface'); - $client->shouldReceive('createCommand')->with('expire', ['flysystem', 20])->once()->andReturn($expireCommand); - $client->shouldReceive('executeCommand')->with($expireCommand)->once(); - $cache = new Predis($client, 'flysystem', 20); - $cache->save(); - } -} diff --git a/vendor/league/flysystem-cached-adapter/tests/Psr6CacheTest.php b/vendor/league/flysystem-cached-adapter/tests/Psr6CacheTest.php deleted file mode 100644 index d5e5700cf..000000000 --- a/vendor/league/flysystem-cached-adapter/tests/Psr6CacheTest.php +++ /dev/null @@ -1,45 +0,0 @@ -shouldReceive('isHit')->once()->andReturn(false); - $pool->shouldReceive('getItem')->once()->andReturn($item); - $cache = new Psr6Cache($pool); - $cache->load(); - $this->assertFalse($cache->isComplete('', false)); - } - - public function testLoadSuccess() - { - $response = json_encode([[], ['' => true]]); - $pool = Mockery::mock('Psr\Cache\CacheItemPoolInterface'); - $item = Mockery::mock('Psr\Cache\CacheItemInterface'); - $item->shouldReceive('get')->once()->andReturn($response); - $item->shouldReceive('isHit')->once()->andReturn(true); - $pool->shouldReceive('getItem')->once()->andReturn($item); - $cache = new Psr6Cache($pool); - $cache->load(); - $this->assertTrue($cache->isComplete('', false)); - } - - public function testSave() - { - $response = json_encode([[], []]); - $ttl = 4711; - $pool = Mockery::mock('Psr\Cache\CacheItemPoolInterface'); - $item = Mockery::mock('Psr\Cache\CacheItemInterface'); - $item->shouldReceive('expiresAfter')->once()->with($ttl); - $item->shouldReceive('set')->once()->andReturn($response); - $pool->shouldReceive('getItem')->once()->andReturn($item); - $pool->shouldReceive('save')->once()->with($item); - $cache = new Psr6Cache($pool, 'foo', $ttl); - $cache->save(); - } -} diff --git a/vendor/league/flysystem-cached-adapter/tests/StashTest.php b/vendor/league/flysystem-cached-adapter/tests/StashTest.php deleted file mode 100644 index 29e142d79..000000000 --- a/vendor/league/flysystem-cached-adapter/tests/StashTest.php +++ /dev/null @@ -1,43 +0,0 @@ -shouldReceive('get')->once()->andReturn(null); - $item->shouldReceive('isMiss')->once()->andReturn(true); - $pool->shouldReceive('getItem')->once()->andReturn($item); - $cache = new Stash($pool); - $cache->load(); - $this->assertFalse($cache->isComplete('', false)); - } - - public function testLoadSuccess() - { - $response = json_encode([[], ['' => true]]); - $pool = Mockery::mock('Stash\Pool'); - $item = Mockery::mock('Stash\Item'); - $item->shouldReceive('get')->once()->andReturn($response); - $item->shouldReceive('isMiss')->once()->andReturn(false); - $pool->shouldReceive('getItem')->once()->andReturn($item); - $cache = new Stash($pool); - $cache->load(); - $this->assertTrue($cache->isComplete('', false)); - } - - public function testSave() - { - $response = json_encode([[], []]); - $pool = Mockery::mock('Stash\Pool'); - $item = Mockery::mock('Stash\Item'); - $item->shouldReceive('set')->once()->andReturn($response); - $pool->shouldReceive('getItem')->once()->andReturn($item); - $cache = new Stash($pool); - $cache->save(); - } -} diff --git a/vendor/league/flysystem/LICENSE b/vendor/league/flysystem/LICENSE deleted file mode 100644 index f2684c841..000000000 --- a/vendor/league/flysystem/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2013-2019 Frank de Jonge - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/league/flysystem/composer.json b/vendor/league/flysystem/composer.json deleted file mode 100644 index 84229e9ff..000000000 --- a/vendor/league/flysystem/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "league/flysystem", - "description": "Filesystem abstraction: Many filesystems, one API.", - "keywords": [ - "filesystem", "filesystems", "files", "storage", "dropbox", "aws", - "abstraction", "s3", "ftp", "sftp", "remote", "webdav", - "file systems", "cloud", "cloud files", "rackspace", "copy.com" - ], - "license": "MIT", - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "require": { - "php": ">=5.5.9", - "ext-fileinfo": "*" - }, - "require-dev": { - "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7.10" - }, - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "League\\Flysystem\\Stub\\": "stub/" - }, - "files": [ - "tests/PHPUnitHacks.php" - ] - }, - "suggest": { - "ext-fileinfo": "Required for MimeType", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" - }, - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "scripts": { - "phpstan": "php phpstan.php" - } -} diff --git a/vendor/league/flysystem/deprecations.md b/vendor/league/flysystem/deprecations.md deleted file mode 100644 index c336a425d..000000000 --- a/vendor/league/flysystem/deprecations.md +++ /dev/null @@ -1,19 +0,0 @@ -# Deprecations - -This document lists all the planned deprecations. - -## Handlers will be removed in 2.0 - -The `Handler` type and associated calls will be removed in version 2.0. - -### Upgrade path - -You should create your own implementation for handling OOP usage, -but it's recommended to move away from using an OOP-style wrapper entirely. - -The reason for this is that it's too easy for implementation details (for -your application this is Flysystem) to leak into the application. The most -important part for Flysystem is that it improves portability and creates a -solid boundary between your application core and the infrastructure you use. -The OOP-style handling breaks this principle, therefore I want to stop -promoting it. diff --git a/vendor/league/flysystem/src/Adapter/AbstractAdapter.php b/vendor/league/flysystem/src/Adapter/AbstractAdapter.php deleted file mode 100644 index e577ac4a7..000000000 --- a/vendor/league/flysystem/src/Adapter/AbstractAdapter.php +++ /dev/null @@ -1,72 +0,0 @@ -pathPrefix = null; - - return; - } - - $this->pathPrefix = rtrim($prefix, '\\/') . $this->pathSeparator; - } - - /** - * Get the path prefix. - * - * @return string|null path prefix or null if pathPrefix is empty - */ - public function getPathPrefix() - { - return $this->pathPrefix; - } - - /** - * Prefix a path. - * - * @param string $path - * - * @return string prefixed path - */ - public function applyPathPrefix($path) - { - return $this->getPathPrefix() . ltrim($path, '\\/'); - } - - /** - * Remove a path prefix. - * - * @param string $path - * - * @return string path without the prefix - */ - public function removePathPrefix($path) - { - return substr($path, strlen($this->getPathPrefix())); - } -} diff --git a/vendor/league/flysystem/src/Adapter/AbstractFtpAdapter.php b/vendor/league/flysystem/src/Adapter/AbstractFtpAdapter.php deleted file mode 100644 index 578b49190..000000000 --- a/vendor/league/flysystem/src/Adapter/AbstractFtpAdapter.php +++ /dev/null @@ -1,693 +0,0 @@ -safeStorage = new SafeStorage(); - $this->setConfig($config); - } - - /** - * Set the config. - * - * @param array $config - * - * @return $this - */ - public function setConfig(array $config) - { - foreach ($this->configurable as $setting) { - if ( ! isset($config[$setting])) { - continue; - } - - $method = 'set' . ucfirst($setting); - - if (method_exists($this, $method)) { - $this->$method($config[$setting]); - } - } - - return $this; - } - - /** - * Returns the host. - * - * @return string - */ - public function getHost() - { - return $this->host; - } - - /** - * Set the host. - * - * @param string $host - * - * @return $this - */ - public function setHost($host) - { - $this->host = $host; - - return $this; - } - - /** - * Set the public permission value. - * - * @param int $permPublic - * - * @return $this - */ - public function setPermPublic($permPublic) - { - $this->permPublic = $permPublic; - - return $this; - } - - /** - * Set the private permission value. - * - * @param int $permPrivate - * - * @return $this - */ - public function setPermPrivate($permPrivate) - { - $this->permPrivate = $permPrivate; - - return $this; - } - - /** - * Returns the ftp port. - * - * @return int - */ - public function getPort() - { - return $this->port; - } - - /** - * Returns the root folder to work from. - * - * @return string - */ - public function getRoot() - { - return $this->root; - } - - /** - * Set the ftp port. - * - * @param int|string $port - * - * @return $this - */ - public function setPort($port) - { - $this->port = (int) $port; - - return $this; - } - - /** - * Set the root folder to work from. - * - * @param string $root - * - * @return $this - */ - public function setRoot($root) - { - $this->root = rtrim($root, '\\/') . $this->separator; - - return $this; - } - - /** - * Returns the ftp username. - * - * @return string username - */ - public function getUsername() - { - $username = $this->safeStorage->retrieveSafely('username'); - - return $username !== null ? $username : 'anonymous'; - } - - /** - * Set ftp username. - * - * @param string $username - * - * @return $this - */ - public function setUsername($username) - { - $this->safeStorage->storeSafely('username', $username); - - return $this; - } - - /** - * Returns the password. - * - * @return string password - */ - public function getPassword() - { - return $this->safeStorage->retrieveSafely('password'); - } - - /** - * Set the ftp password. - * - * @param string $password - * - * @return $this - */ - public function setPassword($password) - { - $this->safeStorage->storeSafely('password', $password); - - return $this; - } - - /** - * Returns the amount of seconds before the connection will timeout. - * - * @return int - */ - public function getTimeout() - { - return $this->timeout; - } - - /** - * Set the amount of seconds before the connection should timeout. - * - * @param int $timeout - * - * @return $this - */ - public function setTimeout($timeout) - { - $this->timeout = (int) $timeout; - - return $this; - } - - /** - * Return the FTP system type. - * - * @return string - */ - public function getSystemType() - { - return $this->systemType; - } - - /** - * Set the FTP system type (windows or unix). - * - * @param string $systemType - * - * @return $this - */ - public function setSystemType($systemType) - { - $this->systemType = strtolower($systemType); - - return $this; - } - - /** - * True to enable timestamps for FTP servers that return unix-style listings. - * - * @param bool $bool - * - * @return $this - */ - public function setEnableTimestampsOnUnixListings($bool = false) - { - $this->enableTimestampsOnUnixListings = $bool; - - return $this; - } - - /** - * @inheritdoc - */ - public function listContents($directory = '', $recursive = false) - { - return $this->listDirectoryContents($directory, $recursive); - } - - abstract protected function listDirectoryContents($directory, $recursive = false); - - /** - * Normalize a directory listing. - * - * @param array $listing - * @param string $prefix - * - * @return array directory listing - */ - protected function normalizeListing(array $listing, $prefix = '') - { - $base = $prefix; - $result = []; - $listing = $this->removeDotDirectories($listing); - - while ($item = array_shift($listing)) { - if (preg_match('#^.*:$#', $item)) { - $base = preg_replace('~^\./*|:$~', '', $item); - continue; - } - - $result[] = $this->normalizeObject($item, $base); - } - - return $this->sortListing($result); - } - - /** - * Sort a directory listing. - * - * @param array $result - * - * @return array sorted listing - */ - protected function sortListing(array $result) - { - $compare = function ($one, $two) { - return strnatcmp($one['path'], $two['path']); - }; - - usort($result, $compare); - - return $result; - } - - /** - * Normalize a file entry. - * - * @param string $item - * @param string $base - * - * @return array normalized file array - * - * @throws NotSupportedException - */ - protected function normalizeObject($item, $base) - { - $systemType = $this->systemType ?: $this->detectSystemType($item); - - if ($systemType === 'unix') { - return $this->normalizeUnixObject($item, $base); - } elseif ($systemType === 'windows') { - return $this->normalizeWindowsObject($item, $base); - } - - throw NotSupportedException::forFtpSystemType($systemType); - } - - /** - * Normalize a Unix file entry. - * - * Given $item contains: - * '-rw-r--r-- 1 ftp ftp 409 Aug 19 09:01 file1.txt' - * - * This function will return: - * [ - * 'type' => 'file', - * 'path' => 'file1.txt', - * 'visibility' => 'public', - * 'size' => 409, - * 'timestamp' => 1566205260 - * ] - * - * @param string $item - * @param string $base - * - * @return array normalized file array - */ - protected function normalizeUnixObject($item, $base) - { - $item = preg_replace('#\s+#', ' ', trim($item), 7); - - if (count(explode(' ', $item, 9)) !== 9) { - throw new RuntimeException("Metadata can't be parsed from item '$item' , not enough parts."); - } - - list($permissions, /* $number */, /* $owner */, /* $group */, $size, $month, $day, $timeOrYear, $name) = explode(' ', $item, 9); - $type = $this->detectType($permissions); - $path = $base === '' ? $name : $base . $this->separator . $name; - - if ($type === 'dir') { - return compact('type', 'path'); - } - - $permissions = $this->normalizePermissions($permissions); - $visibility = $permissions & 0044 ? AdapterInterface::VISIBILITY_PUBLIC : AdapterInterface::VISIBILITY_PRIVATE; - $size = (int) $size; - - $result = compact('type', 'path', 'visibility', 'size'); - if ($this->enableTimestampsOnUnixListings) { - $timestamp = $this->normalizeUnixTimestamp($month, $day, $timeOrYear); - $result += compact('timestamp'); - } - - return $result; - } - - /** - * Only accurate to the minute (current year), or to the day. - * - * Inadequacies in timestamp accuracy are due to limitations of the FTP 'LIST' command - * - * Note: The 'MLSD' command is a machine-readable replacement for 'LIST' - * but many FTP servers do not support it :( - * - * @param string $month e.g. 'Aug' - * @param string $day e.g. '19' - * @param string $timeOrYear e.g. '09:01' OR '2015' - * - * @return int - */ - protected function normalizeUnixTimestamp($month, $day, $timeOrYear) - { - if (is_numeric($timeOrYear)) { - $year = $timeOrYear; - $hour = '00'; - $minute = '00'; - $seconds = '00'; - } else { - $year = date('Y'); - list($hour, $minute) = explode(':', $timeOrYear); - $seconds = '00'; - } - $dateTime = DateTime::createFromFormat('Y-M-j-G:i:s', "{$year}-{$month}-{$day}-{$hour}:{$minute}:{$seconds}"); - - return $dateTime->getTimestamp(); - } - - /** - * Normalize a Windows/DOS file entry. - * - * @param string $item - * @param string $base - * - * @return array normalized file array - */ - protected function normalizeWindowsObject($item, $base) - { - $item = preg_replace('#\s+#', ' ', trim($item), 3); - - if (count(explode(' ', $item, 4)) !== 4) { - throw new RuntimeException("Metadata can't be parsed from item '$item' , not enough parts."); - } - - list($date, $time, $size, $name) = explode(' ', $item, 4); - $path = $base === '' ? $name : $base . $this->separator . $name; - - // Check for the correct date/time format - $format = strlen($date) === 8 ? 'm-d-yH:iA' : 'Y-m-dH:i'; - $dt = DateTime::createFromFormat($format, $date . $time); - $timestamp = $dt ? $dt->getTimestamp() : (int) strtotime("$date $time"); - - if ($size === '') { - $type = 'dir'; - - return compact('type', 'path', 'timestamp'); - } - - $type = 'file'; - $visibility = AdapterInterface::VISIBILITY_PUBLIC; - $size = (int) $size; - - return compact('type', 'path', 'visibility', 'size', 'timestamp'); - } - - /** - * Get the system type from a listing item. - * - * @param string $item - * - * @return string the system type - */ - protected function detectSystemType($item) - { - return preg_match('/^[0-9]{2,4}-[0-9]{2}-[0-9]{2}/', $item) ? 'windows' : 'unix'; - } - - /** - * Get the file type from the permissions. - * - * @param string $permissions - * - * @return string file type - */ - protected function detectType($permissions) - { - return substr($permissions, 0, 1) === 'd' ? 'dir' : 'file'; - } - - /** - * Normalize a permissions string. - * - * @param string $permissions - * - * @return int - */ - protected function normalizePermissions($permissions) - { - // remove the type identifier - $permissions = substr($permissions, 1); - - // map the string rights to the numeric counterparts - $map = ['-' => '0', 'r' => '4', 'w' => '2', 'x' => '1']; - $permissions = strtr($permissions, $map); - - // split up the permission groups - $parts = str_split($permissions, 3); - - // convert the groups - $mapper = function ($part) { - return array_sum(str_split($part)); - }; - - // converts to decimal number - return octdec(implode('', array_map($mapper, $parts))); - } - - /** - * Filter out dot-directories. - * - * @param array $list - * - * @return array - */ - public function removeDotDirectories(array $list) - { - $filter = function ($line) { - return $line !== '' && ! preg_match('#.* \.(\.)?$|^total#', $line); - }; - - return array_filter($list, $filter); - } - - /** - * @inheritdoc - */ - public function has($path) - { - return $this->getMetadata($path); - } - - /** - * @inheritdoc - */ - public function getSize($path) - { - return $this->getMetadata($path); - } - - /** - * @inheritdoc - */ - public function getVisibility($path) - { - return $this->getMetadata($path); - } - - /** - * Ensure a directory exists. - * - * @param string $dirname - */ - public function ensureDirectory($dirname) - { - $dirname = (string) $dirname; - - if ($dirname !== '' && ! $this->has($dirname)) { - $this->createDir($dirname, new Config()); - } - } - - /** - * @return mixed - */ - public function getConnection() - { - $tries = 0; - - while ( ! $this->isConnected() && $tries < 3) { - $tries++; - $this->disconnect(); - $this->connect(); - } - - return $this->connection; - } - - /** - * Get the public permission value. - * - * @return int - */ - public function getPermPublic() - { - return $this->permPublic; - } - - /** - * Get the private permission value. - * - * @return int - */ - public function getPermPrivate() - { - return $this->permPrivate; - } - - /** - * Disconnect on destruction. - */ - public function __destruct() - { - $this->disconnect(); - } - - /** - * Establish a connection. - */ - abstract public function connect(); - - /** - * Close the connection. - */ - abstract public function disconnect(); - - /** - * Check if a connection is active. - * - * @return bool - */ - abstract public function isConnected(); -} diff --git a/vendor/league/flysystem/src/Adapter/CanOverwriteFiles.php b/vendor/league/flysystem/src/Adapter/CanOverwriteFiles.php deleted file mode 100644 index fd8d2161e..000000000 --- a/vendor/league/flysystem/src/Adapter/CanOverwriteFiles.php +++ /dev/null @@ -1,12 +0,0 @@ -transferMode = $mode; - - return $this; - } - - /** - * Set if Ssl is enabled. - * - * @param bool $ssl - * - * @return $this - */ - public function setSsl($ssl) - { - $this->ssl = (bool) $ssl; - - return $this; - } - - /** - * Set if passive mode should be used. - * - * @param bool $passive - */ - public function setPassive($passive = true) - { - $this->passive = $passive; - } - - /** - * @param bool $ignorePassiveAddress - */ - public function setIgnorePassiveAddress($ignorePassiveAddress) - { - $this->ignorePassiveAddress = $ignorePassiveAddress; - } - - /** - * @param bool $recurseManually - */ - public function setRecurseManually($recurseManually) - { - $this->recurseManually = $recurseManually; - } - - /** - * @param bool $utf8 - */ - public function setUtf8($utf8) - { - $this->utf8 = (bool) $utf8; - } - - /** - * Connect to the FTP server. - */ - public function connect() - { - if ($this->ssl) { - $this->connection = ftp_ssl_connect($this->getHost(), $this->getPort(), $this->getTimeout()); - } else { - $this->connection = ftp_connect($this->getHost(), $this->getPort(), $this->getTimeout()); - } - - if ( ! $this->connection) { - throw new RuntimeException('Could not connect to host: ' . $this->getHost() . ', port:' . $this->getPort()); - } - - $this->login(); - $this->setUtf8Mode(); - $this->setConnectionPassiveMode(); - $this->setConnectionRoot(); - $this->isPureFtpd = $this->isPureFtpdServer(); - } - - /** - * Set the connection to UTF-8 mode. - */ - protected function setUtf8Mode() - { - if ($this->utf8) { - $response = ftp_raw($this->connection, "OPTS UTF8 ON"); - if (substr($response[0], 0, 3) !== '200') { - throw new RuntimeException( - 'Could not set UTF-8 mode for connection: ' . $this->getHost() . '::' . $this->getPort() - ); - } - } - } - - /** - * Set the connections to passive mode. - * - * @throws RuntimeException - */ - protected function setConnectionPassiveMode() - { - if (is_bool($this->ignorePassiveAddress) && defined('FTP_USEPASVADDRESS')) { - ftp_set_option($this->connection, FTP_USEPASVADDRESS, ! $this->ignorePassiveAddress); - } - - if ( ! ftp_pasv($this->connection, $this->passive)) { - throw new RuntimeException( - 'Could not set passive mode for connection: ' . $this->getHost() . '::' . $this->getPort() - ); - } - } - - /** - * Set the connection root. - */ - protected function setConnectionRoot() - { - $root = $this->getRoot(); - $connection = $this->connection; - - if ($root && ! ftp_chdir($connection, $root)) { - throw new RuntimeException('Root is invalid or does not exist: ' . $this->getRoot()); - } - - // Store absolute path for further reference. - // This is needed when creating directories and - // initial root was a relative path, else the root - // would be relative to the chdir'd path. - $this->root = ftp_pwd($connection); - } - - /** - * Login. - * - * @throws RuntimeException - */ - protected function login() - { - set_error_handler(function () { - }); - $isLoggedIn = ftp_login( - $this->connection, - $this->getUsername(), - $this->getPassword() - ); - restore_error_handler(); - - if ( ! $isLoggedIn) { - $this->disconnect(); - throw new RuntimeException( - 'Could not login with connection: ' . $this->getHost() . '::' . $this->getPort( - ) . ', username: ' . $this->getUsername() - ); - } - } - - /** - * Disconnect from the FTP server. - */ - public function disconnect() - { - if (is_resource($this->connection)) { - ftp_close($this->connection); - } - - $this->connection = null; - } - - /** - * @inheritdoc - */ - public function write($path, $contents, Config $config) - { - $stream = fopen('php://temp', 'w+b'); - fwrite($stream, $contents); - rewind($stream); - $result = $this->writeStream($path, $stream, $config); - fclose($stream); - - if ($result === false) { - return false; - } - - $result['contents'] = $contents; - $result['mimetype'] = $config->get('mimetype') ?: Util::guessMimeType($path, $contents); - - return $result; - } - - /** - * @inheritdoc - */ - public function writeStream($path, $resource, Config $config) - { - $this->ensureDirectory(Util::dirname($path)); - - if ( ! ftp_fput($this->getConnection(), $path, $resource, $this->transferMode)) { - return false; - } - - if ($visibility = $config->get('visibility')) { - $this->setVisibility($path, $visibility); - } - - $type = 'file'; - - return compact('type', 'path', 'visibility'); - } - - /** - * @inheritdoc - */ - public function update($path, $contents, Config $config) - { - return $this->write($path, $contents, $config); - } - - /** - * @inheritdoc - */ - public function updateStream($path, $resource, Config $config) - { - return $this->writeStream($path, $resource, $config); - } - - /** - * @inheritdoc - */ - public function rename($path, $newpath) - { - return ftp_rename($this->getConnection(), $path, $newpath); - } - - /** - * @inheritdoc - */ - public function delete($path) - { - return ftp_delete($this->getConnection(), $path); - } - - /** - * @inheritdoc - */ - public function deleteDir($dirname) - { - $connection = $this->getConnection(); - $contents = array_reverse($this->listDirectoryContents($dirname, false)); - - foreach ($contents as $object) { - if ($object['type'] === 'file') { - if ( ! ftp_delete($connection, $object['path'])) { - return false; - } - } elseif ( ! $this->deleteDir($object['path'])) { - return false; - } - } - - return ftp_rmdir($connection, $dirname); - } - - /** - * @inheritdoc - */ - public function createDir($dirname, Config $config) - { - $connection = $this->getConnection(); - $directories = explode('/', $dirname); - - foreach ($directories as $directory) { - if (false === $this->createActualDirectory($directory, $connection)) { - $this->setConnectionRoot(); - - return false; - } - - ftp_chdir($connection, $directory); - } - - $this->setConnectionRoot(); - - return ['type' => 'dir', 'path' => $dirname]; - } - - /** - * Create a directory. - * - * @param string $directory - * @param resource $connection - * - * @return bool - */ - protected function createActualDirectory($directory, $connection) - { - // List the current directory - $listing = ftp_nlist($connection, '.') ?: []; - - foreach ($listing as $key => $item) { - if (preg_match('~^\./.*~', $item)) { - $listing[$key] = substr($item, 2); - } - } - - if (in_array($directory, $listing, true)) { - return true; - } - - return (boolean) ftp_mkdir($connection, $directory); - } - - /** - * @inheritdoc - */ - public function getMetadata($path) - { - if ($path === '') { - return ['type' => 'dir', 'path' => '']; - } - - if (@ftp_chdir($this->getConnection(), $path) === true) { - $this->setConnectionRoot(); - - return ['type' => 'dir', 'path' => $path]; - } - - $listing = $this->ftpRawlist('-A', str_replace('*', '\\*', $path)); - - if (empty($listing) || in_array('total 0', $listing, true)) { - return false; - } - - if (preg_match('/.* not found/', $listing[0])) { - return false; - } - - if (preg_match('/^total [0-9]*$/', $listing[0])) { - array_shift($listing); - } - - return $this->normalizeObject($listing[0], ''); - } - - /** - * @inheritdoc - */ - public function getMimetype($path) - { - if ( ! $metadata = $this->getMetadata($path)) { - return false; - } - - $metadata['mimetype'] = MimeType::detectByFilename($path); - - return $metadata; - } - - /** - * @inheritdoc - */ - public function getTimestamp($path) - { - $timestamp = ftp_mdtm($this->getConnection(), $path); - - return ($timestamp !== -1) ? ['path' => $path, 'timestamp' => $timestamp] : false; - } - - /** - * @inheritdoc - */ - public function read($path) - { - if ( ! $object = $this->readStream($path)) { - return false; - } - - $object['contents'] = stream_get_contents($object['stream']); - fclose($object['stream']); - unset($object['stream']); - - return $object; - } - - /** - * @inheritdoc - */ - public function readStream($path) - { - $stream = fopen('php://temp', 'w+b'); - $result = ftp_fget($this->getConnection(), $stream, $path, $this->transferMode); - rewind($stream); - - if ( ! $result) { - fclose($stream); - - return false; - } - - return ['type' => 'file', 'path' => $path, 'stream' => $stream]; - } - - /** - * @inheritdoc - */ - public function setVisibility($path, $visibility) - { - $mode = $visibility === AdapterInterface::VISIBILITY_PUBLIC ? $this->getPermPublic() : $this->getPermPrivate(); - - if ( ! ftp_chmod($this->getConnection(), $mode, $path)) { - return false; - } - - return compact('path', 'visibility'); - } - - /** - * @inheritdoc - * - * @param string $directory - */ - protected function listDirectoryContents($directory, $recursive = true) - { - $directory = str_replace('*', '\\*', $directory); - - if ($recursive && $this->recurseManually) { - return $this->listDirectoryContentsRecursive($directory); - } - - $options = $recursive ? '-alnR' : '-aln'; - $listing = $this->ftpRawlist($options, $directory); - - return $listing ? $this->normalizeListing($listing, $directory) : []; - } - - /** - * @inheritdoc - * - * @param string $directory - */ - protected function listDirectoryContentsRecursive($directory) - { - $listing = $this->normalizeListing($this->ftpRawlist('-aln', $directory) ?: [], $directory); - $output = []; - - foreach ($listing as $item) { - $output[] = $item; - if ($item['type'] !== 'dir') { - continue; - } - $output = array_merge($output, $this->listDirectoryContentsRecursive($item['path'])); - } - - return $output; - } - - /** - * Check if the connection is open. - * - * @return bool - * - * @throws ErrorException - */ - public function isConnected() - { - try { - return is_resource($this->connection) && ftp_rawlist($this->connection, $this->getRoot()) !== false; - } catch (ErrorException $e) { - if (strpos($e->getMessage(), 'ftp_rawlist') === false) { - throw $e; - } - - return false; - } - } - - /** - * @return bool - */ - protected function isPureFtpdServer() - { - $response = ftp_raw($this->connection, 'HELP'); - - return stripos(implode(' ', $response), 'Pure-FTPd') !== false; - } - - /** - * The ftp_rawlist function with optional escaping. - * - * @param string $options - * @param string $path - * - * @return array - */ - protected function ftpRawlist($options, $path) - { - $connection = $this->getConnection(); - - if ($this->isPureFtpd) { - $path = str_replace(' ', '\ ', $path); - } - - return ftp_rawlist($connection, $options . ' ' . $path); - } -} diff --git a/vendor/league/flysystem/src/Adapter/Ftpd.php b/vendor/league/flysystem/src/Adapter/Ftpd.php deleted file mode 100644 index d5349e475..000000000 --- a/vendor/league/flysystem/src/Adapter/Ftpd.php +++ /dev/null @@ -1,45 +0,0 @@ - 'dir', 'path' => '']; - } - if (@ftp_chdir($this->getConnection(), $path) === true) { - $this->setConnectionRoot(); - - return ['type' => 'dir', 'path' => $path]; - } - - if ( ! ($object = ftp_raw($this->getConnection(), 'STAT ' . $path)) || count($object) < 3) { - return false; - } - - if (substr($object[1], 0, 5) === "ftpd:") { - return false; - } - - return $this->normalizeObject($object[1], ''); - } - - /** - * @inheritdoc - */ - protected function listDirectoryContents($directory, $recursive = true) - { - $listing = ftp_rawlist($this->getConnection(), $directory, $recursive); - - if ($listing === false || ( ! empty($listing) && substr($listing[0], 0, 5) === "ftpd:")) { - return []; - } - - return $this->normalizeListing($listing, $directory); - } -} diff --git a/vendor/league/flysystem/src/Adapter/Local.php b/vendor/league/flysystem/src/Adapter/Local.php deleted file mode 100644 index c6e6fa861..000000000 --- a/vendor/league/flysystem/src/Adapter/Local.php +++ /dev/null @@ -1,528 +0,0 @@ - [ - 'public' => 0644, - 'private' => 0600, - ], - 'dir' => [ - 'public' => 0755, - 'private' => 0700, - ], - ]; - - /** - * @var string - */ - protected $pathSeparator = DIRECTORY_SEPARATOR; - - /** - * @var array - */ - protected $permissionMap; - - /** - * @var int - */ - protected $writeFlags; - - /** - * @var int - */ - private $linkHandling; - - /** - * Constructor. - * - * @param string $root - * @param int $writeFlags - * @param int $linkHandling - * @param array $permissions - * - * @throws LogicException - */ - public function __construct($root, $writeFlags = LOCK_EX, $linkHandling = self::DISALLOW_LINKS, array $permissions = []) - { - $root = is_link($root) ? realpath($root) : $root; - $this->permissionMap = array_replace_recursive(static::$permissions, $permissions); - $this->ensureDirectory($root); - - if ( ! is_dir($root) || ! is_readable($root)) { - throw new LogicException('The root path ' . $root . ' is not readable.'); - } - - $this->setPathPrefix($root); - $this->writeFlags = $writeFlags; - $this->linkHandling = $linkHandling; - } - - /** - * Ensure the root directory exists. - * - * @param string $root root directory path - * - * @return void - * - * @throws Exception in case the root directory can not be created - */ - protected function ensureDirectory($root) - { - if ( ! is_dir($root)) { - $umask = umask(0); - - if ( ! @mkdir($root, $this->permissionMap['dir']['public'], true)) { - $mkdirError = error_get_last(); - } - - umask($umask); - clearstatcache(false, $root); - - if ( ! is_dir($root)) { - $errorMessage = isset($mkdirError['message']) ? $mkdirError['message'] : ''; - throw new Exception(sprintf('Impossible to create the root directory "%s". %s', $root, $errorMessage)); - } - } - } - - /** - * @inheritdoc - */ - public function has($path) - { - $location = $this->applyPathPrefix($path); - - return file_exists($location); - } - - /** - * @inheritdoc - */ - public function write($path, $contents, Config $config) - { - $location = $this->applyPathPrefix($path); - $this->ensureDirectory(dirname($location)); - - if (($size = file_put_contents($location, $contents, $this->writeFlags)) === false) { - return false; - } - - $type = 'file'; - $result = compact('contents', 'type', 'size', 'path'); - - if ($visibility = $config->get('visibility')) { - $result['visibility'] = $visibility; - $this->setVisibility($path, $visibility); - } - - return $result; - } - - /** - * @inheritdoc - */ - public function writeStream($path, $resource, Config $config) - { - $location = $this->applyPathPrefix($path); - $this->ensureDirectory(dirname($location)); - $stream = fopen($location, 'w+b'); - - if ( ! $stream || stream_copy_to_stream($resource, $stream) === false || ! fclose($stream)) { - return false; - } - - $type = 'file'; - $result = compact('type', 'path'); - - if ($visibility = $config->get('visibility')) { - $this->setVisibility($path, $visibility); - $result['visibility'] = $visibility; - } - - return $result; - } - - /** - * @inheritdoc - */ - public function readStream($path) - { - $location = $this->applyPathPrefix($path); - $stream = fopen($location, 'rb'); - - return ['type' => 'file', 'path' => $path, 'stream' => $stream]; - } - - /** - * @inheritdoc - */ - public function updateStream($path, $resource, Config $config) - { - return $this->writeStream($path, $resource, $config); - } - - /** - * @inheritdoc - */ - public function update($path, $contents, Config $config) - { - $location = $this->applyPathPrefix($path); - $size = file_put_contents($location, $contents, $this->writeFlags); - - if ($size === false) { - return false; - } - - $type = 'file'; - - $result = compact('type', 'path', 'size', 'contents'); - - if ($mimetype = $config->get('mimetype') ?: Util::guessMimeType($path, $contents)) { - $result['mimetype'] = $mimetype; - } - - return $result; - } - - /** - * @inheritdoc - */ - public function read($path) - { - $location = $this->applyPathPrefix($path); - $contents = @file_get_contents($location); - - if ($contents === false) { - return false; - } - - return ['type' => 'file', 'path' => $path, 'contents' => $contents]; - } - - /** - * @inheritdoc - */ - public function rename($path, $newpath) - { - $location = $this->applyPathPrefix($path); - $destination = $this->applyPathPrefix($newpath); - $parentDirectory = $this->applyPathPrefix(Util::dirname($newpath)); - $this->ensureDirectory($parentDirectory); - - return rename($location, $destination); - } - - /** - * @inheritdoc - */ - public function copy($path, $newpath) - { - $location = $this->applyPathPrefix($path); - $destination = $this->applyPathPrefix($newpath); - $this->ensureDirectory(dirname($destination)); - - return copy($location, $destination); - } - - /** - * @inheritdoc - */ - public function delete($path) - { - $location = $this->applyPathPrefix($path); - - return @unlink($location); - } - - /** - * @inheritdoc - */ - public function listContents($directory = '', $recursive = false) - { - $result = []; - $location = $this->applyPathPrefix($directory); - - if ( ! is_dir($location)) { - return []; - } - - $iterator = $recursive ? $this->getRecursiveDirectoryIterator($location) : $this->getDirectoryIterator($location); - - foreach ($iterator as $file) { - $path = $this->getFilePath($file); - - if (preg_match('#(^|/|\\\\)\.{1,2}$#', $path)) { - continue; - } - - $result[] = $this->normalizeFileInfo($file); - } - - return array_filter($result); - } - - /** - * @inheritdoc - */ - public function getMetadata($path) - { - $location = $this->applyPathPrefix($path); - clearstatcache(false, $location); - $info = new SplFileInfo($location); - - return $this->normalizeFileInfo($info); - } - - /** - * @inheritdoc - */ - public function getSize($path) - { - return $this->getMetadata($path); - } - - /** - * @inheritdoc - */ - public function getMimetype($path) - { - $location = $this->applyPathPrefix($path); - $finfo = new Finfo(FILEINFO_MIME_TYPE); - $mimetype = $finfo->file($location); - - if (in_array($mimetype, ['application/octet-stream', 'inode/x-empty', 'application/x-empty'])) { - $mimetype = Util\MimeType::detectByFilename($location); - } - - return ['path' => $path, 'type' => 'file', 'mimetype' => $mimetype]; - } - - /** - * @inheritdoc - */ - public function getTimestamp($path) - { - return $this->getMetadata($path); - } - - /** - * @inheritdoc - */ - public function getVisibility($path) - { - $location = $this->applyPathPrefix($path); - clearstatcache(false, $location); - $permissions = octdec(substr(sprintf('%o', fileperms($location)), -4)); - $type = is_dir($location) ? 'dir' : 'file'; - - foreach ($this->permissionMap[$type] as $visibility => $visibilityPermissions) { - if ($visibilityPermissions == $permissions) { - return compact('path', 'visibility'); - } - } - - $visibility = substr(sprintf('%o', fileperms($location)), -4); - - return compact('path', 'visibility'); - } - - /** - * @inheritdoc - */ - public function setVisibility($path, $visibility) - { - $location = $this->applyPathPrefix($path); - $type = is_dir($location) ? 'dir' : 'file'; - $success = chmod($location, $this->permissionMap[$type][$visibility]); - - if ($success === false) { - return false; - } - - return compact('path', 'visibility'); - } - - /** - * @inheritdoc - */ - public function createDir($dirname, Config $config) - { - $location = $this->applyPathPrefix($dirname); - $umask = umask(0); - $visibility = $config->get('visibility', 'public'); - $return = ['path' => $dirname, 'type' => 'dir']; - - if ( ! is_dir($location)) { - if (false === @mkdir($location, $this->permissionMap['dir'][$visibility], true) - || false === is_dir($location)) { - $return = false; - } - } - - umask($umask); - - return $return; - } - - /** - * @inheritdoc - */ - public function deleteDir($dirname) - { - $location = $this->applyPathPrefix($dirname); - - if ( ! is_dir($location)) { - return false; - } - - $contents = $this->getRecursiveDirectoryIterator($location, RecursiveIteratorIterator::CHILD_FIRST); - - /** @var SplFileInfo $file */ - foreach ($contents as $file) { - $this->guardAgainstUnreadableFileInfo($file); - $this->deleteFileInfoObject($file); - } - - return rmdir($location); - } - - /** - * @param SplFileInfo $file - */ - protected function deleteFileInfoObject(SplFileInfo $file) - { - switch ($file->getType()) { - case 'dir': - rmdir($file->getRealPath()); - break; - case 'link': - unlink($file->getPathname()); - break; - default: - unlink($file->getRealPath()); - } - } - - /** - * Normalize the file info. - * - * @param SplFileInfo $file - * - * @return array|void - * - * @throws NotSupportedException - */ - protected function normalizeFileInfo(SplFileInfo $file) - { - if ( ! $file->isLink()) { - return $this->mapFileInfo($file); - } - - if ($this->linkHandling & self::DISALLOW_LINKS) { - throw NotSupportedException::forLink($file); - } - } - - /** - * Get the normalized path from a SplFileInfo object. - * - * @param SplFileInfo $file - * - * @return string - */ - protected function getFilePath(SplFileInfo $file) - { - $location = $file->getPathname(); - $path = $this->removePathPrefix($location); - - return trim(str_replace('\\', '/', $path), '/'); - } - - /** - * @param string $path - * @param int $mode - * - * @return RecursiveIteratorIterator - */ - protected function getRecursiveDirectoryIterator($path, $mode = RecursiveIteratorIterator::SELF_FIRST) - { - return new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS), - $mode - ); - } - - /** - * @param string $path - * - * @return DirectoryIterator - */ - protected function getDirectoryIterator($path) - { - $iterator = new DirectoryIterator($path); - - return $iterator; - } - - /** - * @param SplFileInfo $file - * - * @return array - */ - protected function mapFileInfo(SplFileInfo $file) - { - $normalized = [ - 'type' => $file->getType(), - 'path' => $this->getFilePath($file), - ]; - - $normalized['timestamp'] = $file->getMTime(); - - if ($normalized['type'] === 'file') { - $normalized['size'] = $file->getSize(); - } - - return $normalized; - } - - /** - * @param SplFileInfo $file - * - * @throws UnreadableFileException - */ - protected function guardAgainstUnreadableFileInfo(SplFileInfo $file) - { - if ( ! $file->isReadable()) { - throw UnreadableFileException::forFileInfo($file); - } - } -} diff --git a/vendor/league/flysystem/src/Adapter/NullAdapter.php b/vendor/league/flysystem/src/Adapter/NullAdapter.php deleted file mode 100644 index 2527087f7..000000000 --- a/vendor/league/flysystem/src/Adapter/NullAdapter.php +++ /dev/null @@ -1,144 +0,0 @@ -get('visibility')) { - $result['visibility'] = $visibility; - } - - return $result; - } - - /** - * @inheritdoc - */ - public function update($path, $contents, Config $config) - { - return false; - } - - /** - * @inheritdoc - */ - public function read($path) - { - return false; - } - - /** - * @inheritdoc - */ - public function rename($path, $newpath) - { - return false; - } - - /** - * @inheritdoc - */ - public function delete($path) - { - return false; - } - - /** - * @inheritdoc - */ - public function listContents($directory = '', $recursive = false) - { - return []; - } - - /** - * @inheritdoc - */ - public function getMetadata($path) - { - return false; - } - - /** - * @inheritdoc - */ - public function getSize($path) - { - return false; - } - - /** - * @inheritdoc - */ - public function getMimetype($path) - { - return false; - } - - /** - * @inheritdoc - */ - public function getTimestamp($path) - { - return false; - } - - /** - * @inheritdoc - */ - public function getVisibility($path) - { - return false; - } - - /** - * @inheritdoc - */ - public function setVisibility($path, $visibility) - { - return compact('visibility'); - } - - /** - * @inheritdoc - */ - public function createDir($dirname, Config $config) - { - return ['path' => $dirname, 'type' => 'dir']; - } - - /** - * @inheritdoc - */ - public function deleteDir($dirname) - { - return false; - } -} diff --git a/vendor/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php b/vendor/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php deleted file mode 100644 index fc0a747ac..000000000 --- a/vendor/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php +++ /dev/null @@ -1,33 +0,0 @@ -readStream($path); - - if ($response === false || ! is_resource($response['stream'])) { - return false; - } - - $result = $this->writeStream($newpath, $response['stream'], new Config()); - - if ($result !== false && is_resource($response['stream'])) { - fclose($response['stream']); - } - - return $result !== false; - } - - // Required abstract method - - /** - * @param string $path - * - * @return resource - */ - abstract public function readStream($path); - - /** - * @param string $path - * @param resource $resource - * @param Config $config - * - * @return resource - */ - abstract public function writeStream($path, $resource, Config $config); -} diff --git a/vendor/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php b/vendor/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php deleted file mode 100644 index 2b31c01d6..000000000 --- a/vendor/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php +++ /dev/null @@ -1,44 +0,0 @@ -read($path)) { - return false; - } - - $stream = fopen('php://temp', 'w+b'); - fwrite($stream, $data['contents']); - rewind($stream); - $data['stream'] = $stream; - unset($data['contents']); - - return $data; - } - - /** - * Reads a file. - * - * @param string $path - * - * @return array|false - * - * @see League\Flysystem\ReadInterface::read() - */ - abstract public function read($path); -} diff --git a/vendor/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php b/vendor/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php deleted file mode 100644 index 80424960c..000000000 --- a/vendor/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php +++ /dev/null @@ -1,9 +0,0 @@ -stream($path, $resource, $config, 'write'); - } - - /** - * Update a file using a stream. - * - * @param string $path - * @param resource $resource - * @param Config $config Config object or visibility setting - * - * @return mixed false of file metadata - */ - public function updateStream($path, $resource, Config $config) - { - return $this->stream($path, $resource, $config, 'update'); - } - - // Required abstract methods - abstract public function write($pash, $contents, Config $config); - abstract public function update($pash, $contents, Config $config); -} diff --git a/vendor/league/flysystem/src/Adapter/SynologyFtp.php b/vendor/league/flysystem/src/Adapter/SynologyFtp.php deleted file mode 100644 index fe0d344cf..000000000 --- a/vendor/league/flysystem/src/Adapter/SynologyFtp.php +++ /dev/null @@ -1,8 +0,0 @@ -settings = $settings; - } - - /** - * Get a setting. - * - * @param string $key - * @param mixed $default - * - * @return mixed config setting or default when not found - */ - public function get($key, $default = null) - { - if ( ! array_key_exists($key, $this->settings)) { - return $this->getDefault($key, $default); - } - - return $this->settings[$key]; - } - - /** - * Check if an item exists by key. - * - * @param string $key - * - * @return bool - */ - public function has($key) - { - if (array_key_exists($key, $this->settings)) { - return true; - } - - return $this->fallback instanceof Config - ? $this->fallback->has($key) - : false; - } - - /** - * Try to retrieve a default setting from a config fallback. - * - * @param string $key - * @param mixed $default - * - * @return mixed config setting or default when not found - */ - protected function getDefault($key, $default) - { - if ( ! $this->fallback) { - return $default; - } - - return $this->fallback->get($key, $default); - } - - /** - * Set a setting. - * - * @param string $key - * @param mixed $value - * - * @return $this - */ - public function set($key, $value) - { - $this->settings[$key] = $value; - - return $this; - } - - /** - * Set the fallback. - * - * @param Config $fallback - * - * @return $this - */ - public function setFallback(Config $fallback) - { - $this->fallback = $fallback; - - return $this; - } -} diff --git a/vendor/league/flysystem/src/ConfigAwareTrait.php b/vendor/league/flysystem/src/ConfigAwareTrait.php deleted file mode 100644 index 202d605da..000000000 --- a/vendor/league/flysystem/src/ConfigAwareTrait.php +++ /dev/null @@ -1,49 +0,0 @@ -config = $config ? Util::ensureConfig($config) : new Config; - } - - /** - * Get the Config. - * - * @return Config config object - */ - public function getConfig() - { - return $this->config; - } - - /** - * Convert a config array to a Config object with the correct fallback. - * - * @param array $config - * - * @return Config - */ - protected function prepareConfig(array $config) - { - $config = new Config($config); - $config->setFallback($this->getConfig()); - - return $config; - } -} diff --git a/vendor/league/flysystem/src/Directory.php b/vendor/league/flysystem/src/Directory.php deleted file mode 100644 index d4f90a880..000000000 --- a/vendor/league/flysystem/src/Directory.php +++ /dev/null @@ -1,31 +0,0 @@ -filesystem->deleteDir($this->path); - } - - /** - * List the directory contents. - * - * @param bool $recursive - * - * @return array|bool directory contents or false - */ - public function getContents($recursive = false) - { - return $this->filesystem->listContents($this->path, $recursive); - } -} diff --git a/vendor/league/flysystem/src/Exception.php b/vendor/league/flysystem/src/Exception.php deleted file mode 100644 index d4a9907b4..000000000 --- a/vendor/league/flysystem/src/Exception.php +++ /dev/null @@ -1,8 +0,0 @@ -filesystem->has($this->path); - } - - /** - * Read the file. - * - * @return string|false file contents - */ - public function read() - { - return $this->filesystem->read($this->path); - } - - /** - * Read the file as a stream. - * - * @return resource|false file stream - */ - public function readStream() - { - return $this->filesystem->readStream($this->path); - } - - /** - * Write the new file. - * - * @param string $content - * - * @return bool success boolean - */ - public function write($content) - { - return $this->filesystem->write($this->path, $content); - } - - /** - * Write the new file using a stream. - * - * @param resource $resource - * - * @return bool success boolean - */ - public function writeStream($resource) - { - return $this->filesystem->writeStream($this->path, $resource); - } - - /** - * Update the file contents. - * - * @param string $content - * - * @return bool success boolean - */ - public function update($content) - { - return $this->filesystem->update($this->path, $content); - } - - /** - * Update the file contents with a stream. - * - * @param resource $resource - * - * @return bool success boolean - */ - public function updateStream($resource) - { - return $this->filesystem->updateStream($this->path, $resource); - } - - /** - * Create the file or update if exists. - * - * @param string $content - * - * @return bool success boolean - */ - public function put($content) - { - return $this->filesystem->put($this->path, $content); - } - - /** - * Create the file or update if exists using a stream. - * - * @param resource $resource - * - * @return bool success boolean - */ - public function putStream($resource) - { - return $this->filesystem->putStream($this->path, $resource); - } - - /** - * Rename the file. - * - * @param string $newpath - * - * @return bool success boolean - */ - public function rename($newpath) - { - if ($this->filesystem->rename($this->path, $newpath)) { - $this->path = $newpath; - - return true; - } - - return false; - } - - /** - * Copy the file. - * - * @param string $newpath - * - * @return File|false new file or false - */ - public function copy($newpath) - { - if ($this->filesystem->copy($this->path, $newpath)) { - return new File($this->filesystem, $newpath); - } - - return false; - } - - /** - * Get the file's timestamp. - * - * @return string|false The timestamp or false on failure. - */ - public function getTimestamp() - { - return $this->filesystem->getTimestamp($this->path); - } - - /** - * Get the file's mimetype. - * - * @return string|false The file mime-type or false on failure. - */ - public function getMimetype() - { - return $this->filesystem->getMimetype($this->path); - } - - /** - * Get the file's visibility. - * - * @return string|false The visibility (public|private) or false on failure. - */ - public function getVisibility() - { - return $this->filesystem->getVisibility($this->path); - } - - /** - * Get the file's metadata. - * - * @return array|false The file metadata or false on failure. - */ - public function getMetadata() - { - return $this->filesystem->getMetadata($this->path); - } - - /** - * Get the file size. - * - * @return int|false The file size or false on failure. - */ - public function getSize() - { - return $this->filesystem->getSize($this->path); - } - - /** - * Delete the file. - * - * @return bool success boolean - */ - public function delete() - { - return $this->filesystem->delete($this->path); - } -} diff --git a/vendor/league/flysystem/src/FileExistsException.php b/vendor/league/flysystem/src/FileExistsException.php deleted file mode 100644 index c82e20c16..000000000 --- a/vendor/league/flysystem/src/FileExistsException.php +++ /dev/null @@ -1,37 +0,0 @@ -path = $path; - - parent::__construct('File already exists at path: ' . $this->getPath(), $code, $previous); - } - - /** - * Get the path which was found. - * - * @return string - */ - public function getPath() - { - return $this->path; - } -} diff --git a/vendor/league/flysystem/src/FileNotFoundException.php b/vendor/league/flysystem/src/FileNotFoundException.php deleted file mode 100644 index 989df69bb..000000000 --- a/vendor/league/flysystem/src/FileNotFoundException.php +++ /dev/null @@ -1,37 +0,0 @@ -path = $path; - - parent::__construct('File not found at path: ' . $this->getPath(), $code, $previous); - } - - /** - * Get the path which was not found. - * - * @return string - */ - public function getPath() - { - return $this->path; - } -} diff --git a/vendor/league/flysystem/src/Filesystem.php b/vendor/league/flysystem/src/Filesystem.php deleted file mode 100644 index 18b590e63..000000000 --- a/vendor/league/flysystem/src/Filesystem.php +++ /dev/null @@ -1,408 +0,0 @@ -adapter = $adapter; - $this->setConfig($config); - } - - /** - * Get the Adapter. - * - * @return AdapterInterface adapter - */ - public function getAdapter() - { - return $this->adapter; - } - - /** - * @inheritdoc - */ - public function has($path) - { - $path = Util::normalizePath($path); - - return strlen($path) === 0 ? false : (bool) $this->getAdapter()->has($path); - } - - /** - * @inheritdoc - */ - public function write($path, $contents, array $config = []) - { - $path = Util::normalizePath($path); - $this->assertAbsent($path); - $config = $this->prepareConfig($config); - - return (bool) $this->getAdapter()->write($path, $contents, $config); - } - - /** - * @inheritdoc - */ - public function writeStream($path, $resource, array $config = []) - { - if ( ! is_resource($resource)) { - throw new InvalidArgumentException(__METHOD__ . ' expects argument #2 to be a valid resource.'); - } - - $path = Util::normalizePath($path); - $this->assertAbsent($path); - $config = $this->prepareConfig($config); - - Util::rewindStream($resource); - - return (bool) $this->getAdapter()->writeStream($path, $resource, $config); - } - - /** - * @inheritdoc - */ - public function put($path, $contents, array $config = []) - { - $path = Util::normalizePath($path); - $config = $this->prepareConfig($config); - - if ( ! $this->getAdapter() instanceof CanOverwriteFiles && $this->has($path)) { - return (bool) $this->getAdapter()->update($path, $contents, $config); - } - - return (bool) $this->getAdapter()->write($path, $contents, $config); - } - - /** - * @inheritdoc - */ - public function putStream($path, $resource, array $config = []) - { - if ( ! is_resource($resource)) { - throw new InvalidArgumentException(__METHOD__ . ' expects argument #2 to be a valid resource.'); - } - - $path = Util::normalizePath($path); - $config = $this->prepareConfig($config); - Util::rewindStream($resource); - - if ( ! $this->getAdapter() instanceof CanOverwriteFiles && $this->has($path)) { - return (bool) $this->getAdapter()->updateStream($path, $resource, $config); - } - - return (bool) $this->getAdapter()->writeStream($path, $resource, $config); - } - - /** - * @inheritdoc - */ - public function readAndDelete($path) - { - $path = Util::normalizePath($path); - $this->assertPresent($path); - $contents = $this->read($path); - - if ($contents === false) { - return false; - } - - $this->delete($path); - - return $contents; - } - - /** - * @inheritdoc - */ - public function update($path, $contents, array $config = []) - { - $path = Util::normalizePath($path); - $config = $this->prepareConfig($config); - - $this->assertPresent($path); - - return (bool) $this->getAdapter()->update($path, $contents, $config); - } - - /** - * @inheritdoc - */ - public function updateStream($path, $resource, array $config = []) - { - if ( ! is_resource($resource)) { - throw new InvalidArgumentException(__METHOD__ . ' expects argument #2 to be a valid resource.'); - } - - $path = Util::normalizePath($path); - $config = $this->prepareConfig($config); - $this->assertPresent($path); - Util::rewindStream($resource); - - return (bool) $this->getAdapter()->updateStream($path, $resource, $config); - } - - /** - * @inheritdoc - */ - public function read($path) - { - $path = Util::normalizePath($path); - $this->assertPresent($path); - - if ( ! ($object = $this->getAdapter()->read($path))) { - return false; - } - - return $object['contents']; - } - - /** - * @inheritdoc - */ - public function readStream($path) - { - $path = Util::normalizePath($path); - $this->assertPresent($path); - - if ( ! $object = $this->getAdapter()->readStream($path)) { - return false; - } - - return $object['stream']; - } - - /** - * @inheritdoc - */ - public function rename($path, $newpath) - { - $path = Util::normalizePath($path); - $newpath = Util::normalizePath($newpath); - $this->assertPresent($path); - $this->assertAbsent($newpath); - - return (bool) $this->getAdapter()->rename($path, $newpath); - } - - /** - * @inheritdoc - */ - public function copy($path, $newpath) - { - $path = Util::normalizePath($path); - $newpath = Util::normalizePath($newpath); - $this->assertPresent($path); - $this->assertAbsent($newpath); - - return $this->getAdapter()->copy($path, $newpath); - } - - /** - * @inheritdoc - */ - public function delete($path) - { - $path = Util::normalizePath($path); - $this->assertPresent($path); - - return $this->getAdapter()->delete($path); - } - - /** - * @inheritdoc - */ - public function deleteDir($dirname) - { - $dirname = Util::normalizePath($dirname); - - if ($dirname === '') { - throw new RootViolationException('Root directories can not be deleted.'); - } - - return (bool) $this->getAdapter()->deleteDir($dirname); - } - - /** - * @inheritdoc - */ - public function createDir($dirname, array $config = []) - { - $dirname = Util::normalizePath($dirname); - $config = $this->prepareConfig($config); - - return (bool) $this->getAdapter()->createDir($dirname, $config); - } - - /** - * @inheritdoc - */ - public function listContents($directory = '', $recursive = false) - { - $directory = Util::normalizePath($directory); - $contents = $this->getAdapter()->listContents($directory, $recursive); - - return (new ContentListingFormatter($directory, $recursive, $this->config->get('case_sensitive', true))) - ->formatListing($contents); - } - - /** - * @inheritdoc - */ - public function getMimetype($path) - { - $path = Util::normalizePath($path); - $this->assertPresent($path); - - if (( ! $object = $this->getAdapter()->getMimetype($path)) || ! array_key_exists('mimetype', $object)) { - return false; - } - - return $object['mimetype']; - } - - /** - * @inheritdoc - */ - public function getTimestamp($path) - { - $path = Util::normalizePath($path); - $this->assertPresent($path); - - if (( ! $object = $this->getAdapter()->getTimestamp($path)) || ! array_key_exists('timestamp', $object)) { - return false; - } - - return $object['timestamp']; - } - - /** - * @inheritdoc - */ - public function getVisibility($path) - { - $path = Util::normalizePath($path); - $this->assertPresent($path); - - if (( ! $object = $this->getAdapter()->getVisibility($path)) || ! array_key_exists('visibility', $object)) { - return false; - } - - return $object['visibility']; - } - - /** - * @inheritdoc - */ - public function getSize($path) - { - $path = Util::normalizePath($path); - $this->assertPresent($path); - - if (( ! $object = $this->getAdapter()->getSize($path)) || ! array_key_exists('size', $object)) { - return false; - } - - return (int) $object['size']; - } - - /** - * @inheritdoc - */ - public function setVisibility($path, $visibility) - { - $path = Util::normalizePath($path); - $this->assertPresent($path); - - return (bool) $this->getAdapter()->setVisibility($path, $visibility); - } - - /** - * @inheritdoc - */ - public function getMetadata($path) - { - $path = Util::normalizePath($path); - $this->assertPresent($path); - - return $this->getAdapter()->getMetadata($path); - } - - /** - * @inheritdoc - */ - public function get($path, Handler $handler = null) - { - $path = Util::normalizePath($path); - - if ( ! $handler) { - $metadata = $this->getMetadata($path); - $handler = $metadata['type'] === 'file' ? new File($this, $path) : new Directory($this, $path); - } - - $handler->setPath($path); - $handler->setFilesystem($this); - - return $handler; - } - - /** - * Assert a file is present. - * - * @param string $path path to file - * - * @throws FileNotFoundException - * - * @return void - */ - public function assertPresent($path) - { - if ($this->config->get('disable_asserts', false) === false && ! $this->has($path)) { - throw new FileNotFoundException($path); - } - } - - /** - * Assert a file is absent. - * - * @param string $path path to file - * - * @throws FileExistsException - * - * @return void - */ - public function assertAbsent($path) - { - if ($this->config->get('disable_asserts', false) === false && $this->has($path)) { - throw new FileExistsException($path); - } - } -} diff --git a/vendor/league/flysystem/src/FilesystemInterface.php b/vendor/league/flysystem/src/FilesystemInterface.php deleted file mode 100644 index 09b811b1d..000000000 --- a/vendor/league/flysystem/src/FilesystemInterface.php +++ /dev/null @@ -1,284 +0,0 @@ -path = $path; - $this->filesystem = $filesystem; - } - - /** - * Check whether the entree is a directory. - * - * @return bool - */ - public function isDir() - { - return $this->getType() === 'dir'; - } - - /** - * Check whether the entree is a file. - * - * @return bool - */ - public function isFile() - { - return $this->getType() === 'file'; - } - - /** - * Retrieve the entree type (file|dir). - * - * @return string file or dir - */ - public function getType() - { - $metadata = $this->filesystem->getMetadata($this->path); - - return $metadata['type']; - } - - /** - * Set the Filesystem object. - * - * @param FilesystemInterface $filesystem - * - * @return $this - */ - public function setFilesystem(FilesystemInterface $filesystem) - { - $this->filesystem = $filesystem; - - return $this; - } - - /** - * Retrieve the Filesystem object. - * - * @return FilesystemInterface - */ - public function getFilesystem() - { - return $this->filesystem; - } - - /** - * Set the entree path. - * - * @param string $path - * - * @return $this - */ - public function setPath($path) - { - $this->path = $path; - - return $this; - } - - /** - * Retrieve the entree path. - * - * @return string path - */ - public function getPath() - { - return $this->path; - } - - /** - * Plugins pass-through. - * - * @param string $method - * @param array $arguments - * - * @return mixed - */ - public function __call($method, array $arguments) - { - array_unshift($arguments, $this->path); - $callback = [$this->filesystem, $method]; - - try { - return call_user_func_array($callback, $arguments); - } catch (BadMethodCallException $e) { - throw new BadMethodCallException( - 'Call to undefined method ' - . get_called_class() - . '::' . $method - ); - } - } -} diff --git a/vendor/league/flysystem/src/MountManager.php b/vendor/league/flysystem/src/MountManager.php deleted file mode 100644 index 620f540ea..000000000 --- a/vendor/league/flysystem/src/MountManager.php +++ /dev/null @@ -1,648 +0,0 @@ - Filesystem,] - * - * @throws InvalidArgumentException - */ - public function __construct(array $filesystems = []) - { - $this->mountFilesystems($filesystems); - } - - /** - * Mount filesystems. - * - * @param FilesystemInterface[] $filesystems [:prefix => Filesystem,] - * - * @throws InvalidArgumentException - * - * @return $this - */ - public function mountFilesystems(array $filesystems) - { - foreach ($filesystems as $prefix => $filesystem) { - $this->mountFilesystem($prefix, $filesystem); - } - - return $this; - } - - /** - * Mount filesystems. - * - * @param string $prefix - * @param FilesystemInterface $filesystem - * - * @throws InvalidArgumentException - * - * @return $this - */ - public function mountFilesystem($prefix, FilesystemInterface $filesystem) - { - if ( ! is_string($prefix)) { - throw new InvalidArgumentException(__METHOD__ . ' expects argument #1 to be a string.'); - } - - $this->filesystems[$prefix] = $filesystem; - - return $this; - } - - /** - * Get the filesystem with the corresponding prefix. - * - * @param string $prefix - * - * @throws FilesystemNotFoundException - * - * @return FilesystemInterface - */ - public function getFilesystem($prefix) - { - if ( ! isset($this->filesystems[$prefix])) { - throw new FilesystemNotFoundException('No filesystem mounted with prefix ' . $prefix); - } - - return $this->filesystems[$prefix]; - } - - /** - * Retrieve the prefix from an arguments array. - * - * @param array $arguments - * - * @throws InvalidArgumentException - * - * @return array [:prefix, :arguments] - */ - public function filterPrefix(array $arguments) - { - if (empty($arguments)) { - throw new InvalidArgumentException('At least one argument needed'); - } - - $path = array_shift($arguments); - - if ( ! is_string($path)) { - throw new InvalidArgumentException('First argument should be a string'); - } - - list($prefix, $path) = $this->getPrefixAndPath($path); - array_unshift($arguments, $path); - - return [$prefix, $arguments]; - } - - /** - * @param string $directory - * @param bool $recursive - * - * @throws InvalidArgumentException - * @throws FilesystemNotFoundException - * - * @return array - */ - public function listContents($directory = '', $recursive = false) - { - list($prefix, $directory) = $this->getPrefixAndPath($directory); - $filesystem = $this->getFilesystem($prefix); - $result = $filesystem->listContents($directory, $recursive); - - foreach ($result as &$file) { - $file['filesystem'] = $prefix; - } - - return $result; - } - - /** - * Call forwarder. - * - * @param string $method - * @param array $arguments - * - * @throws InvalidArgumentException - * @throws FilesystemNotFoundException - * - * @return mixed - */ - public function __call($method, $arguments) - { - list($prefix, $arguments) = $this->filterPrefix($arguments); - - return $this->invokePluginOnFilesystem($method, $arguments, $prefix); - } - - /** - * @param string $from - * @param string $to - * @param array $config - * - * @throws InvalidArgumentException - * @throws FilesystemNotFoundException - * @throws FileExistsException - * - * @return bool - */ - public function copy($from, $to, array $config = []) - { - list($prefixFrom, $from) = $this->getPrefixAndPath($from); - - $buffer = $this->getFilesystem($prefixFrom)->readStream($from); - - if ($buffer === false) { - return false; - } - - list($prefixTo, $to) = $this->getPrefixAndPath($to); - - $result = $this->getFilesystem($prefixTo)->writeStream($to, $buffer, $config); - - if (is_resource($buffer)) { - fclose($buffer); - } - - return $result; - } - - /** - * List with plugin adapter. - * - * @param array $keys - * @param string $directory - * @param bool $recursive - * - * @throws InvalidArgumentException - * @throws FilesystemNotFoundException - * - * @return array - */ - public function listWith(array $keys = [], $directory = '', $recursive = false) - { - list($prefix, $directory) = $this->getPrefixAndPath($directory); - $arguments = [$keys, $directory, $recursive]; - - return $this->invokePluginOnFilesystem('listWith', $arguments, $prefix); - } - - /** - * Move a file. - * - * @param string $from - * @param string $to - * @param array $config - * - * @throws InvalidArgumentException - * @throws FilesystemNotFoundException - * - * @return bool - */ - public function move($from, $to, array $config = []) - { - list($prefixFrom, $pathFrom) = $this->getPrefixAndPath($from); - list($prefixTo, $pathTo) = $this->getPrefixAndPath($to); - - if ($prefixFrom === $prefixTo) { - $filesystem = $this->getFilesystem($prefixFrom); - $renamed = $filesystem->rename($pathFrom, $pathTo); - - if ($renamed && isset($config['visibility'])) { - return $filesystem->setVisibility($pathTo, $config['visibility']); - } - - return $renamed; - } - - $copied = $this->copy($from, $to, $config); - - if ($copied) { - return $this->delete($from); - } - - return false; - } - - /** - * Invoke a plugin on a filesystem mounted on a given prefix. - * - * @param string $method - * @param array $arguments - * @param string $prefix - * - * @throws FilesystemNotFoundException - * - * @return mixed - */ - public function invokePluginOnFilesystem($method, $arguments, $prefix) - { - $filesystem = $this->getFilesystem($prefix); - - try { - return $this->invokePlugin($method, $arguments, $filesystem); - } catch (PluginNotFoundException $e) { - // Let it pass, it's ok, don't panic. - } - - $callback = [$filesystem, $method]; - - return call_user_func_array($callback, $arguments); - } - - /** - * @param string $path - * - * @throws InvalidArgumentException - * - * @return string[] [:prefix, :path] - */ - protected function getPrefixAndPath($path) - { - if (strpos($path, '://') < 1) { - throw new InvalidArgumentException('No prefix detected in path: ' . $path); - } - - return explode('://', $path, 2); - } - - /** - * Check whether a file exists. - * - * @param string $path - * - * @return bool - */ - public function has($path) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->has($path); - } - - /** - * Read a file. - * - * @param string $path The path to the file. - * - * @throws FileNotFoundException - * - * @return string|false The file contents or false on failure. - */ - public function read($path) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->read($path); - } - - /** - * Retrieves a read-stream for a path. - * - * @param string $path The path to the file. - * - * @throws FileNotFoundException - * - * @return resource|false The path resource or false on failure. - */ - public function readStream($path) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->readStream($path); - } - - /** - * Get a file's metadata. - * - * @param string $path The path to the file. - * - * @throws FileNotFoundException - * - * @return array|false The file metadata or false on failure. - */ - public function getMetadata($path) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->getMetadata($path); - } - - /** - * Get a file's size. - * - * @param string $path The path to the file. - * - * @throws FileNotFoundException - * - * @return int|false The file size or false on failure. - */ - public function getSize($path) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->getSize($path); - } - - /** - * Get a file's mime-type. - * - * @param string $path The path to the file. - * - * @throws FileNotFoundException - * - * @return string|false The file mime-type or false on failure. - */ - public function getMimetype($path) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->getMimetype($path); - } - - /** - * Get a file's timestamp. - * - * @param string $path The path to the file. - * - * @throws FileNotFoundException - * - * @return string|false The timestamp or false on failure. - */ - public function getTimestamp($path) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->getTimestamp($path); - } - - /** - * Get a file's visibility. - * - * @param string $path The path to the file. - * - * @throws FileNotFoundException - * - * @return string|false The visibility (public|private) or false on failure. - */ - public function getVisibility($path) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->getVisibility($path); - } - - /** - * Write a new file. - * - * @param string $path The path of the new file. - * @param string $contents The file contents. - * @param array $config An optional configuration array. - * - * @throws FileExistsException - * - * @return bool True on success, false on failure. - */ - public function write($path, $contents, array $config = []) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->write($path, $contents, $config); - } - - /** - * Write a new file using a stream. - * - * @param string $path The path of the new file. - * @param resource $resource The file handle. - * @param array $config An optional configuration array. - * - * @throws InvalidArgumentException If $resource is not a file handle. - * @throws FileExistsException - * - * @return bool True on success, false on failure. - */ - public function writeStream($path, $resource, array $config = []) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->writeStream($path, $resource, $config); - } - - /** - * Update an existing file. - * - * @param string $path The path of the existing file. - * @param string $contents The file contents. - * @param array $config An optional configuration array. - * - * @throws FileNotFoundException - * - * @return bool True on success, false on failure. - */ - public function update($path, $contents, array $config = []) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->update($path, $contents, $config); - } - - /** - * Update an existing file using a stream. - * - * @param string $path The path of the existing file. - * @param resource $resource The file handle. - * @param array $config An optional configuration array. - * - * @throws InvalidArgumentException If $resource is not a file handle. - * @throws FileNotFoundException - * - * @return bool True on success, false on failure. - */ - public function updateStream($path, $resource, array $config = []) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->updateStream($path, $resource, $config); - } - - /** - * Rename a file. - * - * @param string $path Path to the existing file. - * @param string $newpath The new path of the file. - * - * @throws FileExistsException Thrown if $newpath exists. - * @throws FileNotFoundException Thrown if $path does not exist. - * - * @return bool True on success, false on failure. - */ - public function rename($path, $newpath) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->rename($path, $newpath); - } - - /** - * Delete a file. - * - * @param string $path - * - * @throws FileNotFoundException - * - * @return bool True on success, false on failure. - */ - public function delete($path) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->delete($path); - } - - /** - * Delete a directory. - * - * @param string $dirname - * - * @throws RootViolationException Thrown if $dirname is empty. - * - * @return bool True on success, false on failure. - */ - public function deleteDir($dirname) - { - list($prefix, $dirname) = $this->getPrefixAndPath($dirname); - - return $this->getFilesystem($prefix)->deleteDir($dirname); - } - - /** - * Create a directory. - * - * @param string $dirname The name of the new directory. - * @param array $config An optional configuration array. - * - * @return bool True on success, false on failure. - */ - public function createDir($dirname, array $config = []) - { - list($prefix, $dirname) = $this->getPrefixAndPath($dirname); - - return $this->getFilesystem($prefix)->createDir($dirname); - } - - /** - * Set the visibility for a file. - * - * @param string $path The path to the file. - * @param string $visibility One of 'public' or 'private'. - * - * @throws FileNotFoundException - * - * @return bool True on success, false on failure. - */ - public function setVisibility($path, $visibility) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->setVisibility($path, $visibility); - } - - /** - * Create a file or update if exists. - * - * @param string $path The path to the file. - * @param string $contents The file contents. - * @param array $config An optional configuration array. - * - * @return bool True on success, false on failure. - */ - public function put($path, $contents, array $config = []) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->put($path, $contents, $config); - } - - /** - * Create a file or update if exists. - * - * @param string $path The path to the file. - * @param resource $resource The file handle. - * @param array $config An optional configuration array. - * - * @throws InvalidArgumentException Thrown if $resource is not a resource. - * - * @return bool True on success, false on failure. - */ - public function putStream($path, $resource, array $config = []) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->putStream($path, $resource, $config); - } - - /** - * Read and delete a file. - * - * @param string $path The path to the file. - * - * @throws FileNotFoundException - * - * @return string|false The file contents, or false on failure. - */ - public function readAndDelete($path) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->readAndDelete($path); - } - - /** - * Get a file/directory handler. - * - * @deprecated - * - * @param string $path The path to the file. - * @param Handler $handler An optional existing handler to populate. - * - * @return Handler Either a file or directory handler. - */ - public function get($path, Handler $handler = null) - { - list($prefix, $path) = $this->getPrefixAndPath($path); - - return $this->getFilesystem($prefix)->get($path); - } -} diff --git a/vendor/league/flysystem/src/NotSupportedException.php b/vendor/league/flysystem/src/NotSupportedException.php deleted file mode 100644 index 08f47f749..000000000 --- a/vendor/league/flysystem/src/NotSupportedException.php +++ /dev/null @@ -1,37 +0,0 @@ -getPathname()); - } - - /** - * Create a new exception for a link. - * - * @param string $systemType - * - * @return static - */ - public static function forFtpSystemType($systemType) - { - $message = "The FTP system type '$systemType' is currently not supported."; - - return new static($message); - } -} diff --git a/vendor/league/flysystem/src/Plugin/AbstractPlugin.php b/vendor/league/flysystem/src/Plugin/AbstractPlugin.php deleted file mode 100644 index 0d5678976..000000000 --- a/vendor/league/flysystem/src/Plugin/AbstractPlugin.php +++ /dev/null @@ -1,24 +0,0 @@ -filesystem = $filesystem; - } -} diff --git a/vendor/league/flysystem/src/Plugin/EmptyDir.php b/vendor/league/flysystem/src/Plugin/EmptyDir.php deleted file mode 100644 index b5ae7f582..000000000 --- a/vendor/league/flysystem/src/Plugin/EmptyDir.php +++ /dev/null @@ -1,34 +0,0 @@ -filesystem->listContents($dirname, false); - - foreach ($listing as $item) { - if ($item['type'] === 'dir') { - $this->filesystem->deleteDir($item['path']); - } else { - $this->filesystem->delete($item['path']); - } - } - } -} diff --git a/vendor/league/flysystem/src/Plugin/ForcedCopy.php b/vendor/league/flysystem/src/Plugin/ForcedCopy.php deleted file mode 100644 index a41e9f3ae..000000000 --- a/vendor/league/flysystem/src/Plugin/ForcedCopy.php +++ /dev/null @@ -1,44 +0,0 @@ -filesystem->delete($newpath); - } catch (FileNotFoundException $e) { - // The destination path does not exist. That's ok. - $deleted = true; - } - - if ($deleted) { - return $this->filesystem->copy($path, $newpath); - } - - return false; - } -} diff --git a/vendor/league/flysystem/src/Plugin/ForcedRename.php b/vendor/league/flysystem/src/Plugin/ForcedRename.php deleted file mode 100644 index 3f51cd607..000000000 --- a/vendor/league/flysystem/src/Plugin/ForcedRename.php +++ /dev/null @@ -1,44 +0,0 @@ -filesystem->delete($newpath); - } catch (FileNotFoundException $e) { - // The destination path does not exist. That's ok. - $deleted = true; - } - - if ($deleted) { - return $this->filesystem->rename($path, $newpath); - } - - return false; - } -} diff --git a/vendor/league/flysystem/src/Plugin/GetWithMetadata.php b/vendor/league/flysystem/src/Plugin/GetWithMetadata.php deleted file mode 100644 index 6fe4f0562..000000000 --- a/vendor/league/flysystem/src/Plugin/GetWithMetadata.php +++ /dev/null @@ -1,51 +0,0 @@ -filesystem->getMetadata($path); - - if ( ! $object) { - return false; - } - - $keys = array_diff($metadata, array_keys($object)); - - foreach ($keys as $key) { - if ( ! method_exists($this->filesystem, $method = 'get' . ucfirst($key))) { - throw new InvalidArgumentException('Could not fetch metadata: ' . $key); - } - - $object[$key] = $this->filesystem->{$method}($path); - } - - return $object; - } -} diff --git a/vendor/league/flysystem/src/Plugin/ListFiles.php b/vendor/league/flysystem/src/Plugin/ListFiles.php deleted file mode 100644 index 9669fe7e7..000000000 --- a/vendor/league/flysystem/src/Plugin/ListFiles.php +++ /dev/null @@ -1,35 +0,0 @@ -filesystem->listContents($directory, $recursive); - - $filter = function ($object) { - return $object['type'] === 'file'; - }; - - return array_values(array_filter($contents, $filter)); - } -} diff --git a/vendor/league/flysystem/src/Plugin/ListPaths.php b/vendor/league/flysystem/src/Plugin/ListPaths.php deleted file mode 100644 index 514bdf0b3..000000000 --- a/vendor/league/flysystem/src/Plugin/ListPaths.php +++ /dev/null @@ -1,36 +0,0 @@ -filesystem->listContents($directory, $recursive); - - foreach ($contents as $object) { - $result[] = $object['path']; - } - - return $result; - } -} diff --git a/vendor/league/flysystem/src/Plugin/ListWith.php b/vendor/league/flysystem/src/Plugin/ListWith.php deleted file mode 100644 index d90464e52..000000000 --- a/vendor/league/flysystem/src/Plugin/ListWith.php +++ /dev/null @@ -1,60 +0,0 @@ -filesystem->listContents($directory, $recursive); - - foreach ($contents as $index => $object) { - if ($object['type'] === 'file') { - $missingKeys = array_diff($keys, array_keys($object)); - $contents[$index] = array_reduce($missingKeys, [$this, 'getMetadataByName'], $object); - } - } - - return $contents; - } - - /** - * Get a meta-data value by key name. - * - * @param array $object - * @param string $key - * - * @return array - */ - protected function getMetadataByName(array $object, $key) - { - $method = 'get' . ucfirst($key); - - if ( ! method_exists($this->filesystem, $method)) { - throw new \InvalidArgumentException('Could not get meta-data for key: ' . $key); - } - - $object[$key] = $this->filesystem->{$method}($object['path']); - - return $object; - } -} diff --git a/vendor/league/flysystem/src/Plugin/PluggableTrait.php b/vendor/league/flysystem/src/Plugin/PluggableTrait.php deleted file mode 100644 index 922edfe52..000000000 --- a/vendor/league/flysystem/src/Plugin/PluggableTrait.php +++ /dev/null @@ -1,97 +0,0 @@ -plugins[$plugin->getMethod()] = $plugin; - - return $this; - } - - /** - * Find a specific plugin. - * - * @param string $method - * - * @throws PluginNotFoundException - * - * @return PluginInterface - */ - protected function findPlugin($method) - { - if ( ! isset($this->plugins[$method])) { - throw new PluginNotFoundException('Plugin not found for method: ' . $method); - } - - return $this->plugins[$method]; - } - - /** - * Invoke a plugin by method name. - * - * @param string $method - * @param array $arguments - * @param FilesystemInterface $filesystem - * - * @throws PluginNotFoundException - * - * @return mixed - */ - protected function invokePlugin($method, array $arguments, FilesystemInterface $filesystem) - { - $plugin = $this->findPlugin($method); - $plugin->setFilesystem($filesystem); - $callback = [$plugin, 'handle']; - - return call_user_func_array($callback, $arguments); - } - - /** - * Plugins pass-through. - * - * @param string $method - * @param array $arguments - * - * @throws BadMethodCallException - * - * @return mixed - */ - public function __call($method, array $arguments) - { - try { - return $this->invokePlugin($method, $arguments, $this); - } catch (PluginNotFoundException $e) { - throw new BadMethodCallException( - 'Call to undefined method ' - . get_class($this) - . '::' . $method - ); - } - } -} diff --git a/vendor/league/flysystem/src/Plugin/PluginNotFoundException.php b/vendor/league/flysystem/src/Plugin/PluginNotFoundException.php deleted file mode 100644 index fd1d7e7e3..000000000 --- a/vendor/league/flysystem/src/Plugin/PluginNotFoundException.php +++ /dev/null @@ -1,10 +0,0 @@ -hash = spl_object_hash($this); - static::$safeStorage[$this->hash] = []; - } - - public function storeSafely($key, $value) - { - static::$safeStorage[$this->hash][$key] = $value; - } - - public function retrieveSafely($key) - { - if (array_key_exists($key, static::$safeStorage[$this->hash])) { - return static::$safeStorage[$this->hash][$key]; - } - } - - public function __destruct() - { - unset(static::$safeStorage[$this->hash]); - } -} diff --git a/vendor/league/flysystem/src/UnreadableFileException.php b/vendor/league/flysystem/src/UnreadableFileException.php deleted file mode 100644 index e66803383..000000000 --- a/vendor/league/flysystem/src/UnreadableFileException.php +++ /dev/null @@ -1,18 +0,0 @@ -getRealPath() - ) - ); - } -} diff --git a/vendor/league/flysystem/src/Util.php b/vendor/league/flysystem/src/Util.php deleted file mode 100644 index 2c7754021..000000000 --- a/vendor/league/flysystem/src/Util.php +++ /dev/null @@ -1,349 +0,0 @@ - '']; - } - - /** - * Normalize a dirname return value. - * - * @param string $dirname - * - * @return string normalized dirname - */ - public static function normalizeDirname($dirname) - { - return $dirname === '.' ? '' : $dirname; - } - - /** - * Get a normalized dirname from a path. - * - * @param string $path - * - * @return string dirname - */ - public static function dirname($path) - { - return static::normalizeDirname(dirname($path)); - } - - /** - * Map result arrays. - * - * @param array $object - * @param array $map - * - * @return array mapped result - */ - public static function map(array $object, array $map) - { - $result = []; - - foreach ($map as $from => $to) { - if ( ! isset($object[$from])) { - continue; - } - - $result[$to] = $object[$from]; - } - - return $result; - } - - /** - * Normalize path. - * - * @param string $path - * - * @throws LogicException - * - * @return string - */ - public static function normalizePath($path) - { - return static::normalizeRelativePath($path); - } - - /** - * Normalize relative directories in a path. - * - * @param string $path - * - * @throws LogicException - * - * @return string - */ - public static function normalizeRelativePath($path) - { - $path = str_replace('\\', '/', $path); - $path = static::removeFunkyWhiteSpace($path); - - $parts = []; - - foreach (explode('/', $path) as $part) { - switch ($part) { - case '': - case '.': - break; - - case '..': - if (empty($parts)) { - throw new LogicException( - 'Path is outside of the defined root, path: [' . $path . ']' - ); - } - array_pop($parts); - break; - - default: - $parts[] = $part; - break; - } - } - - return implode('/', $parts); - } - - /** - * Removes unprintable characters and invalid unicode characters. - * - * @param string $path - * - * @return string $path - */ - protected static function removeFunkyWhiteSpace($path) - { - // We do this check in a loop, since removing invalid unicode characters - // can lead to new characters being created. - while (preg_match('#\p{C}+|^\./#u', $path)) { - $path = preg_replace('#\p{C}+|^\./#u', '', $path); - } - - return $path; - } - - /** - * Normalize prefix. - * - * @param string $prefix - * @param string $separator - * - * @return string normalized path - */ - public static function normalizePrefix($prefix, $separator) - { - return rtrim($prefix, $separator) . $separator; - } - - /** - * Get content size. - * - * @param string $contents - * - * @return int content size - */ - public static function contentSize($contents) - { - return defined('MB_OVERLOAD_STRING') ? mb_strlen($contents, '8bit') : strlen($contents); - } - - /** - * Guess MIME Type based on the path of the file and it's content. - * - * @param string $path - * @param string|resource $content - * - * @return string|null MIME Type or NULL if no extension detected - */ - public static function guessMimeType($path, $content) - { - $mimeType = MimeType::detectByContent($content); - - if ( ! (empty($mimeType) || in_array($mimeType, ['application/x-empty', 'text/plain', 'text/x-asm']))) { - return $mimeType; - } - - return MimeType::detectByFilename($path); - } - - /** - * Emulate directories. - * - * @param array $listing - * - * @return array listing with emulated directories - */ - public static function emulateDirectories(array $listing) - { - $directories = []; - $listedDirectories = []; - - foreach ($listing as $object) { - list($directories, $listedDirectories) = static::emulateObjectDirectories($object, $directories, $listedDirectories); - } - - $directories = array_diff(array_unique($directories), array_unique($listedDirectories)); - - foreach ($directories as $directory) { - $listing[] = static::pathinfo($directory) + ['type' => 'dir']; - } - - return $listing; - } - - /** - * Ensure a Config instance. - * - * @param null|array|Config $config - * - * @return Config config instance - * - * @throw LogicException - */ - public static function ensureConfig($config) - { - if ($config === null) { - return new Config(); - } - - if ($config instanceof Config) { - return $config; - } - - if (is_array($config)) { - return new Config($config); - } - - throw new LogicException('A config should either be an array or a Flysystem\Config object.'); - } - - /** - * Rewind a stream. - * - * @param resource $resource - */ - public static function rewindStream($resource) - { - if (ftell($resource) !== 0 && static::isSeekableStream($resource)) { - rewind($resource); - } - } - - public static function isSeekableStream($resource) - { - $metadata = stream_get_meta_data($resource); - - return $metadata['seekable']; - } - - /** - * Get the size of a stream. - * - * @param resource $resource - * - * @return int stream size - */ - public static function getStreamSize($resource) - { - $stat = fstat($resource); - - return $stat['size']; - } - - /** - * Emulate the directories of a single object. - * - * @param array $object - * @param array $directories - * @param array $listedDirectories - * - * @return array - */ - protected static function emulateObjectDirectories(array $object, array $directories, array $listedDirectories) - { - if ($object['type'] === 'dir') { - $listedDirectories[] = $object['path']; - } - - if (empty($object['dirname'])) { - return [$directories, $listedDirectories]; - } - - $parent = $object['dirname']; - - while ( ! empty($parent) && ! in_array($parent, $directories)) { - $directories[] = $parent; - $parent = static::dirname($parent); - } - - if (isset($object['type']) && $object['type'] === 'dir') { - $listedDirectories[] = $object['path']; - - return [$directories, $listedDirectories]; - } - - return [$directories, $listedDirectories]; - } - - /** - * Returns the trailing name component of the path. - * - * @param string $path - * - * @return string - */ - private static function basename($path) - { - $separators = DIRECTORY_SEPARATOR === '/' ? '/' : '\/'; - - $path = rtrim($path, $separators); - - $basename = preg_replace('#.*?([^' . preg_quote($separators, '#') . ']+$)#', '$1', $path); - - if (DIRECTORY_SEPARATOR === '/') { - return $basename; - } - // @codeCoverageIgnoreStart - // Extra Windows path munging. This is tested via AppVeyor, but code - // coverage is not reported. - - // Handle relative paths with drive letters. c:file.txt. - while (preg_match('#^[a-zA-Z]{1}:[^\\\/]#', $basename)) { - $basename = substr($basename, 2); - } - - // Remove colon for standalone drive letter names. - if (preg_match('#^[a-zA-Z]{1}:$#', $basename)) { - $basename = rtrim($basename, ':'); - } - - return $basename; - // @codeCoverageIgnoreEnd - } -} diff --git a/vendor/league/flysystem/src/Util/ContentListingFormatter.php b/vendor/league/flysystem/src/Util/ContentListingFormatter.php deleted file mode 100644 index ae0d3b91d..000000000 --- a/vendor/league/flysystem/src/Util/ContentListingFormatter.php +++ /dev/null @@ -1,122 +0,0 @@ -directory = rtrim($directory, '/'); - $this->recursive = $recursive; - $this->caseSensitive = $caseSensitive; - } - - /** - * Format contents listing. - * - * @param array $listing - * - * @return array - */ - public function formatListing(array $listing) - { - $listing = array_filter(array_map([$this, 'addPathInfo'], $listing), [$this, 'isEntryOutOfScope']); - - return $this->sortListing(array_values($listing)); - } - - private function addPathInfo(array $entry) - { - return $entry + Util::pathinfo($entry['path']); - } - - /** - * Determine if the entry is out of scope. - * - * @param array $entry - * - * @return bool - */ - private function isEntryOutOfScope(array $entry) - { - if (empty($entry['path']) && $entry['path'] !== '0') { - return false; - } - - if ($this->recursive) { - return $this->residesInDirectory($entry); - } - - return $this->isDirectChild($entry); - } - - /** - * Check if the entry resides within the parent directory. - * - * @param array $entry - * - * @return bool - */ - private function residesInDirectory(array $entry) - { - if ($this->directory === '') { - return true; - } - - return $this->caseSensitive - ? strpos($entry['path'], $this->directory . '/') === 0 - : stripos($entry['path'], $this->directory . '/') === 0; - } - - /** - * Check if the entry is a direct child of the directory. - * - * @param array $entry - * - * @return bool - */ - private function isDirectChild(array $entry) - { - return $this->caseSensitive - ? $entry['dirname'] === $this->directory - : strcasecmp($this->directory, $entry['dirname']) === 0; - } - - /** - * @param array $listing - * - * @return array - */ - private function sortListing(array $listing) - { - usort($listing, function ($a, $b) { - return strcasecmp($a['path'], $b['path']); - }); - - return $listing; - } -} diff --git a/vendor/league/flysystem/src/Util/MimeType.php b/vendor/league/flysystem/src/Util/MimeType.php deleted file mode 100644 index a4bd5e2e0..000000000 --- a/vendor/league/flysystem/src/Util/MimeType.php +++ /dev/null @@ -1,245 +0,0 @@ - 'application/mac-binhex40', - 'cpt' => 'application/mac-compactpro', - 'csv' => 'text/csv', - 'bin' => 'application/octet-stream', - 'dms' => 'application/octet-stream', - 'lha' => 'application/octet-stream', - 'lzh' => 'application/octet-stream', - 'exe' => 'application/octet-stream', - 'class' => 'application/octet-stream', - 'psd' => 'application/x-photoshop', - 'so' => 'application/octet-stream', - 'sea' => 'application/octet-stream', - 'dll' => 'application/octet-stream', - 'oda' => 'application/oda', - 'pdf' => 'application/pdf', - 'ai' => 'application/pdf', - 'eps' => 'application/postscript', - 'epub' => 'application/epub+zip', - 'ps' => 'application/postscript', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'mif' => 'application/vnd.mif', - 'xls' => 'application/vnd.ms-excel', - 'xlt' => 'application/vnd.ms-excel', - 'xla' => 'application/vnd.ms-excel', - 'ppt' => 'application/powerpoint', - 'pot' => 'application/vnd.ms-powerpoint', - 'pps' => 'application/vnd.ms-powerpoint', - 'ppa' => 'application/vnd.ms-powerpoint', - 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', - 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', - 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12', - 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', - 'potm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', - 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12', - 'wbxml' => 'application/wbxml', - 'wmlc' => 'application/wmlc', - 'dcr' => 'application/x-director', - 'dir' => 'application/x-director', - 'dxr' => 'application/x-director', - 'dvi' => 'application/x-dvi', - 'gtar' => 'application/x-gtar', - 'gz' => 'application/x-gzip', - 'gzip' => 'application/x-gzip', - 'php' => 'application/x-httpd-php', - 'php4' => 'application/x-httpd-php', - 'php3' => 'application/x-httpd-php', - 'phtml' => 'application/x-httpd-php', - 'phps' => 'application/x-httpd-php-source', - 'js' => 'application/javascript', - 'swf' => 'application/x-shockwave-flash', - 'sit' => 'application/x-stuffit', - 'tar' => 'application/x-tar', - 'tgz' => 'application/x-tar', - 'z' => 'application/x-compress', - 'xhtml' => 'application/xhtml+xml', - 'xht' => 'application/xhtml+xml', - 'rdf' => 'application/rdf+xml', - 'zip' => 'application/x-zip', - 'rar' => 'application/x-rar', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mpga' => 'audio/mpeg', - 'mp2' => 'audio/mpeg', - 'mp3' => 'audio/mpeg', - 'aif' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'ram' => 'audio/x-pn-realaudio', - 'rm' => 'audio/x-pn-realaudio', - 'rpm' => 'audio/x-pn-realaudio-plugin', - 'ra' => 'audio/x-realaudio', - 'rv' => 'video/vnd.rn-realvideo', - 'wav' => 'audio/x-wav', - 'jpg' => 'image/jpeg', - 'jpeg' => 'image/jpeg', - 'jpe' => 'image/jpeg', - 'png' => 'image/png', - 'gif' => 'image/gif', - 'bmp' => 'image/bmp', - 'tiff' => 'image/tiff', - 'tif' => 'image/tiff', - 'svg' => 'image/svg+xml', - 'css' => 'text/css', - 'html' => 'text/html', - 'htm' => 'text/html', - 'shtml' => 'text/html', - 'txt' => 'text/plain', - 'text' => 'text/plain', - 'log' => 'text/plain', - 'rtx' => 'text/richtext', - 'rtf' => 'text/rtf', - 'xml' => 'application/xml', - 'xsl' => 'application/xml', - 'dmn' => 'application/octet-stream', - 'bpmn' => 'application/octet-stream', - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mpe' => 'video/mpeg', - 'qt' => 'video/quicktime', - 'mov' => 'video/quicktime', - 'avi' => 'video/x-msvideo', - 'movie' => 'video/x-sgi-movie', - 'doc' => 'application/msword', - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'docm' => 'application/vnd.ms-word.template.macroEnabled.12', - 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12', - 'dot' => 'application/msword', - 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', - 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12', - 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12', - 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', - 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', - 'word' => 'application/msword', - 'xl' => 'application/excel', - 'eml' => 'message/rfc822', - 'json' => 'application/json', - 'pem' => 'application/x-x509-user-cert', - 'p10' => 'application/x-pkcs10', - 'p12' => 'application/x-pkcs12', - 'p7a' => 'application/x-pkcs7-signature', - 'p7c' => 'application/pkcs7-mime', - 'p7m' => 'application/pkcs7-mime', - 'p7r' => 'application/x-pkcs7-certreqresp', - 'p7s' => 'application/pkcs7-signature', - 'crt' => 'application/x-x509-ca-cert', - 'crl' => 'application/pkix-crl', - 'der' => 'application/x-x509-ca-cert', - 'kdb' => 'application/octet-stream', - 'pgp' => 'application/pgp', - 'gpg' => 'application/gpg-keys', - 'sst' => 'application/octet-stream', - 'csr' => 'application/octet-stream', - 'rsa' => 'application/x-pkcs7', - 'cer' => 'application/pkix-cert', - '3g2' => 'video/3gpp2', - '3gp' => 'video/3gp', - 'mp4' => 'video/mp4', - 'm4a' => 'audio/x-m4a', - 'f4v' => 'video/mp4', - 'webm' => 'video/webm', - 'aac' => 'audio/x-acc', - 'm4u' => 'application/vnd.mpegurl', - 'm3u' => 'text/plain', - 'xspf' => 'application/xspf+xml', - 'vlc' => 'application/videolan', - 'wmv' => 'video/x-ms-wmv', - 'au' => 'audio/x-au', - 'ac3' => 'audio/ac3', - 'flac' => 'audio/x-flac', - 'ogg' => 'audio/ogg', - 'kmz' => 'application/vnd.google-earth.kmz', - 'kml' => 'application/vnd.google-earth.kml+xml', - 'ics' => 'text/calendar', - 'zsh' => 'text/x-scriptzsh', - '7zip' => 'application/x-7z-compressed', - 'cdr' => 'application/cdr', - 'wma' => 'audio/x-ms-wma', - 'jar' => 'application/java-archive', - 'tex' => 'application/x-tex', - 'latex' => 'application/x-latex', - 'odt' => 'application/vnd.oasis.opendocument.text', - 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', - 'odp' => 'application/vnd.oasis.opendocument.presentation', - 'odg' => 'application/vnd.oasis.opendocument.graphics', - 'odc' => 'application/vnd.oasis.opendocument.chart', - 'odf' => 'application/vnd.oasis.opendocument.formula', - 'odi' => 'application/vnd.oasis.opendocument.image', - 'odm' => 'application/vnd.oasis.opendocument.text-master', - 'odb' => 'application/vnd.oasis.opendocument.database', - 'ott' => 'application/vnd.oasis.opendocument.text-template', - ]; - - /** - * Detects MIME Type based on given content. - * - * @param mixed $content - * - * @return string|null MIME Type or NULL if no mime type detected - */ - public static function detectByContent($content) - { - if ( ! class_exists('finfo') || ! is_string($content)) { - return null; - } - try { - $finfo = new finfo(FILEINFO_MIME_TYPE); - - return $finfo->buffer($content) ?: null; - // @codeCoverageIgnoreStart - } catch (ErrorException $e) { - // This is caused by an array to string conversion error. - } - } // @codeCoverageIgnoreEnd - - /** - * Detects MIME Type based on file extension. - * - * @param string $extension - * - * @return string|null MIME Type or NULL if no extension detected - */ - public static function detectByFileExtension($extension) - { - return isset(static::$extensionToMimeTypeMap[$extension]) - ? static::$extensionToMimeTypeMap[$extension] - : 'text/plain'; - } - - /** - * @param string $filename - * - * @return string|null MIME Type or NULL if no extension detected - */ - public static function detectByFilename($filename) - { - $extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); - - return empty($extension) ? 'text/plain' : static::detectByFileExtension($extension); - } - - /** - * @return array Map of file extension to MIME Type - */ - public static function getExtensionToMimeTypeMap() - { - return static::$extensionToMimeTypeMap; - } -} diff --git a/vendor/league/flysystem/src/Util/StreamHasher.php b/vendor/league/flysystem/src/Util/StreamHasher.php deleted file mode 100644 index 938ec5db7..000000000 --- a/vendor/league/flysystem/src/Util/StreamHasher.php +++ /dev/null @@ -1,36 +0,0 @@ -algo = $algo; - } - - /** - * @param resource $resource - * - * @return string - */ - public function hash($resource) - { - rewind($resource); - $context = hash_init($this->algo); - hash_update_stream($context, $resource); - fclose($resource); - - return hash_final($context); - } -} diff --git a/vendor/opis/closure/CHANGELOG.md b/vendor/opis/closure/CHANGELOG.md deleted file mode 100644 index f3d663fec..000000000 --- a/vendor/opis/closure/CHANGELOG.md +++ /dev/null @@ -1,207 +0,0 @@ -CHANGELOG ---------- - -### v3.4.1, 2019.10.19 - -- Fixed a [bug](https://github.com/opis/closure/issues/40) that prevented serialization to work correctly. - -### v3.4.0, 2019.09.03 - -- Added `createClosure` static method in `Opis\Closure\SerializableClosure`. -This method creates a new closure from arbitrary code, emulating `create_function`, -but without using eval - -### v3.3.1, 2019.07.10 - -- Use `sha1` instead of `md5` for hashing file names in `Opis\Closure\ReflectionClosure` class - -### v3.3.0, 2019.05.31 - -- Fixed a bug that prevented signed closures to properly work when the serialized string -contains invalid UTF-8 chars. Starting with this version `json_encode` is no longer used -when signing a closure. Backward compatibility is maintained and all closures that were -previously signed using the old method will continue to work. - -### v3.2.0, 2019.05.05 - -- Since an unsigned closure can be unserialized when no security provider is set, -there is no reason to treat differently a signed closure in the same situation. -Therefore, the `Opis\Closure\SecurityException` exception is no longer thrown when -unserializing a signed closure, if no security provider is set. - -### v3.1.6, 2019.02.22 - -- Fixed a bug that occurred when trying to set properties of classes that were not defined in user-land. -Those properties are now ignored. - -### v3.1.5, 2019.01.14 - -- Improved parser - -### v3.1.4, 2019.01.14 - -- Added support for static methods that are named using PHP keywords or magic constants. -Ex: `A::new()`, `A::use()`, `A::if()`, `A::function()`, `A::__DIR__()`, etc. -- Used `@internal` to mark classes & methods that are for internal use only and -backward compatibility is not guaranteed. - -### v3.1.3, 2019.01.07 - -- Fixed a bug that prevented traits to be correctly resolved when used by an -anonymous class -- Fixed a bug that occurred when `$this` keyword was used inside an anonymous class - -### v3.1.2, 2018.12.16 - -* Fixed a bug regarding comma trail in group-use statements. See [issue 23](https://github.com/opis/closure/issues/23) - -### v3.1.1, 2018.10.02 - -* Fixed a bug where `parent` keyword was treated like a class-name and scope was not added to the -serialized closure -* Fixed a bug where return type was not properly handled for nested closures -* Support for anonymous classes was improved - -### v3.1.0, 2018.09.20 - -* Added `transformUseVariables` and `resolveUseVariables` to -`Opis\Closure\SerializableClosure` class. -* Added `removeSecurityProvider` static method to -`Opis\Closure\SerializableClosure` class. -* Fixed some security related issues where a user was able to unserialize an unsigned -closure, even when a security provider was in use. - -### v3.0.12, 2018.02.23 - -* Bugfix. See [issue 20](https://github.com/opis/closure/issues/20) - -### v3.0.11, 2018.01.22 - -* Bugfix. See [issue 18](https://github.com/opis/closure/issues/18) - -### v3.0.10, 2018.01.04 - -* Improved support for PHP 7.1 & 7.2 - -### v3.0.9, 2018.01.04 - -* Fixed a bug where the return type was not properly resolved. -See [issue 17](https://github.com/opis/closure/issues/17) -* Added more tests - -### v3.0.8, 2017.12.18 - -* Fixed a bug. See [issue 16](https://github.com/opis/closure/issues/16) - -### v3.0.7, 2017.10.31 - -* Bugfix: static properties are ignored now, since they are not serializable - -### v3.0.6, 2017.10.06 - -* Fixed a bug introduced by accident in 3.0.5 - -### v3.0.5, 2017.09.18 - -* Fixed a bug related to nested references - -### v3.0.4, 2017.09.18 - -* \[*internal*\] Refactored `SerializableClosure::mapPointers` method -* \[*internal*\] Added a new optional argument to `SerializableClosure::unwrapClosures` -* \[*internal*\] Removed `SerializableClosure::getClosurePointer` method -* Fixed various bugs - -### v3.0.3, 2017.09.06 - -* Fixed a bug related to nested object references -* \[*internal*\] `Opis\Closure\ClosureScope` now extends `SplObjectStorage` -* \[*internal*\] The `storage` property was removed from `Opis\Closure\ClosureScope` -* \[*internal*\] The `instances` and `objects` properties were removed from `Opis\Closure\ClosureContext` - -### v3.0.2, 2017.08.28 - -* Fixed a bug where `$this` object was not handled properly inside the -`SerializableClosre::serialize` method. - -### v3.0.1, 2017.04.13 - -* Fixed a bug in 'ignore_next' state - -### v3.0.0, 2017.04.07 - -* Dropped PHP 5.3 support -* Moved source files from `lib` to `src` folder -* Removed second parameter from `Opis\Closure\SerializableClosure::from` method and from constructor -* Removed `Opis\Closure\{SecurityProviderInterface, DefaultSecurityProvider, SecureClosure}` classes -* Refactored how signed closures were handled -* Added `wrapClosures` and `unwrapClosures` static methods to `Opis\Closure\SerializableClosure` class -* Added `Opis\Colosure\serialize` and `Opis\Closure\unserialize` functions -* Improved serialization. You can now serialize arbitrary objects and the library will automatically wrap all closures - -### v2.4.0, 2016.12.16 - -* The parser was refactored and improved -* Refactored `Opis\Closure\SerializableClosure::__invoke` method -* `Opis\Closure\{ISecurityProvider, SecurityProvider}` were added -* `Opis\Closure\{SecurityProviderInterface, DefaultSecurityProvider, SecureClosure}` were deprecated -and they will be removed in the next major version -* `setSecretKey` and `addSecurityProvider` static methods were added to `Opis\Closure\SerializableClosure` - -### v2.3.2, 2016.12.15 - -* Fixed a bug that prevented namespace resolution to be done properly - -### v2.3.1, 2016.12.13 - -* Hotfix. See [PR](https://github.com/opis/closure/pull/7) - -### v2.3.0, 2016.11.17 - -* Added `isBindingRequired` and `isScopeRequired` to the `Opis\Closure\ReflectionClosure` class -* Automatically detects when the scope and/or the bound object of a closure needs to be serialized. - -### v2.2.1, 2016.08.20 - -* Fixed a bug in `Opis\Closure\ReflectionClosure::fetchItems` - -### v2.2.0, 2016.07.26 - -* Fixed CS -* `Opis\Closure\ClosureContext`, `Opis\Closure\ClosureScope`, `Opis\Closure\SelfReference` - and `Opis\Closure\SecurityException` classes were moved into separate files -* Added support for PHP7 syntax -* Fixed some bugs in `Opis\Closure\ReflectionClosure` class -* Improved closure parser -* Added an analyzer for SuperClosure library - -### v2.1.0, 2015.09.30 - -* Added support for the missing `__METHOD__`, `__FUNCTION__` and `__TRAIT__` magic constants -* Added some security related classes and interfaces: `Opis\Closure\SecurityProviderInterface`, -`Opis\Closure\DefaultSecurityProvider`, `Opis\Closure\SecureClosure`, `Opis\Closure\SecurityException`. -* Fiexed a bug in `Opis\Closure\ReflectionClosure::getClasses` method -* Other minor bugfixes -* Added support for static closures -* Added public `isStatic` method to `Opis\Closure\ReflectionClosure` class - - -### v2.0.1, 2015.09.23 - -* Removed `branch-alias` property from `composer.json` -* Bugfix. See [issue #6](https://github.com/opis/closure/issues/6) - -### v2.0.0, 2015.07.31 - -* The closure parser was improved -* Class names are now automatically resolved -* Added support for the `#trackme` directive which allows tracking closure's residing source - -### v1.3.0, 2014.10.18 - -* Added autoload file -* Changed README file - -### Opis Closure 1.2.2 - -* Started changelog diff --git a/vendor/opis/closure/LICENSE b/vendor/opis/closure/LICENSE deleted file mode 100644 index 9c0a19ba2..000000000 --- a/vendor/opis/closure/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2018-2019 Zindex Software - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/opis/closure/NOTICE b/vendor/opis/closure/NOTICE deleted file mode 100644 index ae5caa628..000000000 --- a/vendor/opis/closure/NOTICE +++ /dev/null @@ -1,9 +0,0 @@ -Opis Closure -Copyright 2018-2019 Zindex Software - -This product includes software developed at -Zindex Software (http://zindex.software). - -This software was originally developed by Marius Sarca and Sorin Sarca -(Copyright 2014-2018). The copyright info was changed with the permission -of the original authors. \ No newline at end of file diff --git a/vendor/opis/closure/README.md b/vendor/opis/closure/README.md deleted file mode 100644 index 75b319a42..000000000 --- a/vendor/opis/closure/README.md +++ /dev/null @@ -1,98 +0,0 @@ -Opis Closure -==================== -[![Build Status](https://travis-ci.org/opis/closure.png)](https://travis-ci.org/opis/closure) -[![Latest Stable Version](https://poser.pugx.org/opis/closure/v/stable.png)](https://packagist.org/packages/opis/closure) -[![Latest Unstable Version](https://poser.pugx.org/opis/closure/v/unstable.png)](https://packagist.org/packages/opis/closure) -[![License](https://poser.pugx.org/opis/closure/license.png)](https://packagist.org/packages/opis/closure) - -Serializable closures ---------------------- -**Opis Closure** is a library that aims to overcome PHP's limitations regarding closure -serialization by providing a wrapper that will make all closures serializable. - -**The library's key features:** - -- Serialize any closure -- Serialize arbitrary objects -- Doesn't use `eval` for closure serialization or unserialization -- Works with any PHP version that has support for closures -- Supports PHP 7 syntax -- Handles all variables referenced/imported in `use()` and automatically wraps all referenced/imported closures for -proper serialization -- Handles recursive closures -- Handles magic constants like `__FILE__`, `__DIR__`, `__LINE__`, `__NAMESPACE__`, `__CLASS__`, -`__TRAIT__`, `__METHOD__` and `__FUNCTION__`. -- Automatically resolves all class names, function names and constant names used inside the closure -- Track closure's residing source by using the `#trackme` directive -- Simple and very fast parser -- Any error or exception, that might occur when executing an unserialized closure, can be caught and treated properly -- You can serialize/unserialize any closure unlimited times, even those previously unserialized -(this is possible because `eval()` is not used for unserialization) -- Handles static closures -- Supports cryptographically signed closures -- Provides a reflector that can give you information about the serialized closure -- Provides an analyzer for *SuperClosure* library -- Automatically detects when the scope and/or the bound object of a closure needs to be serialized -in order for the closure to work after deserialization - -### Documentation - -The full documentation for this library can be found [here][documentation]. - -### License - -**Opis Closure** is licensed under the [MIT License (MIT)][license]. - -### Requirements - -* PHP ^5.4 || ^7.0 - -## Installation - -**Opis Closure** is available on [Packagist] and it can be installed from a -command line interface by using [Composer]. - -```bash -composer require opis/closure -``` - -Or you could directly reference it into your `composer.json` file as a dependency - -```json -{ - "require": { - "opis/closure": "^3.4" - } -} -``` - -### Migrating from 2.x - -If your project needs to support PHP 5.3 you can continue using the `2.x` version -of **Opis Closure**. Otherwise, assuming you are not using one of the removed/refactored classes or features(see -[CHANGELOG]), migrating to version `3.x` is simply a matter of updating your `composer.json` file. - -### Semantic versioning - -**Opis Closure** follows [semantic versioning][SemVer] specifications. - -### Arbitrary object serialization - -This feature was primarily introduced in order to support serializing an object bound -to a closure and available via `$this`. The implementation is far from being perfect -and it's really hard to make it work flawless. I will try to improve this, but I can -not guarantee anything. So my advice regarding the `Opis\Closure\serialize|unserialize` -functions is to use them with caution. - -### SuperClosure support - -**Opis Closure** is shipped with an analyzer(`Opis\Closure\Analyzer`) which -aims to provide *Opis Closure*'s parsing precision and speed to [SuperClosure]. - -[documentation]: https://www.opis.io/closure "Opis Closure" -[license]: http://opensource.org/licenses/MIT "MIT License" -[Packagist]: https://packagist.org/packages/opis/closure "Packagist" -[Composer]: https://getcomposer.org "Composer" -[SuperClosure]: https://github.com/jeremeamia/super_closure "SuperClosure" -[SemVer]: http://semver.org/ "Semantic versioning" -[CHANGELOG]: https://github.com/opis/closure/blob/master/CHANGELOG.md "Changelog" \ No newline at end of file diff --git a/vendor/opis/closure/autoload.php b/vendor/opis/closure/autoload.php deleted file mode 100644 index a928014fd..000000000 --- a/vendor/opis/closure/autoload.php +++ /dev/null @@ -1,39 +0,0 @@ -getClosureScopeClass(); - - $data = [ - 'reflection' => $reflection, - 'code' => $reflection->getCode(), - 'hasThis' => $reflection->isBindingRequired(), - 'context' => $reflection->getUseVariables(), - 'hasRefs' => false, - 'binding' => $reflection->getClosureThis(), - 'scope' => $scope ? $scope->getName() : null, - 'isStatic' => $reflection->isStatic(), - ]; - - return $data; - } - - /** - * @param array $data - * @return mixed - */ - protected function determineCode(array &$data) - { - return null; - } - - /** - * @param array $data - * @return mixed - */ - protected function determineContext(array &$data) - { - return null; - } - -} diff --git a/vendor/opis/closure/src/ClosureContext.php b/vendor/opis/closure/src/ClosureContext.php deleted file mode 100644 index d68cf9887..000000000 --- a/vendor/opis/closure/src/ClosureContext.php +++ /dev/null @@ -1,34 +0,0 @@ -scope = new ClosureScope(); - $this->locks = 0; - } -} \ No newline at end of file diff --git a/vendor/opis/closure/src/ClosureScope.php b/vendor/opis/closure/src/ClosureScope.php deleted file mode 100644 index 71ad4148f..000000000 --- a/vendor/opis/closure/src/ClosureScope.php +++ /dev/null @@ -1,25 +0,0 @@ -content = "length = strlen($this->content); - return true; - } - - public function stream_read($count) - { - $value = substr($this->content, $this->pointer, $count); - $this->pointer += $count; - return $value; - } - - public function stream_eof() - { - return $this->pointer >= $this->length; - } - - public function stream_stat() - { - $stat = stat(__FILE__); - $stat[7] = $stat['size'] = $this->length; - return $stat; - } - - public function url_stat($path, $flags) - { - $stat = stat(__FILE__); - $stat[7] = $stat['size'] = $this->length; - return $stat; - } - - public function stream_seek($offset, $whence = SEEK_SET) - { - $crt = $this->pointer; - - switch ($whence) { - case SEEK_SET: - $this->pointer = $offset; - break; - case SEEK_CUR: - $this->pointer += $offset; - break; - case SEEK_END: - $this->pointer = $this->length + $offset; - break; - } - - if ($this->pointer < 0 || $this->pointer >= $this->length) { - $this->pointer = $crt; - return false; - } - - return true; - } - - public function stream_tell() - { - return $this->pointer; - } - - public static function register() - { - if (!static::$isRegistered) { - static::$isRegistered = stream_wrapper_register(static::STREAM_PROTO, __CLASS__); - } - } - -} diff --git a/vendor/opis/closure/src/ISecurityProvider.php b/vendor/opis/closure/src/ISecurityProvider.php deleted file mode 100644 index d3b0a2931..000000000 --- a/vendor/opis/closure/src/ISecurityProvider.php +++ /dev/null @@ -1,25 +0,0 @@ -code = $code; - parent::__construct($closure); - } - - /** - * @return bool - */ - public function isStatic() - { - if ($this->isStaticClosure === null) { - $this->isStaticClosure = strtolower(substr($this->getCode(), 0, 6)) === 'static'; - } - - return $this->isStaticClosure; - } - - /** - * @return string - */ - public function getCode() - { - if($this->code !== null){ - return $this->code; - } - - $fileName = $this->getFileName(); - $line = $this->getStartLine() - 1; - - $match = ClosureStream::STREAM_PROTO . '://'; - - if ($line === 1 && substr($fileName, 0, strlen($match)) === $match) { - return $this->code = substr($fileName, strlen($match)); - } - - $className = null; - - - if (null !== $className = $this->getClosureScopeClass()) { - $className = '\\' . trim($className->getName(), '\\'); - } - - - if($php7 = PHP_MAJOR_VERSION === 7){ - switch (PHP_MINOR_VERSION){ - case 0: - $php7_types = array('string', 'int', 'bool', 'float'); - break; - case 1: - $php7_types = array('string', 'int', 'bool', 'float', 'void'); - break; - case 2: - default: - $php7_types = array('string', 'int', 'bool', 'float', 'void', 'object'); - } - } - - $ns = $this->getNamespaceName(); - $nsf = $ns == '' ? '' : ($ns[0] == '\\' ? $ns : '\\' . $ns); - - $_file = var_export($fileName, true); - $_dir = var_export(dirname($fileName), true); - $_namespace = var_export($ns, true); - $_class = var_export(trim($className, '\\'), true); - $_function = $ns . ($ns == '' ? '' : '\\') . '{closure}'; - $_method = ($className == '' ? '' : trim($className, '\\') . '::') . $_function; - $_function = var_export($_function, true); - $_method = var_export($_method, true); - $_trait = null; - - $tokens = $this->getTokens(); - $state = $lastState = 'start'; - $inside_anonymous = false; - $anonymous_mark = 0; - $open = 0; - $code = ''; - $id_start = $id_start_ci = $id_name = $context = ''; - $classes = $functions = $constants = null; - $use = array(); - $lineAdd = 0; - $isUsingScope = false; - $isUsingThisObject = false; - - for($i = 0, $l = count($tokens); $i < $l; $i++) { - $token = $tokens[$i]; - switch ($state) { - case 'start': - if ($token[0] === T_FUNCTION || $token[0] === T_STATIC) { - $code .= $token[1]; - $state = $token[0] === T_FUNCTION ? 'function' : 'static'; - } - break; - case 'static': - if ($token[0] === T_WHITESPACE || $token[0] === T_COMMENT || $token[0] === T_FUNCTION) { - $code .= $token[1]; - if ($token[0] === T_FUNCTION) { - $state = 'function'; - } - } else { - $code = ''; - $state = 'start'; - } - break; - case 'function': - switch ($token[0]){ - case T_STRING: - $code = ''; - $state = 'named_function'; - break; - case '(': - $code .= '('; - $state = 'closure_args'; - break; - default: - $code .= is_array($token) ? $token[1] : $token; - } - break; - case 'named_function': - if($token[0] === T_FUNCTION || $token[0] === T_STATIC){ - $code = $token[1]; - $state = $token[0] === T_FUNCTION ? 'function' : 'static'; - } - break; - case 'closure_args': - switch ($token[0]){ - case T_NS_SEPARATOR: - case T_STRING: - $id_start = $token[1]; - $id_start_ci = strtolower($id_start); - $id_name = ''; - $context = 'args'; - $state = 'id_name'; - $lastState = 'closure_args'; - break; - case T_USE: - $code .= $token[1]; - $state = 'use'; - break; - case '=': - $code .= $token; - $lastState = 'closure_args'; - $state = 'ignore_next'; - break; - case ':': - $code .= ':'; - $state = 'return'; - break; - case '{': - $code .= '{'; - $state = 'closure'; - $open++; - break; - default: - $code .= is_array($token) ? $token[1] : $token; - } - break; - case 'use': - switch ($token[0]){ - case T_VARIABLE: - $use[] = substr($token[1], 1); - $code .= $token[1]; - break; - case '{': - $code .= '{'; - $state = 'closure'; - $open++; - break; - case ':': - $code .= ':'; - $state = 'return'; - break; - default: - $code .= is_array($token) ? $token[1] : $token; - break; - } - break; - case 'return': - switch ($token[0]){ - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - $code .= $token[1]; - break; - case T_NS_SEPARATOR: - case T_STRING: - $id_start = $token[1]; - $id_start_ci = strtolower($id_start); - $id_name = ''; - $context = 'return_type'; - $state = 'id_name'; - $lastState = 'return'; - break 2; - case '{': - $code .= '{'; - $state = 'closure'; - $open++; - break; - default: - $code .= is_array($token) ? $token[1] : $token; - break; - } - break; - case 'closure': - switch ($token[0]){ - case T_CURLY_OPEN: - case T_DOLLAR_OPEN_CURLY_BRACES: - case T_STRING_VARNAME: - case '{': - $code .= '{'; - $open++; - break; - case '}': - $code .= '}'; - if(--$open === 0){ - break 3; - } elseif ($inside_anonymous) { - $inside_anonymous = !($open === $anonymous_mark); - } - break; - case T_LINE: - $code .= $token[2] - $line + $lineAdd; - break; - case T_FILE: - $code .= $_file; - break; - case T_DIR: - $code .= $_dir; - break; - case T_NS_C: - $code .= $_namespace; - break; - case T_CLASS_C: - $code .= $_class; - break; - case T_FUNC_C: - $code .= $_function; - break; - case T_METHOD_C: - $code .= $_method; - break; - case T_COMMENT: - if (substr($token[1], 0, 8) === '#trackme') { - $timestamp = time(); - $code .= '/**' . PHP_EOL; - $code .= '* Date : ' . date(DATE_W3C, $timestamp) . PHP_EOL; - $code .= '* Timestamp : ' . $timestamp . PHP_EOL; - $code .= '* Line : ' . ($line + 1) . PHP_EOL; - $code .= '* File : ' . $_file . PHP_EOL . '*/' . PHP_EOL; - $lineAdd += 5; - } else { - $code .= $token[1]; - } - break; - case T_VARIABLE: - if($token[1] == '$this' && !$inside_anonymous){ - $isUsingThisObject = true; - } - $code .= $token[1]; - break; - case T_STATIC: - $isUsingScope = true; - $code .= $token[1]; - break; - case T_NS_SEPARATOR: - case T_STRING: - $id_start = $token[1]; - $id_start_ci = strtolower($id_start); - $id_name = ''; - $context = 'root'; - $state = 'id_name'; - $lastState = 'closure'; - break 2; - case T_NEW: - $code .= $token[1]; - $context = 'new'; - $state = 'id_start'; - $lastState = 'closure'; - break 2; - case T_USE: - $code .= $token[1]; - $context = 'use'; - $state = 'id_start'; - $lastState = 'closure'; - break; - case T_INSTANCEOF: - $code .= $token[1]; - $context = 'instanceof'; - $state = 'id_start'; - $lastState = 'closure'; - break; - case T_OBJECT_OPERATOR: - case T_DOUBLE_COLON: - $code .= $token[1]; - $lastState = 'closure'; - $state = 'ignore_next'; - break; - case T_FUNCTION: - $code .= $token[1]; - $state = 'closure_args'; - break; - case T_TRAIT_C: - if ($_trait === null) { - $startLine = $this->getStartLine(); - $endLine = $this->getEndLine(); - $structures = $this->getStructures(); - - $_trait = ''; - - foreach ($structures as &$struct) { - if ($struct['type'] === 'trait' && - $struct['start'] <= $startLine && - $struct['end'] >= $endLine - ) { - $_trait = ($ns == '' ? '' : $ns . '\\') . $struct['name']; - break; - } - } - - $_trait = var_export($_trait, true); - } - - $code .= $_trait; - break; - default: - $code .= is_array($token) ? $token[1] : $token; - } - break; - case 'ignore_next': - switch ($token[0]){ - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - $code .= $token[1]; - break; - case T_CLASS: - case T_NEW: - case T_STATIC: - case T_VARIABLE: - case T_STRING: - case T_CLASS_C: - case T_FILE: - case T_DIR: - case T_METHOD_C: - case T_FUNC_C: - case T_FUNCTION: - case T_INSTANCEOF: - case T_LINE: - case T_NS_C: - case T_TRAIT_C: - case T_USE: - $code .= $token[1]; - $state = $lastState; - break; - default: - $state = $lastState; - $i--; - } - break; - case 'id_start': - switch ($token[0]){ - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - $code .= $token[1]; - break; - case T_NS_SEPARATOR: - case T_STRING: - case T_STATIC: - $id_start = $token[1]; - $id_start_ci = strtolower($id_start); - $id_name = ''; - $state = 'id_name'; - break 2; - case T_VARIABLE: - $code .= $token[1]; - $state = $lastState; - break; - case T_CLASS: - $code .= $token[1]; - $state = 'anonymous'; - break; - default: - $i--;//reprocess last - $state = 'id_name'; - } - break; - case 'id_name': - switch ($token[0]){ - case T_NS_SEPARATOR: - case T_STRING: - $id_name .= $token[1]; - break; - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - $id_name .= $token[1]; - break; - case '(': - if($context === 'new' || false !== strpos($id_name, '\\')){ - if($id_start !== '\\'){ - if ($classes === null) { - $classes = $this->getClasses(); - } - if (isset($classes[$id_start_ci])) { - $id_start = $classes[$id_start_ci]; - } - if($id_start[0] !== '\\'){ - $id_start = $nsf . '\\' . $id_start; - } - } - } else { - if($id_start !== '\\'){ - if($functions === null){ - $functions = $this->getFunctions(); - } - if(isset($functions[$id_start_ci])){ - $id_start = $functions[$id_start_ci]; - } - } - } - $code .= $id_start . $id_name . '('; - $state = $lastState; - break; - case T_VARIABLE: - case T_DOUBLE_COLON: - if($id_start !== '\\') { - if($id_start_ci === 'self' || $id_start_ci === 'static' || $id_start_ci === 'parent'){ - $isUsingScope = true; - } elseif (!($php7 && in_array($id_start_ci, $php7_types))){ - if ($classes === null) { - $classes = $this->getClasses(); - } - if (isset($classes[$id_start_ci])) { - $id_start = $classes[$id_start_ci]; - } - if($id_start[0] !== '\\'){ - $id_start = $nsf . '\\' . $id_start; - } - } - } - $code .= $id_start . $id_name . $token[1]; - $state = $token[0] === T_DOUBLE_COLON ? 'ignore_next' : $lastState; - break; - default: - if($id_start !== '\\'){ - if($context === 'use' || - $context === 'instanceof' || - $context === 'args' || - $context === 'return_type' || - $context === 'extends' - ){ - if($id_start_ci === 'self' || $id_start_ci === 'static' || $id_start_ci === 'parent'){ - $isUsingScope = true; - } elseif (!($php7 && in_array($id_start_ci, $php7_types))){ - if($classes === null){ - $classes = $this->getClasses(); - } - if(isset($classes[$id_start_ci])){ - $id_start = $classes[$id_start_ci]; - } - if($id_start[0] !== '\\'){ - $id_start = $nsf . '\\' . $id_start; - } - } - } else { - if($constants === null){ - $constants = $this->getConstants(); - } - if(isset($constants[$id_start])){ - $id_start = $constants[$id_start]; - } - } - } - $code .= $id_start . $id_name; - $state = $lastState; - $i--;//reprocess last token - } - break; - case 'anonymous': - switch ($token[0]) { - case T_NS_SEPARATOR: - case T_STRING: - $id_start = $token[1]; - $id_start_ci = strtolower($id_start); - $id_name = ''; - $state = 'id_name'; - $context = 'extends'; - $lastState = 'anonymous'; - break; - case '{': - $state = 'closure'; - if (!$inside_anonymous) { - $inside_anonymous = true; - $anonymous_mark = $open; - } - $i--; - break; - default: - $code .= is_array($token) ? $token[1] : $token; - } - break; - } - } - - $this->isBindingRequired = $isUsingThisObject; - $this->isScopeRequired = $isUsingScope; - $this->code = $code; - $this->useVariables = empty($use) ? $use : array_intersect_key($this->getStaticVariables(), array_flip($use)); - - return $this->code; - } - - /** - * @return array - */ - public function getUseVariables() - { - if($this->useVariables !== null){ - return $this->useVariables; - } - - $tokens = $this->getTokens(); - $use = array(); - $state = 'start'; - - foreach ($tokens as &$token) { - $is_array = is_array($token); - - switch ($state) { - case 'start': - if ($is_array && $token[0] === T_USE) { - $state = 'use'; - } - break; - case 'use': - if ($is_array) { - if ($token[0] === T_VARIABLE) { - $use[] = substr($token[1], 1); - } - } elseif ($token == ')') { - break 2; - } - break; - } - } - - $this->useVariables = empty($use) ? $use : array_intersect_key($this->getStaticVariables(), array_flip($use)); - - return $this->useVariables; - } - - /** - * return bool - */ - public function isBindingRequired() - { - if($this->isBindingRequired === null){ - $this->getCode(); - } - - return $this->isBindingRequired; - } - - /** - * return bool - */ - public function isScopeRequired() - { - if($this->isScopeRequired === null){ - $this->getCode(); - } - - return $this->isScopeRequired; - } - - /** - * @return string - */ - protected function getHashedFileName() - { - if ($this->hashedName === null) { - $this->hashedName = sha1($this->getFileName()); - } - - return $this->hashedName; - } - - /** - * @return array - */ - protected function getFileTokens() - { - $key = $this->getHashedFileName(); - - if (!isset(static::$files[$key])) { - static::$files[$key] = token_get_all(file_get_contents($this->getFileName())); - } - - return static::$files[$key]; - } - - /** - * @return array - */ - protected function getTokens() - { - if ($this->tokens === null) { - $tokens = $this->getFileTokens(); - $startLine = $this->getStartLine(); - $endLine = $this->getEndLine(); - $results = array(); - $start = false; - - foreach ($tokens as &$token) { - if (!is_array($token)) { - if ($start) { - $results[] = $token; - } - - continue; - } - - $line = $token[2]; - - if ($line <= $endLine) { - if ($line >= $startLine) { - $start = true; - $results[] = $token; - } - - continue; - } - - break; - } - - $this->tokens = $results; - } - - return $this->tokens; - } - - /** - * @return array - */ - protected function getClasses() - { - $key = $this->getHashedFileName(); - - if (!isset(static::$classes[$key])) { - $this->fetchItems(); - } - - return static::$classes[$key]; - } - - /** - * @return array - */ - protected function getFunctions() - { - $key = $this->getHashedFileName(); - - if (!isset(static::$functions[$key])) { - $this->fetchItems(); - } - - return static::$functions[$key]; - } - - /** - * @return array - */ - protected function getConstants() - { - $key = $this->getHashedFileName(); - - if (!isset(static::$constants[$key])) { - $this->fetchItems(); - } - - return static::$constants[$key]; - } - - /** - * @return array - */ - protected function getStructures() - { - $key = $this->getHashedFileName(); - - if (!isset(static::$structures[$key])) { - $this->fetchItems(); - } - - return static::$structures[$key]; - } - - protected function fetchItems() - { - $key = $this->getHashedFileName(); - - $classes = array(); - $functions = array(); - $constants = array(); - $structures = array(); - $tokens = $this->getFileTokens(); - - $open = 0; - $state = 'start'; - $lastState = ''; - $prefix = ''; - $name = ''; - $alias = ''; - $isFunc = $isConst = false; - - $startLine = $endLine = 0; - $structType = $structName = ''; - $structIgnore = false; - - foreach ($tokens as $token) { - - switch ($state) { - case 'start': - switch ($token[0]) { - case T_CLASS: - case T_INTERFACE: - case T_TRAIT: - $state = 'before_structure'; - $startLine = $token[2]; - $structType = $token[0] == T_CLASS - ? 'class' - : ($token[0] == T_INTERFACE ? 'interface' : 'trait'); - break; - case T_USE: - $state = 'use'; - $prefix = $name = $alias = ''; - $isFunc = $isConst = false; - break; - case T_FUNCTION: - $state = 'structure'; - $structIgnore = true; - break; - case T_NEW: - $state = 'new'; - break; - case T_OBJECT_OPERATOR: - case T_DOUBLE_COLON: - $state = 'invoke'; - break; - } - break; - case 'use': - switch ($token[0]) { - case T_FUNCTION: - $isFunc = true; - break; - case T_CONST: - $isConst = true; - break; - case T_NS_SEPARATOR: - $name .= $token[1]; - break; - case T_STRING: - $name .= $token[1]; - $alias = $token[1]; - break; - case T_AS: - $lastState = 'use'; - $state = 'alias'; - break; - case '{': - $prefix = $name; - $name = $alias = ''; - $state = 'use-group'; - break; - case ',': - case ';': - if ($name === '' || $name[0] !== '\\') { - $name = '\\' . $name; - } - - if ($alias !== '') { - if ($isFunc) { - $functions[strtolower($alias)] = $name; - } elseif ($isConst) { - $constants[$alias] = $name; - } else { - $classes[strtolower($alias)] = $name; - } - } - $name = $alias = ''; - $state = $token === ';' ? 'start' : 'use'; - break; - } - break; - case 'use-group': - switch ($token[0]) { - case T_NS_SEPARATOR: - $name .= $token[1]; - break; - case T_STRING: - $name .= $token[1]; - $alias = $token[1]; - break; - case T_AS: - $lastState = 'use-group'; - $state = 'alias'; - break; - case ',': - case '}': - - if ($prefix === '' || $prefix[0] !== '\\') { - $prefix = '\\' . $prefix; - } - - if ($alias !== '') { - if ($isFunc) { - $functions[strtolower($alias)] = $prefix . $name; - } elseif ($isConst) { - $constants[$alias] = $prefix . $name; - } else { - $classes[strtolower($alias)] = $prefix . $name; - } - } - $name = $alias = ''; - $state = $token === '}' ? 'use' : 'use-group'; - break; - } - break; - case 'alias': - if ($token[0] === T_STRING) { - $alias = $token[1]; - $state = $lastState; - } - break; - case 'new': - switch ($token[0]) { - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - break 2; - case T_CLASS: - $state = 'structure'; - $structIgnore = true; - break; - default: - $state = 'start'; - } - break; - case 'invoke': - switch ($token[0]) { - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - break 2; - default: - $state = 'start'; - } - break; - case 'before_structure': - if ($token[0] == T_STRING) { - $structName = $token[1]; - $state = 'structure'; - } - break; - case 'structure': - switch ($token[0]) { - case '{': - case T_CURLY_OPEN: - case T_DOLLAR_OPEN_CURLY_BRACES: - case T_STRING_VARNAME: - $open++; - break; - case '}': - if (--$open == 0) { - if(!$structIgnore){ - $structures[] = array( - 'type' => $structType, - 'name' => $structName, - 'start' => $startLine, - 'end' => $endLine, - ); - } - $structIgnore = false; - $state = 'start'; - } - break; - default: - if (is_array($token)) { - $endLine = $token[2]; - } - } - break; - } - } - - static::$classes[$key] = $classes; - static::$functions[$key] = $functions; - static::$constants[$key] = $constants; - static::$structures[$key] = $structures; - } -} diff --git a/vendor/opis/closure/src/SecurityException.php b/vendor/opis/closure/src/SecurityException.php deleted file mode 100644 index 6a107eec8..000000000 --- a/vendor/opis/closure/src/SecurityException.php +++ /dev/null @@ -1,18 +0,0 @@ -secret = $secret; - } - - /** - * @inheritdoc - */ - public function sign($closure) - { - return array( - 'closure' => $closure, - 'hash' => base64_encode(hash_hmac('sha256', $closure, $this->secret, true)), - ); - } - - /** - * @inheritdoc - */ - public function verify(array $data) - { - return base64_encode(hash_hmac('sha256', $data['closure'], $this->secret, true)) === $data['hash']; - } -} \ No newline at end of file diff --git a/vendor/opis/closure/src/SelfReference.php b/vendor/opis/closure/src/SelfReference.php deleted file mode 100644 index 3c6ec80dd..000000000 --- a/vendor/opis/closure/src/SelfReference.php +++ /dev/null @@ -1,31 +0,0 @@ -hash = $hash; - } -} \ No newline at end of file diff --git a/vendor/opis/closure/src/SerializableClosure.php b/vendor/opis/closure/src/SerializableClosure.php deleted file mode 100644 index c4991cf8e..000000000 --- a/vendor/opis/closure/src/SerializableClosure.php +++ /dev/null @@ -1,668 +0,0 @@ -closure = $closure; - if (static::$context !== null) { - $this->scope = static::$context->scope; - $this->scope->toserialize++; - } - } - - /** - * Get the Closure object - * - * @return Closure The wrapped closure - */ - public function getClosure() - { - return $this->closure; - } - - /** - * Get the reflector for closure - * - * @return ReflectionClosure - */ - public function getReflector() - { - if ($this->reflector === null) { - $this->reflector = new ReflectionClosure($this->closure, $this->code); - $this->code = null; - } - - return $this->reflector; - } - - /** - * Implementation of magic method __invoke() - */ - public function __invoke() - { - return call_user_func_array($this->closure, func_get_args()); - } - - /** - * Implementation of Serializable::serialize() - * - * @return string The serialized closure - */ - public function serialize() - { - if ($this->scope === null) { - $this->scope = new ClosureScope(); - $this->scope->toserialize++; - } - - $this->scope->serializations++; - - $scope = $object = null; - $reflector = $this->getReflector(); - - if($reflector->isBindingRequired()){ - $object = $reflector->getClosureThis(); - static::wrapClosures($object, $this->scope); - if($scope = $reflector->getClosureScopeClass()){ - $scope = $scope->name; - } - } elseif($reflector->isScopeRequired()) { - if($scope = $reflector->getClosureScopeClass()){ - $scope = $scope->name; - } - } - - $this->reference = spl_object_hash($this->closure); - - $this->scope[$this->closure] = $this; - - $use = $this->transformUseVariables($reflector->getUseVariables()); - $code = $reflector->getCode(); - - $this->mapByReference($use); - - $ret = \serialize(array( - 'use' => $use, - 'function' => $code, - 'scope' => $scope, - 'this' => $object, - 'self' => $this->reference, - )); - - if (static::$securityProvider !== null) { - $data = static::$securityProvider->sign($ret); - $ret = '@' . $data['hash'] . '.' . $data['closure']; - } - - if (!--$this->scope->serializations && !--$this->scope->toserialize) { - $this->scope = null; - } - - return $ret; - } - - /** - * Transform the use variables before serialization. - * - * @param array $data The Closure's use variables - * @return array - */ - protected function transformUseVariables($data) - { - return $data; - } - - /** - * Implementation of Serializable::unserialize() - * - * @param string $data Serialized data - * @throws SecurityException - */ - public function unserialize($data) - { - ClosureStream::register(); - - if (static::$securityProvider !== null) { - if ($data[0] !== '@') { - throw new SecurityException("The serialized closure is not signed. ". - "Make sure you use a security provider for both serialization and unserialization."); - } - - if ($data[1] !== '{') { - $separator = strpos($data, '.'); - if ($separator === false) { - throw new SecurityException('Invalid signed closure'); - } - $hash = substr($data, 1, $separator - 1); - $closure = substr($data, $separator + 1); - - $data = ['hash' => $hash, 'closure' => $closure]; - - unset($hash, $closure); - } else { - $data = json_decode(substr($data, 1), true); - } - - if (!is_array($data) || !static::$securityProvider->verify($data)) { - throw new SecurityException("Your serialized closure might have been modified and it's unsafe to be unserialized. " . - "Make sure you use the same security provider, with the same settings, " . - "both for serialization and unserialization."); - } - - $data = $data['closure']; - } elseif ($data[0] === '@') { - if ($data[1] !== '{') { - $separator = strpos($data, '.'); - if ($separator === false) { - throw new SecurityException('Invalid signed closure'); - } - $hash = substr($data, 1, $separator - 1); - $closure = substr($data, $separator + 1); - - $data = ['hash' => $hash, 'closure' => $closure]; - - unset($hash, $closure); - } else { - $data = json_decode(substr($data, 1), true); - } - - if (!is_array($data) || !isset($data['closure']) || !isset($data['hash'])) { - throw new SecurityException('Invalid signed closure'); - } - - $data = $data['closure']; - } - - $this->code = \unserialize($data); - - // unset data - unset($data); - - $this->code['objects'] = array(); - - if ($this->code['use']) { - $this->scope = new ClosureScope(); - $this->code['use'] = $this->resolveUseVariables($this->code['use']); - $this->mapPointers($this->code['use']); - extract($this->code['use'], EXTR_OVERWRITE | EXTR_REFS); - $this->scope = null; - } - - $this->closure = include(ClosureStream::STREAM_PROTO . '://' . $this->code['function']); - - if($this->code['this'] === $this){ - $this->code['this'] = null; - } - - if ($this->code['scope'] !== null || $this->code['this'] !== null) { - $this->closure = $this->closure->bindTo($this->code['this'], $this->code['scope']); - } - - if(!empty($this->code['objects'])){ - foreach ($this->code['objects'] as $item){ - $item['property']->setValue($item['instance'], $item['object']->getClosure()); - } - } - - $this->code = $this->code['function']; - } - - /** - * Resolve the use variables after unserialization. - * - * @param array $data The Closure's transformed use variables - * @return array - */ - protected function resolveUseVariables($data) - { - return $data; - } - - /** - * Wraps a closure and sets the serialization context (if any) - * - * @param Closure $closure Closure to be wrapped - * - * @return self The wrapped closure - */ - public static function from(Closure $closure) - { - if (static::$context === null) { - $instance = new static($closure); - } elseif (isset(static::$context->scope[$closure])) { - $instance = static::$context->scope[$closure]; - } else { - $instance = new static($closure); - static::$context->scope[$closure] = $instance; - } - - return $instance; - } - - /** - * Increments the context lock counter or creates a new context if none exist - */ - public static function enterContext() - { - if (static::$context === null) { - static::$context = new ClosureContext(); - } - - static::$context->locks++; - } - - /** - * Decrements the context lock counter and destroy the context when it reaches to 0 - */ - public static function exitContext() - { - if (static::$context !== null && !--static::$context->locks) { - static::$context = null; - } - } - - /** - * @param string $secret - */ - public static function setSecretKey($secret) - { - if(static::$securityProvider === null){ - static::$securityProvider = new SecurityProvider($secret); - } - } - - /** - * @param ISecurityProvider $securityProvider - */ - public static function addSecurityProvider(ISecurityProvider $securityProvider) - { - static::$securityProvider = $securityProvider; - } - - /** - * Remove security provider - */ - public static function removeSecurityProvider() - { - static::$securityProvider = null; - } - - /** - * @return null|ISecurityProvider - */ - public static function getSecurityProvider() - { - return static::$securityProvider; - } - - /** - * Wrap closures - * - * @internal - * @param $data - * @param ClosureScope|SplObjectStorage|null $storage - */ - public static function wrapClosures(&$data, SplObjectStorage $storage = null) - { - if($storage === null){ - $storage = static::$context->scope; - } - - if($data instanceof Closure){ - $data = static::from($data); - } elseif (is_array($data)){ - if(isset($data[self::ARRAY_RECURSIVE_KEY])){ - return; - } - $data[self::ARRAY_RECURSIVE_KEY] = true; - foreach ($data as $key => &$value){ - if($key === self::ARRAY_RECURSIVE_KEY){ - continue; - } - static::wrapClosures($value, $storage); - } - unset($value); - unset($data[self::ARRAY_RECURSIVE_KEY]); - } elseif($data instanceof \stdClass){ - if(isset($storage[$data])){ - $data = $storage[$data]; - return; - } - $data = $storage[$data] = clone($data); - foreach ($data as &$value){ - static::wrapClosures($value, $storage); - } - unset($value); - } elseif (is_object($data) && ! $data instanceof static){ - if(isset($storage[$data])){ - $data = $storage[$data]; - return; - } - $instance = $data; - $reflection = new ReflectionObject($instance); - if(!$reflection->isUserDefined()){ - $storage[$instance] = $data; - return; - } - $storage[$instance] = $data = $reflection->newInstanceWithoutConstructor(); - - do{ - if(!$reflection->isUserDefined()){ - break; - } - foreach ($reflection->getProperties() as $property){ - if($property->isStatic() || !$property->getDeclaringClass()->isUserDefined()){ - continue; - } - $property->setAccessible(true); - $value = $property->getValue($instance); - if(is_array($value) || is_object($value)){ - static::wrapClosures($value, $storage); - } - $property->setValue($data, $value); - }; - } while($reflection = $reflection->getParentClass()); - } - } - - /** - * Unwrap closures - * - * @internal - * @param $data - * @param SplObjectStorage|null $storage - */ - public static function unwrapClosures(&$data, SplObjectStorage $storage = null) - { - if($storage === null){ - $storage = static::$context->scope; - } - - if($data instanceof static){ - $data = $data->getClosure(); - } elseif (is_array($data)){ - if(isset($data[self::ARRAY_RECURSIVE_KEY])){ - return; - } - $data[self::ARRAY_RECURSIVE_KEY] = true; - foreach ($data as $key => &$value){ - if($key === self::ARRAY_RECURSIVE_KEY){ - continue; - } - static::unwrapClosures($value, $storage); - } - unset($data[self::ARRAY_RECURSIVE_KEY]); - }elseif ($data instanceof \stdClass){ - if(isset($storage[$data])){ - return; - } - $storage[$data] = true; - foreach ($data as &$property){ - static::unwrapClosures($property, $storage); - } - } elseif (is_object($data) && !($data instanceof Closure)){ - if(isset($storage[$data])){ - return; - } - $storage[$data] = true; - $reflection = new ReflectionObject($data); - - do{ - if(!$reflection->isUserDefined()){ - break; - } - foreach ($reflection->getProperties() as $property){ - if($property->isStatic() || !$property->getDeclaringClass()->isUserDefined()){ - continue; - } - $property->setAccessible(true); - $value = $property->getValue($data); - if(is_array($value) || is_object($value)){ - static::unwrapClosures($value, $storage); - $property->setValue($data, $value); - } - }; - } while($reflection = $reflection->getParentClass()); - } - } - - /** - * Creates a new closure from arbitrary code, - * emulating create_function, but without using eval - * - * @param string$args - * @param string $code - * @return Closure - */ - public static function createClosure($args, $code) - { - ClosureStream::register(); - return include(ClosureStream::STREAM_PROTO . '://function(' . $args. '){' . $code . '};'); - } - - /** - * Internal method used to map closure pointers - * @internal - * @param $data - */ - protected function mapPointers(&$data) - { - $scope = $this->scope; - - if ($data instanceof static) { - $data = &$data->closure; - } elseif (is_array($data)) { - if(isset($data[self::ARRAY_RECURSIVE_KEY])){ - return; - } - $data[self::ARRAY_RECURSIVE_KEY] = true; - foreach ($data as $key => &$value){ - if($key === self::ARRAY_RECURSIVE_KEY){ - continue; - } elseif ($value instanceof static) { - $data[$key] = &$value->closure; - } elseif ($value instanceof SelfReference && $value->hash === $this->code['self']){ - $data[$key] = &$this->closure; - } else { - $this->mapPointers($value); - } - } - unset($value); - unset($data[self::ARRAY_RECURSIVE_KEY]); - } elseif ($data instanceof \stdClass) { - if(isset($scope[$data])){ - return; - } - $scope[$data] = true; - foreach ($data as $key => &$value){ - if ($value instanceof SelfReference && $value->hash === $this->code['self']){ - $data->{$key} = &$this->closure; - } elseif(is_array($value) || is_object($value)) { - $this->mapPointers($value); - } - } - unset($value); - } elseif (is_object($data) && !($data instanceof Closure)){ - if(isset($scope[$data])){ - return; - } - $scope[$data] = true; - $reflection = new ReflectionObject($data); - do{ - if(!$reflection->isUserDefined()){ - break; - } - foreach ($reflection->getProperties() as $property){ - if($property->isStatic() || !$property->getDeclaringClass()->isUserDefined()){ - continue; - } - $property->setAccessible(true); - $item = $property->getValue($data); - if ($item instanceof SerializableClosure || ($item instanceof SelfReference && $item->hash === $this->code['self'])) { - $this->code['objects'][] = array( - 'instance' => $data, - 'property' => $property, - 'object' => $item instanceof SelfReference ? $this : $item, - ); - } elseif (is_array($item) || is_object($item)) { - $this->mapPointers($item); - $property->setValue($data, $item); - } - } - } while($reflection = $reflection->getParentClass()); - } - } - - /** - * Internal method used to map closures by reference - * - * @internal - * @param mixed &$data - */ - protected function mapByReference(&$data) - { - if ($data instanceof Closure) { - if($data === $this->closure){ - $data = new SelfReference($this->reference); - return; - } - - if (isset($this->scope[$data])) { - $data = $this->scope[$data]; - return; - } - - $instance = new static($data); - - if (static::$context !== null) { - static::$context->scope->toserialize--; - } else { - $instance->scope = $this->scope; - } - - $data = $this->scope[$data] = $instance; - } elseif (is_array($data)) { - if(isset($data[self::ARRAY_RECURSIVE_KEY])){ - return; - } - $data[self::ARRAY_RECURSIVE_KEY] = true; - foreach ($data as $key => &$value){ - if($key === self::ARRAY_RECURSIVE_KEY){ - continue; - } - $this->mapByReference($value); - } - unset($value); - unset($data[self::ARRAY_RECURSIVE_KEY]); - } elseif ($data instanceof \stdClass) { - if(isset($this->scope[$data])){ - $data = $this->scope[$data]; - return; - } - $instance = $data; - $this->scope[$instance] = $data = clone($data); - - foreach ($data as &$value){ - $this->mapByReference($value); - } - unset($value); - } elseif (is_object($data) && !$data instanceof SerializableClosure){ - if(isset($this->scope[$data])){ - $data = $this->scope[$data]; - return; - } - - $instance = $data; - $reflection = new ReflectionObject($data); - if(!$reflection->isUserDefined()){ - $this->scope[$instance] = $data; - return; - } - $this->scope[$instance] = $data = $reflection->newInstanceWithoutConstructor(); - - do{ - if(!$reflection->isUserDefined()){ - break; - } - foreach ($reflection->getProperties() as $property){ - if($property->isStatic() || !$property->getDeclaringClass()->isUserDefined()){ - continue; - } - $property->setAccessible(true); - $value = $property->getValue($instance); - if(is_array($value) || is_object($value)){ - $this->mapByReference($value); - } - $property->setValue($data, $value); - } - } while($reflection = $reflection->getParentClass()); - } - } - -} diff --git a/vendor/psr/cache/CHANGELOG.md b/vendor/psr/cache/CHANGELOG.md deleted file mode 100644 index 58ddab05a..000000000 --- a/vendor/psr/cache/CHANGELOG.md +++ /dev/null @@ -1,16 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file, in reverse chronological order by release. - -## 1.0.1 - 2016-08-06 - -### Fixed - -- Make spacing consistent in phpdoc annotations php-fig/cache#9 - chalasr -- Fix grammar in phpdoc annotations php-fig/cache#10 - chalasr -- Be more specific in docblocks that `getItems()` and `deleteItems()` take an array of strings (`string[]`) compared to just `array` php-fig/cache#8 - GrahamCampbell -- For `expiresAt()` and `expiresAfter()` in CacheItemInterface fix docblock to specify null as a valid parameters as well as an implementation of DateTimeInterface php-fig/cache#7 - GrahamCampbell - -## 1.0.0 - 2015-12-11 - -Initial stable release; reflects accepted PSR-6 specification diff --git a/vendor/psr/cache/LICENSE.txt b/vendor/psr/cache/LICENSE.txt deleted file mode 100644 index b1c2c97b9..000000000 --- a/vendor/psr/cache/LICENSE.txt +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015 PHP Framework Interoperability Group - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/psr/cache/README.md b/vendor/psr/cache/README.md deleted file mode 100644 index c8706ceea..000000000 --- a/vendor/psr/cache/README.md +++ /dev/null @@ -1,9 +0,0 @@ -PSR Cache -========= - -This repository holds all interfaces defined by -[PSR-6](http://www.php-fig.org/psr/psr-6/). - -Note that this is not a Cache implementation of its own. It is merely an -interface that describes a Cache implementation. See the specification for more -details. diff --git a/vendor/psr/cache/composer.json b/vendor/psr/cache/composer.json deleted file mode 100644 index e828fec94..000000000 --- a/vendor/psr/cache/composer.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "psr/cache", - "description": "Common interface for caching libraries", - "keywords": ["psr", "psr-6", "cache"], - "license": "MIT", - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "require": { - "php": ">=5.3.0" - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - } -} diff --git a/vendor/psr/cache/src/CacheException.php b/vendor/psr/cache/src/CacheException.php deleted file mode 100644 index e27f22f8d..000000000 --- a/vendor/psr/cache/src/CacheException.php +++ /dev/null @@ -1,10 +0,0 @@ -=5.3.0" - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - } -} diff --git a/vendor/psr/container/src/ContainerExceptionInterface.php b/vendor/psr/container/src/ContainerExceptionInterface.php deleted file mode 100644 index d35c6b4d8..000000000 --- a/vendor/psr/container/src/ContainerExceptionInterface.php +++ /dev/null @@ -1,13 +0,0 @@ -log(LogLevel::EMERGENCY, $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function alert($message, array $context = array()) - { - $this->log(LogLevel::ALERT, $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function critical($message, array $context = array()) - { - $this->log(LogLevel::CRITICAL, $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function error($message, array $context = array()) - { - $this->log(LogLevel::ERROR, $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function warning($message, array $context = array()) - { - $this->log(LogLevel::WARNING, $message, $context); - } - - /** - * Normal but significant events. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function notice($message, array $context = array()) - { - $this->log(LogLevel::NOTICE, $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function info($message, array $context = array()) - { - $this->log(LogLevel::INFO, $message, $context); - } - - /** - * Detailed debug information. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function debug($message, array $context = array()) - { - $this->log(LogLevel::DEBUG, $message, $context); - } -} diff --git a/vendor/psr/log/Psr/Log/InvalidArgumentException.php b/vendor/psr/log/Psr/Log/InvalidArgumentException.php deleted file mode 100644 index 67f852d1d..000000000 --- a/vendor/psr/log/Psr/Log/InvalidArgumentException.php +++ /dev/null @@ -1,7 +0,0 @@ -logger = $logger; - } -} diff --git a/vendor/psr/log/Psr/Log/LoggerInterface.php b/vendor/psr/log/Psr/Log/LoggerInterface.php deleted file mode 100644 index e695046e3..000000000 --- a/vendor/psr/log/Psr/Log/LoggerInterface.php +++ /dev/null @@ -1,125 +0,0 @@ -log(LogLevel::EMERGENCY, $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function alert($message, array $context = array()) - { - $this->log(LogLevel::ALERT, $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function critical($message, array $context = array()) - { - $this->log(LogLevel::CRITICAL, $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function error($message, array $context = array()) - { - $this->log(LogLevel::ERROR, $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function warning($message, array $context = array()) - { - $this->log(LogLevel::WARNING, $message, $context); - } - - /** - * Normal but significant events. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function notice($message, array $context = array()) - { - $this->log(LogLevel::NOTICE, $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function info($message, array $context = array()) - { - $this->log(LogLevel::INFO, $message, $context); - } - - /** - * Detailed debug information. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function debug($message, array $context = array()) - { - $this->log(LogLevel::DEBUG, $message, $context); - } - - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param array $context - * - * @return void - * - * @throws \Psr\Log\InvalidArgumentException - */ - abstract public function log($level, $message, array $context = array()); -} diff --git a/vendor/psr/log/Psr/Log/NullLogger.php b/vendor/psr/log/Psr/Log/NullLogger.php deleted file mode 100644 index c8f7293b1..000000000 --- a/vendor/psr/log/Psr/Log/NullLogger.php +++ /dev/null @@ -1,30 +0,0 @@ -logger) { }` - * blocks. - */ -class NullLogger extends AbstractLogger -{ - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param array $context - * - * @return void - * - * @throws \Psr\Log\InvalidArgumentException - */ - public function log($level, $message, array $context = array()) - { - // noop - } -} diff --git a/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php b/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php deleted file mode 100644 index 9ecb6c4b0..000000000 --- a/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php +++ /dev/null @@ -1,146 +0,0 @@ - ". - * - * Example ->error('Foo') would yield "error Foo". - * - * @return string[] - */ - abstract public function getLogs(); - - public function testImplements() - { - $this->assertInstanceOf('Psr\Log\LoggerInterface', $this->getLogger()); - } - - /** - * @dataProvider provideLevelsAndMessages - */ - public function testLogsAtAllLevels($level, $message) - { - $logger = $this->getLogger(); - $logger->{$level}($message, array('user' => 'Bob')); - $logger->log($level, $message, array('user' => 'Bob')); - - $expected = array( - $level.' message of level '.$level.' with context: Bob', - $level.' message of level '.$level.' with context: Bob', - ); - $this->assertEquals($expected, $this->getLogs()); - } - - public function provideLevelsAndMessages() - { - return array( - LogLevel::EMERGENCY => array(LogLevel::EMERGENCY, 'message of level emergency with context: {user}'), - LogLevel::ALERT => array(LogLevel::ALERT, 'message of level alert with context: {user}'), - LogLevel::CRITICAL => array(LogLevel::CRITICAL, 'message of level critical with context: {user}'), - LogLevel::ERROR => array(LogLevel::ERROR, 'message of level error with context: {user}'), - LogLevel::WARNING => array(LogLevel::WARNING, 'message of level warning with context: {user}'), - LogLevel::NOTICE => array(LogLevel::NOTICE, 'message of level notice with context: {user}'), - LogLevel::INFO => array(LogLevel::INFO, 'message of level info with context: {user}'), - LogLevel::DEBUG => array(LogLevel::DEBUG, 'message of level debug with context: {user}'), - ); - } - - /** - * @expectedException \Psr\Log\InvalidArgumentException - */ - public function testThrowsOnInvalidLevel() - { - $logger = $this->getLogger(); - $logger->log('invalid level', 'Foo'); - } - - public function testContextReplacement() - { - $logger = $this->getLogger(); - $logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob', 'foo.bar' => 'Bar')); - - $expected = array('info {Message {nothing} Bob Bar a}'); - $this->assertEquals($expected, $this->getLogs()); - } - - public function testObjectCastToString() - { - if (method_exists($this, 'createPartialMock')) { - $dummy = $this->createPartialMock('Psr\Log\Test\DummyTest', array('__toString')); - } else { - $dummy = $this->getMock('Psr\Log\Test\DummyTest', array('__toString')); - } - $dummy->expects($this->once()) - ->method('__toString') - ->will($this->returnValue('DUMMY')); - - $this->getLogger()->warning($dummy); - - $expected = array('warning DUMMY'); - $this->assertEquals($expected, $this->getLogs()); - } - - public function testContextCanContainAnything() - { - $closed = fopen('php://memory', 'r'); - fclose($closed); - - $context = array( - 'bool' => true, - 'null' => null, - 'string' => 'Foo', - 'int' => 0, - 'float' => 0.5, - 'nested' => array('with object' => new DummyTest), - 'object' => new \DateTime, - 'resource' => fopen('php://memory', 'r'), - 'closed' => $closed, - ); - - $this->getLogger()->warning('Crazy context data', $context); - - $expected = array('warning Crazy context data'); - $this->assertEquals($expected, $this->getLogs()); - } - - public function testContextExceptionKeyCanBeExceptionOrOtherValues() - { - $logger = $this->getLogger(); - $logger->warning('Random message', array('exception' => 'oops')); - $logger->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail'))); - - $expected = array( - 'warning Random message', - 'critical Uncaught Exception!' - ); - $this->assertEquals($expected, $this->getLogs()); - } -} - -class DummyTest -{ - public function __toString() - { - return 'DummyTest'; - } -} diff --git a/vendor/psr/log/Psr/Log/Test/TestLogger.php b/vendor/psr/log/Psr/Log/Test/TestLogger.php deleted file mode 100644 index 1be323049..000000000 --- a/vendor/psr/log/Psr/Log/Test/TestLogger.php +++ /dev/null @@ -1,147 +0,0 @@ - $level, - 'message' => $message, - 'context' => $context, - ]; - - $this->recordsByLevel[$record['level']][] = $record; - $this->records[] = $record; - } - - public function hasRecords($level) - { - return isset($this->recordsByLevel[$level]); - } - - public function hasRecord($record, $level) - { - if (is_string($record)) { - $record = ['message' => $record]; - } - return $this->hasRecordThatPasses(function ($rec) use ($record) { - if ($rec['message'] !== $record['message']) { - return false; - } - if (isset($record['context']) && $rec['context'] !== $record['context']) { - return false; - } - return true; - }, $level); - } - - public function hasRecordThatContains($message, $level) - { - return $this->hasRecordThatPasses(function ($rec) use ($message) { - return strpos($rec['message'], $message) !== false; - }, $level); - } - - public function hasRecordThatMatches($regex, $level) - { - return $this->hasRecordThatPasses(function ($rec) use ($regex) { - return preg_match($regex, $rec['message']) > 0; - }, $level); - } - - public function hasRecordThatPasses(callable $predicate, $level) - { - if (!isset($this->recordsByLevel[$level])) { - return false; - } - foreach ($this->recordsByLevel[$level] as $i => $rec) { - if (call_user_func($predicate, $rec, $i)) { - return true; - } - } - return false; - } - - public function __call($method, $args) - { - if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { - $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3]; - $level = strtolower($matches[2]); - if (method_exists($this, $genericMethod)) { - $args[] = $level; - return call_user_func_array([$this, $genericMethod], $args); - } - } - throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()'); - } - - public function reset() - { - $this->records = []; - $this->recordsByLevel = []; - } -} diff --git a/vendor/psr/log/README.md b/vendor/psr/log/README.md deleted file mode 100644 index a9f20c437..000000000 --- a/vendor/psr/log/README.md +++ /dev/null @@ -1,58 +0,0 @@ -PSR Log -======= - -This repository holds all interfaces/classes/traits related to -[PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md). - -Note that this is not a logger of its own. It is merely an interface that -describes a logger. See the specification for more details. - -Installation ------------- - -```bash -composer require psr/log -``` - -Usage ------ - -If you need a logger, you can use the interface like this: - -```php -logger = $logger; - } - - public function doSomething() - { - if ($this->logger) { - $this->logger->info('Doing work'); - } - - try { - $this->doSomethingElse(); - } catch (Exception $exception) { - $this->logger->error('Oh no!', array('exception' => $exception)); - } - - // do something useful - } -} -``` - -You can then pick one of the implementations of the interface to get a logger. - -If you want to implement the interface, you can require this package and -implement `Psr\Log\LoggerInterface` in your code. Please read the -[specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md) -for details. diff --git a/vendor/psr/log/composer.json b/vendor/psr/log/composer.json deleted file mode 100644 index 3f6d4eea4..000000000 --- a/vendor/psr/log/composer.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "psr/log", - "description": "Common interface for logging libraries", - "keywords": ["psr", "psr-3", "log"], - "homepage": "https://github.com/php-fig/log", - "license": "MIT", - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "require": { - "php": ">=5.3.0" - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - } -} diff --git a/vendor/psr/simple-cache/.editorconfig b/vendor/psr/simple-cache/.editorconfig deleted file mode 100644 index 48542cbb4..000000000 --- a/vendor/psr/simple-cache/.editorconfig +++ /dev/null @@ -1,12 +0,0 @@ -; This file is for unifying the coding style for different editors and IDEs. -; More information at http://editorconfig.org - -root = true - -[*] -charset = utf-8 -indent_size = 4 -indent_style = space -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true diff --git a/vendor/psr/simple-cache/LICENSE.md b/vendor/psr/simple-cache/LICENSE.md deleted file mode 100644 index e49a7c85a..000000000 --- a/vendor/psr/simple-cache/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License (MIT) - -Copyright (c) 2016 PHP Framework Interoperability Group - -> Permission is hereby granted, free of charge, to any person obtaining a copy -> of this software and associated documentation files (the "Software"), to deal -> in the Software without restriction, including without limitation the rights -> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -> copies of the Software, and to permit persons to whom the Software is -> furnished to do so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in -> all copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -> THE SOFTWARE. diff --git a/vendor/psr/simple-cache/README.md b/vendor/psr/simple-cache/README.md deleted file mode 100644 index 43641d175..000000000 --- a/vendor/psr/simple-cache/README.md +++ /dev/null @@ -1,8 +0,0 @@ -PHP FIG Simple Cache PSR -======================== - -This repository holds all interfaces related to PSR-16. - -Note that this is not a cache implementation of its own. It is merely an interface that describes a cache implementation. See [the specification](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-16-simple-cache.md) for more details. - -You can find implementations of the specification by looking for packages providing the [psr/simple-cache-implementation](https://packagist.org/providers/psr/simple-cache-implementation) virtual package. diff --git a/vendor/psr/simple-cache/composer.json b/vendor/psr/simple-cache/composer.json deleted file mode 100644 index 2978fa559..000000000 --- a/vendor/psr/simple-cache/composer.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "psr/simple-cache", - "description": "Common interfaces for simple caching", - "keywords": ["psr", "psr-16", "cache", "simple-cache", "caching"], - "license": "MIT", - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "require": { - "php": ">=5.3.0" - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - } -} diff --git a/vendor/psr/simple-cache/src/CacheException.php b/vendor/psr/simple-cache/src/CacheException.php deleted file mode 100644 index eba53815c..000000000 --- a/vendor/psr/simple-cache/src/CacheException.php +++ /dev/null @@ -1,10 +0,0 @@ - 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($keys, $default = null); - - /** - * Persists a set of key => value pairs in the cache, with an optional TTL. - * - * @param iterable $values A list of key => value pairs for a multiple-set operation. - * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and - * the driver supports TTL then the library may set a default value - * for it or let the driver take care of that. - * - * @return bool True on success and false on failure. - * - * @throws \Psr\SimpleCache\InvalidArgumentException - * 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($values, $ttl = null); - - /** - * Deletes multiple cache items in a single operation. - * - * @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. - * - * @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 deleteMultiple($keys); - - /** - * Determines whether an item is present in the cache. - * - * NOTE: It is recommended that has() is only to be used for cache warming type purposes - * and not to be used within your live applications operations for get/set, as this method - * is subject to a race condition where your has() will return true and immediately after, - * another script can remove it making the state of your app out of date. - * - * @param string $key The cache item key. - * - * @return bool - * - * @throws \Psr\SimpleCache\InvalidArgumentException - * MUST be thrown if the $key string is not a legal value. - */ - public function has($key); -} diff --git a/vendor/psr/simple-cache/src/InvalidArgumentException.php b/vendor/psr/simple-cache/src/InvalidArgumentException.php deleted file mode 100644 index 6a9524a20..000000000 --- a/vendor/psr/simple-cache/src/InvalidArgumentException.php +++ /dev/null @@ -1,13 +0,0 @@ - 'think\\app\\Service', - 1 => 'think\\admin\\ThinkLibrary', -); \ No newline at end of file diff --git a/vendor/topthink/framework/.gitignore b/vendor/topthink/framework/.gitignore deleted file mode 100644 index b267fbae4..000000000 --- a/vendor/topthink/framework/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -/vendor -composer.phar -composer.lock -.DS_Store -Thumbs.db -/.idea -/.vscode \ No newline at end of file diff --git a/vendor/topthink/framework/.travis.yml b/vendor/topthink/framework/.travis.yml deleted file mode 100644 index 73e6681ff..000000000 --- a/vendor/topthink/framework/.travis.yml +++ /dev/null @@ -1,34 +0,0 @@ -dist: xenial -language: php - -matrix: - fast_finish: true - include: - - php: 7.1 - - php: 7.2 - - php: 7.3 - -cache: - directories: - - $HOME/.composer/cache - -services: - - memcached - - redis-server - - mysql - -before_install: - - echo "extension = memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - - printf "\n" | pecl install -f redis - - travis_retry composer self-update - - mysql -e 'CREATE DATABASE test;' - -install: - - travis_retry composer update --prefer-dist --no-interaction --prefer-stable --no-suggest - -script: - - vendor/bin/phpunit --coverage-clover build/logs/coverage.xml - -after_script: - - travis_retry wget https://scrutinizer-ci.com/ocular.phar - - php ocular.phar code-coverage:upload --format=php-clover build/logs/coverage.xml \ No newline at end of file diff --git a/vendor/topthink/framework/CONTRIBUTING.md b/vendor/topthink/framework/CONTRIBUTING.md deleted file mode 100644 index efa3ad972..000000000 --- a/vendor/topthink/framework/CONTRIBUTING.md +++ /dev/null @@ -1,119 +0,0 @@ -如何贡献我的源代码 -=== - -此文档介绍了 ThinkPHP 团队的组成以及运转机制,您提交的代码将给 ThinkPHP 项目带来什么好处,以及如何才能加入我们的行列。 - -## 通过 Github 贡献代码 - -ThinkPHP 目前使用 Git 来控制程序版本,如果你想为 ThinkPHP 贡献源代码,请先大致了解 Git 的使用方法。我们目前把项目托管在 GitHub 上,任何 GitHub 用户都可以向我们贡献代码。 - -参与的方式很简单,`fork`一份 ThinkPHP 的代码到你的仓库中,修改后提交,并向我们发起`pull request`申请,我们会及时对代码进行审查并处理你的申请并。审查通过后,你的代码将被`merge`进我们的仓库中,这样你就会自动出现在贡献者名单里了,非常方便。 - -我们希望你贡献的代码符合: - -* ThinkPHP 的编码规范 -* 适当的注释,能让其他人读懂 -* 遵循 Apache2 开源协议 - -**如果想要了解更多细节或有任何疑问,请继续阅读下面的内容** - -### 注意事项 - -* 本项目代码格式化标准选用 [**PSR-2**](http://www.kancloud.cn/thinkphp/php-fig-psr/3141); -* 类名和类文件名遵循 [**PSR-4**](http://www.kancloud.cn/thinkphp/php-fig-psr/3144); -* 对于 Issues 的处理,请使用诸如 `fix #xxx(Issue ID)` 的 commit title 直接关闭 issue。 -* 系统会自动在 PHP 7.1 ~ 7.3 上测试修改,请确保你的修改符合 PHP 7.1 ~ 7.3 的语法规范; -* 管理员不会合并造成 CI faild 的修改,若出现 CI faild 请检查自己的源代码或修改相应的[单元测试文件](tests); - -## GitHub Issue - -GitHub 提供了 Issue 功能,该功能可以用于: - -* 提出 bug -* 提出功能改进 -* 反馈使用体验 - -该功能不应该用于: - - * 提出修改意见(涉及代码署名和修订追溯问题) - * 不友善的言论 - -## 快速修改 - -**GitHub 提供了快速编辑文件的功能** - -1. 登录 GitHub 帐号; -2. 浏览项目文件,找到要进行修改的文件; -3. 点击右上角铅笔图标进行修改; -4. 填写 `Commit changes` 相关内容(Title 必填); -5. 提交修改,等待 CI 验证和管理员合并。 - -**若您需要一次提交大量修改,请继续阅读下面的内容** - -## 完整流程 - -1. `fork`本项目; -2. 克隆(`clone`)你 `fork` 的项目到本地; -3. 新建分支(`branch`)并检出(`checkout`)新分支; -4. 添加本项目到你的本地 git 仓库作为上游(`upstream`); -5. 进行修改,若你的修改包含方法或函数的增减,请记得修改[单元测试文件](tests); -6. 变基(衍合 `rebase`)你的分支到上游 master 分支; -7. `push` 你的本地仓库到 GitHub; -8. 提交 `pull request`; -9. 等待 CI 验证(若不通过则重复 5~7,GitHub 会自动更新你的 `pull request`); -10. 等待管理员处理,并及时 `rebase` 你的分支到上游 master 分支(若上游 master 分支有修改)。 - -*若有必要,可以 `git push -f` 强行推送 rebase 后的分支到自己的 `fork`* - -*绝对不可以使用 `git push -f` 强行推送修改到上游* - -### 注意事项 - -* 若对上述流程有任何不清楚的地方,请查阅 GIT 教程,如 [这个](http://backlogtool.com/git-guide/cn/); -* 对于代码**不同方面**的修改,请在自己 `fork` 的项目中**创建不同的分支**(原因参见`完整流程`第9条备注部分); -* 变基及交互式变基操作参见 [Git 交互式变基](http://pakchoi.me/2015/03/17/git-interactive-rebase/) - -## 推荐资源 - -### 开发环境 - -* XAMPP for Windows 5.5.x -* WampServer (for Windows) -* upupw Apache PHP5.4 ( for Windows) - -或自行安装 - -- Apache / Nginx -- PHP 7.1 ~ 7.3 -- MySQL / MariaDB - -*Windows 用户推荐添加 PHP bin 目录到 PATH,方便使用 composer* - -*Linux 用户自行配置环境, Mac 用户推荐使用内置 Apache 配合 Homebrew 安装 PHP 和 MariaDB* - -### 编辑器 - -Sublime Text 3 + phpfmt 插件 - -phpfmt 插件参数 - -```json -{ - "autocomplete": true, - "enable_auto_align": true, - "format_on_save": true, - "indent_with_space": true, - "psr1_naming": false, - "psr2": true, - "version": 4 -} -``` - -或其他 编辑器 / IDE 配合 PSR2 自动格式化工具 - -### Git GUI - -* SourceTree -* GitHub Desktop - -或其他 Git 图形界面客户端 diff --git a/vendor/topthink/framework/LICENSE.txt b/vendor/topthink/framework/LICENSE.txt deleted file mode 100644 index 4e910bb20..000000000 --- a/vendor/topthink/framework/LICENSE.txt +++ /dev/null @@ -1,32 +0,0 @@ - -ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 -版权所有Copyright © 2006-2019 by ThinkPHP (http://thinkphp.cn) -All rights reserved。 -ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 - -Apache Licence是著名的非盈利开源组织Apache采用的协议。 -该协议和BSD类似,鼓励代码共享和尊重原作者的著作权, -允许代码修改,再作为开源或商业软件发布。需要满足 -的条件: -1. 需要给代码的用户一份Apache Licence ; -2. 如果你修改了代码,需要在被修改的文件中说明; -3. 在延伸的代码中(修改和有源代码衍生的代码中)需要 -带有原来代码中的协议,商标,专利声明和其他原来作者规 -定需要包含的说明; -4. 如果再发布的产品中包含一个Notice文件,则在Notice文 -件中需要带有本协议内容。你可以在Notice中增加自己的 -许可,但不可以表现为对Apache Licence构成更改。 -具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0 - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/topthink/framework/README.md b/vendor/topthink/framework/README.md deleted file mode 100644 index 44cc45156..000000000 --- a/vendor/topthink/framework/README.md +++ /dev/null @@ -1,86 +0,0 @@ -![](https://box.kancloud.cn/5a0aaa69a5ff42657b5c4715f3d49221) - -ThinkPHP 6.0 -=============== - -[![Build Status](https://travis-ci.org/top-think/framework.svg?branch=6.0)](https://travis-ci.org/top-think/framework) -[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/top-think/framework/badges/quality-score.png?b=6.0)](https://scrutinizer-ci.com/g/top-think/framework/?branch=6.0) -[![Code Coverage](https://scrutinizer-ci.com/g/top-think/framework/badges/coverage.png?b=6.0)](https://scrutinizer-ci.com/g/top-think/framework/?branch=6.0) -[![Total Downloads](https://poser.pugx.org/topthink/framework/downloads)](https://packagist.org/packages/topthink/framework) -[![Latest Stable Version](https://poser.pugx.org/topthink/framework/v/stable)](https://packagist.org/packages/topthink/framework) -[![PHP Version](https://img.shields.io/badge/php-%3E%3D7.1-8892BF.svg)](http://www.php.net/) -[![License](https://poser.pugx.org/topthink/framework/license)](https://packagist.org/packages/topthink/framework) - -ThinkPHP6.0底层架构采用PHP7.1改写和进一步优化。 - -## 主要新特性 - -* 采用`PHP7`强类型(严格模式) -* 支持更多的`PSR`规范 -* 原生多应用支持 -* 系统服务注入支持 -* ORM作为独立组件使用 -* 增加Filesystem -* 全新的事件系统 -* 模板引擎分离出核心 -* 内部功能中间件化 -* SESSION机制改进 -* 日志多通道支持 -* 规范扩展接口 -* 更强大的控制台 -* 对Swoole以及协程支持改进 -* 对IDE更加友好 -* 统一和精简大量用法 - - -> ThinkPHP6.0的运行环境要求PHP7.1+。 - -## 安装 - -~~~ -composer create-project topthink/think tp 6.0.*-dev -~~~ - -启动服务 - -~~~ -cd tp -php think run -~~~ - -然后就可以在浏览器中访问 - -~~~ -http://localhost:8000 -~~~ - -如果需要更新框架使用 -~~~ -composer update topthink/framework -~~~ - -## 文档 - -[完全开发手册](https://www.kancloud.cn/manual/thinkphp6_0/content) - -## 命名规范 - -`ThinkPHP6`遵循PSR-2命名规范和PSR-4自动加载规范。 - -## 参与开发 - -请参阅 [ThinkPHP核心框架包](https://github.com/top-think/framework)。 - -## 版权信息 - -ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 - -本项目包含的第三方源码和二进制文件之版权信息另行标注。 - -版权所有Copyright © 2006-2019 by ThinkPHP (http://thinkphp.cn) - -All rights reserved。 - -ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 - -更多细节参阅 [LICENSE.txt](LICENSE.txt) diff --git a/vendor/topthink/framework/composer.json b/vendor/topthink/framework/composer.json deleted file mode 100644 index 017b3d963..000000000 --- a/vendor/topthink/framework/composer.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "topthink/framework", - "description": "The ThinkPHP Framework.", - "keywords": [ - "framework", - "thinkphp", - "ORM" - ], - "homepage": "http://thinkphp.cn/", - "license": "Apache-2.0", - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - }, - { - "name": "yunwuxin", - "email": "448901948@qq.com" - } - ], - "require": { - "php": ">=7.1.0", - "ext-json": "*", - "ext-mbstring": "*", - "league/flysystem": "^1.0", - "league/flysystem-cached-adapter": "^1.0", - "opis/closure": "^3.1", - "psr/log": "~1.0", - "psr/container": "~1.0", - "psr/simple-cache": "^1.0", - "topthink/think-orm": "^2.0", - "topthink/think-helper": "^3.1.1" - }, - "require-dev": { - "mikey179/vfsstream": "^1.6", - "mockery/mockery": "^1.2", - "phpunit/phpunit": "^7.0" - }, - "autoload": { - "files": [], - "psr-4": { - "think\\": "src/think/" - } - }, - "autoload-dev": { - "psr-4": { - "think\\tests\\": "src/tests/" - } - }, - "minimum-stability": "dev", - "prefer-stable": true, - "config": { - "sort-packages": true - } -} diff --git a/vendor/topthink/framework/logo.png b/vendor/topthink/framework/logo.png deleted file mode 100644 index 25fd0593688de5c9f4cd321da1a72ab9566fe331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6995 zcmV-Z8?5AsP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z5P(TUK~#9!?3{UYROQ`(pS#SOWU`Z$BxDa^-w_0qRROJ_;)fy#YSH7?R(p-EbfAWiV7kMvdB&nAVk8FL`WvH-R=7$piE{anUI+fzQgaoxpU{e z?>zT?fBU_{y(@BL2)I=z*^UwhrBB4Gy1NZP^@0FsfM9?m zni!jV17^vBVHn-U3SSTeCDDXMvXbQ}q9l1ZKFxCxV26x|C7C!&G6175J~lZPfZnN>kQrBS-YxP4wF1jhNB;QPBv~1dJ^|$-!0_NXtSR(MALn;`VETA$ z^7(aXE(m~L%}u|waU@wY{ElZiiph2qqiV`UfT35Pj!ll`@?JLub*@WOMxYuO0frQh z+RW&jnPkNk1^vD_c_=2)f`M@nU~5q{FPU)#Tv2#?$aAtCB_vpTpzGR2fUOOOAc)NB z^B^(i_>kw>O%Bpx^U%)IHtv=H4Gg@Ri|HkIQkF8Z-SabJ3(?P0nyXs^^e9fo42dL=^itc4<@j~YGe*{@Hcl=KXB7)F%YR0E| zC`jth!1M`tHTVAyfIiKQMYeNu|3|s1%ujjLW)#gE8lurskdj3+!)iSOO%F;6rfMmMxJ)Pzb#T)~f@M`T}3q>QoLm63&4b&(U_o1c~4M|tX~ zh>d;d)Q)z~DNg>WTctd86lt-&sB_hH$l9Nm6=-1KQJaxPGgFK2;8&Nt6j69y%}v!0 z+d>*2-Oz})rc#ErqI!0Q+o=WM*922j;~sJcRa;sCBFyp_IbW21JH)>SV@50Q~J z(6LG}T$VRG;JcpjWu(RCanxCLPOei_0BX95Pxp`!o6m&&xs1rZs?$2Az16qt_&Usz zErfgH;?kUJ$#w+xhnhq)g-L@r+_>lb1Jn%-ujVGnmciKES&YfO9=pjARo$xUKHlE@ zESjMqVG8oSLZUT|D~lF}9HS_C2%jBV(&8wd<2LRTKm!A>>LSJz&zRin8J~YMiPo;^ zko#c&3sf|0`LWE|dS0sT;B{v;e$%hp$VwHl&%xZ&pqf0*>z$)uWf(ibo?9Wg}GHHy;Cn?X7Bsk|MQ}ml$dO48uuZKQPzPi+qIcQ zTLx1KZ)J4PnMk7CrSP^L{e+jdJ%plrgDQTH+Dwk4jQIl}#}dM@w3ZZmPjt?`o+5|4 z>U2Y8c-C~TF1?2&TSk}1&z~N6oj3RV72VK7!pnA)uyE)zI4mh)kLxfeb*js&U4UNI zg~OV{jIv)aJZpNFgLA7+R_uC;b=Au;NtU2)ky~++o6wtuL;i;(TV{vGx0@V@f*2iu zZq-R);y~u~e}wedUR@4vf5T>$?tFqnr*>kMV*(-u0|U3>q)(60%p34W9H%?CIwF!F z1&u^>Lu<24&@Mo?;$%?fB8K5GA{21uIv3k z$WSgEA2txGOp+~~I@kB@LX<=OfgxE_m^a{$m^$I5pNo83yPEg+KSxdDUMx}!<{)6a znj5QR=eoWRFeZ0ar>@tmoI+~_(W|*APaVy7$3LgueFRC6!w2ZqT$CgaV{ZRPyA)pa zsokusc!6z4KS4mmCdUO?Ejk{xnf%25%i2NS_%hPc=&j?U%9mJQy#lxD#3I{+>Lj1$Mi$LnQFI$u7T(_B z!c!=zZK?>^rUC*kAe&t502OzPI*pH>#Pc}>;^hkIfhts0z)&eV9kM7 zLasvj>`Y3EJ)28<{w(V7wjW!|2m7Dr;K}chMGH1lY|!oM)m$W5)0t2(kFmM4BA(gV zQ@@c$&j~E8Zk&MlV@y9PX9nvJufQ<$pplRK)4umok}@o+S(I9574PqRj&EyM17Ho2 z2=J;dta3{pZ&JZ6QFGkCu6Zv2ieVU-B^#NJmUg<#xI#)(MzHPZCqdPQ{1bJ^OXw4| z?fP-mt9*Rm6`a14ZR$BukQkUgo+*X5k(*E+wVS!O{%iKue;wfdXofVc2GpS$!eR_KC1jDislKb z=hV|(2|123Cgk7Du&inAb{Iq?u0Hr0d+WXqxS0km+jm&@G{56EIhL~2k*qzqqz!-u zGV7VDZ-9py*yqq9tHknB_n{lw=@RF{poO03!mHxBP51DFyB4!#r*&(BS8Zl|{+y7}O^i8# zp7CXDJN7A(6a=6wnmOFKo0`VG^mLSVc!KZm|2yyPdk$GNVUjF?EZO|xN=;YL43$fBuI1{Idx*1i{aaMNs(F{CyZ($@aR!B_87d~p z%b-zSr3<=fhim{PcaSaV`n6I`+TX+Erc5t}K_Z|nOs4>6{A zt}Va+yd+{>N+WOYd6qA#mmvxAX`^8TglwwjV|KsaQWQprm~79+Zi>UFd4F6eer~uV z$~3r-@Xe8xVNG&X#UfT$F2*MN!}F>x(qnsZ_wc`;7kE35uj8o=x3KomzcERcptYMb zs^!X}+qpF7+OWorx1?Y*IWW#je+7&zi6*{0{3fGwW(HWQvt`qfmAtd}ZZ?H0GdP#HH~}OaqM#jW=sqj)4s9uaYRA#bH06=n~b;u77lra1Z$5j1E(7r>kq%l zs)|L_xoWUV_K=AO-O%xAE+!W)U`E+5I&>XT5V4!${Ccc|rdkCAzNlUn6rg6Pys_g? zG`xTQ4ZaK#*3T{jYq`|GM+B@v7+Ym5OMe{Jd_zrU8%ew^Jk){e(R{Vo4wX4xj-@LZO ztGTh89Nf_7zZsf&MJKKt20#G;RaaPh;NN}#J!&(nD_;(%%c{CUdTcMogNsgXR-kXI2bDXH4EK zW|aN1&FvkIcr`aoz6QjzoR^RQTO8|V)>OU9ya9gzV9U|f2(7w;4Gd(_OmXs%sKGmM zayxJDd6qqO8<9m5wsy*_#_8fykJvn}DZP(DA&g;1rQY>DPHzLED7O#r%qrY+bPbc6 z=96O2;_#_G$dbABY_Z68lI@Xy0g_vF@?pgyK0WX{KHbxEi<7SoFFBtC-4 ziUTLN<5rveR(_iR1wlN$3SZ{R;)OITr~H;LfR2tuvPHa#x37K^OLzX6LyfzzO7?cs zU1z$+3X=vgt@zHUbdBve{sls-oN2qgF&4?rmZNJ(kITm_Spy!E5)koe9@GeQyr0>A zD=QYUs$vnU?!zv}wUfA2@u_Zl#O5+Fe;%W9X0%xdKUb-BRfxm4Sf`6WCq2hmvf~eIsa=Cbwg*jmp6w8OH5U#`G86LWa(S;C zi8DtpS@GGyCAgKQ05uZUtr7(Zx6*hzfEEH=9z}OkeQFo^i384gf`?A+WbxMDaHOfC zO(XGB)y~eCoa>lSFqgELyr{ZP)s4IPs^;CGJ%?eh^|tCIq9C#B#0JI%d7K~|*?w#- zuWtJ-&C01ZT@9b+Mi3+hWlUsJ!ThLI5nJolq1T z@6c~Ie*Yf-+Ws(xp@%d?ita<#Rf>`aGo|o0dZ%8}WufA`d;i9s`i-G(Y-DsV9a+V=ytZTF{SBLW?YrNf{+<66G+jl}z4T2R%QdCAJy|3W|cn}vBt^p-4q|69C(dY6^rnw&bHjBoxo$j zlGbia9T9w!ulcNG?AcF=H!G+3uwqd_Z;7g_Oe~nk%(DBteAONJVLQurKgIrr&7tCX lAFv5{16U3OylCP71_0o>R4vh7BrN~{002ovPDHLkV1liRoDKj0 diff --git a/vendor/topthink/framework/phpunit.xml.dist b/vendor/topthink/framework/phpunit.xml.dist deleted file mode 100644 index e20a13381..000000000 --- a/vendor/topthink/framework/phpunit.xml.dist +++ /dev/null @@ -1,25 +0,0 @@ - - - - - ./tests - - - - - ./src/think - - - diff --git a/vendor/topthink/framework/src/helper.php b/vendor/topthink/framework/src/helper.php deleted file mode 100644 index 42353eb86..000000000 --- a/vendor/topthink/framework/src/helper.php +++ /dev/null @@ -1,663 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -//------------------------ -// ThinkPHP 助手函数 -//------------------------- - -use think\App; -use think\Container; -use think\exception\HttpException; -use think\exception\HttpResponseException; -use think\facade\Cache; -use think\facade\Config; -use think\facade\Cookie; -use think\facade\Env; -use think\facade\Event; -use think\facade\Lang; -use think\facade\Log; -use think\facade\Request; -use think\facade\Route; -use think\facade\Session; -use think\Response; -use think\response\File; -use think\response\Json; -use think\response\Jsonp; -use think\response\Redirect; -use think\response\View; -use think\response\Xml; -use think\route\Url as UrlBuild; -use think\Validate; - -if (!function_exists('abort')) { - /** - * 抛出HTTP异常 - * @param integer|Response $code 状态码 或者 Response对象实例 - * @param string $message 错误信息 - * @param array $header 参数 - */ - function abort($code, string $message = '', array $header = []) - { - if ($code instanceof Response) { - throw new HttpResponseException($code); - } else { - throw new HttpException($code, $message, null, $header); - } - } -} - -if (!function_exists('app')) { - /** - * 快速获取容器中的实例 支持依赖注入 - * @param string $name 类名或标识 默认获取当前应用实例 - * @param array $args 参数 - * @param bool $newInstance 是否每次创建新的实例 - * @return object|App - */ - function app(string $name = '', array $args = [], bool $newInstance = false) - { - return Container::getInstance()->make($name ?: App::class, $args, $newInstance); - } -} - -if (!function_exists('bind')) { - /** - * 绑定一个类到容器 - * @param string|array $abstract 类标识、接口(支持批量绑定) - * @param mixed $concrete 要绑定的类、闭包或者实例 - * @return Container - */ - function bind($abstract, $concrete = null) - { - return Container::getInstance()->bind($abstract, $concrete); - } -} - -if (!function_exists('cache')) { - /** - * 缓存管理 - * @param string $name 缓存名称 - * @param mixed $value 缓存值 - * @param mixed $options 缓存参数 - * @param string $tag 缓存标签 - * @return mixed - */ - function cache(string $name = null, $value = '', $options = null, $tag = null) - { - if (is_null($name)) { - return app('cache'); - } - - if ('' === $value) { - // 获取缓存 - return 0 === strpos($name, '?') ? Cache::has(substr($name, 1)) : Cache::get($name); - } elseif (is_null($value)) { - // 删除缓存 - return Cache::delete($name); - } - - // 缓存数据 - if (is_array($options)) { - $expire = $options['expire'] ?? null; //修复查询缓存无法设置过期时间 - } else { - $expire = $options; - } - - if (is_null($tag)) { - return Cache::set($name, $value, $expire); - } else { - return Cache::tag($tag)->set($name, $value, $expire); - } - } -} - -if (!function_exists('config')) { - /** - * 获取和设置配置参数 - * @param string|array $name 参数名 - * @param mixed $value 参数值 - * @return mixed - */ - function config($name = '', $value = null) - { - if (is_array($name)) { - return Config::set($name, $value); - } - - return 0 === strpos($name, '?') ? Config::has(substr($name, 1)) : Config::get($name, $value); - } -} - -if (!function_exists('cookie')) { - /** - * Cookie管理 - * @param string $name cookie名称 - * @param mixed $value cookie值 - * @param mixed $option 参数 - * @return mixed - */ - function cookie(string $name, $value = '', $option = null) - { - if (is_null($value)) { - // 删除 - Cookie::delete($name); - } elseif ('' === $value) { - // 获取 - return 0 === strpos($name, '?') ? Cookie::has(substr($name, 1)) : Cookie::get($name); - } else { - // 设置 - return Cookie::set($name, $value, $option); - } - } -} - -if (!function_exists('download')) { - /** - * 获取\think\response\Download对象实例 - * @param string $filename 要下载的文件 - * @param string $name 显示文件名 - * @param bool $content 是否为内容 - * @param int $expire 有效期(秒) - * @return \think\response\File - */ - function download(string $filename, string $name = '', bool $content = false, int $expire = 180): File - { - return Response::create($filename, 'file')->name($name)->isContent($content)->expire($expire); - } -} - -if (!function_exists('dump')) { - /** - * 浏览器友好的变量输出 - * @param mixed $vars 要输出的变量 - * @return void - */ - function dump(...$vars) - { - ob_start(); - var_dump(...$vars); - - $output = ob_get_clean(); - $output = preg_replace('/\]\=\>\n(\s+)/m', '] => ', $output); - - if (PHP_SAPI == 'cli') { - $output = PHP_EOL . $output . PHP_EOL; - } else { - if (!extension_loaded('xdebug')) { - $output = htmlspecialchars($output, ENT_SUBSTITUTE); - } - $output = '
' . $output . '
'; - } - - echo $output; - } -} - -if (!function_exists('env')) { - /** - * 获取环境变量值 - * @access public - * @param string $name 环境变量名(支持二级 .号分割) - * @param string $default 默认值 - * @return mixed - */ - function env(string $name = null, $default = null) - { - return Env::get($name, $default); - } -} - -if (!function_exists('event')) { - /** - * 触发事件 - * @param mixed $event 事件名(或者类名) - * @param mixed $args 参数 - * @return mixed - */ - function event($event, $args = null) - { - return Event::trigger($event, $args); - } -} - -if (!function_exists('halt')) { - /** - * 调试变量并且中断输出 - * @param mixed $vars 调试变量或者信息 - */ - function halt(...$vars) - { - dump(...$vars); - - throw new HttpResponseException(Response::create()); - } -} - -if (!function_exists('input')) { - /** - * 获取输入数据 支持默认值和过滤 - * @param string $key 获取的变量名 - * @param mixed $default 默认值 - * @param string $filter 过滤方法 - * @return mixed - */ - function input(string $key = '', $default = null, $filter = '') - { - if (0 === strpos($key, '?')) { - $key = substr($key, 1); - $has = true; - } - - if ($pos = strpos($key, '.')) { - // 指定参数来源 - $method = substr($key, 0, $pos); - if (in_array($method, ['get', 'post', 'put', 'patch', 'delete', 'route', 'param', 'request', 'session', 'cookie', 'server', 'env', 'path', 'file'])) { - $key = substr($key, $pos + 1); - if ('server' == $method && is_null($default)) { - $default = ''; - } - } else { - $method = 'param'; - } - } else { - // 默认为自动判断 - $method = 'param'; - } - - return isset($has) ? - request()->has($key, $method) : - request()->$method($key, $default, $filter); - } -} - -if (!function_exists('invoke')) { - /** - * 调用反射实例化对象或者执行方法 支持依赖注入 - * @param mixed $call 类名或者callable - * @param array $args 参数 - * @return mixed - */ - function invoke($call, array $args = []) - { - if (is_callable($call)) { - return Container::getInstance()->invoke($call, $args); - } - - return Container::getInstance()->invokeClass($call, $args); - } -} - -if (!function_exists('json')) { - /** - * 获取\think\response\Json对象实例 - * @param mixed $data 返回的数据 - * @param int $code 状态码 - * @param array $header 头部 - * @param array $options 参数 - * @return \think\response\Json - */ - function json($data = [], $code = 200, $header = [], $options = []): Json - { - return Response::create($data, 'json', $code)->header($header)->options($options); - } -} - -if (!function_exists('jsonp')) { - /** - * 获取\think\response\Jsonp对象实例 - * @param mixed $data 返回的数据 - * @param int $code 状态码 - * @param array $header 头部 - * @param array $options 参数 - * @return \think\response\Jsonp - */ - function jsonp($data = [], $code = 200, $header = [], $options = []): Jsonp - { - return Response::create($data, 'jsonp', $code)->header($header)->options($options); - } -} - -if (!function_exists('lang')) { - /** - * 获取语言变量值 - * @param string $name 语言变量名 - * @param array $vars 动态变量值 - * @param string $lang 语言 - * @return mixed - */ - function lang(string $name, array $vars = [], string $lang = '') - { - return Lang::get($name, $vars, $lang); - } -} - -if (!function_exists('parse_name')) { - /** - * 字符串命名风格转换 - * type 0 将Java风格转换为C的风格 1 将C风格转换为Java的风格 - * @param string $name 字符串 - * @param int $type 转换类型 - * @param bool $ucfirst 首字母是否大写(驼峰规则) - * @return string - */ - function parse_name(string $name, int $type = 0, bool $ucfirst = true): string - { - if ($type) { - $name = preg_replace_callback('/_([a-zA-Z])/', function ($match) { - return strtoupper($match[1]); - }, $name); - - return $ucfirst ? ucfirst($name) : lcfirst($name); - } - - return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_")); - } -} - -if (!function_exists('redirect')) { - /** - * 获取\think\response\Redirect对象实例 - * @param string $url 重定向地址 - * @param int $code 状态码 - * @return \think\response\Redirect - */ - function redirect(string $url, int $code = 302): Redirect - { - return Response::create($url, 'redirect', $code); - } -} - -if (!function_exists('request')) { - /** - * 获取当前Request对象实例 - * @return Request - */ - function request(): \think\Request - { - return app('request'); - } -} - -if (!function_exists('response')) { - /** - * 创建普通 Response 对象实例 - * @param mixed $data 输出数据 - * @param int|string $code 状态码 - * @param array $header 头信息 - * @param string $type - * @return Response - */ - function response($data = '', $code = 200, $header = [], $type = 'html'): Response - { - return Response::create($data, $type, $code)->header($header); - } -} - -if (!function_exists('session')) { - /** - * Session管理 - * @param string $name session名称 - * @param mixed $value session值 - * @return mixed - */ - function session($name = '', $value = '') - { - if (is_null($name)) { - // 清除 - Session::clear(); - } elseif ('' === $name) { - return Session::all(); - } elseif (is_null($value)) { - // 删除 - Session::delete($name); - } elseif ('' === $value) { - // 判断或获取 - return 0 === strpos($name, '?') ? Session::has(substr($name, 1)) : Session::get($name); - } else { - // 设置 - Session::set($name, $value); - } - } -} - -if (!function_exists('token')) { - /** - * 获取Token令牌 - * @param string $name 令牌名称 - * @param mixed $type 令牌生成方法 - * @return string - */ - function token(string $name = '__token__', string $type = 'md5'): string - { - return Request::buildToken($name, $type); - } -} - -if (!function_exists('token_field')) { - /** - * 生成令牌隐藏表单 - * @param string $name 令牌名称 - * @param mixed $type 令牌生成方法 - * @return string - */ - function token_field(string $name = '__token__', string $type = 'md5'): string - { - $token = Request::buildToken($name, $type); - - return ''; - } -} - -if (!function_exists('token_meta')) { - /** - * 生成令牌meta - * @param string $name 令牌名称 - * @param mixed $type 令牌生成方法 - * @return string - */ - function token_meta(string $name = '__token__', string $type = 'md5'): string - { - $token = Request::buildToken($name, $type); - - return ''; - } -} - -if (!function_exists('trace')) { - /** - * 记录日志信息 - * @param mixed $log log信息 支持字符串和数组 - * @param string $level 日志级别 - * @return array|void - */ - function trace($log = '[think]', string $level = 'log') - { - if ('[think]' === $log) { - return Log::getLog(); - } - - Log::record($log, $level); - } -} - -if (!function_exists('url')) { - /** - * Url生成 - * @param string $url 路由地址 - * @param array $vars 变量 - * @param bool|string $suffix 生成的URL后缀 - * @param bool|string $domain 域名 - * @return UrlBuild - */ - function url(string $url = '', array $vars = [], $suffix = true, $domain = false): UrlBuild - { - return Route::buildUrl($url, $vars)->suffix($suffix)->domain($domain); - } -} - -if (!function_exists('validate')) { - /** - * 生成验证对象 - * @param string|array $validate 验证器类名或者验证规则数组 - * @param array $message 错误提示信息 - * @param bool $batch 是否批量验证 - * @param bool $failException 是否抛出异常 - * @return Validate - */ - function validate($validate = '', array $message = [], bool $batch = false, bool $failException = true): Validate - { - if (is_array($validate) || '' === $validate) { - $v = new Validate(); - if (is_array($validate)) { - $v->rule($validate); - } - } else { - if (strpos($validate, '.')) { - // 支持场景 - list($validate, $scene) = explode('.', $validate); - } - - $class = false !== strpos($validate, '\\') ? $validate : app()->parseClass('validate', $validate); - - $v = new $class(); - - if (!empty($scene)) { - $v->scene($scene); - } - } - - return $v->message($message)->batch($batch)->failException($failException); - } -} - -if (!function_exists('view')) { - /** - * 渲染模板输出 - * @param string $template 模板文件 - * @param array $vars 模板变量 - * @param int $code 状态码 - * @param callable $filter 内容过滤 - * @return \think\response\View - */ - function view(string $template = '', $vars = [], $code = 200, $filter = null): View - { - return Response::create($template, 'view', $code)->assign($vars)->filter($filter); - } -} - -if (!function_exists('display')) { - /** - * 渲染模板输出 - * @param string $content 渲染内容 - * @param array $vars 模板变量 - * @param int $code 状态码 - * @param callable $filter 内容过滤 - * @return \think\response\View - */ - function display(string $content, $vars = [], $code = 200, $filter = null): View - { - return Response::create($content, 'view', $code)->isContent(true)->assign($vars)->filter($filter); - } -} - -if (!function_exists('xml')) { - /** - * 获取\think\response\Xml对象实例 - * @param mixed $data 返回的数据 - * @param int $code 状态码 - * @param array $header 头部 - * @param array $options 参数 - * @return \think\response\Xml - */ - function xml($data = [], $code = 200, $header = [], $options = []): Xml - { - return Response::create($data, 'xml', $code)->header($header)->options($options); - } -} - -if (!function_exists('app_path')) { - /** - * 获取当前应用目录 - * - * @param string $path - * @return string - */ - function app_path($path = '') - { - return app()->getAppPath() . ($path ? $path . DIRECTORY_SEPARATOR : $path); - } -} - -if (!function_exists('base_path')) { - /** - * 获取应用基础目录 - * - * @param string $path - * @return string - */ - function base_path($path = '') - { - return app()->getBasePath() . ($path ? $path . DIRECTORY_SEPARATOR : $path); - } -} - -if (!function_exists('config_path')) { - /** - * 获取应用配置目录 - * - * @param string $path - * @return string - */ - function config_path($path = '') - { - return app()->getConfigPath() . ($path ? $path . DIRECTORY_SEPARATOR : $path); - } -} - -if (!function_exists('public_path')) { - /** - * 获取web根目录 - * - * @param string $path - * @return string - */ - function public_path($path = '') - { - return app()->getRootPath() . ($path ? ltrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR : $path); - } -} - -if (!function_exists('runtime_path')) { - /** - * 获取应用运行时目录 - * - * @param string $path - * @return string - */ - function runtime_path($path = '') - { - return app()->getRuntimePath() . ($path ? $path . DIRECTORY_SEPARATOR : $path); - } -} - -if (!function_exists('root_path')) { - /** - * 获取项目根目录 - * - * @param string $path - * @return string - */ - function root_path($path = '') - { - return app()->getRootPath() . ($path ? $path . DIRECTORY_SEPARATOR : $path); - } -} diff --git a/vendor/topthink/framework/src/lang/zh-cn.php b/vendor/topthink/framework/src/lang/zh-cn.php deleted file mode 100644 index 83d8a1e89..000000000 --- a/vendor/topthink/framework/src/lang/zh-cn.php +++ /dev/null @@ -1,148 +0,0 @@ - -// +---------------------------------------------------------------------- - -// 核心中文语言包 -return [ - // 系统错误提示 - 'Undefined variable' => '未定义变量', - 'Undefined index' => '未定义数组索引', - 'Undefined offset' => '未定义数组下标', - 'Parse error' => '语法解析错误', - 'Type error' => '类型错误', - 'Fatal error' => '致命错误', - 'syntax error' => '语法错误', - - // 框架核心错误提示 - 'dispatch type not support' => '不支持的调度类型', - 'method param miss' => '方法参数错误', - 'method not exists' => '方法不存在', - 'function not exists' => '函数不存在', - 'app not exists' => '应用不存在', - 'controller not exists' => '控制器不存在', - 'class not exists' => '类不存在', - 'property not exists' => '类的属性不存在', - 'template not exists' => '模板文件不存在', - 'illegal controller name' => '非法的控制器名称', - 'illegal action name' => '非法的操作名称', - 'url suffix deny' => '禁止的URL后缀访问', - 'Undefined cache config' => '缓存配置未定义', - 'Route Not Found' => '当前访问路由未定义或不匹配', - 'Undefined db config' => '数据库配置未定义', - 'Undefined log config' => '日志配置未定义', - 'Undefined db type' => '未定义数据库类型', - 'variable type error' => '变量类型错误', - 'PSR-4 error' => 'PSR-4 规范错误', - 'not support type' => '不支持的分页索引字段类型', - 'not support total' => '简洁模式下不能获取数据总数', - 'not support last' => '简洁模式下不能获取最后一页', - 'error session handler' => '错误的SESSION处理器类', - 'not allow php tag' => '模板不允许使用PHP语法', - 'not support' => '不支持', - 'database config error' => '数据库配置信息错误', - 'redisd master' => 'Redisd 主服务器错误', - 'redisd slave' => 'Redisd 从服务器错误', - 'must run at sae' => '必须在SAE运行', - 'memcache init error' => '未开通Memcache服务,请在SAE管理平台初始化Memcache服务', - 'KVDB init error' => '没有初始化KVDB,请在SAE管理平台初始化KVDB服务', - 'fields not exists' => '数据表字段不存在', - 'where express error' => '查询表达式错误', - 'no data to update' => '没有任何数据需要更新', - 'miss data to insert' => '缺少需要写入的数据', - 'miss complex primary data' => '缺少复合主键数据', - 'miss update condition' => '缺少更新条件', - 'model data Not Found' => '模型数据不存在', - 'table data not Found' => '表数据不存在', - 'delete without condition' => '没有条件不会执行删除操作', - 'miss relation data' => '缺少关联表数据', - 'tag attr must' => '模板标签属性必须', - 'tag error' => '模板标签错误', - 'cache write error' => '缓存写入失败', - 'sae mc write error' => 'SAE mc 写入错误', - 'route name not exists' => '路由标识不存在(或参数不够)', - 'invalid request' => '非法请求', - 'bind attr has exists' => '模型的属性已经存在', - 'relation data not exists' => '关联数据不存在', - 'relation not support' => '关联不支持', - 'chunk not support order' => 'Chunk不支持调用order方法', - 'route pattern error' => '路由变量规则定义错误', - 'route behavior will not support' => '路由行为废弃(使用中间件替代)', - 'closure not support cache(true)' => '使用闭包查询不支持cache(true),请指定缓存Key', - - // 上传错误信息 - 'unknown upload error' => '未知上传错误!', - 'file write error' => '文件写入失败!', - 'upload temp dir not found' => '找不到临时文件夹!', - 'no file to uploaded' => '没有文件被上传!', - 'only the portion of file is uploaded' => '文件只有部分被上传!', - 'upload File size exceeds the maximum value' => '上传文件大小超过了最大值!', - 'upload write error' => '文件上传保存错误!', - 'has the same filename: {:filename}' => '存在同名文件:{:filename}', - 'upload illegal files' => '非法上传文件', - 'illegal image files' => '非法图片文件', - 'extensions to upload is not allowed' => '上传文件后缀不允许', - 'mimetype to upload is not allowed' => '上传文件MIME类型不允许!', - 'filesize not match' => '上传文件大小不符!', - 'directory {:path} creation failed' => '目录 {:path} 创建失败!', - - 'The middleware must return Response instance' => '中间件方法必须返回Response对象实例', - 'The queue was exhausted, with no response returned' => '中间件队列为空', - // Validate Error Message - ':attribute require' => ':attribute不能为空', - ':attribute must' => ':attribute必须', - ':attribute must be numeric' => ':attribute必须是数字', - ':attribute must be integer' => ':attribute必须是整数', - ':attribute must be float' => ':attribute必须是浮点数', - ':attribute must be bool' => ':attribute必须是布尔值', - ':attribute not a valid email address' => ':attribute格式不符', - ':attribute not a valid mobile' => ':attribute格式不符', - ':attribute must be a array' => ':attribute必须是数组', - ':attribute must be yes,on or 1' => ':attribute必须是yes、on或者1', - ':attribute not a valid datetime' => ':attribute不是一个有效的日期或时间格式', - ':attribute not a valid file' => ':attribute不是有效的上传文件', - ':attribute not a valid image' => ':attribute不是有效的图像文件', - ':attribute must be alpha' => ':attribute只能是字母', - ':attribute must be alpha-numeric' => ':attribute只能是字母和数字', - ':attribute must be alpha-numeric, dash, underscore' => ':attribute只能是字母、数字和下划线_及破折号-', - ':attribute not a valid domain or ip' => ':attribute不是有效的域名或者IP', - ':attribute must be chinese' => ':attribute只能是汉字', - ':attribute must be chinese or alpha' => ':attribute只能是汉字、字母', - ':attribute must be chinese,alpha-numeric' => ':attribute只能是汉字、字母和数字', - ':attribute must be chinese,alpha-numeric,underscore, dash' => ':attribute只能是汉字、字母、数字和下划线_及破折号-', - ':attribute not a valid url' => ':attribute不是有效的URL地址', - ':attribute not a valid ip' => ':attribute不是有效的IP地址', - ':attribute must be dateFormat of :rule' => ':attribute必须使用日期格式 :rule', - ':attribute must be in :rule' => ':attribute必须在 :rule 范围内', - ':attribute be notin :rule' => ':attribute不能在 :rule 范围内', - ':attribute must between :1 - :2' => ':attribute只能在 :1 - :2 之间', - ':attribute not between :1 - :2' => ':attribute不能在 :1 - :2 之间', - 'size of :attribute must be :rule' => ':attribute长度不符合要求 :rule', - 'max size of :attribute must be :rule' => ':attribute长度不能超过 :rule', - 'min size of :attribute must be :rule' => ':attribute长度不能小于 :rule', - ':attribute cannot be less than :rule' => ':attribute日期不能小于 :rule', - ':attribute cannot exceed :rule' => ':attribute日期不能超过 :rule', - ':attribute not within :rule' => '不在有效期内 :rule', - 'access IP is not allowed' => '不允许的IP访问', - 'access IP denied' => '禁止的IP访问', - ':attribute out of accord with :2' => ':attribute和确认字段:2不一致', - ':attribute cannot be same with :2' => ':attribute和比较字段:2不能相同', - ':attribute must greater than or equal :rule' => ':attribute必须大于等于 :rule', - ':attribute must greater than :rule' => ':attribute必须大于 :rule', - ':attribute must less than or equal :rule' => ':attribute必须小于等于 :rule', - ':attribute must less than :rule' => ':attribute必须小于 :rule', - ':attribute must equal :rule' => ':attribute必须等于 :rule', - ':attribute has exists' => ':attribute已存在', - ':attribute not conform to the rules' => ':attribute不符合指定规则', - 'invalid Request method' => '无效的请求类型', - 'invalid token' => '令牌数据无效', - 'not conform to the rules' => '规则错误', - - 'record has update' => '记录已经被更新了', -]; diff --git a/vendor/topthink/framework/src/think/App.php b/vendor/topthink/framework/src/think/App.php deleted file mode 100644 index f64d7953e..000000000 --- a/vendor/topthink/framework/src/think/App.php +++ /dev/null @@ -1,610 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use think\event\AppInit; -use think\helper\Str; -use think\initializer\BootService; -use think\initializer\Error; -use think\initializer\RegisterService; - -/** - * App 基础类 - * @property Route $route - * @property Config $config - * @property Cache $cache - * @property Request $request - * @property Http $http - * @property Console $console - * @property Env $env - * @property Event $event - * @property Middleware $middleware - * @property Log $log - * @property Lang $lang - * @property Db $db - * @property Cookie $cookie - * @property Session $session - * @property Validate $validate - * @property Filesystem $filesystem - */ -class App extends Container -{ - const VERSION = '6.0.0'; - - /** - * 应用调试模式 - * @var bool - */ - protected $appDebug = false; - - /** - * 应用开始时间 - * @var float - */ - protected $beginTime; - - /** - * 应用内存初始占用 - * @var integer - */ - protected $beginMem; - - /** - * 当前应用类库命名空间 - * @var string - */ - protected $namespace = 'app'; - - /** - * 应用根目录 - * @var string - */ - protected $rootPath = ''; - - /** - * 框架目录 - * @var string - */ - protected $thinkPath = ''; - - /** - * 应用目录 - * @var string - */ - protected $appPath = ''; - - /** - * Runtime目录 - * @var string - */ - protected $runtimePath = ''; - - /** - * 路由定义目录 - * @var string - */ - protected $routePath = ''; - - /** - * 配置后缀 - * @var string - */ - protected $configExt = '.php'; - - /** - * 应用初始化器 - * @var array - */ - protected $initializers = [ - Error::class, - RegisterService::class, - BootService::class, - ]; - - /** - * 注册的系统服务 - * @var array - */ - protected $services = []; - - /** - * 初始化 - * @var bool - */ - protected $initialized = false; - - /** - * 容器绑定标识 - * @var array - */ - protected $bind = [ - 'app' => App::class, - 'cache' => Cache::class, - 'config' => Config::class, - 'console' => Console::class, - 'cookie' => Cookie::class, - 'db' => Db::class, - 'env' => Env::class, - 'event' => Event::class, - 'http' => Http::class, - 'lang' => Lang::class, - 'log' => Log::class, - 'middleware' => Middleware::class, - 'request' => Request::class, - 'response' => Response::class, - 'route' => Route::class, - 'session' => Session::class, - 'validate' => Validate::class, - 'view' => View::class, - 'filesystem' => Filesystem::class, - 'think\DbManager' => Db::class, - 'think\LogManager' => Log::class, - 'think\CacheManager' => Cache::class, - - // 接口依赖注入 - 'Psr\Log\LoggerInterface' => Log::class, - ]; - - /** - * 架构方法 - * @access public - * @param string $rootPath 应用根目录 - */ - public function __construct(string $rootPath = '') - { - $this->thinkPath = dirname(__DIR__) . DIRECTORY_SEPARATOR; - $this->rootPath = $rootPath ? rtrim($rootPath, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR : $this->getDefaultRootPath(); - $this->appPath = $this->rootPath . 'app' . DIRECTORY_SEPARATOR; - $this->runtimePath = $this->rootPath . 'runtime' . DIRECTORY_SEPARATOR; - - if (is_file($this->appPath . 'provider.php')) { - $this->bind(include $this->appPath . 'provider.php'); - } - - static::setInstance($this); - - $this->instance('app', $this); - $this->instance('think\Container', $this); - } - - /** - * 注册服务 - * @access public - * @param Service|string $service 服务 - * @param bool $force 强制重新注册 - * @return Service|null - */ - public function register($service, bool $force = false) - { - $registered = $this->getService($service); - - if ($registered && !$force) { - return $registered; - } - - if (is_string($service)) { - $service = new $service($this); - } - - if (method_exists($service, 'register')) { - $service->register(); - } - - if (property_exists($service, 'bind')) { - $this->bind($service->bind); - } - - $this->services[] = $service; - } - - /** - * 执行服务 - * @access public - * @param Service $service 服务 - * @return mixed - */ - public function bootService($service) - { - if (method_exists($service, 'boot')) { - return $this->invoke([$service, 'boot']); - } - } - - /** - * 获取服务 - * @param string|Service $service - * @return Service|null - */ - public function getService($service) - { - $name = is_string($service) ? $service : get_class($service); - return array_values(array_filter($this->services, function ($value) use ($name) { - return $value instanceof $name; - }, ARRAY_FILTER_USE_BOTH))[0] ?? null; - } - - /** - * 开启应用调试模式 - * @access public - * @param bool $debug 开启应用调试模式 - * @return $this - */ - public function debug(bool $debug = true) - { - $this->appDebug = $debug; - return $this; - } - - /** - * 是否为调试模式 - * @access public - * @return bool - */ - public function isDebug(): bool - { - return $this->appDebug; - } - - /** - * 设置应用命名空间 - * @access public - * @param string $namespace 应用命名空间 - * @return $this - */ - public function setNamespace(string $namespace) - { - $this->namespace = $namespace; - return $this; - } - - /** - * 获取应用类库命名空间 - * @access public - * @return string - */ - public function getNamespace(): string - { - return $this->namespace; - } - - /** - * 获取框架版本 - * @access public - * @return string - */ - public function version(): string - { - return static::VERSION; - } - - /** - * 获取应用根目录 - * @access public - * @return string - */ - public function getRootPath(): string - { - return $this->rootPath; - } - - /** - * 获取应用基础目录 - * @access public - * @return string - */ - public function getBasePath(): string - { - return $this->rootPath . 'app' . DIRECTORY_SEPARATOR; - } - - /** - * 获取当前应用目录 - * @access public - * @return string - */ - public function getAppPath(): string - { - return $this->appPath; - } - - /** - * 设置应用目录 - * @param string $path 应用目录 - */ - public function setAppPath(string $path) - { - $this->appPath = $path; - } - - /** - * 获取应用运行时目录 - * @access public - * @return string - */ - public function getRuntimePath(): string - { - return $this->runtimePath; - } - - /** - * 设置runtime目录 - * @param string $path 定义目录 - */ - public function setRuntimePath(string $path): void - { - $this->runtimePath = $path; - } - - /** - * 获取核心框架目录 - * @access public - * @return string - */ - public function getThinkPath(): string - { - return $this->thinkPath; - } - - /** - * 获取应用配置目录 - * @access public - * @return string - */ - public function getConfigPath(): string - { - return $this->rootPath . 'config' . DIRECTORY_SEPARATOR; - } - - /** - * 获取配置后缀 - * @access public - * @return string - */ - public function getConfigExt(): string - { - return $this->configExt; - } - - /** - * 获取应用开启时间 - * @access public - * @return float - */ - public function getBeginTime(): float - { - return $this->beginTime; - } - - /** - * 获取应用初始内存占用 - * @access public - * @return integer - */ - public function getBeginMem(): int - { - return $this->beginMem; - } - - /** - * 初始化应用 - * @access public - * @return $this - */ - public function initialize() - { - $this->initialized = true; - - $this->beginTime = microtime(true); - $this->beginMem = memory_get_usage(); - - // 加载环境变量 - if (is_file($this->rootPath . '.env')) { - $this->env->load($this->rootPath . '.env'); - } - - $this->configExt = $this->env->get('config_ext', '.php'); - - $this->debugModeInit(); - - // 加载全局初始化文件 - $this->load(); - - // 加载框架默认语言包 - $langSet = $this->lang->defaultLangSet(); - - $this->lang->load($this->thinkPath . 'lang' . DIRECTORY_SEPARATOR . $langSet . '.php'); - - // 加载应用默认语言包 - $this->loadLangPack($langSet); - - // 监听AppInit - $this->event->trigger(AppInit::class); - - date_default_timezone_set($this->config->get('app.default_timezone', 'Asia/Shanghai')); - - // 初始化 - foreach ($this->initializers as $initializer) { - $this->make($initializer)->init($this); - } - - return $this; - } - - /** - * 是否初始化过 - * @return bool - */ - public function initialized() - { - return $this->initialized; - } - - /** - * 加载语言包 - * @param string $langset 语言 - * @return void - */ - public function loadLangPack($langset) - { - if (empty($langset)) { - return; - } - - // 加载系统语言包 - $files = glob($this->appPath . 'lang' . DIRECTORY_SEPARATOR . $langset . '.*'); - $this->lang->load($files); - - // 加载扩展(自定义)语言包 - $list = $this->config->get('lang.extend_list', []); - - if (isset($list[$langset])) { - $this->lang->load($list[$langset]); - } - } - - /** - * 引导应用 - * @access public - * @return void - */ - public function boot(): void - { - array_walk($this->services, function ($service) { - $this->bootService($service); - }); - } - - /** - * 加载应用文件和配置 - * @access protected - * @return void - */ - protected function load(): void - { - $appPath = $this->getAppPath(); - - if (is_file($appPath . 'common.php')) { - include_once $appPath . 'common.php'; - } - - include_once $this->thinkPath . 'helper.php'; - - $configPath = $this->getConfigPath(); - - $files = []; - - if (is_dir($configPath)) { - $files = glob($configPath . '*' . $this->configExt); - } - - foreach ($files as $file) { - $this->config->load($file, pathinfo($file, PATHINFO_FILENAME)); - } - - if (is_file($appPath . 'event.php')) { - $this->loadEvent(include $appPath . 'event.php'); - } - - if (is_file($appPath . 'service.php')) { - $services = include $appPath . 'service.php'; - foreach ($services as $service) { - $this->register($service); - } - } - } - - /** - * 调试模式设置 - * @access protected - * @return void - */ - protected function debugModeInit(): void - { - // 应用调试模式 - if (!$this->appDebug) { - $this->appDebug = $this->env->get('app_debug') ? true : false; - ini_set('display_errors', 'Off'); - } - - if (!$this->runningInConsole()) { - //重新申请一块比较大的buffer - if (ob_get_level() > 0) { - $output = ob_get_clean(); - } - ob_start(); - if (!empty($output)) { - echo $output; - } - } - } - - /** - * 注册应用事件 - * @access protected - * @param array $event 事件数据 - * @return void - */ - public function loadEvent(array $event): void - { - if (isset($event['bind'])) { - $this->event->bind($event['bind']); - } - - if (isset($event['listen'])) { - $this->event->listenEvents($event['listen']); - } - - if (isset($event['subscribe'])) { - $this->event->subscribe($event['subscribe']); - } - } - - /** - * 解析应用类的类名 - * @access public - * @param string $layer 层名 controller model ... - * @param string $name 类名 - * @return string - */ - public function parseClass(string $layer, string $name): string - { - $name = str_replace(['/', '.'], '\\', $name); - $array = explode('\\', $name); - $class = Str::studly(array_pop($array)); - $path = $array ? implode('\\', $array) . '\\' : ''; - - return $this->namespace . '\\' . $layer . '\\' . $path . $class; - } - - /** - * 是否运行在命令行下 - * @return bool - */ - public function runningInConsole() - { - return php_sapi_name() === 'cli' || php_sapi_name() === 'phpdbg'; - } - - /** - * 获取应用根目录 - * @access protected - * @return string - */ - protected function getDefaultRootPath(): string - { - $path = dirname(dirname(dirname(dirname($this->thinkPath)))); - - return $path . DIRECTORY_SEPARATOR; - } - -} diff --git a/vendor/topthink/framework/src/think/Cache.php b/vendor/topthink/framework/src/think/Cache.php deleted file mode 100644 index 4bc99c27c..000000000 --- a/vendor/topthink/framework/src/think/Cache.php +++ /dev/null @@ -1,197 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use Psr\SimpleCache\CacheInterface; -use think\cache\Driver; -use think\cache\TagSet; -use think\exception\InvalidArgumentException; -use think\helper\Arr; - -/** - * 缓存管理类 - * @mixin Driver - * @mixin \think\cache\driver\File - */ -class Cache extends Manager implements CacheInterface -{ - - protected $namespace = '\\think\\cache\\driver\\'; - - /** - * 默认驱动 - * @return string|null - */ - public function getDefaultDriver() - { - return $this->getConfig('default'); - } - - /** - * 获取缓存配置 - * @access public - * @param null|string $name 名称 - * @param mixed $default 默认值 - * @return mixed - */ - public function getConfig(string $name = null, $default = null) - { - if (!is_null($name)) { - return $this->app->config->get('cache.' . $name, $default); - } - - return $this->app->config->get('cache'); - } - - /** - * 获取驱动配置 - * @param string $store - * @param string $name - * @param null $default - * @return array - */ - public function getStoreConfig(string $store, string $name = null, $default = null) - { - if ($config = $this->getConfig("stores.{$store}")) { - return Arr::get($config, $name, $default); - } - - throw new \InvalidArgumentException("Store [$store] not found."); - } - - protected function resolveType(string $name) - { - return $this->getStoreConfig($name, 'type', 'file'); - } - - protected function resolveConfig(string $name) - { - return $this->getStoreConfig($name); - } - - /** - * 连接或者切换缓存 - * @access public - * @param string $name 连接配置名 - * @return Driver - */ - public function store(string $name = null) - { - return $this->driver($name); - } - - /** - * 清空缓冲池 - * @access public - * @return bool - */ - public function clear(): bool - { - return $this->store()->clear(); - } - - /** - * 读取缓存 - * @access public - * @param string $key 缓存变量名 - * @param mixed $default 默认值 - * @return mixed - */ - public function get($key, $default = null) - { - return $this->store()->get($key, $default); - } - - /** - * 写入缓存 - * @access public - * @param string $key 缓存变量名 - * @param mixed $value 存储数据 - * @param int|\DateTime $ttl 有效时间 0为永久 - * @return bool - */ - public function set($key, $value, $ttl = null): bool - { - return $this->store()->set($key, $value, $ttl); - } - - /** - * 删除缓存 - * @access public - * @param string $key 缓存变量名 - * @return bool - */ - public function delete($key): bool - { - return $this->store()->delete($key); - } - - /** - * 读取缓存 - * @access public - * @param iterable $keys 缓存变量名 - * @param mixed $default 默认值 - * @return iterable - * @throws InvalidArgumentException - */ - public function getMultiple($keys, $default = null): iterable - { - return $this->store()->getMultiple($keys, $default); - } - - /** - * 写入缓存 - * @access public - * @param iterable $values 缓存数据 - * @param null|int|\DateInterval $ttl 有效时间 0为永久 - * @return bool - */ - public function setMultiple($values, $ttl = null): bool - { - return $this->store()->setMultiple($values, $ttl); - } - - /** - * 删除缓存 - * @access public - * @param iterable $keys 缓存变量名 - * @return bool - * @throws InvalidArgumentException - */ - public function deleteMultiple($keys): bool - { - return $this->store()->deleteMultiple($keys); - } - - /** - * 判断缓存是否存在 - * @access public - * @param string $key 缓存变量名 - * @return bool - */ - public function has($key): bool - { - return $this->store()->has($key); - } - - /** - * 缓存标签 - * @access public - * @param string|array $name 标签名 - * @return TagSet - */ - public function tag($name): TagSet - { - return $this->store()->tag($name); - } -} diff --git a/vendor/topthink/framework/src/think/Config.php b/vendor/topthink/framework/src/think/Config.php deleted file mode 100644 index 78933adca..000000000 --- a/vendor/topthink/framework/src/think/Config.php +++ /dev/null @@ -1,193 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -/** - * 配置管理类 - * @package think - */ -class Config -{ - /** - * 配置参数 - * @var array - */ - protected $config = []; - - /** - * 配置文件目录 - * @var string - */ - protected $path; - - /** - * 配置文件后缀 - * @var string - */ - protected $ext; - - /** - * 构造方法 - * @access public - */ - public function __construct(string $path = null, string $ext = '.php') - { - $this->path = $path ?: ''; - $this->ext = $ext; - } - - public static function __make(App $app) - { - $path = $app->getConfigPath(); - $ext = $app->getConfigExt(); - - return new static($path, $ext); - } - - /** - * 加载配置文件(多种格式) - * @access public - * @param string $file 配置文件名 - * @param string $name 一级配置名 - * @return array - */ - public function load(string $file, string $name = ''): array - { - if (is_file($file)) { - $filename = $file; - } elseif (is_file($this->path . $file . $this->ext)) { - $filename = $this->path . $file . $this->ext; - } - - if (isset($filename)) { - return $this->parse($filename, $name); - } - - return $this->config; - } - - /** - * 解析配置文件 - * @access public - * @param string $file 配置文件名 - * @param string $name 一级配置名 - * @return array - */ - protected function parse(string $file, string $name): array - { - $type = pathinfo($file, PATHINFO_EXTENSION); - $config = []; - switch ($type) { - case 'php': - $config = include $file; - break; - case 'yml': - case 'yaml': - if (function_exists('yaml_parse_file')) { - $config = yaml_parse_file($file); - } - break; - case 'ini': - $config = parse_ini_file($file, true, INI_SCANNER_TYPED) ?: []; - break; - case 'json': - $config = json_decode(file_get_contents($file), true); - break; - } - - return is_array($config) ? $this->set($config, strtolower($name)) : []; - } - - /** - * 检测配置是否存在 - * @access public - * @param string $name 配置参数名(支持多级配置 .号分割) - * @return bool - */ - public function has(string $name): bool - { - return !is_null($this->get($name)); - } - - /** - * 获取一级配置 - * @access protected - * @param string $name 一级配置名 - * @return array - */ - protected function pull(string $name): array - { - $name = strtolower($name); - - return $this->config[$name] ?? []; - } - - /** - * 获取配置参数 为空则获取所有配置 - * @access public - * @param string $name 配置参数名(支持多级配置 .号分割) - * @param mixed $default 默认值 - * @return mixed - */ - public function get(string $name = null, $default = null) - { - // 无参数时获取所有 - if (empty($name)) { - return $this->config; - } - - if (false === strpos($name, '.')) { - return $this->pull($name); - } - - $name = explode('.', $name); - $name[0] = strtolower($name[0]); - $config = $this->config; - - // 按.拆分成多维数组进行判断 - foreach ($name as $val) { - if (isset($config[$val])) { - $config = $config[$val]; - } else { - return $default; - } - } - - return $config; - } - - /** - * 设置配置参数 name为数组则为批量设置 - * @access public - * @param array $config 配置参数 - * @param string $name 配置名 - * @return array - */ - public function set(array $config, string $name = null): array - { - if (!empty($name)) { - if (isset($this->config[$name])) { - $result = array_merge($this->config[$name], $config); - } else { - $result = $config; - } - - $this->config[$name] = $result; - } else { - $result = $this->config = array_merge($this->config, array_change_key_case($config)); - } - - return $result; - } - -} diff --git a/vendor/topthink/framework/src/think/Console.php b/vendor/topthink/framework/src/think/Console.php deleted file mode 100644 index a1398d5d9..000000000 --- a/vendor/topthink/framework/src/think/Console.php +++ /dev/null @@ -1,732 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use Closure; -use InvalidArgumentException; -use LogicException; -use think\console\Command; -use think\console\command\Clear; -use think\console\command\Help; -use think\console\command\Help as HelpCommand; -use think\console\command\Lists; -use think\console\command\make\Command as MakeCommand; -use think\console\command\make\Controller; -use think\console\command\make\Event; -use think\console\command\make\Listener; -use think\console\command\make\Middleware; -use think\console\command\make\Model; -use think\console\command\make\Service; -use think\console\command\make\Subscribe; -use think\console\command\make\Validate; -use think\console\command\optimize\Route; -use think\console\command\optimize\Schema; -use think\console\command\RouteList; -use think\console\command\RunServer; -use think\console\command\ServiceDiscover; -use think\console\command\VendorPublish; -use think\console\command\Version; -use think\console\Input; -use think\console\input\Argument as InputArgument; -use think\console\input\Definition as InputDefinition; -use think\console\input\Option as InputOption; -use think\console\Output; -use think\console\output\driver\Buffer; - -/** - * 控制台应用管理类 - */ -class Console -{ - - protected $app; - - /** @var Command[] */ - protected $commands = []; - - protected $wantHelps = false; - - protected $catchExceptions = true; - protected $autoExit = true; - protected $definition; - protected $defaultCommand = 'list'; - - protected $defaultCommands = [ - 'help' => Help::class, - 'list' => Lists::class, - 'clear' => Clear::class, - 'make:command' => MakeCommand::class, - 'make:controller' => Controller::class, - 'make:model' => Model::class, - 'make:middleware' => Middleware::class, - 'make:validate' => Validate::class, - 'make:event' => Event::class, - 'make:listener' => Listener::class, - 'make:service' => Service::class, - 'make:subscribe' => Subscribe::class, - 'optimize:route' => Route::class, - 'optimize:schema' => Schema::class, - 'run' => RunServer::class, - 'version' => Version::class, - 'route:list' => RouteList::class, - 'service:discover' => ServiceDiscover::class, - 'vendor:publish' => VendorPublish::class, - ]; - - /** - * 启动器 - * @var array - */ - protected static $startCallbacks = []; - - public function __construct(App $app) - { - $this->app = $app; - - if (!$this->app->initialized()) { - $this->app->initialize(); - } - - $this->definition = $this->getDefaultInputDefinition(); - - //加载指令 - $this->loadCommands(); - - $this->start(); - } - - /** - * 添加初始化器 - * @param Closure $callback - */ - public static function starting(Closure $callback): void - { - static::$startCallbacks[] = $callback; - } - - /** - * 清空启动器 - */ - public static function flushStartCallbacks(): void - { - static::$startCallbacks = []; - } - - /** - * 设置执行用户 - * @param $user - */ - public static function setUser(string $user): void - { - if (extension_loaded('posix')) { - $user = posix_getpwnam($user); - - if (!empty($user)) { - posix_setgid($user['gid']); - posix_setuid($user['uid']); - } - } - } - - /** - * 启动 - */ - protected function start(): void - { - foreach (static::$startCallbacks as $callback) { - $callback($this); - } - } - - /** - * 加载指令 - * @access protected - */ - protected function loadCommands(): void - { - $commands = $this->app->config->get('console.commands', []); - $commands = array_merge($this->defaultCommands, $commands); - - $this->addCommands($commands); - } - - /** - * @access public - * @param string $command - * @param array $parameters - * @param string $driver - * @return Output|Buffer - */ - public function call(string $command, array $parameters = [], string $driver = 'buffer') - { - array_unshift($parameters, $command); - - $input = new Input($parameters); - $output = new Output($driver); - - $this->setCatchExceptions(false); - $this->find($command)->run($input, $output); - - return $output; - } - - /** - * 执行当前的指令 - * @access public - * @return int - * @throws \Exception - * @api - */ - public function run() - { - $input = new Input(); - $output = new Output(); - - $this->configureIO($input, $output); - - try { - $exitCode = $this->doRun($input, $output); - } catch (\Exception $e) { - if (!$this->catchExceptions) { - throw $e; - } - - $output->renderException($e); - - $exitCode = $e->getCode(); - if (is_numeric($exitCode)) { - $exitCode = (int) $exitCode; - if (0 === $exitCode) { - $exitCode = 1; - } - } else { - $exitCode = 1; - } - } - - if ($this->autoExit) { - if ($exitCode > 255) { - $exitCode = 255; - } - - exit($exitCode); - } - - return $exitCode; - } - - /** - * 执行指令 - * @access public - * @param Input $input - * @param Output $output - * @return int - */ - public function doRun(Input $input, Output $output) - { - if (true === $input->hasParameterOption(['--version', '-V'])) { - $output->writeln($this->getLongVersion()); - - return 0; - } - - $name = $this->getCommandName($input); - - if (true === $input->hasParameterOption(['--help', '-h'])) { - if (!$name) { - $name = 'help'; - $input = new Input(['help']); - } else { - $this->wantHelps = true; - } - } - - if (!$name) { - $name = $this->defaultCommand; - $input = new Input([$this->defaultCommand]); - } - - $command = $this->find($name); - - return $this->doRunCommand($command, $input, $output); - } - - /** - * 设置输入参数定义 - * @access public - * @param InputDefinition $definition - */ - public function setDefinition(InputDefinition $definition): void - { - $this->definition = $definition; - } - - /** - * 获取输入参数定义 - * @access public - * @return InputDefinition The InputDefinition instance - */ - public function getDefinition(): InputDefinition - { - return $this->definition; - } - - /** - * Gets the help message. - * @access public - * @return string A help message. - */ - public function getHelp(): string - { - return $this->getLongVersion(); - } - - /** - * 是否捕获异常 - * @access public - * @param bool $boolean - * @api - */ - public function setCatchExceptions(bool $boolean): void - { - $this->catchExceptions = $boolean; - } - - /** - * 是否自动退出 - * @access public - * @param bool $boolean - * @api - */ - public function setAutoExit(bool $boolean): void - { - $this->autoExit = $boolean; - } - - /** - * 获取完整的版本号 - * @access public - * @return string - */ - public function getLongVersion(): string - { - if ($this->app->version()) { - return sprintf('version %s', $this->app->version()); - } - - return 'Console Tool'; - } - - /** - * 添加指令集 - * @access public - * @param array $commands - */ - public function addCommands(array $commands): void - { - foreach ($commands as $key => $command) { - if (is_subclass_of($command, Command::class)) { - // 注册指令 - $this->addCommand($command, is_numeric($key) ? '' : $key); - } - } - } - - /** - * 添加一个指令 - * @access public - * @param string|Command $command 指令对象或者指令类名 - * @param string $name 指令名 留空则自动获取 - * @return Command|void - */ - public function addCommand($command, string $name = '') - { - if ($name) { - $this->commands[$name] = $command; - return; - } - - if (is_string($command)) { - $command = $this->app->invokeClass($command); - } - - $command->setConsole($this); - - if (!$command->isEnabled()) { - $command->setConsole(null); - return; - } - - $command->setApp($this->app); - - if (null === $command->getDefinition()) { - throw new LogicException(sprintf('Command class "%s" is not correctly initialized. You probably forgot to call the parent constructor.', get_class($command))); - } - - $this->commands[$command->getName()] = $command; - - foreach ($command->getAliases() as $alias) { - $this->commands[$alias] = $command; - } - - return $command; - } - - /** - * 获取指令 - * @access public - * @param string $name 指令名称 - * @return Command - * @throws InvalidArgumentException - */ - public function getCommand(string $name): Command - { - if (!isset($this->commands[$name])) { - throw new InvalidArgumentException(sprintf('The command "%s" does not exist.', $name)); - } - - $command = $this->commands[$name]; - - if (is_string($command)) { - $command = $this->app->invokeClass($command); - /** @var Command $command */ - $command->setConsole($this); - $command->setApp($this->app); - } - - if ($this->wantHelps) { - $this->wantHelps = false; - - /** @var HelpCommand $helpCommand */ - $helpCommand = $this->getCommand('help'); - $helpCommand->setCommand($command); - - return $helpCommand; - } - - return $command; - } - - /** - * 某个指令是否存在 - * @access public - * @param string $name 指令名称 - * @return bool - */ - public function hasCommand(string $name): bool - { - return isset($this->commands[$name]); - } - - /** - * 获取所有的命名空间 - * @access public - * @return array - */ - public function getNamespaces(): array - { - $namespaces = []; - foreach ($this->commands as $key => $command) { - if (is_string($command)) { - $namespaces = array_merge($namespaces, $this->extractAllNamespaces($key)); - } else { - $namespaces = array_merge($namespaces, $this->extractAllNamespaces($command->getName())); - - foreach ($command->getAliases() as $alias) { - $namespaces = array_merge($namespaces, $this->extractAllNamespaces($alias)); - } - } - } - - return array_values(array_unique(array_filter($namespaces))); - } - - /** - * 查找注册命名空间中的名称或缩写。 - * @access public - * @param string $namespace - * @return string - * @throws InvalidArgumentException - */ - public function findNamespace(string $namespace): string - { - $allNamespaces = $this->getNamespaces(); - $expr = preg_replace_callback('{([^:]+|)}', function ($matches) { - return preg_quote($matches[1]) . '[^:]*'; - }, $namespace); - $namespaces = preg_grep('{^' . $expr . '}', $allNamespaces); - - if (empty($namespaces)) { - $message = sprintf('There are no commands defined in the "%s" namespace.', $namespace); - - if ($alternatives = $this->findAlternatives($namespace, $allNamespaces)) { - if (1 == count($alternatives)) { - $message .= "\n\nDid you mean this?\n "; - } else { - $message .= "\n\nDid you mean one of these?\n "; - } - - $message .= implode("\n ", $alternatives); - } - - throw new InvalidArgumentException($message); - } - - $exact = in_array($namespace, $namespaces, true); - if (count($namespaces) > 1 && !$exact) { - throw new InvalidArgumentException(sprintf('The namespace "%s" is ambiguous (%s).', $namespace, $this->getAbbreviationSuggestions(array_values($namespaces)))); - } - - return $exact ? $namespace : reset($namespaces); - } - - /** - * 查找指令 - * @access public - * @param string $name 名称或者别名 - * @return Command - * @throws InvalidArgumentException - */ - public function find(string $name): Command - { - $allCommands = array_keys($this->commands); - - $expr = preg_replace_callback('{([^:]+|)}', function ($matches) { - return preg_quote($matches[1]) . '[^:]*'; - }, $name); - - $commands = preg_grep('{^' . $expr . '}', $allCommands); - - if (empty($commands) || count(preg_grep('{^' . $expr . '$}', $commands)) < 1) { - if (false !== $pos = strrpos($name, ':')) { - $this->findNamespace(substr($name, 0, $pos)); - } - - $message = sprintf('Command "%s" is not defined.', $name); - - if ($alternatives = $this->findAlternatives($name, $allCommands)) { - if (1 == count($alternatives)) { - $message .= "\n\nDid you mean this?\n "; - } else { - $message .= "\n\nDid you mean one of these?\n "; - } - $message .= implode("\n ", $alternatives); - } - - throw new InvalidArgumentException($message); - } - - $exact = in_array($name, $commands, true); - if (count($commands) > 1 && !$exact) { - $suggestions = $this->getAbbreviationSuggestions(array_values($commands)); - - throw new InvalidArgumentException(sprintf('Command "%s" is ambiguous (%s).', $name, $suggestions)); - } - - return $this->getCommand($exact ? $name : reset($commands)); - } - - /** - * 获取所有的指令 - * @access public - * @param string $namespace 命名空间 - * @return Command[] - * @api - */ - public function all(string $namespace = null): array - { - if (null === $namespace) { - return $this->commands; - } - - $commands = []; - foreach ($this->commands as $name => $command) { - if ($this->extractNamespace($name, substr_count($namespace, ':') + 1) === $namespace) { - $commands[$name] = $command; - } - } - - return $commands; - } - - /** - * 配置基于用户的参数和选项的输入和输出实例。 - * @access protected - * @param Input $input 输入实例 - * @param Output $output 输出实例 - */ - protected function configureIO(Input $input, Output $output): void - { - if (true === $input->hasParameterOption(['--ansi'])) { - $output->setDecorated(true); - } elseif (true === $input->hasParameterOption(['--no-ansi'])) { - $output->setDecorated(false); - } - - if (true === $input->hasParameterOption(['--no-interaction', '-n'])) { - $input->setInteractive(false); - } - - if (true === $input->hasParameterOption(['--quiet', '-q'])) { - $output->setVerbosity(Output::VERBOSITY_QUIET); - } elseif ($input->hasParameterOption('-vvv') || $input->hasParameterOption('--verbose=3') || $input->getParameterOption('--verbose') === 3) { - $output->setVerbosity(Output::VERBOSITY_DEBUG); - } elseif ($input->hasParameterOption('-vv') || $input->hasParameterOption('--verbose=2') || $input->getParameterOption('--verbose') === 2) { - $output->setVerbosity(Output::VERBOSITY_VERY_VERBOSE); - } elseif ($input->hasParameterOption('-v') || $input->hasParameterOption('--verbose=1') || $input->hasParameterOption('--verbose') || $input->getParameterOption('--verbose')) { - $output->setVerbosity(Output::VERBOSITY_VERBOSE); - } - } - - /** - * 执行指令 - * @access protected - * @param Command $command 指令实例 - * @param Input $input 输入实例 - * @param Output $output 输出实例 - * @return int - * @throws \Exception - */ - protected function doRunCommand(Command $command, Input $input, Output $output) - { - return $command->run($input, $output); - } - - /** - * 获取指令的基础名称 - * @access protected - * @param Input $input - * @return string - */ - protected function getCommandName(Input $input): string - { - return $input->getFirstArgument() ?: ''; - } - - /** - * 获取默认输入定义 - * @access protected - * @return InputDefinition - */ - protected function getDefaultInputDefinition(): InputDefinition - { - return new InputDefinition([ - new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'), - new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display this help message'), - new InputOption('--version', '-V', InputOption::VALUE_NONE, 'Display this console version'), - new InputOption('--quiet', '-q', InputOption::VALUE_NONE, 'Do not output any message'), - new InputOption('--verbose', '-v|vv|vvv', InputOption::VALUE_NONE, 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'), - new InputOption('--ansi', '', InputOption::VALUE_NONE, 'Force ANSI output'), - new InputOption('--no-ansi', '', InputOption::VALUE_NONE, 'Disable ANSI output'), - new InputOption('--no-interaction', '-n', InputOption::VALUE_NONE, 'Do not ask any interactive question'), - ]); - } - - /** - * 获取可能的建议 - * @access private - * @param array $abbrevs - * @return string - */ - private function getAbbreviationSuggestions(array $abbrevs): string - { - return sprintf('%s, %s%s', $abbrevs[0], $abbrevs[1], count($abbrevs) > 2 ? sprintf(' and %d more', count($abbrevs) - 2) : ''); - } - - /** - * 返回命名空间部分 - * @access public - * @param string $name 指令 - * @param int $limit 部分的命名空间的最大数量 - * @return string - */ - public function extractNamespace(string $name, int $limit = 0): string - { - $parts = explode(':', $name); - array_pop($parts); - - return implode(':', 0 === $limit ? $parts : array_slice($parts, 0, $limit)); - } - - /** - * 查找可替代的建议 - * @access private - * @param string $name - * @param array|\Traversable $collection - * @return array - */ - private function findAlternatives(string $name, $collection): array - { - $threshold = 1e3; - $alternatives = []; - - $collectionParts = []; - foreach ($collection as $item) { - $collectionParts[$item] = explode(':', $item); - } - - foreach (explode(':', $name) as $i => $subname) { - foreach ($collectionParts as $collectionName => $parts) { - $exists = isset($alternatives[$collectionName]); - if (!isset($parts[$i]) && $exists) { - $alternatives[$collectionName] += $threshold; - continue; - } elseif (!isset($parts[$i])) { - continue; - } - - $lev = levenshtein($subname, $parts[$i]); - if ($lev <= strlen($subname) / 3 || '' !== $subname && false !== strpos($parts[$i], $subname)) { - $alternatives[$collectionName] = $exists ? $alternatives[$collectionName] + $lev : $lev; - } elseif ($exists) { - $alternatives[$collectionName] += $threshold; - } - } - } - - foreach ($collection as $item) { - $lev = levenshtein($name, $item); - if ($lev <= strlen($name) / 3 || false !== strpos($item, $name)) { - $alternatives[$item] = isset($alternatives[$item]) ? $alternatives[$item] - $lev : $lev; - } - } - - $alternatives = array_filter($alternatives, function ($lev) use ($threshold) { - return $lev < 2 * $threshold; - }); - asort($alternatives); - - return array_keys($alternatives); - } - - /** - * 返回所有的命名空间 - * @access private - * @param string $name - * @return array - */ - private function extractAllNamespaces(string $name): array - { - $parts = explode(':', $name, -1); - $namespaces = []; - - foreach ($parts as $part) { - if (count($namespaces)) { - $namespaces[] = end($namespaces) . ':' . $part; - } else { - $namespaces[] = $part; - } - } - - return $namespaces; - } - -} diff --git a/vendor/topthink/framework/src/think/Container.php b/vendor/topthink/framework/src/think/Container.php deleted file mode 100644 index ce8225e6f..000000000 --- a/vendor/topthink/framework/src/think/Container.php +++ /dev/null @@ -1,551 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use ArrayAccess; -use ArrayIterator; -use Closure; -use Countable; -use InvalidArgumentException; -use IteratorAggregate; -use Psr\Container\ContainerInterface; -use ReflectionClass; -use ReflectionException; -use ReflectionFunction; -use ReflectionFunctionAbstract; -use ReflectionMethod; -use think\exception\ClassNotFoundException; -use think\exception\FuncNotFoundException; -use think\helper\Str; - -/** - * 容器管理类 支持PSR-11 - */ -class Container implements ContainerInterface, ArrayAccess, IteratorAggregate, Countable -{ - /** - * 容器对象实例 - * @var Container|Closure - */ - protected static $instance; - - /** - * 容器中的对象实例 - * @var array - */ - protected $instances = []; - - /** - * 容器绑定标识 - * @var array - */ - protected $bind = []; - - /** - * 容器回调 - * @var array - */ - protected $invokeCallback = []; - - /** - * 获取当前容器的实例(单例) - * @access public - * @return static - */ - public static function getInstance() - { - if (is_null(static::$instance)) { - static::$instance = new static; - } - - if (static::$instance instanceof Closure) { - return (static::$instance)(); - } - - return static::$instance; - } - - /** - * 设置当前容器的实例 - * @access public - * @param object|Closure $instance - * @return void - */ - public static function setInstance($instance): void - { - static::$instance = $instance; - } - - /** - * 注册一个容器对象回调 - * - * @param string|Closure $abstract - * @param Closure|null $callback - * @return void - */ - public function resolving($abstract, Closure $callback = null): void - { - if ($abstract instanceof Closure) { - $this->invokeCallback['*'][] = $abstract; - return; - } - - $abstract = $this->getAlias($abstract); - - $this->invokeCallback[$abstract][] = $callback; - } - - /** - * 获取容器中的对象实例 不存在则创建 - * @access public - * @param string $abstract 类名或者标识 - * @param array|true $vars 变量 - * @param bool $newInstance 是否每次创建新的实例 - * @return object - */ - public static function pull(string $abstract, array $vars = [], bool $newInstance = false) - { - return static::getInstance()->make($abstract, $vars, $newInstance); - } - - /** - * 获取容器中的对象实例 - * @access public - * @param string $abstract 类名或者标识 - * @return object - */ - public function get($abstract) - { - if ($this->has($abstract)) { - return $this->make($abstract); - } - - throw new ClassNotFoundException('class not exists: ' . $abstract, $abstract); - } - - /** - * 绑定一个类、闭包、实例、接口实现到容器 - * @access public - * @param string|array $abstract 类标识、接口 - * @param mixed $concrete 要绑定的类、闭包或者实例 - * @return $this - */ - public function bind($abstract, $concrete = null) - { - if (is_array($abstract)) { - foreach ($abstract as $key => $val) { - $this->bind($key, $val); - } - } elseif ($concrete instanceof Closure) { - $this->bind[$abstract] = $concrete; - } elseif (is_object($concrete)) { - $this->instance($abstract, $concrete); - } else { - $abstract = $this->getAlias($abstract); - - $this->bind[$abstract] = $concrete; - } - - return $this; - } - - /** - * 根据别名获取真实类名 - * @param string $abstract - * @return string - */ - public function getAlias(string $abstract): string - { - if (isset($this->bind[$abstract])) { - $bind = $this->bind[$abstract]; - - if (is_string($bind)) { - return $this->getAlias($bind); - } - } - - return $abstract; - } - - /** - * 绑定一个类实例到容器 - * @access public - * @param string $abstract 类名或者标识 - * @param object $instance 类的实例 - * @return $this - */ - public function instance(string $abstract, $instance) - { - $abstract = $this->getAlias($abstract); - - $this->instances[$abstract] = $instance; - - return $this; - } - - /** - * 判断容器中是否存在类及标识 - * @access public - * @param string $abstract 类名或者标识 - * @return bool - */ - public function bound(string $abstract): bool - { - return isset($this->bind[$abstract]) || isset($this->instances[$abstract]); - } - - /** - * 判断容器中是否存在类及标识 - * @access public - * @param string $name 类名或者标识 - * @return bool - */ - public function has($name): bool - { - return $this->bound($name); - } - - /** - * 判断容器中是否存在对象实例 - * @access public - * @param string $abstract 类名或者标识 - * @return bool - */ - public function exists(string $abstract): bool - { - $abstract = $this->getAlias($abstract); - - return isset($this->instances[$abstract]); - } - - /** - * 创建类的实例 已经存在则直接获取 - * @access public - * @param string $abstract 类名或者标识 - * @param array $vars 变量 - * @param bool $newInstance 是否每次创建新的实例 - * @return mixed - */ - public function make(string $abstract, array $vars = [], bool $newInstance = false) - { - $abstract = $this->getAlias($abstract); - - if (isset($this->instances[$abstract]) && !$newInstance) { - return $this->instances[$abstract]; - } - - if (isset($this->bind[$abstract]) && $this->bind[$abstract] instanceof Closure) { - $object = $this->invokeFunction($this->bind[$abstract], $vars); - } else { - $object = $this->invokeClass($abstract, $vars); - } - - if (!$newInstance) { - $this->instances[$abstract] = $object; - } - - return $object; - } - - /** - * 删除容器中的对象实例 - * @access public - * @param string $name 类名或者标识 - * @return void - */ - public function delete($name) - { - $name = $this->getAlias($name); - - if (isset($this->instances[$name])) { - unset($this->instances[$name]); - } - } - - /** - * 执行函数或者闭包方法 支持参数调用 - * @access public - * @param string|Closure $function 函数或者闭包 - * @param array $vars 参数 - * @return mixed - */ - public function invokeFunction($function, array $vars = []) - { - try { - $reflect = new ReflectionFunction($function); - } catch (ReflectionException $e) { - throw new FuncNotFoundException("function not exists: {$function}()", $function, $e); - } - - $args = $this->bindParams($reflect, $vars); - - return $function(...$args); - } - - /** - * 调用反射执行类的方法 支持参数绑定 - * @access public - * @param mixed $method 方法 - * @param array $vars 参数 - * @param bool $accessible 设置是否可访问 - * @return mixed - */ - public function invokeMethod($method, array $vars = [], bool $accessible = false) - { - if (is_array($method)) { - [$class, $method] = $method; - $class = is_object($class) ? $class : $this->invokeClass($class); - } else { - // 静态方法 - [$class, $method] = explode('::', $method); - } - - try { - $reflect = new ReflectionMethod($class, $method); - } catch (ReflectionException $e) { - $class = is_object($class) ? get_class($class) : $class; - $message = sprintf('method not exists: %d::%d()', $class, $method); - throw new FuncNotFoundException($message, "{$class}::{$method}", $e); - } - - $args = $this->bindParams($reflect, $vars); - - if ($accessible) { - $reflect->setAccessible($accessible); - } - - return $reflect->invokeArgs(is_object($class) ? $class : null, $args); - } - - /** - * 调用反射执行类的方法 支持参数绑定 - * @access public - * @param object $instance 对象实例 - * @param mixed $reflect 反射类 - * @param array $vars 参数 - * @return mixed - */ - public function invokeReflectMethod($instance, $reflect, array $vars = []) - { - $args = $this->bindParams($reflect, $vars); - - return $reflect->invokeArgs($instance, $args); - } - - /** - * 调用反射执行callable 支持参数绑定 - * @access public - * @param mixed $callable - * @param array $vars 参数 - * @param bool $accessible 设置是否可访问 - * @return mixed - */ - public function invoke($callable, array $vars = [], bool $accessible = false) - { - if ($callable instanceof Closure) { - return $this->invokeFunction($callable, $vars); - } elseif (is_string($callable) && false === strpos($callable, '::')) { - return $this->invokeFunction($callable, $vars); - } else { - return $this->invokeMethod($callable, $vars, $accessible); - } - } - - /** - * 调用反射执行类的实例化 支持依赖注入 - * @access public - * @param string $class 类名 - * @param array $vars 参数 - * @return mixed - */ - public function invokeClass(string $class, array $vars = []) - { - try { - $reflect = new ReflectionClass($class); - } catch (ReflectionException $e) { - throw new ClassNotFoundException('class not exists: ' . $class, $class, $e); - } - - if ($reflect->hasMethod('__make')) { - $method = $reflect->getMethod('__make'); - if ($method->isPublic() && $method->isStatic()) { - $args = $this->bindParams($method, $vars); - return $method->invokeArgs(null, $args); - } - } - - $constructor = $reflect->getConstructor(); - - $args = $constructor ? $this->bindParams($constructor, $vars) : []; - - $object = $reflect->newInstanceArgs($args); - - $this->invokeAfter($class, $object); - - return $object; - } - - /** - * 执行invokeClass回调 - * @access protected - * @param string $class 对象类名 - * @param object $object 容器对象实例 - * @return void - */ - protected function invokeAfter(string $class, $object): void - { - if (isset($this->invokeCallback['*'])) { - foreach ($this->invokeCallback['*'] as $callback) { - $callback($object, $this); - } - } - - if (isset($this->invokeCallback[$class])) { - foreach ($this->invokeCallback[$class] as $callback) { - $callback($object, $this); - } - } - } - - /** - * 绑定参数 - * @access protected - * @param ReflectionFunctionAbstract $reflect 反射类 - * @param array $vars 参数 - * @return array - */ - protected function bindParams(ReflectionFunctionAbstract $reflect, array $vars = []): array - { - if ($reflect->getNumberOfParameters() == 0) { - return []; - } - - // 判断数组类型 数字数组时按顺序绑定参数 - reset($vars); - $type = key($vars) === 0 ? 1 : 0; - $params = $reflect->getParameters(); - $args = []; - - foreach ($params as $param) { - $name = $param->getName(); - $lowerName = Str::snake($name); - $class = $param->getClass(); - - if ($class) { - $args[] = $this->getObjectParam($class->getName(), $vars); - } elseif (1 == $type && !empty($vars)) { - $args[] = array_shift($vars); - } elseif (0 == $type && isset($vars[$name])) { - $args[] = $vars[$name]; - } elseif (0 == $type && isset($vars[$lowerName])) { - $args[] = $vars[$lowerName]; - } elseif ($param->isDefaultValueAvailable()) { - $args[] = $param->getDefaultValue(); - } else { - throw new InvalidArgumentException('method param miss:' . $name); - } - } - - return $args; - } - - /** - * 创建工厂对象实例 - * @param string $name 工厂类名 - * @param string $namespace 默认命名空间 - * @param array $args - * @return mixed - * @deprecated - * @access public - */ - public static function factory(string $name, string $namespace = '', ...$args) - { - $class = false !== strpos($name, '\\') ? $name : $namespace . ucwords($name); - - return Container::getInstance()->invokeClass($class, $args); - } - - /** - * 获取对象类型的参数值 - * @access protected - * @param string $className 类名 - * @param array $vars 参数 - * @return mixed - */ - protected function getObjectParam(string $className, array &$vars) - { - $array = $vars; - $value = array_shift($array); - - if ($value instanceof $className) { - $result = $value; - array_shift($vars); - } else { - $result = $this->make($className); - } - - return $result; - } - - public function __set($name, $value) - { - $this->bind($name, $value); - } - - public function __get($name) - { - return $this->get($name); - } - - public function __isset($name): bool - { - return $this->exists($name); - } - - public function __unset($name) - { - $this->delete($name); - } - - public function offsetExists($key) - { - return $this->exists($key); - } - - public function offsetGet($key) - { - return $this->make($key); - } - - public function offsetSet($key, $value) - { - $this->bind($key, $value); - } - - public function offsetUnset($key) - { - $this->delete($key); - } - - //Countable - public function count() - { - return count($this->instances); - } - - //IteratorAggregate - public function getIterator() - { - return new ArrayIterator($this->instances); - } -} diff --git a/vendor/topthink/framework/src/think/Cookie.php b/vendor/topthink/framework/src/think/Cookie.php deleted file mode 100644 index c26594a4b..000000000 --- a/vendor/topthink/framework/src/think/Cookie.php +++ /dev/null @@ -1,207 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use DateTimeInterface; - -/** - * Cookie管理类 - * @package think - */ -class Cookie -{ - /** - * 配置参数 - * @var array - */ - protected $config = [ - // cookie 保存时间 - 'expire' => 0, - // cookie 保存路径 - 'path' => '/', - // cookie 有效域名 - 'domain' => '', - // cookie 启用安全传输 - 'secure' => false, - // httponly设置 - 'httponly' => false, - ]; - - /** - * Cookie写入数据 - * @var array - */ - protected $cookie = []; - - /** - * 当前Request对象 - * @var Request - */ - protected $request; - - /** - * 构造方法 - * @access public - */ - public function __construct(Request $request, array $config = []) - { - $this->request = $request; - $this->config = array_merge($this->config, array_change_key_case($config)); - } - - public static function __make(Request $request, Config $config) - { - return new static($request, $config->get('cookie')); - } - - /** - * 获取cookie - * @access public - * @param mixed $name 数据名称 - * @param string $default 默认值 - * @return mixed - */ - public function get(string $name = '', $default = null) - { - return $this->request->cookie($name, $default); - } - - /** - * 是否存在Cookie参数 - * @access public - * @param string $name 变量名 - * @return bool - */ - public function has(string $name): bool - { - return $this->request->has($name, 'cookie'); - } - - /** - * Cookie 设置 - * - * @access public - * @param string $name cookie名称 - * @param string $value cookie值 - * @param mixed $option 可选参数 - * @return void - */ - public function set(string $name, string $value, $option = null): void - { - // 参数设置(会覆盖黙认设置) - if (!is_null($option)) { - if (is_numeric($option) || $option instanceof DateTimeInterface) { - $option = ['expire' => $option]; - } - - $config = array_merge($this->config, array_change_key_case($option)); - } else { - $config = $this->config; - } - - if ($config['expire'] instanceof DateTimeInterface) { - $expire = $config['expire']->getTimestamp(); - } else { - $expire = !empty($config['expire']) ? time() + intval($config['expire']) : 0; - } - - $this->setCookie($name, $value, $expire, $config); - } - - /** - * Cookie 保存 - * - * @access public - * @param string $name cookie名称 - * @param string $value cookie值 - * @param int $expire 有效期 - * @param array $option 可选参数 - * @return void - */ - protected function setCookie(string $name, string $value, int $expire, array $option = []): void - { - $this->cookie[$name] = [$value, $expire, $option]; - } - - /** - * 永久保存Cookie数据 - * @access public - * @param string $name cookie名称 - * @param string $value cookie值 - * @param mixed $option 可选参数 可能会是 null|integer|string - * @return void - */ - public function forever(string $name, string $value = '', $option = null): void - { - if (is_null($option) || is_numeric($option)) { - $option = []; - } - - $option['expire'] = 315360000; - - $this->set($name, $value, $option); - } - - /** - * Cookie删除 - * @access public - * @param string $name cookie名称 - * @return void - */ - public function delete(string $name): void - { - $this->setCookie($name, '', time() - 3600, $this->config); - } - - /** - * 获取cookie保存数据 - * @access public - * @return array - */ - public function getCookie(): array - { - return $this->cookie; - } - - /** - * 保存Cookie - * @access public - * @return void - */ - public function save(): void - { - foreach ($this->cookie as $name => $val) { - list($value, $expire, $option) = $val; - - $this->saveCookie($name, $value, $expire, $option['path'], $option['domain'], $option['secure'] ? true : false, $option['httponly'] ? true : false); - } - } - - /** - * 保存Cookie - * @access public - * @param string $name cookie名称 - * @param string $value cookie值 - * @param int $expire cookie过期时间 - * @param string $path 有效的服务器路径 - * @param string $domain 有效域名/子域名 - * @param bool $secure 是否仅仅通过HTTPS - * @param bool $httponly 仅可通过HTTP访问 - * @return void - */ - protected function saveCookie(string $name, string $value, int $expire, string $path, string $domain, bool $secure, bool $httponly): void - { - setcookie($name, $value, $expire, $path, $domain, $secure, $httponly); - } - -} diff --git a/vendor/topthink/framework/src/think/Db.php b/vendor/topthink/framework/src/think/Db.php deleted file mode 100644 index 06b7ff29a..000000000 --- a/vendor/topthink/framework/src/think/Db.php +++ /dev/null @@ -1,114 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -/** - * 数据库管理类 - * @package think - */ -class Db extends DbManager -{ - /** - * @param Event $event - * @param Config $config - * @param Log $log - * @param Cache $cache - * @return Db - * @codeCoverageIgnore - */ - public static function __make(Event $event, Config $config, Log $log, Cache $cache) - { - $db = new static(); - $db->setConfig($config); - $db->setEvent($event); - $db->setLog($log); - $db->setCache($cache); - $db->triggerSql(); - - return $db; - } - - /** - * 注入模型对象 - * @access public - * @return void - */ - protected function modelMaker() - { - } - - /** - * 设置配置对象 - * @access public - * @param Config $config 配置对象 - * @return void - */ - public function setConfig($config): void - { - $this->config = $config; - } - - /** - * 获取配置参数 - * @access public - * @param string $name 配置参数 - * @param mixed $default 默认值 - * @return mixed - */ - public function getConfig(string $name = '', $default = null) - { - if ('' !== $name) { - return $this->config->get('database.' . $name, $default); - } - - return $this->config->get('database', []); - } - - /** - * 设置Event对象 - * @param Event $event - */ - public function setEvent(Event $event): void - { - $this->event = $event; - } - - /** - * 注册回调方法 - * @access public - * @param string $event 事件名 - * @param callable $callback 回调方法 - * @return void - */ - public function event(string $event, callable $callback): void - { - if ($this->event) { - $this->event->listen('db.' . $event, $callback); - } - } - - /** - * 触发事件 - * @access public - * @param string $event 事件名 - * @param mixed $params 传入参数 - * @param bool $once - * @return mixed - */ - public function trigger(string $event, $params = null, bool $once = false) - { - if ($this->event) { - return $this->event->trigger('db.' . $event, $params, $once); - } - } -} diff --git a/vendor/topthink/framework/src/think/Env.php b/vendor/topthink/framework/src/think/Env.php deleted file mode 100644 index 05228aaf2..000000000 --- a/vendor/topthink/framework/src/think/Env.php +++ /dev/null @@ -1,181 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use ArrayAccess; - -/** - * Env管理类 - * @package think - */ -class Env implements ArrayAccess -{ - /** - * 环境变量数据 - * @var array - */ - protected $data = []; - - public function __construct() - { - $this->data = $_ENV; - } - - /** - * 读取环境变量定义文件 - * @access public - * @param string $file 环境变量定义文件 - * @return void - */ - public function load(string $file): void - { - $env = parse_ini_file($file, true) ?: []; - $this->set($env); - } - - /** - * 获取环境变量值 - * @access public - * @param string $name 环境变量名 - * @param mixed $default 默认值 - * @return mixed - */ - public function get(string $name = null, $default = null) - { - if (is_null($name)) { - return $this->data; - } - - $name = strtoupper(str_replace('.', '_', $name)); - - if (isset($this->data[$name])) { - return $this->data[$name]; - } - - return $this->getEnv($name, $default); - } - - protected function getEnv(string $name, $default = null) - { - $result = getenv('PHP_' . $name); - - if (false === $result) { - return $default; - } - - if ('false' === $result) { - $result = false; - } elseif ('true' === $result) { - $result = true; - } - - if (!isset($this->data[$name])) { - $this->data[$name] = $result; - } - - return $result; - } - - /** - * 设置环境变量值 - * @access public - * @param string|array $env 环境变量 - * @param mixed $value 值 - * @return void - */ - public function set($env, $value = null): void - { - if (is_array($env)) { - $env = array_change_key_case($env, CASE_UPPER); - - foreach ($env as $key => $val) { - if (is_array($val)) { - foreach ($val as $k => $v) { - $this->data[$key . '_' . strtoupper($k)] = $v; - } - } else { - $this->data[$key] = $val; - } - } - } else { - $name = strtoupper(str_replace('.', '_', $env)); - - $this->data[$name] = $value; - } - } - - /** - * 检测是否存在环境变量 - * @access public - * @param string $name 参数名 - * @return bool - */ - public function has(string $name): bool - { - return !is_null($this->get($name)); - } - - /** - * 设置环境变量 - * @access public - * @param string $name 参数名 - * @param mixed $value 值 - */ - public function __set(string $name, $value): void - { - $this->set($name, $value); - } - - /** - * 获取环境变量 - * @access public - * @param string $name 参数名 - * @return mixed - */ - public function __get(string $name) - { - return $this->get($name); - } - - /** - * 检测是否存在环境变量 - * @access public - * @param string $name 参数名 - * @return bool - */ - public function __isset(string $name): bool - { - return $this->has($name); - } - - // ArrayAccess - public function offsetSet($name, $value): void - { - $this->set($name, $value); - } - - public function offsetExists($name): bool - { - return $this->__isset($name); - } - - public function offsetUnset($name) - { - throw new Exception('not support: unset'); - } - - public function offsetGet($name) - { - return $this->get($name); - } -} diff --git a/vendor/topthink/framework/src/think/Event.php b/vendor/topthink/framework/src/think/Event.php deleted file mode 100644 index fa9b11ad4..000000000 --- a/vendor/topthink/framework/src/think/Event.php +++ /dev/null @@ -1,300 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use ReflectionClass; -use ReflectionMethod; - -/** - * 事件管理类 - * @package think - */ -class Event -{ - /** - * 监听者 - * @var array - */ - protected $listener = []; - - /** - * 事件别名 - * @var array - */ - protected $bind = [ - 'AppInit' => event\AppInit::class, - 'HttpRun' => event\HttpRun::class, - 'HttpEnd' => event\HttpEnd::class, - 'RouteLoaded' => event\RouteLoaded::class, - 'LogWrite' => event\LogWrite::class, - ]; - - /** - * 是否需要事件响应 - * @var bool - */ - protected $withEvent = true; - - /** - * 应用对象 - * @var App - */ - protected $app; - - public function __construct(App $app) - { - $this->app = $app; - } - - /** - * 设置是否开启事件响应 - * @access protected - * @param bool $event 是否需要事件响应 - * @return $this - */ - public function withEvent(bool $event) - { - $this->withEvent = $event; - return $this; - } - - /** - * 批量注册事件监听 - * @access public - * @param array $events 事件定义 - * @return $this - */ - public function listenEvents(array $events) - { - if (!$this->withEvent) { - return $this; - } - - foreach ($events as $event => $listeners) { - if (isset($this->bind[$event])) { - $event = $this->bind[$event]; - } - - $this->listener[$event] = array_merge($this->listener[$event] ?? [], $listeners); - } - - return $this; - } - - /** - * 注册事件监听 - * @access public - * @param string $event 事件名称 - * @param mixed $listener 监听操作(或者类名) - * @param bool $first 是否优先执行 - * @return $this - */ - public function listen(string $event, $listener, bool $first = false) - { - if (!$this->withEvent) { - return $this; - } - - if (isset($this->bind[$event])) { - $event = $this->bind[$event]; - } - - if ($first && isset($this->listener[$event])) { - array_unshift($this->listener[$event], $listener); - } else { - $this->listener[$event][] = $listener; - } - - return $this; - } - - /** - * 是否存在事件监听 - * @access public - * @param string $event 事件名称 - * @return bool - */ - public function hasListener(string $event): bool - { - if (isset($this->bind[$event])) { - $event = $this->bind[$event]; - } - - return isset($this->listener[$event]); - } - - /** - * 移除事件监听 - * @access public - * @param string $event 事件名称 - * @return void - */ - public function remove(string $event): void - { - if (isset($this->bind[$event])) { - $event = $this->bind[$event]; - } - - unset($this->listener[$event]); - } - - /** - * 指定事件别名标识 便于调用 - * @access public - * @param array $events 事件别名 - * @return $this - */ - public function bind(array $events) - { - $this->bind = array_merge($this->bind, $events); - - return $this; - } - - /** - * 注册事件订阅者 - * @access public - * @param mixed $subscriber 订阅者 - * @return $this - */ - public function subscribe($subscriber) - { - if (!$this->withEvent) { - return $this; - } - - $subscribers = (array) $subscriber; - - foreach ($subscribers as $subscriber) { - if (is_string($subscriber)) { - $subscriber = $this->app->make($subscriber); - } - - if (method_exists($subscriber, 'subscribe')) { - // 手动订阅 - $subscriber->subscribe($this); - } else { - // 智能订阅 - $this->observe($subscriber); - } - } - - return $this; - } - - /** - * 自动注册事件观察者 - * @access public - * @param string|object $observer 观察者 - * @param null|string $prefix 事件名前缀 - * @return $this - */ - public function observe($observer, string $prefix = '') - { - if (!$this->withEvent) { - return $this; - } - - if (is_string($observer)) { - $observer = $this->app->make($observer); - } - - $reflect = new ReflectionClass($observer); - $methods = $reflect->getMethods(ReflectionMethod::IS_PUBLIC); - - if (empty($prefix) && $reflect->hasProperty('eventPrefix')) { - $reflectProperty = $reflect->getProperty('eventPrefix'); - $reflectProperty->setAccessible(true); - $prefix = $reflectProperty->getValue($observer); - } - - foreach ($methods as $method) { - $name = $method->getName(); - if (0 === strpos($name, 'on')) { - $this->listen($prefix . substr($name, 2), [$observer, $name]); - } - } - - return $this; - } - - /** - * 触发事件 - * @access public - * @param string|object $event 事件名称 - * @param mixed $params 传入参数 - * @param bool $once 只获取一个有效返回值 - * @return mixed - */ - public function trigger($event, $params = null, bool $once = false) - { - if (!$this->withEvent) { - return; - } - - if (is_object($event)) { - $params = $event; - $event = get_class($event); - } - - if (isset($this->bind[$event])) { - $event = $this->bind[$event]; - } - - $result = []; - $listeners = $this->listener[$event] ?? []; - - foreach ($listeners as $key => $listener) { - $result[$key] = $this->dispatch($listener, $params); - - if (false === $result[$key] || (!is_null($result[$key]) && $once)) { - break; - } - } - - return $once ? end($result) : $result; - } - - /** - * 触发事件(只获取一个有效返回值) - * @param $event - * @param null $params - * @return mixed - */ - public function until($event, $params = null) - { - return $this->trigger($event, $params, true); - } - - /** - * 执行事件调度 - * @access protected - * @param mixed $event 事件方法 - * @param mixed $params 参数 - * @return mixed - */ - protected function dispatch($event, $params = null) - { - if (!is_string($event)) { - $call = $event; - } elseif (strpos($event, '::')) { - $call = $event; - } else { - $obj = $this->app->make($event); - $call = [$obj, 'handle']; - } - - return $this->app->invoke($call, [$params]); - } - -} diff --git a/vendor/topthink/framework/src/think/Exception.php b/vendor/topthink/framework/src/think/Exception.php deleted file mode 100644 index 468e29df9..000000000 --- a/vendor/topthink/framework/src/think/Exception.php +++ /dev/null @@ -1,60 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -/** - * 异常基础类 - * @package think - */ -class Exception extends \Exception -{ - /** - * 保存异常页面显示的额外Debug数据 - * @var array - */ - protected $data = []; - - /** - * 设置异常额外的Debug数据 - * 数据将会显示为下面的格式 - * - * Exception Data - * -------------------------------------------------- - * Label 1 - * key1 value1 - * key2 value2 - * Label 2 - * key1 value1 - * key2 value2 - * - * @access protected - * @param string $label 数据分类,用于异常页面显示 - * @param array $data 需要显示的数据,必须为关联数组 - */ - final protected function setData(string $label, array $data) - { - $this->data[$label] = $data; - } - - /** - * 获取异常额外Debug数据 - * 主要用于输出到异常页面便于调试 - * @access public - * @return array 由setData设置的Debug数据 - */ - final public function getData() - { - return $this->data; - } - -} diff --git a/vendor/topthink/framework/src/think/Facade.php b/vendor/topthink/framework/src/think/Facade.php deleted file mode 100644 index 79212980b..000000000 --- a/vendor/topthink/framework/src/think/Facade.php +++ /dev/null @@ -1,98 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think; - -/** - * Facade管理类 - */ -class Facade -{ - /** - * 始终创建新的对象实例 - * @var bool - */ - protected static $alwaysNewInstance; - - /** - * 创建Facade实例 - * @static - * @access protected - * @param string $class 类名或标识 - * @param array $args 变量 - * @param bool $newInstance 是否每次创建新的实例 - * @return object - */ - protected static function createFacade(string $class = '', array $args = [], bool $newInstance = false) - { - $class = $class ?: static::class; - - $facadeClass = static::getFacadeClass(); - - if ($facadeClass) { - $class = $facadeClass; - } - - if (static::$alwaysNewInstance) { - $newInstance = true; - } - - return Container::getInstance()->make($class, $args, $newInstance); - } - - /** - * 获取当前Facade对应类名 - * @access protected - * @return string - */ - protected static function getFacadeClass() - {} - - /** - * 带参数实例化当前Facade类 - * @access public - * @return object - */ - public static function instance(...$args) - { - if (__CLASS__ != static::class) { - return self::createFacade('', $args); - } - } - - /** - * 调用类的实例 - * @access public - * @param string $class 类名或者标识 - * @param array|true $args 变量 - * @param bool $newInstance 是否每次创建新的实例 - * @return object - */ - public static function make(string $class, $args = [], $newInstance = false) - { - if (__CLASS__ != static::class) { - return self::__callStatic('make', func_get_args()); - } - - if (true === $args) { - // 总是创建新的实例化对象 - $newInstance = true; - $args = []; - } - - return self::createFacade($class, $args, $newInstance); - } - - // 调用实际类的方法 - public static function __callStatic($method, $params) - { - return call_user_func_array([static::createFacade(), $method], $params); - } -} diff --git a/vendor/topthink/framework/src/think/File.php b/vendor/topthink/framework/src/think/File.php deleted file mode 100644 index feed90c8c..000000000 --- a/vendor/topthink/framework/src/think/File.php +++ /dev/null @@ -1,187 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use SplFileInfo; -use think\exception\FileException; - -/** - * 文件上传类 - * @package think - */ -class File extends SplFileInfo -{ - - /** - * 文件hash规则 - * @var array - */ - protected $hash = []; - - protected $hashName; - - public function __construct(string $path, bool $checkPath = true) - { - if ($checkPath && !is_file($path)) { - throw new FileException(sprintf('The file "%s" does not exist', $path)); - } - - parent::__construct($path); - } - - /** - * 获取文件的哈希散列值 - * @access public - * @param string $type - * @return string - */ - public function hash(string $type = 'sha1'): string - { - if (!isset($this->hash[$type])) { - $this->hash[$type] = hash_file($type, $this->getPathname()); - } - - return $this->hash[$type]; - } - - /** - * 获取文件的MD5值 - * @access public - * @return string - */ - public function md5(): string - { - return $this->hash('md5'); - } - - /** - * 获取文件的SHA1值 - * @access public - * @return string - */ - public function sha1(): string - { - return $this->hash('sha1'); - } - - /** - * 获取文件类型信息 - * @access public - * @return string - */ - public function getMime(): string - { - $finfo = finfo_open(FILEINFO_MIME_TYPE); - - return finfo_file($finfo, $this->getPathname()); - } - - /** - * 移动文件 - * @access public - * @param string $directory 保存路径 - * @param string|null $name 保存的文件名 - * @return File - */ - public function move(string $directory, string $name = null): File - { - $target = $this->getTargetFile($directory, $name); - - set_error_handler(function ($type, $msg) use (&$error) { - $error = $msg; - }); - $renamed = rename($this->getPathname(), $target); - restore_error_handler(); - if (!$renamed) { - throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s)', $this->getPathname(), $target, strip_tags($error))); - } - - @chmod($target, 0666 & ~umask()); - - return $target; - } - - /** - * 实例化一个新文件 - * @param string $directory - * @param null|string $name - * @return File - */ - protected function getTargetFile(string $directory, string $name = null): File - { - if (!is_dir($directory)) { - if (false === @mkdir($directory, 0777, true) && !is_dir($directory)) { - throw new FileException(sprintf('Unable to create the "%s" directory', $directory)); - } - } elseif (!is_writable($directory)) { - throw new FileException(sprintf('Unable to write in the "%s" directory', $directory)); - } - - $target = rtrim($directory, '/\\') . \DIRECTORY_SEPARATOR . (null === $name ? $this->getBasename() : $this->getName($name)); - - return new self($target, false); - } - - /** - * 获取文件名 - * @param string $name - * @return string - */ - protected function getName(string $name): string - { - $originalName = str_replace('\\', '/', $name); - $pos = strrpos($originalName, '/'); - $originalName = false === $pos ? $originalName : substr($originalName, $pos + 1); - - return $originalName; - } - - /** - * 文件扩展名 - * @return string - */ - public function extension(): string - { - return $this->getExtension(); - } - - /** - * 自动生成文件名 - * @access protected - * @param string|\Closure $rule - * @return string - */ - public function hashName($rule = 'date'): string - { - if (!$this->hashName) { - if ($rule instanceof \Closure) { - $this->hashName = call_user_func_array($rule, [$this]); - } else { - switch (true) { - case in_array($rule, hash_algos()): - $hash = $this->hash($rule); - $this->hashName = substr($hash, 0, 2) . DIRECTORY_SEPARATOR . substr($hash, 2); - break; - case is_callable($rule): - $this->hashName = call_user_func($rule); - break; - default: - $this->hashName = date('Ymd') . DIRECTORY_SEPARATOR . md5((string) microtime(true)); - break; - } - } - } - - return $this->hashName . '.' . $this->extension(); - } -} diff --git a/vendor/topthink/framework/src/think/Filesystem.php b/vendor/topthink/framework/src/think/Filesystem.php deleted file mode 100644 index a443f74a2..000000000 --- a/vendor/topthink/framework/src/think/Filesystem.php +++ /dev/null @@ -1,89 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use InvalidArgumentException; -use think\filesystem\Driver; -use think\filesystem\driver\Local; -use think\helper\Arr; - -/** - * Class Filesystem - * @package think - * @mixin Driver - * @mixin Local - */ -class Filesystem extends Manager -{ - protected $namespace = '\\think\\filesystem\\driver\\'; - - /** - * @param null|string $name - * @return Driver - */ - public function disk(string $name = null): Driver - { - return $this->driver($name); - } - - protected function resolveType(string $name) - { - return $this->getDiskConfig($name, 'type', 'local'); - } - - protected function resolveConfig(string $name) - { - return $this->getDiskConfig($name); - } - - /** - * 获取缓存配置 - * @access public - * @param null|string $name 名称 - * @param mixed $default 默认值 - * @return mixed - */ - public function getConfig(string $name = null, $default = null) - { - if (!is_null($name)) { - return $this->app->config->get('filesystem.' . $name, $default); - } - - return $this->app->config->get('filesystem'); - } - - /** - * 获取磁盘配置 - * @param string $disk - * @param null $name - * @param null $default - * @return array - */ - public function getDiskConfig($disk, $name = null, $default = null) - { - if ($config = $this->getConfig("disks.{$disk}")) { - return Arr::get($config, $name, $default); - } - - throw new InvalidArgumentException("Disk [$disk] not found."); - } - - /** - * 默认驱动 - * @return string|null - */ - public function getDefaultDriver() - { - return $this->getConfig('default'); - } -} diff --git a/vendor/topthink/framework/src/think/Http.php b/vendor/topthink/framework/src/think/Http.php deleted file mode 100644 index a78b8b4d9..000000000 --- a/vendor/topthink/framework/src/think/Http.php +++ /dev/null @@ -1,285 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use think\event\HttpEnd; -use think\event\HttpRun; -use think\event\RouteLoaded; -use think\exception\Handle; -use Throwable; - -/** - * Web应用管理类 - * @package think - */ -class Http -{ - - /** - * @var App - */ - protected $app; - - /** - * 应用名称 - * @var string - */ - protected $name; - - /** - * 应用路径 - * @var string - */ - protected $path; - - /** - * 是否绑定应用 - * @var bool - */ - protected $isBind = false; - - public function __construct(App $app) - { - $this->app = $app; - - $this->routePath = $this->app->getRootPath() . 'route' . DIRECTORY_SEPARATOR; - } - - /** - * 设置应用名称 - * @access public - * @param string $name 应用名称 - * @return $this - */ - public function name(string $name) - { - $this->name = $name; - return $this; - } - - /** - * 获取应用名称 - * @access public - * @return string - */ - public function getName(): string - { - return $this->name ?: ''; - } - - /** - * 设置应用目录 - * @access public - * @param string $path 应用目录 - * @return $this - */ - public function path(string $path) - { - if (substr($path, -1) != DIRECTORY_SEPARATOR) { - $path .= DIRECTORY_SEPARATOR; - } - - $this->path = $path; - return $this; - } - - /** - * 获取应用路径 - * @access public - * @return string - */ - public function getPath(): string - { - return $this->path ?: ''; - } - - /** - * 获取路由目录 - * @access public - * @return string - */ - public function getRoutePath(): string - { - return $this->routePath; - } - - /** - * 设置路由目录 - * @access public - * @param string $path 路由定义目录 - * @return string - */ - public function setRoutePath(string $path): void - { - $this->routePath = $path; - } - - /** - * 设置应用绑定 - * @access public - * @param bool $bind 是否绑定 - * @return $this - */ - public function setBind(bool $bind = true) - { - $this->isBind = $bind; - return $this; - } - - /** - * 是否绑定应用 - * @access public - * @return bool - */ - public function isBind(): bool - { - return $this->isBind; - } - - /** - * 执行应用程序 - * @access public - * @param Request|null $request - * @return Response - */ - public function run(Request $request = null): Response - { - //自动创建request对象 - $request = $request ?? $this->app->make('request', [], true); - $this->app->instance('request', $request); - - try { - $response = $this->runWithRequest($request); - } catch (Throwable $e) { - $this->reportException($e); - - $response = $this->renderException($request, $e); - } - - return $response; - } - - /** - * 初始化 - */ - protected function initialize() - { - if (!$this->app->initialized()) { - $this->app->initialize(); - } - } - - /** - * 执行应用程序 - * @param Request $request - * @return mixed - */ - protected function runWithRequest(Request $request) - { - $this->initialize(); - - // 加载全局中间件 - $this->loadMiddleware(); - - // 设置开启事件机制 - $this->app->event->withEvent($this->app->config->get('app.with_event', true)); - - // 监听HttpRun - $this->app->event->trigger(HttpRun::class); - - return $this->app->middleware->pipeline() - ->send($request) - ->then(function ($request) { - return $this->dispatchToRoute($request); - }); - } - - protected function dispatchToRoute($request) - { - $withRoute = $this->app->config->get('app.with_route', true) ? function () { - $this->loadRoutes(); - } : null; - - return $this->app->route->dispatch($request, $withRoute); - } - - /** - * 加载全局中间件 - */ - protected function loadMiddleware(): void - { - if (is_file($this->app->getBasePath() . 'middleware.php')) { - $this->app->middleware->import(include $this->app->getBasePath() . 'middleware.php'); - } - } - - /** - * 加载路由 - * @access protected - * @return void - */ - protected function loadRoutes(): void - { - // 加载路由定义 - $routePath = $this->getRoutePath(); - - if (is_dir($routePath)) { - $files = glob($routePath . '*.php'); - foreach ($files as $file) { - include $file; - } - } - - $this->app->event->trigger(RouteLoaded::class); - } - - /** - * Report the exception to the exception handler. - * - * @param Throwable $e - * @return void - */ - protected function reportException(Throwable $e) - { - $this->app->make(Handle::class)->report($e); - } - - /** - * Render the exception to a response. - * - * @param Request $request - * @param Throwable $e - * @return Response - */ - protected function renderException($request, Throwable $e) - { - return $this->app->make(Handle::class)->render($request, $e); - } - - /** - * HttpEnd - * @param Response $response - * @return void - */ - public function end(Response $response): void - { - $this->app->event->trigger(HttpEnd::class, $response); - - //执行中间件 - $this->app->middleware->end($response); - - // 写入日志 - $this->app->log->save(); - } - -} diff --git a/vendor/topthink/framework/src/think/Lang.php b/vendor/topthink/framework/src/think/Lang.php deleted file mode 100644 index fefd367bc..000000000 --- a/vendor/topthink/framework/src/think/Lang.php +++ /dev/null @@ -1,277 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -/** - * 多语言管理类 - * @package think - */ -class Lang -{ - /** - * 配置参数 - * @var array - */ - protected $config = [ - // 默认语言 - 'default_lang' => 'zh-cn', - // 允许的语言列表 - 'allow_lang_list' => [], - // 是否使用Cookie记录 - 'use_cookie' => true, - // 扩展语言包 - 'extend_list' => [], - // 多语言cookie变量 - 'cookie_var' => 'think_lang', - // 多语言自动侦测变量名 - 'detect_var' => 'lang', - // Accept-Language转义为对应语言包名称 - 'accept_language' => [ - 'zh-hans-cn' => 'zh-cn', - ], - // 是否支持语言分组 - 'allow_group' => false, - ]; - - /** - * 多语言信息 - * @var array - */ - private $lang = []; - - /** - * 当前语言 - * @var string - */ - private $range = 'zh-cn'; - - /** - * 构造方法 - * @access public - * @param array $config - */ - public function __construct(array $config = []) - { - $this->config = array_merge($this->config, array_change_key_case($config)); - $this->range = $this->config['default_lang']; - } - - public static function __make(Config $config) - { - return new static($config->get('lang')); - } - - /** - * 设置当前语言 - * @access public - * @param string $lang 语言 - * @return void - */ - public function setLangSet(string $lang): void - { - $this->range = $lang; - } - - /** - * 获取当前语言 - * @access public - * @return string - */ - public function getLangSet(): string - { - return $this->range; - } - - /** - * 获取默认语言 - * @access public - * @return string - */ - public function defaultLangSet() - { - return $this->config['default_lang']; - } - - /** - * 加载语言定义(不区分大小写) - * @access public - * @param string|array $file 语言文件 - * @param string $range 语言作用域 - * @return array - */ - public function load($file, $range = ''): array - { - $range = $range ?: $this->range; - if (!isset($this->lang[$range])) { - $this->lang[$range] = []; - } - - $lang = []; - - foreach ((array) $file as $_file) { - if (is_file($_file)) { - $result = $this->parse($_file); - $lang = array_change_key_case($result) + $lang; - } - } - - if (!empty($lang)) { - $this->lang[$range] = $lang + $this->lang[$range]; - } - - return $this->lang[$range]; - } - - /** - * 解析语言文件 - * @access protected - * @param string $file 语言文件名 - * @return array - */ - protected function parse(string $file): array - { - $type = pathinfo($file, PATHINFO_EXTENSION); - - switch ($type) { - case 'php': - $result = include $file; - break; - case 'yml': - case 'yaml': - if (function_exists('yaml_parse_file')) { - $result = yaml_parse_file($file); - } - break; - } - - return isset($result) && is_array($result) ? $result : []; - } - - /** - * 判断是否存在语言定义(不区分大小写) - * @access public - * @param string|null $name 语言变量 - * @param string $range 语言作用域 - * @return bool - */ - public function has(string $name, string $range = ''): bool - { - $range = $range ?: $this->range; - - if ($this->config['allow_group'] && strpos($name, '.')) { - list($name1, $name2) = explode('.', $name, 2); - return isset($this->lang[$range][strtolower($name1)][$name2]); - } - - return isset($this->lang[$range][strtolower($name)]); - } - - /** - * 获取语言定义(不区分大小写) - * @access public - * @param string|null $name 语言变量 - * @param array $vars 变量替换 - * @param string $range 语言作用域 - * @return mixed - */ - public function get(string $name = null, array $vars = [], string $range = '') - { - $range = $range ?: $this->range; - - // 空参数返回所有定义 - if (is_null($name)) { - return $this->lang[$range] ?? []; - } - - if ($this->config['allow_group'] && strpos($name, '.')) { - list($name1, $name2) = explode('.', $name, 2); - - $value = $this->lang[$range][strtolower($name1)][$name2] ?? $name; - } else { - $value = $this->lang[$range][strtolower($name)] ?? $name; - } - - // 变量解析 - if (!empty($vars) && is_array($vars)) { - /** - * Notes: - * 为了检测的方便,数字索引的判断仅仅是参数数组的第一个元素的key为数字0 - * 数字索引采用的是系统的 sprintf 函数替换,用法请参考 sprintf 函数 - */ - if (key($vars) === 0) { - // 数字索引解析 - array_unshift($vars, $value); - $value = call_user_func_array('sprintf', $vars); - } else { - // 关联索引解析 - $replace = array_keys($vars); - foreach ($replace as &$v) { - $v = "{:{$v}}"; - } - $value = str_replace($replace, $vars, $value); - } - } - - return $value; - } - - /** - * 自动侦测设置获取语言选择 - * @access public - * @param Request $request - * @return string - */ - public function detect(Request $request): string - { - // 自动侦测设置获取语言选择 - $langSet = ''; - - if ($request->get($this->config['detect_var'])) { - // url中设置了语言变量 - $langSet = strtolower($request->get($this->config['detect_var'])); - } elseif ($request->cookie($this->config['cookie_var'])) { - // Cookie中设置了语言变量 - $langSet = strtolower($request->cookie($this->config['cookie_var'])); - } elseif ($request->server('HTTP_ACCEPT_LANGUAGE')) { - // 自动侦测浏览器语言 - $match = preg_match('/^([a-z\d\-]+)/i', $request->server('HTTP_ACCEPT_LANGUAGE'), $matches); - if ($match) { - $langSet = strtolower($matches[1]); - if (isset($this->config['accept_language'][$langSet])) { - $langSet = $this->config['accept_language'][$langSet]; - } - } - } - - if (empty($this->config['allow_lang_list']) || in_array($langSet, $this->config['allow_lang_list'])) { - // 合法的语言 - $this->range = $langSet; - } - - return $this->range; - } - - /** - * 保存当前语言到Cookie - * @access public - * @param Cookie $cookie Cookie对象 - * @return void - */ - public function saveToCookie(Cookie $cookie) - { - if ($this->config['use_cookie']) { - $cookie->set($this->config['cookie_var'], $this->range); - } - } - -} diff --git a/vendor/topthink/framework/src/think/Log.php b/vendor/topthink/framework/src/think/Log.php deleted file mode 100644 index e9031c766..000000000 --- a/vendor/topthink/framework/src/think/Log.php +++ /dev/null @@ -1,342 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use InvalidArgumentException; -use Psr\Log\LoggerInterface; -use think\event\LogWrite; -use think\helper\Arr; -use think\log\Channel; -use think\log\ChannelSet; - -/** - * 日志管理类 - * @package think - * @mixin Channel - */ -class Log extends Manager implements LoggerInterface -{ - const EMERGENCY = 'emergency'; - const ALERT = 'alert'; - const CRITICAL = 'critical'; - const ERROR = 'error'; - const WARNING = 'warning'; - const NOTICE = 'notice'; - const INFO = 'info'; - const DEBUG = 'debug'; - const SQL = 'sql'; - - protected $namespace = '\\think\\log\\driver\\'; - - /** - * 默认驱动 - * @return string|null - */ - public function getDefaultDriver() - { - return $this->getConfig('default'); - } - - /** - * 获取日志配置 - * @access public - * @param null|string $name 名称 - * @param mixed $default 默认值 - * @return mixed - */ - public function getConfig(string $name = null, $default = null) - { - if (!is_null($name)) { - return $this->app->config->get('log.' . $name, $default); - } - - return $this->app->config->get('log'); - } - - /** - * 获取渠道配置 - * @param string $channel - * @param null $name - * @param null $default - * @return array - */ - public function getChannelConfig($channel, $name = null, $default = null) - { - if ($config = $this->getConfig("channels.{$channel}")) { - return Arr::get($config, $name, $default); - } - - throw new InvalidArgumentException("Channel [$channel] not found."); - } - - /** - * driver()的别名 - * @param string|array $name 渠道名 - * @return Channel|ChannelSet - */ - public function channel($name = null) - { - if (is_array($name)) { - return new ChannelSet($this, $name); - } - - return $this->driver($name); - } - - protected function resolveType(string $name) - { - return $this->getChannelConfig($name, 'type', 'file'); - } - - public function createDriver(string $name) - { - $driver = parent::createDriver($name); - - $lazy = !$this->getChannelConfig($name, "realtime_write", false) && !$this->app->runningInConsole(); - $allow = array_merge($this->getConfig("level", []), $this->getChannelConfig($name, "level", [])); - - return new Channel($name, $driver, $allow, $lazy, $this->app->event); - } - - protected function resolveConfig(string $name) - { - return $this->getChannelConfig($name); - } - - /** - * 清空日志信息 - * @access public - * @param string|array $channel 日志通道名 - * @return $this - */ - public function clear($channel = '*') - { - if ('*' == $channel) { - $channel = array_keys($this->drivers); - } - - $this->channel($channel)->clear(); - - return $this; - } - - /** - * 关闭本次请求日志写入 - * @access public - * @param string|array $channel 日志通道名 - * @return $this - */ - public function close($channel = '*') - { - if ('*' == $channel) { - $channel = array_keys($this->drivers); - } - - $this->channel($channel)->close(); - - return $this; - } - - /** - * 获取日志信息 - * @access public - * @param string $channel 日志通道名 - * @return array - */ - public function getLog(string $channel = null): array - { - return $this->channel($channel)->getLog(); - } - - /** - * 保存日志信息 - * @access public - * @return bool - */ - public function save(): bool - { - /** @var Channel $channel */ - foreach ($this->drivers as $channel) { - $channel->save(); - } - - return true; - } - - /** - * 记录日志信息 - * @access public - * @param mixed $msg 日志信息 - * @param string $type 日志级别 - * @param array $context 替换内容 - * @param bool $lazy - * @return $this - */ - public function record($msg, string $type = 'info', array $context = [], bool $lazy = true) - { - $channel = $this->getConfig('type_channel.' . $type); - - $this->channel($channel)->record($msg, $type, $context, $lazy); - - return $this; - } - - /** - * 实时写入日志信息 - * @access public - * @param mixed $msg 调试信息 - * @param string $type 日志级别 - * @param array $context 替换内容 - * @return $this - */ - public function write($msg, string $type = 'info', array $context = []) - { - return $this->record($msg, $type, $context, false); - } - - /** - * 注册日志写入事件监听 - * @param $listener - * @return Event - */ - public function listen($listener) - { - return $this->app->event->listen(LogWrite::class, $listener); - } - - /** - * 记录日志信息 - * @access public - * @param string $level 日志级别 - * @param mixed $message 日志信息 - * @param array $context 替换内容 - * @return void - */ - public function log($level, $message, array $context = []): void - { - $this->record($message, $level, $context); - } - - /** - * 记录emergency信息 - * @access public - * @param mixed $message 日志信息 - * @param array $context 替换内容 - * @return void - */ - public function emergency($message, array $context = []): void - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * 记录警报信息 - * @access public - * @param mixed $message 日志信息 - * @param array $context 替换内容 - * @return void - */ - public function alert($message, array $context = []): void - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * 记录紧急情况 - * @access public - * @param mixed $message 日志信息 - * @param array $context 替换内容 - * @return void - */ - public function critical($message, array $context = []): void - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * 记录错误信息 - * @access public - * @param mixed $message 日志信息 - * @param array $context 替换内容 - * @return void - */ - public function error($message, array $context = []): void - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * 记录warning信息 - * @access public - * @param mixed $message 日志信息 - * @param array $context 替换内容 - * @return void - */ - public function warning($message, array $context = []): void - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * 记录notice信息 - * @access public - * @param mixed $message 日志信息 - * @param array $context 替换内容 - * @return void - */ - public function notice($message, array $context = []): void - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * 记录一般信息 - * @access public - * @param mixed $message 日志信息 - * @param array $context 替换内容 - * @return void - */ - public function info($message, array $context = []): void - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * 记录调试信息 - * @access public - * @param mixed $message 日志信息 - * @param array $context 替换内容 - * @return void - */ - public function debug($message, array $context = []): void - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * 记录sql信息 - * @access public - * @param mixed $message 日志信息 - * @param array $context 替换内容 - * @return void - */ - public function sql($message, array $context = []): void - { - $this->log(__FUNCTION__, $message, $context); - } - - public function __call($method, $parameters) - { - $this->log($method, ...$parameters); - } -} diff --git a/vendor/topthink/framework/src/think/Manager.php b/vendor/topthink/framework/src/think/Manager.php deleted file mode 100644 index 7845e463e..000000000 --- a/vendor/topthink/framework/src/think/Manager.php +++ /dev/null @@ -1,176 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use InvalidArgumentException; -use think\helper\Str; - -abstract class Manager -{ - /** @var App */ - protected $app; - - /** - * 驱动 - * @var array - */ - protected $drivers = []; - - /** - * 驱动的命名空间 - * @var string - */ - protected $namespace = null; - - public function __construct(App $app) - { - $this->app = $app; - } - - /** - * 获取驱动实例 - * @param null|string $name - * @return mixed - */ - protected function driver(string $name = null) - { - $name = $name ?: $this->getDefaultDriver(); - - if (is_null($name)) { - throw new InvalidArgumentException(sprintf( - 'Unable to resolve NULL driver for [%s].', static::class - )); - } - - return $this->drivers[$name] = $this->getDriver($name); - } - - /** - * 获取驱动实例 - * @param string $name - * @return mixed - */ - protected function getDriver(string $name) - { - return $this->drivers[$name] ?? $this->createDriver($name); - } - - /** - * 获取驱动类型 - * @param string $name - * @return mixed - */ - protected function resolveType(string $name) - { - return $name; - } - - /** - * 获取驱动配置 - * @param string $name - * @return mixed - */ - protected function resolveConfig(string $name) - { - return $name; - } - - /** - * 获取驱动类 - * @param string $type - * @return string - */ - protected function resolveClass(string $type): string - { - if ($this->namespace || false !== strpos($type, '\\')) { - $class = false !== strpos($type, '\\') ? $type : $this->namespace . Str::studly($type); - - if (class_exists($class)) { - return $class; - } - } - - throw new InvalidArgumentException("Driver [$type] not supported."); - } - - /** - * 获取驱动参数 - * @param $name - * @return array - */ - protected function resolveParams($name): array - { - $config = $this->resolveConfig($name); - return [$config]; - } - - /** - * 创建驱动 - * - * @param string $name - * @return mixed - * - */ - protected function createDriver(string $name) - { - $type = $this->resolveType($name); - - $method = 'create' . Str::studly($type) . 'Driver'; - - $params = $this->resolveParams($name); - - if (method_exists($this, $method)) { - return $this->$method(...$params); - } - - $class = $this->resolveClass($type); - - return $this->app->invokeClass($class, $params); - } - - /** - * 移除一个驱动实例 - * - * @param array|string|null $name - * @return $this - */ - public function forgetDriver($name = null) - { - $name = $name ?? $this->getDefaultDriver(); - - foreach ((array) $name as $cacheName) { - if (isset($this->drivers[$cacheName])) { - unset($this->drivers[$cacheName]); - } - } - - return $this; - } - - /** - * 默认驱动 - * @return string|null - */ - abstract public function getDefaultDriver(); - - /** - * 动态调用 - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - return $this->driver()->$method(...$parameters); - } -} diff --git a/vendor/topthink/framework/src/think/Middleware.php b/vendor/topthink/framework/src/think/Middleware.php deleted file mode 100644 index f713cb179..000000000 --- a/vendor/topthink/framework/src/think/Middleware.php +++ /dev/null @@ -1,259 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use Closure; -use InvalidArgumentException; -use LogicException; -use think\exception\Handle; -use Throwable; - -/** - * 中间件管理类 - * @package think - */ -class Middleware -{ - /** - * 中间件执行队列 - * @var array - */ - protected $queue = []; - - /** - * 应用对象 - * @var App - */ - protected $app; - - public function __construct(App $app) - { - $this->app = $app; - } - - /** - * 导入中间件 - * @access public - * @param array $middlewares - * @param string $type 中间件类型 - * @return void - */ - public function import(array $middlewares = [], string $type = 'global'): void - { - foreach ($middlewares as $middleware) { - $this->add($middleware, $type); - } - } - - /** - * 注册中间件 - * @access public - * @param mixed $middleware - * @param string $type 中间件类型 - * @return void - */ - public function add($middleware, string $type = 'global'): void - { - $middleware = $this->buildMiddleware($middleware, $type); - - if ($middleware) { - $this->queue[$type][] = $middleware; - $this->queue[$type] = array_unique($this->queue[$type], SORT_REGULAR); - } - } - - /** - * 注册路由中间件 - * @access public - * @param mixed $middleware - * @return void - */ - public function route($middleware): void - { - $this->add($middleware, 'route'); - } - - /** - * 注册控制器中间件 - * @access public - * @param mixed $middleware - * @return void - */ - public function controller($middleware): void - { - $this->add($middleware, 'controller'); - } - - /** - * 注册中间件到开始位置 - * @access public - * @param mixed $middleware - * @param string $type 中间件类型 - */ - public function unshift($middleware, string $type = 'global') - { - $middleware = $this->buildMiddleware($middleware, $type); - - if (!empty($middleware)) { - if (!isset($this->queue[$type])) { - $this->queue[$type] = []; - } - - array_unshift($this->queue[$type], $middleware); - } - } - - /** - * 获取注册的中间件 - * @access public - * @param string $type 中间件类型 - * @return array - */ - public function all(string $type = 'global'): array - { - return $this->queue[$type] ?? []; - } - - /** - * 调度管道 - * @access public - * @param string $type 中间件类型 - * @return Pipeline - */ - public function pipeline(string $type = 'global') - { - return (new Pipeline()) - ->through(array_map(function ($middleware) { - return function ($request, $next) use ($middleware) { - list($call, $param) = $middleware; - if (is_array($call) && is_string($call[0])) { - $call = [$this->app->make($call[0]), $call[1]]; - } - $response = call_user_func($call, $request, $next, $param); - - if (!$response instanceof Response) { - throw new LogicException('The middleware must return Response instance'); - } - return $response; - }; - }, $this->sortMiddleware($this->queue[$type] ?? []))) - ->whenException([$this, 'handleException']); - } - - /** - * 结束调度 - * @param Response $response - */ - public function end(Response $response) - { - foreach ($this->queue as $queue) { - foreach ($queue as $middleware) { - list($call) = $middleware; - if (is_array($call) && is_string($call[0])) { - $instance = $this->app->make($call[0]); - if (method_exists($instance, 'end')) { - $instance->end($response); - } - } - } - } - } - - /** - * 异常处理 - * @param Request $passable - * @param Throwable $e - * @return Response - */ - public function handleException($passable, Throwable $e) - { - /** @var Handle $handler */ - $handler = $this->app->make(Handle::class); - - $handler->report($e); - - $response = $handler->render($passable, $e); - - return $response; - } - - /** - * 解析中间件 - * @access protected - * @param mixed $middleware - * @param string $type 中间件类型 - * @return array - */ - protected function buildMiddleware($middleware, string $type): array - { - if (is_array($middleware)) { - list($middleware, $param) = $middleware; - } - - if ($middleware instanceof Closure) { - return [$middleware, $param ?? null]; - } - - if (!is_string($middleware)) { - throw new InvalidArgumentException('The middleware is invalid'); - } - - //中间件别名检查 - $alias = $this->app->config->get('middleware.alias', []); - - if (isset($alias[$middleware])) { - $middleware = $alias[$middleware]; - } - - if (is_array($middleware)) { - $this->import($middleware, $type); - return []; - } - - return [[$middleware, 'handle'], $param ?? null]; - } - - /** - * 中间件排序 - * @param array $middlewares - * @return array - */ - protected function sortMiddleware(array $middlewares) - { - $priority = $this->app->config->get('middleware.priority', []); - uasort($middlewares, function ($a, $b) use ($priority) { - $aPriority = $this->getMiddlewarePriority($priority, $a); - $bPriority = $this->getMiddlewarePriority($priority, $b); - return $bPriority - $aPriority; - }); - - return $middlewares; - } - - /** - * 获取中间件优先级 - * @param $priority - * @param $middleware - * @return int - */ - protected function getMiddlewarePriority($priority, $middleware) - { - list($call) = $middleware; - if (is_array($call) && is_string($call[0])) { - $index = array_search($call[0], array_reverse($priority)); - return false === $index ? -1 : $index; - } - return -1; - } - -} diff --git a/vendor/topthink/framework/src/think/Pipeline.php b/vendor/topthink/framework/src/think/Pipeline.php deleted file mode 100644 index 24c5122ae..000000000 --- a/vendor/topthink/framework/src/think/Pipeline.php +++ /dev/null @@ -1,106 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think; - -use Closure; -use Exception; -use Throwable; - -class Pipeline -{ - protected $passable; - - protected $pipes = []; - - protected $exceptionHandler; - - /** - * 初始数据 - * @param $passable - * @return $this - */ - public function send($passable) - { - $this->passable = $passable; - return $this; - } - - /** - * 调用栈 - * @param $pipes - * @return $this - */ - public function through($pipes) - { - $this->pipes = is_array($pipes) ? $pipes : func_get_args(); - return $this; - } - - /** - * 执行 - * @param Closure $destination - * @return mixed - */ - public function then(Closure $destination) - { - $pipeline = array_reduce( - array_reverse($this->pipes), - $this->carry(), - function ($passable) use ($destination) { - try { - return $destination($passable); - } catch (Throwable | Exception $e) { - return $this->handleException($passable, $e); - } - }); - - return $pipeline($this->passable); - } - - /** - * 设置异常处理器 - * @param callable $handler - * @return $this - */ - public function whenException($handler) - { - $this->exceptionHandler = $handler; - return $this; - } - - protected function carry() - { - return function ($stack, $pipe) { - return function ($passable) use ($stack, $pipe) { - try { - return $pipe($passable, $stack); - } catch (Throwable | Exception $e) { - return $this->handleException($passable, $e); - } - }; - }; - } - - /** - * 异常处理 - * @param $passable - * @param $e - * @return mixed - */ - protected function handleException($passable, Throwable $e) - { - if ($this->exceptionHandler) { - return call_user_func($this->exceptionHandler, $passable, $e); - } - throw $e; - } - -} diff --git a/vendor/topthink/framework/src/think/Request.php b/vendor/topthink/framework/src/think/Request.php deleted file mode 100644 index d25c00910..000000000 --- a/vendor/topthink/framework/src/think/Request.php +++ /dev/null @@ -1,2119 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use think\file\UploadedFile; -use think\route\Rule; - -/** - * 请求管理类 - * @package think - */ -class Request -{ - /** - * 兼容PATH_INFO获取 - * @var array - */ - protected $pathinfoFetch = ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL']; - - /** - * PATHINFO变量名 用于兼容模式 - * @var string - */ - protected $varPathinfo = 's'; - - /** - * 请求类型 - * @var string - */ - protected $varMethod = '_method'; - - /** - * 表单ajax伪装变量 - * @var string - */ - protected $varAjax = '_ajax'; - - /** - * 表单pjax伪装变量 - * @var string - */ - protected $varPjax = '_pjax'; - - /** - * 域名根 - * @var string - */ - protected $rootDomain = ''; - - /** - * HTTPS代理标识 - * @var string - */ - protected $httpsAgentName = ''; - - /** - * 前端代理服务器IP - * @var array - */ - protected $proxyServerIp = []; - - /** - * 前端代理服务器真实IP头 - * @var array - */ - protected $proxyServerIpHeader = ['HTTP_X_REAL_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP', 'HTTP_X_CLIENT_IP', 'HTTP_X_CLUSTER_CLIENT_IP']; - - /** - * 请求类型 - * @var string - */ - protected $method; - - /** - * 域名(含协议及端口) - * @var string - */ - protected $domain; - - /** - * HOST(含端口) - * @var string - */ - protected $host; - - /** - * 子域名 - * @var string - */ - protected $subDomain; - - /** - * 泛域名 - * @var string - */ - protected $panDomain; - - /** - * 当前URL地址 - * @var string - */ - protected $url; - - /** - * 基础URL - * @var string - */ - protected $baseUrl; - - /** - * 当前执行的文件 - * @var string - */ - protected $baseFile; - - /** - * 访问的ROOT地址 - * @var string - */ - protected $root; - - /** - * pathinfo - * @var string - */ - protected $pathinfo; - - /** - * pathinfo(不含后缀) - * @var string - */ - protected $path; - - /** - * 当前请求的IP地址 - * @var string - */ - protected $realIP; - - /** - * 当前控制器名 - * @var string - */ - protected $controller; - - /** - * 当前操作名 - * @var string - */ - protected $action; - - /** - * 当前请求参数 - * @var array - */ - protected $param = []; - - /** - * 当前GET参数 - * @var array - */ - protected $get = []; - - /** - * 当前POST参数 - * @var array - */ - protected $post = []; - - /** - * 当前REQUEST参数 - * @var array - */ - protected $request = []; - - /** - * 当前路由对象 - * @var Rule - */ - protected $rule; - - /** - * 当前ROUTE参数 - * @var array - */ - protected $route = []; - - /** - * 中间件传递的参数 - * @var array - */ - protected $middleware = []; - - /** - * 当前PUT参数 - * @var array - */ - protected $put; - - /** - * SESSION对象 - * @var Session - */ - protected $session; - - /** - * COOKIE数据 - * @var array - */ - protected $cookie = []; - - /** - * ENV对象 - * @var Env - */ - protected $env; - - /** - * 当前SERVER参数 - * @var array - */ - protected $server = []; - - /** - * 当前FILE参数 - * @var array - */ - protected $file = []; - - /** - * 当前HEADER参数 - * @var array - */ - protected $header = []; - - /** - * 资源类型定义 - * @var array - */ - protected $mimeType = [ - 'xml' => 'application/xml,text/xml,application/x-xml', - 'json' => 'application/json,text/x-json,application/jsonrequest,text/json', - 'js' => 'text/javascript,application/javascript,application/x-javascript', - 'css' => 'text/css', - 'rss' => 'application/rss+xml', - 'yaml' => 'application/x-yaml,text/yaml', - 'atom' => 'application/atom+xml', - 'pdf' => 'application/pdf', - 'text' => 'text/plain', - 'image' => 'image/png,image/jpg,image/jpeg,image/pjpeg,image/gif,image/webp,image/*', - 'csv' => 'text/csv', - 'html' => 'text/html,application/xhtml+xml,*/*', - ]; - - /** - * 当前请求内容 - * @var string - */ - protected $content; - - /** - * 全局过滤规则 - * @var array - */ - protected $filter; - - /** - * php://input内容 - * @var string - */ - // php://input - protected $input; - - /** - * 请求安全Key - * @var string - */ - protected $secureKey; - - /** - * 是否合并Param - * @var bool - */ - protected $mergeParam = false; - - /** - * 架构函数 - * @access public - */ - public function __construct() - { - // 保存 php://input - $this->input = file_get_contents('php://input'); - } - - public static function __make(App $app) - { - $request = new static(); - - $request->server = $_SERVER; - $request->env = $app->env; - $request->get = $_GET; - $request->post = $_POST ?: $request->getInputData($request->input); - $request->put = $request->getInputData($request->input); - $request->request = $_REQUEST; - $request->cookie = $_COOKIE; - $request->file = $_FILES ?? []; - - if (function_exists('apache_request_headers') && $result = apache_request_headers()) { - $header = $result; - } else { - $header = []; - $server = $_SERVER; - foreach ($server as $key => $val) { - if (0 === strpos($key, 'HTTP_')) { - $key = str_replace('_', '-', strtolower(substr($key, 5))); - $header[$key] = $val; - } - } - if (isset($server['CONTENT_TYPE'])) { - $header['content-type'] = $server['CONTENT_TYPE']; - } - if (isset($server['CONTENT_LENGTH'])) { - $header['content-length'] = $server['CONTENT_LENGTH']; - } - } - - $request->header = array_change_key_case($header); - - return $request; - } - - /** - * 设置当前包含协议的域名 - * @access public - * @param string $domain 域名 - * @return $this - */ - public function setDomain(string $domain) - { - $this->domain = $domain; - return $this; - } - - /** - * 获取当前包含协议的域名 - * @access public - * @param bool $port 是否需要去除端口号 - * @return string - */ - public function domain(bool $port = false): string - { - return $this->scheme() . '://' . $this->host($port); - } - - /** - * 获取当前根域名 - * @access public - * @return string - */ - public function rootDomain(): string - { - $root = $this->rootDomain; - - if (!$root) { - $item = explode('.', $this->host()); - $count = count($item); - $root = $count > 1 ? $item[$count - 2] . '.' . $item[$count - 1] : $item[0]; - } - - return $root; - } - - /** - * 设置当前泛域名的值 - * @access public - * @param string $domain 域名 - * @return $this - */ - public function setSubDomain(string $domain) - { - $this->subDomain = $domain; - return $this; - } - - /** - * 获取当前子域名 - * @access public - * @return string - */ - public function subDomain(): string - { - if (is_null($this->subDomain)) { - // 获取当前主域名 - $rootDomain = $this->rootDomain(); - - if ($rootDomain) { - $this->subDomain = rtrim(stristr($this->host(), $rootDomain, true), '.'); - } else { - $this->subDomain = ''; - } - } - - return $this->subDomain; - } - - /** - * 设置当前泛域名的值 - * @access public - * @param string $domain 域名 - * @return $this - */ - public function setPanDomain(string $domain) - { - $this->panDomain = $domain; - return $this; - } - - /** - * 获取当前泛域名的值 - * @access public - * @return string - */ - public function panDomain(): string - { - return $this->panDomain ?: ''; - } - - /** - * 设置当前完整URL 包括QUERY_STRING - * @access public - * @param string $url URL地址 - * @return $this - */ - public function setUrl(string $url) - { - $this->url = $url; - return $this; - } - - /** - * 获取当前完整URL 包括QUERY_STRING - * @access public - * @param bool $complete 是否包含完整域名 - * @return string - */ - public function url(bool $complete = false): string - { - if ($this->url) { - $url = $this->url; - } elseif ($this->server('HTTP_X_REWRITE_URL')) { - $url = $this->server('HTTP_X_REWRITE_URL'); - } elseif ($this->server('REQUEST_URI')) { - $url = $this->server('REQUEST_URI'); - } elseif ($this->server('ORIG_PATH_INFO')) { - $url = $this->server('ORIG_PATH_INFO') . (!empty($this->server('QUERY_STRING')) ? '?' . $this->server('QUERY_STRING') : ''); - } elseif (isset($_SERVER['argv'][1])) { - $url = $_SERVER['argv'][1]; - } else { - $url = ''; - } - - return $complete ? $this->domain() . $url : $url; - } - - /** - * 设置当前URL 不含QUERY_STRING - * @access public - * @param string $url URL地址 - * @return $this - */ - public function setBaseUrl(string $url) - { - $this->baseUrl = $url; - return $this; - } - - /** - * 获取当前URL 不含QUERY_STRING - * @access public - * @param bool $complete 是否包含完整域名 - * @return string - */ - public function baseUrl(bool $complete = false): string - { - if (!$this->baseUrl) { - $str = $this->url(); - $this->baseUrl = strpos($str, '?') ? strstr($str, '?', true) : $str; - } - - return $complete ? $this->domain() . $this->baseUrl : $this->baseUrl; - } - - /** - * 获取当前执行的文件 SCRIPT_NAME - * @access public - * @param bool $complete 是否包含完整域名 - * @return string - */ - public function baseFile(bool $complete = false): string - { - if (!$this->baseFile) { - $url = ''; - if (!$this->isCli()) { - $script_name = basename($this->server('SCRIPT_FILENAME')); - if (basename($this->server('SCRIPT_NAME')) === $script_name) { - $url = $this->server('SCRIPT_NAME'); - } elseif (basename($this->server('PHP_SELF')) === $script_name) { - $url = $this->server('PHP_SELF'); - } elseif (basename($this->server('ORIG_SCRIPT_NAME')) === $script_name) { - $url = $this->server('ORIG_SCRIPT_NAME'); - } elseif (($pos = strpos($this->server('PHP_SELF'), '/' . $script_name)) !== false) { - $url = substr($this->server('SCRIPT_NAME'), 0, $pos) . '/' . $script_name; - } elseif ($this->server('DOCUMENT_ROOT') && strpos($this->server('SCRIPT_FILENAME'), $this->server('DOCUMENT_ROOT')) === 0) { - $url = str_replace('\\', '/', str_replace($this->server('DOCUMENT_ROOT'), '', $this->server('SCRIPT_FILENAME'))); - } - } - $this->baseFile = $url; - } - - return $complete ? $this->domain() . $this->baseFile : $this->baseFile; - } - - /** - * 设置URL访问根地址 - * @access public - * @param string $url URL地址 - * @return $this - */ - public function setRoot(string $url) - { - $this->root = $url; - return $this; - } - - /** - * 获取URL访问根地址 - * @access public - * @param bool $complete 是否包含完整域名 - * @return string - */ - public function root(bool $complete = false): string - { - if (!$this->root) { - $file = $this->baseFile(); - if ($file && 0 !== strpos($this->url(), $file)) { - $file = str_replace('\\', '/', dirname($file)); - } - $this->root = rtrim($file, '/'); - } - - return $complete ? $this->domain() . $this->root : $this->root; - } - - /** - * 获取URL访问根目录 - * @access public - * @return string - */ - public function rootUrl(): string - { - $base = $this->root(); - $root = strpos($base, '.') ? ltrim(dirname($base), DIRECTORY_SEPARATOR) : $base; - - if ('' != $root) { - $root = '/' . ltrim($root, '/'); - } - - return $root; - } - - /** - * 设置当前请求的pathinfo - * @access public - * @param string $pathinfo - * @return $this - */ - public function setPathinfo(string $pathinfo) - { - $this->pathinfo = $pathinfo; - return $this; - } - - /** - * 获取当前请求URL的pathinfo信息(含URL后缀) - * @access public - * @return string - */ - public function pathinfo(): string - { - if (is_null($this->pathinfo)) { - if (isset($_GET[$this->varPathinfo])) { - // 判断URL里面是否有兼容模式参数 - $pathinfo = $_GET[$this->varPathinfo]; - unset($_GET[$this->varPathinfo]); - unset($this->get[$this->varPathinfo]); - } elseif ($this->server('PATH_INFO')) { - $pathinfo = $this->server('PATH_INFO'); - } elseif (false !== strpos(PHP_SAPI, 'cli')) { - $pathinfo = strpos($this->server('REQUEST_URI'), '?') ? strstr($this->server('REQUEST_URI'), '?', true) : $this->server('REQUEST_URI'); - } - - // 分析PATHINFO信息 - if (!isset($pathinfo)) { - foreach ($this->pathinfoFetch as $type) { - if ($this->server($type)) { - $pathinfo = (0 === strpos($this->server($type), $this->server('SCRIPT_NAME'))) ? - substr($this->server($type), strlen($this->server('SCRIPT_NAME'))) : $this->server($type); - break; - } - } - } - - if (!empty($pathinfo)) { - unset($this->get[$pathinfo], $this->request[$pathinfo]); - } - - $this->pathinfo = empty($pathinfo) || '/' == $pathinfo ? '' : ltrim($pathinfo, '/'); - } - - return $this->pathinfo; - } - - /** - * 当前URL的访问后缀 - * @access public - * @return string - */ - public function ext(): string - { - return pathinfo($this->pathinfo(), PATHINFO_EXTENSION); - } - - /** - * 获取当前请求的时间 - * @access public - * @param bool $float 是否使用浮点类型 - * @return integer|float - */ - public function time(bool $float = false) - { - return $float ? $this->server('REQUEST_TIME_FLOAT') : $this->server('REQUEST_TIME'); - } - - /** - * 当前请求的资源类型 - * @access public - * @return string - */ - public function type(): string - { - $accept = $this->server('HTTP_ACCEPT'); - - if (empty($accept)) { - return ''; - } - - foreach ($this->mimeType as $key => $val) { - $array = explode(',', $val); - foreach ($array as $k => $v) { - if (stristr($accept, $v)) { - return $key; - } - } - } - - return ''; - } - - /** - * 设置资源类型 - * @access public - * @param string|array $type 资源类型名 - * @param string $val 资源类型 - * @return void - */ - public function mimeType($type, $val = ''): void - { - if (is_array($type)) { - $this->mimeType = array_merge($this->mimeType, $type); - } else { - $this->mimeType[$type] = $val; - } - } - - /** - * 设置请求类型 - * @access public - * @param string $method 请求类型 - * @return $this - */ - public function setMethod(string $method) - { - $this->method = strtoupper($method); - return $this; - } - - /** - * 当前的请求类型 - * @access public - * @param bool $origin 是否获取原始请求类型 - * @return string - */ - public function method(bool $origin = false): string - { - if ($origin) { - // 获取原始请求类型 - return $this->server('REQUEST_METHOD') ?: 'GET'; - } elseif (!$this->method) { - if (isset($this->post[$this->varMethod])) { - $method = strtolower($this->post[$this->varMethod]); - if (in_array($method, ['get', 'post', 'put', 'patch', 'delete'])) { - $this->method = strtoupper($method); - $this->{$method} = $this->post; - } else { - $this->method = 'POST'; - } - unset($this->post[$this->varMethod]); - } elseif ($this->server('HTTP_X_HTTP_METHOD_OVERRIDE')) { - $this->method = strtoupper($this->server('HTTP_X_HTTP_METHOD_OVERRIDE')); - } else { - $this->method = $this->server('REQUEST_METHOD') ?: 'GET'; - } - } - - return $this->method; - } - - /** - * 是否为GET请求 - * @access public - * @return bool - */ - public function isGet(): bool - { - return $this->method() == 'GET'; - } - - /** - * 是否为POST请求 - * @access public - * @return bool - */ - public function isPost(): bool - { - return $this->method() == 'POST'; - } - - /** - * 是否为PUT请求 - * @access public - * @return bool - */ - public function isPut(): bool - { - return $this->method() == 'PUT'; - } - - /** - * 是否为DELTE请求 - * @access public - * @return bool - */ - public function isDelete(): bool - { - return $this->method() == 'DELETE'; - } - - /** - * 是否为HEAD请求 - * @access public - * @return bool - */ - public function isHead(): bool - { - return $this->method() == 'HEAD'; - } - - /** - * 是否为PATCH请求 - * @access public - * @return bool - */ - public function isPatch(): bool - { - return $this->method() == 'PATCH'; - } - - /** - * 是否为OPTIONS请求 - * @access public - * @return bool - */ - public function isOptions(): bool - { - return $this->method() == 'OPTIONS'; - } - - /** - * 是否为cli - * @access public - * @return bool - */ - public function isCli(): bool - { - return PHP_SAPI == 'cli'; - } - - /** - * 是否为cgi - * @access public - * @return bool - */ - public function isCgi(): bool - { - return strpos(PHP_SAPI, 'cgi') === 0; - } - - /** - * 获取当前请求的参数 - * @access public - * @param string|array $name 变量名 - * @param mixed $default 默认值 - * @param string|array $filter 过滤方法 - * @return mixed - */ - public function param($name = '', $default = null, $filter = '') - { - if (empty($this->mergeParam)) { - $method = $this->method(true); - - // 自动获取请求变量 - switch ($method) { - case 'POST': - $vars = $this->post(false); - break; - case 'PUT': - case 'DELETE': - case 'PATCH': - $vars = $this->put(false); - break; - default: - $vars = []; - } - - // 当前请求参数和URL地址中的参数合并 - $this->param = array_merge($this->param, $this->get(false), $vars, $this->route(false)); - - $this->mergeParam = true; - } - - if (is_array($name)) { - return $this->only($name, $this->param, $filter); - } - - return $this->input($this->param, $name, $default, $filter); - } - - /** - * 设置路由变量 - * @access public - * @param Rule $rule 路由对象 - * @return $this - */ - public function setRule(Rule $rule) - { - $this->rule = $rule; - return $this; - } - - /** - * 获取当前路由对象 - * @access public - * @return Rule|null - */ - public function rule() - { - return $this->rule; - } - - /** - * 设置路由变量 - * @access public - * @param array $route 路由变量 - * @return $this - */ - public function setRoute(array $route) - { - $this->route = array_merge($this->route, $route); - return $this; - } - - /** - * 获取路由参数 - * @access public - * @param string|array $name 变量名 - * @param mixed $default 默认值 - * @param string|array $filter 过滤方法 - * @return mixed - */ - public function route($name = '', $default = null, $filter = '') - { - if (is_array($name)) { - return $this->only($name, $this->route, $filter); - } - - return $this->input($this->route, $name, $default, $filter); - } - - /** - * 获取GET参数 - * @access public - * @param string|array $name 变量名 - * @param mixed $default 默认值 - * @param string|array $filter 过滤方法 - * @return mixed - */ - public function get($name = '', $default = null, $filter = '') - { - if (is_array($name)) { - return $this->only($name, $this->get, $filter); - } - - return $this->input($this->get, $name, $default, $filter); - } - - /** - * 获取中间件传递的参数 - * @access public - * @param mixed $name 变量名 - * @param mixed $default 默认值 - * @return mixed - */ - public function middleware($name, $default = null) - { - return $this->middleware[$name] ?? $default; - } - - /** - * 获取POST参数 - * @access public - * @param string|array $name 变量名 - * @param mixed $default 默认值 - * @param string|array $filter 过滤方法 - * @return mixed - */ - public function post($name = '', $default = null, $filter = '') - { - if (is_array($name)) { - return $this->only($name, $this->post, $filter); - } - - return $this->input($this->post, $name, $default, $filter); - } - - /** - * 获取PUT参数 - * @access public - * @param string|array $name 变量名 - * @param mixed $default 默认值 - * @param string|array $filter 过滤方法 - * @return mixed - */ - public function put($name = '', $default = null, $filter = '') - { - if (is_array($name)) { - return $this->only($name, $this->put, $filter); - } - - return $this->input($this->put, $name, $default, $filter); - } - - protected function getInputData($content): array - { - if (false !== strpos($this->contentType(), 'json')) { - return (array) json_decode($content, true); - } elseif (strpos($content, '=')) { - parse_str($content, $data); - return $data; - } - - return []; - } - - /** - * 设置获取DELETE参数 - * @access public - * @param mixed $name 变量名 - * @param mixed $default 默认值 - * @param string|array $filter 过滤方法 - * @return mixed - */ - public function delete($name = '', $default = null, $filter = '') - { - return $this->put($name, $default, $filter); - } - - /** - * 设置获取PATCH参数 - * @access public - * @param mixed $name 变量名 - * @param mixed $default 默认值 - * @param string|array $filter 过滤方法 - * @return mixed - */ - public function patch($name = '', $default = null, $filter = '') - { - return $this->put($name, $default, $filter); - } - - /** - * 获取request变量 - * @access public - * @param string|array $name 数据名称 - * @param mixed $default 默认值 - * @param string|array $filter 过滤方法 - * @return mixed - */ - public function request($name = '', $default = null, $filter = '') - { - if (is_array($name)) { - return $this->only($name, $this->request, $filter); - } - - return $this->input($this->request, $name, $default, $filter); - } - - /** - * 获取环境变量 - * @access public - * @param string $name 数据名称 - * @param string $default 默认值 - * @return mixed - */ - public function env(string $name = '', string $default = null) - { - if (empty($name)) { - return $this->env->get(); - } else { - $name = strtoupper($name); - } - - return $this->env->get($name, $default); - } - - /** - * 获取session数据 - * @access public - * @param string $name 数据名称 - * @param string $default 默认值 - * @return mixed - */ - public function session(string $name = '', $default = null) - { - if ('' === $name) { - return $this->session->all(); - } - return $this->session->get($name, $default); - } - - /** - * 获取cookie参数 - * @access public - * @param mixed $name 数据名称 - * @param string $default 默认值 - * @param string|array $filter 过滤方法 - * @return mixed - */ - public function cookie(string $name = '', $default = null, $filter = '') - { - if (!empty($name)) { - $data = $this->getData($this->cookie, $name, $default); - } else { - $data = $this->cookie; - } - - // 解析过滤器 - $filter = $this->getFilter($filter, $default); - - if (is_array($data)) { - array_walk_recursive($data, [$this, 'filterValue'], $filter); - } else { - $this->filterValue($data, $name, $filter); - } - - return $data; - } - - /** - * 获取server参数 - * @access public - * @param string $name 数据名称 - * @param string $default 默认值 - * @return mixed - */ - public function server(string $name = '', string $default = '') - { - if (empty($name)) { - return $this->server; - } else { - $name = strtoupper($name); - } - - return $this->server[$name] ?? $default; - } - - /** - * 获取上传的文件信息 - * @access public - * @param string $name 名称 - * @return null|array|UploadedFile - */ - public function file(string $name = '') - { - $files = $this->file; - if (!empty($files)) { - - if (strpos($name, '.')) { - list($name, $sub) = explode('.', $name); - } - - // 处理上传文件 - $array = $this->dealUploadFile($files, $name); - - if ('' === $name) { - // 获取全部文件 - return $array; - } elseif (isset($sub) && isset($array[$name][$sub])) { - return $array[$name][$sub]; - } elseif (isset($array[$name])) { - return $array[$name]; - } - } - } - - protected function dealUploadFile(array $files, string $name): array - { - $array = []; - foreach ($files as $key => $file) { - if (is_array($file['name'])) { - $item = []; - $keys = array_keys($file); - $count = count($file['name']); - - for ($i = 0; $i < $count; $i++) { - if ($file['error'][$i] > 0) { - if ($name == $key) { - $this->throwUploadFileError($file['error'][$i]); - } else { - continue; - } - } - - $temp['key'] = $key; - - foreach ($keys as $_key) { - $temp[$_key] = $file[$_key][$i]; - } - - $item[] = new UploadedFile($temp['tmp_name'], $temp['name'], $temp['type'], $temp['error']); - } - - $array[$key] = $item; - } else { - if ($file instanceof File) { - $array[$key] = $file; - } else { - if ($file['error'] > 0) { - if ($key == $name) { - $this->throwUploadFileError($file['error']); - } else { - continue; - } - } - - $array[$key] = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['error']); - } - } - } - - return $array; - } - - protected function throwUploadFileError($error) - { - static $fileUploadErrors = [ - 1 => 'upload File size exceeds the maximum value', - 2 => 'upload File size exceeds the maximum value', - 3 => 'only the portion of file is uploaded', - 4 => 'no file to uploaded', - 6 => 'upload temp dir not found', - 7 => 'file write error', - ]; - - $msg = $fileUploadErrors[$error]; - throw new Exception($msg, $error); - } - - /** - * 设置或者获取当前的Header - * @access public - * @param string $name header名称 - * @param string $default 默认值 - * @return string|array - */ - public function header(string $name = '', string $default = null) - { - if ('' === $name) { - return $this->header; - } - - $name = str_replace('_', '-', strtolower($name)); - - return $this->header[$name] ?? $default; - } - - /** - * 获取变量 支持过滤和默认值 - * @access public - * @param array $data 数据源 - * @param string|false $name 字段名 - * @param mixed $default 默认值 - * @param string|array $filter 过滤函数 - * @return mixed - */ - public function input(array $data = [], $name = '', $default = null, $filter = '') - { - if (false === $name) { - // 获取原始数据 - return $data; - } - - $name = (string) $name; - if ('' != $name) { - // 解析name - if (strpos($name, '/')) { - list($name, $type) = explode('/', $name); - } - - $data = $this->getData($data, $name); - - if (is_null($data)) { - return $default; - } - - if (is_object($data)) { - return $data; - } - } - - $data = $this->filterData($data, $filter, $name, $default); - - if (isset($type) && $data !== $default) { - // 强制类型转换 - $this->typeCast($data, $type); - } - - return $data; - } - - protected function filterData($data, $filter, $name, $default) - { - // 解析过滤器 - $filter = $this->getFilter($filter, $default); - - if (is_array($data)) { - array_walk_recursive($data, [$this, 'filterValue'], $filter); - } else { - $this->filterValue($data, $name, $filter); - } - - return $data; - } - - /** - * 强制类型转换 - * @access public - * @param mixed $data - * @param string $type - * @return mixed - */ - private function typeCast(&$data, string $type) - { - switch (strtolower($type)) { - // 数组 - case 'a': - $data = (array) $data; - break; - // 数字 - case 'd': - $data = (int) $data; - break; - // 浮点 - case 'f': - $data = (float) $data; - break; - // 布尔 - case 'b': - $data = (boolean) $data; - break; - // 字符串 - case 's': - if (is_scalar($data)) { - $data = (string) $data; - } else { - throw new \InvalidArgumentException('variable type error:' . gettype($data)); - } - break; - } - } - - /** - * 获取数据 - * @access public - * @param array $data 数据源 - * @param string $name 字段名 - * @param mixed $default 默认值 - * @return mixed - */ - protected function getData(array $data, string $name, $default = null) - { - foreach (explode('.', $name) as $val) { - if (isset($data[$val])) { - $data = $data[$val]; - } else { - return $default; - } - } - - return $data; - } - - /** - * 设置或获取当前的过滤规则 - * @access public - * @param mixed $filter 过滤规则 - * @return mixed - */ - public function filter($filter = null) - { - if (is_null($filter)) { - return $this->filter; - } - - $this->filter = $filter; - - return $this; - } - - protected function getFilter($filter, $default): array - { - if (is_null($filter)) { - $filter = []; - } else { - $filter = $filter ?: $this->filter; - if (is_string($filter) && false === strpos($filter, '/')) { - $filter = explode(',', $filter); - } else { - $filter = (array) $filter; - } - } - - $filter[] = $default; - - return $filter; - } - - /** - * 递归过滤给定的值 - * @access public - * @param mixed $value 键值 - * @param mixed $key 键名 - * @param array $filters 过滤方法+默认值 - * @return mixed - */ - public function filterValue(&$value, $key, $filters) - { - $default = array_pop($filters); - - foreach ($filters as $filter) { - if (is_callable($filter)) { - // 调用函数或者方法过滤 - $value = call_user_func($filter, $value); - } elseif (is_scalar($value)) { - if (is_string($filter) && false !== strpos($filter, '/')) { - // 正则过滤 - if (!preg_match($filter, $value)) { - // 匹配不成功返回默认值 - $value = $default; - break; - } - } elseif (!empty($filter)) { - // filter函数不存在时, 则使用filter_var进行过滤 - // filter为非整形值时, 调用filter_id取得过滤id - $value = filter_var($value, is_int($filter) ? $filter : filter_id($filter)); - if (false === $value) { - $value = $default; - break; - } - } - } - } - - return $value; - } - - /** - * 是否存在某个请求参数 - * @access public - * @param string $name 变量名 - * @param string $type 变量类型 - * @param bool $checkEmpty 是否检测空值 - * @return bool - */ - public function has(string $name, string $type = 'param', bool $checkEmpty = false): bool - { - if (!in_array($type, ['param', 'get', 'post', 'put', 'patch', 'route', 'delete', 'cookie', 'session', 'env', 'request', 'server', 'header', 'file'])) { - return false; - } - - $param = empty($this->$type) ? $this->$type() : $this->$type; - - if (is_object($param)) { - return $param->has($name); - } - - // 按.拆分成多维数组进行判断 - foreach (explode('.', $name) as $val) { - if (isset($param[$val])) { - $param = $param[$val]; - } else { - return false; - } - } - - return ($checkEmpty && '' === $param) ? false : true; - } - - /** - * 获取指定的参数 - * @access public - * @param array $name 变量名 - * @param mixed $data 数据或者变量类型 - * @param string|array $filter 过滤方法 - * @return array - */ - public function only(array $name, $data = 'param', $filter = ''): array - { - $data = is_array($data) ? $data : $this->$data(); - - $item = []; - foreach ($name as $key => $val) { - - if (is_int($key)) { - $default = null; - $key = $val; - if (!isset($data[$key])) { - continue; - } - } else { - $default = $val; - } - - $item[$key] = $this->filterData($data[$key] ?? $default, $filter, $key, $default); - } - - return $item; - } - - /** - * 排除指定参数获取 - * @access public - * @param array $name 变量名 - * @param string $type 变量类型 - * @return mixed - */ - public function except(array $name, string $type = 'param'): array - { - $param = $this->$type(); - - foreach ($name as $key) { - if (isset($param[$key])) { - unset($param[$key]); - } - } - - return $param; - } - - /** - * 当前是否ssl - * @access public - * @return bool - */ - public function isSsl(): bool - { - if ($this->server('HTTPS') && ('1' == $this->server('HTTPS') || 'on' == strtolower($this->server('HTTPS')))) { - return true; - } elseif ('https' == $this->server('REQUEST_SCHEME')) { - return true; - } elseif ('443' == $this->server('SERVER_PORT')) { - return true; - } elseif ('https' == $this->server('HTTP_X_FORWARDED_PROTO')) { - return true; - } elseif ($this->httpsAgentName && $this->server($this->httpsAgentName)) { - return true; - } - - return false; - } - - /** - * 当前是否JSON请求 - * @access public - * @return bool - */ - public function isJson(): bool - { - $acceptType = $this->type(); - - return false !== strpos($acceptType, 'json'); - } - - /** - * 当前是否Ajax请求 - * @access public - * @param bool $ajax true 获取原始ajax请求 - * @return bool - */ - public function isAjax(bool $ajax = false): bool - { - $value = $this->server('HTTP_X_REQUESTED_WITH'); - $result = $value && 'xmlhttprequest' == strtolower($value) ? true : false; - - if (true === $ajax) { - return $result; - } - - return $this->param($this->varAjax) ? true : $result; - } - - /** - * 当前是否Pjax请求 - * @access public - * @param bool $pjax true 获取原始pjax请求 - * @return bool - */ - public function isPjax(bool $pjax = false): bool - { - $result = !empty($this->server('HTTP_X_PJAX')) ? true : false; - - if (true === $pjax) { - return $result; - } - - return $this->param($this->varPjax) ? true : $result; - } - - /** - * 获取客户端IP地址 - * @access public - * @return string - */ - public function ip(): string - { - if (!empty($this->realIP)) { - return $this->realIP; - } - - $this->realIP = $this->server('REMOTE_ADDR', ''); - - // 如果指定了前端代理服务器IP以及其会发送的IP头 - // 则尝试获取前端代理服务器发送过来的真实IP - $proxyIp = $this->proxyServerIp; - $proxyIpHeader = $this->proxyServerIpHeader; - - if (count($proxyIp) > 0 && count($proxyIpHeader) > 0) { - // 从指定的HTTP头中依次尝试获取IP地址 - // 直到获取到一个合法的IP地址 - foreach ($proxyIpHeader as $header) { - $tempIP = $this->server($header); - - if (empty($tempIP)) { - continue; - } - - $tempIP = trim(explode(',', $tempIP)[0]); - - if (!$this->isValidIP($tempIP)) { - $tempIP = null; - } else { - break; - } - } - - // tempIP不为空,说明获取到了一个IP地址 - // 这时我们检查 REMOTE_ADDR 是不是指定的前端代理服务器之一 - // 如果是的话说明该 IP头 是由前端代理服务器设置的 - // 否则则是伪装的 - if (!empty($tempIP)) { - $realIPBin = $this->ip2bin($this->realIP); - - foreach ($proxyIp as $ip) { - $serverIPElements = explode('/', $ip); - $serverIP = $serverIPElements[0]; - $serverIPPrefix = $serverIPElements[1] ?? 128; - $serverIPBin = $this->ip2bin($serverIP); - - // IP类型不符 - if (strlen($realIPBin) !== strlen($serverIPBin)) { - continue; - } - - if (strncmp($realIPBin, $serverIPBin, (int) $serverIPPrefix) === 0) { - $this->realIP = $tempIP; - break; - } - } - } - } - - if (!$this->isValidIP($this->realIP)) { - $this->realIP = '0.0.0.0'; - } - - return $this->realIP; - } - - /** - * 检测是否是合法的IP地址 - * - * @param string $ip IP地址 - * @param string $type IP地址类型 (ipv4, ipv6) - * - * @return boolean - */ - public function isValidIP(string $ip, string $type = ''): bool - { - switch (strtolower($type)) { - case 'ipv4': - $flag = FILTER_FLAG_IPV4; - break; - case 'ipv6': - $flag = FILTER_FLAG_IPV6; - break; - default: - $flag = null; - break; - } - - return boolval(filter_var($ip, FILTER_VALIDATE_IP, $flag)); - } - - /** - * 将IP地址转换为二进制字符串 - * - * @param string $ip - * - * @return string - */ - public function ip2bin(string $ip): string - { - if ($this->isValidIP($ip, 'ipv6')) { - $IPHex = str_split(bin2hex(inet_pton($ip)), 4); - foreach ($IPHex as $key => $value) { - $IPHex[$key] = intval($value, 16); - } - $IPBin = vsprintf('%016b%016b%016b%016b%016b%016b%016b%016b', $IPHex); - } else { - $IPHex = str_split(bin2hex(inet_pton($ip)), 2); - foreach ($IPHex as $key => $value) { - $IPHex[$key] = intval($value, 16); - } - $IPBin = vsprintf('%08b%08b%08b%08b', $IPHex); - } - - return $IPBin; - } - - /** - * 检测是否使用手机访问 - * @access public - * @return bool - */ - public function isMobile(): bool - { - if ($this->server('HTTP_VIA') && stristr($this->server('HTTP_VIA'), "wap")) { - return true; - } elseif ($this->server('HTTP_ACCEPT') && strpos(strtoupper($this->server('HTTP_ACCEPT')), "VND.WAP.WML")) { - return true; - } elseif ($this->server('HTTP_X_WAP_PROFILE') || $this->server('HTTP_PROFILE')) { - return true; - } elseif ($this->server('HTTP_USER_AGENT') && preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $this->server('HTTP_USER_AGENT'))) { - return true; - } - - return false; - } - - /** - * 当前URL地址中的scheme参数 - * @access public - * @return string - */ - public function scheme(): string - { - return $this->isSsl() ? 'https' : 'http'; - } - - /** - * 当前请求URL地址中的query参数 - * @access public - * @return string - */ - public function query(): string - { - return $this->server('QUERY_STRING', ''); - } - - /** - * 设置当前请求的host(包含端口) - * @access public - * @param string $host 主机名(含端口) - * @return $this - */ - public function setHost(string $host) - { - $this->host = $host; - - return $this; - } - - /** - * 当前请求的host - * @access public - * @param bool $strict true 仅仅获取HOST - * @return string - */ - public function host(bool $strict = false): string - { - if ($this->host) { - $host = $this->host; - } else { - $host = strval($this->server('HTTP_X_REAL_HOST') ?: $this->server('HTTP_HOST')); - } - - return true === $strict && strpos($host, ':') ? strstr($host, ':', true) : $host; - } - - /** - * 当前请求URL地址中的port参数 - * @access public - * @return int - */ - public function port(): int - { - return (int) $this->server('SERVER_PORT', ''); - } - - /** - * 当前请求 SERVER_PROTOCOL - * @access public - * @return string - */ - public function protocol(): string - { - return $this->server('SERVER_PROTOCOL', ''); - } - - /** - * 当前请求 REMOTE_PORT - * @access public - * @return int - */ - public function remotePort(): int - { - return (int) $this->server('REMOTE_PORT', ''); - } - - /** - * 当前请求 HTTP_CONTENT_TYPE - * @access public - * @return string - */ - public function contentType(): string - { - $contentType = $this->server('CONTENT_TYPE'); - - if ($contentType) { - if (strpos($contentType, ';')) { - list($type) = explode(';', $contentType); - } else { - $type = $contentType; - } - return trim($type); - } - - return ''; - } - - /** - * 获取当前请求的安全Key - * @access public - * @return string - */ - public function secureKey(): string - { - if (is_null($this->secureKey)) { - $this->secureKey = uniqid('', true); - } - - return $this->secureKey; - } - - /** - * 设置当前的控制器名 - * @access public - * @param string $controller 控制器名 - * @return $this - */ - public function setController(string $controller) - { - $this->controller = $controller; - return $this; - } - - /** - * 设置当前的操作名 - * @access public - * @param string $action 操作名 - * @return $this - */ - public function setAction(string $action) - { - $this->action = $action; - return $this; - } - - /** - * 获取当前的控制器名 - * @access public - * @param bool $convert 转换为小写 - * @return string - */ - public function controller(bool $convert = false): string - { - $name = $this->controller ?: ''; - return $convert ? strtolower($name) : $name; - } - - /** - * 获取当前的操作名 - * @access public - * @param bool $convert 转换为小写 - * @return string - */ - public function action(bool $convert = false): string - { - $name = $this->action ?: ''; - return $convert ? strtolower($name) : $name; - } - - /** - * 设置或者获取当前请求的content - * @access public - * @return string - */ - public function getContent(): string - { - if (is_null($this->content)) { - $this->content = $this->input; - } - - return $this->content; - } - - /** - * 获取当前请求的php://input - * @access public - * @return string - */ - public function getInput(): string - { - return $this->input; - } - - /** - * 生成请求令牌 - * @access public - * @param string $name 令牌名称 - * @param mixed $type 令牌生成方法 - * @return string - */ - public function buildToken(string $name = '__token__', $type = 'md5'): string - { - $type = is_callable($type) ? $type : 'md5'; - $token = call_user_func($type, $this->server('REQUEST_TIME_FLOAT')); - - $this->session->set($name, $token); - - return $token; - } - - /** - * 检查请求令牌 - * @access public - * @param string $token 令牌名称 - * @param array $data 表单数据 - * @return bool - */ - public function checkToken(string $token = '__token__', array $data = []): bool - { - if (in_array($this->method(), ['GET', 'HEAD', 'OPTIONS'], true)) { - return true; - } - - if (!$this->session->has($token)) { - // 令牌数据无效 - return false; - } - - // Header验证 - if ($this->header('X-CSRF-TOKEN') && $this->session->get($token) === $this->header('X-CSRF-TOKEN')) { - // 防止重复提交 - $this->session->delete($token); // 验证完成销毁session - return true; - } - - if (empty($data)) { - $data = $this->post(); - } - - // 令牌验证 - if (isset($data[$token]) && $this->session->get($token) === $data[$token]) { - // 防止重复提交 - $this->session->delete($token); // 验证完成销毁session - return true; - } - - // 开启TOKEN重置 - $this->session->delete($token); - return false; - } - - /** - * 设置在中间件传递的数据 - * @access public - * @param array $middleware 数据 - * @return $this - */ - public function withMiddleware(array $middleware) - { - $this->middleware = array_merge($this->middleware, $middleware); - return $this; - } - - /** - * 设置GET数据 - * @access public - * @param array $get 数据 - * @return $this - */ - public function withGet(array $get) - { - $this->get = $get; - return $this; - } - - /** - * 设置POST数据 - * @access public - * @param array $post 数据 - * @return $this - */ - public function withPost(array $post) - { - $this->post = $post; - return $this; - } - - /** - * 设置COOKIE数据 - * @access public - * @param array $cookie 数据 - * @return $this - */ - public function withCookie(array $cookie) - { - $this->cookie = $cookie; - return $this; - } - - /** - * 设置SESSION数据 - * @access public - * @param Session $session 数据 - * @return $this - */ - public function withSession(Session $session) - { - $this->session = $session; - return $this; - } - - /** - * 设置SERVER数据 - * @access public - * @param array $server 数据 - * @return $this - */ - public function withServer(array $server) - { - $this->server = array_change_key_case($server, CASE_UPPER); - return $this; - } - - /** - * 设置HEADER数据 - * @access public - * @param array $header 数据 - * @return $this - */ - public function withHeader(array $header) - { - $this->header = array_change_key_case($header); - return $this; - } - - /** - * 设置ENV数据 - * @access public - * @param Env $env 数据 - * @return $this - */ - public function withEnv(Env $env) - { - $this->env = $env; - return $this; - } - - /** - * 设置php://input数据 - * @access public - * @param string $input RAW数据 - * @return $this - */ - public function withInput(string $input) - { - $this->input = $input; - return $this; - } - - /** - * 设置文件上传数据 - * @access public - * @param array $files 上传信息 - * @return $this - */ - public function withFiles(array $files) - { - $this->file = $files; - return $this; - } - - /** - * 设置ROUTE变量 - * @access public - * @param array $route 数据 - * @return $this - */ - public function withRoute(array $route) - { - $this->route = $route; - return $this; - } - - /** - * 设置中间传递数据 - * @access public - * @param string $name 参数名 - * @param mixed $value 值 - */ - public function __set(string $name, $value) - { - $this->middleware[$name] = $value; - } - - /** - * 获取中间传递数据的值 - * @access public - * @param string $name 名称 - * @return mixed - */ - public function __get(string $name) - { - return $this->middleware($name); - } - - /** - * 检测中间传递数据的值 - * @access public - * @param string $name 名称 - * @return boolean - */ - public function __isset(string $name): bool - { - return isset($this->middleware[$name]); - } -} diff --git a/vendor/topthink/framework/src/think/Response.php b/vendor/topthink/framework/src/think/Response.php deleted file mode 100644 index 9b8d96dcd..000000000 --- a/vendor/topthink/framework/src/think/Response.php +++ /dev/null @@ -1,409 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -/** - * 响应输出基础类 - * @package think - */ -abstract class Response -{ - /** - * 原始数据 - * @var mixed - */ - protected $data; - - /** - * 当前contentType - * @var string - */ - protected $contentType = 'text/html'; - - /** - * 字符集 - * @var string - */ - protected $charset = 'utf-8'; - - /** - * 状态码 - * @var integer - */ - protected $code = 200; - - /** - * 是否允许请求缓存 - * @var bool - */ - protected $allowCache = true; - - /** - * 输出参数 - * @var array - */ - protected $options = []; - - /** - * header参数 - * @var array - */ - protected $header = []; - - /** - * 输出内容 - * @var string - */ - protected $content = null; - - /** - * Cookie对象 - * @var Cookie - */ - protected $cookie; - - /** - * Session对象 - * @var Session - */ - protected $session; - - /** - * 初始化 - * @access protected - * @param mixed $data 输出数据 - * @param int $code 状态码 - */ - protected function init($data = '', int $code = 200) - { - $this->data($data); - $this->code = $code; - - $this->contentType($this->contentType, $this->charset); - } - - /** - * 创建Response对象 - * @access public - * @param mixed $data 输出数据 - * @param string $type 输出类型 - * @param int $code 状态码 - * @return Response - */ - public static function create($data = '', string $type = 'html', int $code = 200): Response - { - $class = false !== strpos($type, '\\') ? $type : '\\think\\response\\' . ucfirst(strtolower($type)); - - return Container::getInstance()->invokeClass($class, [$data, $code]); - } - - /** - * 设置Session对象 - * @access public - * @param Session $session Session对象 - * @return $this - */ - public function setSession(Session $session) - { - $this->session = $session; - return $this; - } - - /** - * 发送数据到客户端 - * @access public - * @return void - * @throws \InvalidArgumentException - */ - public function send(): void - { - // 处理输出数据 - $data = $this->getContent(); - - if (!headers_sent() && !empty($this->header)) { - // 发送状态码 - http_response_code($this->code); - // 发送头部信息 - foreach ($this->header as $name => $val) { - header($name . (!is_null($val) ? ':' . $val : '')); - } - } - - $this->cookie->save(); - - $this->sendData($data); - - if (function_exists('fastcgi_finish_request')) { - // 提高页面响应 - fastcgi_finish_request(); - } - } - - /** - * 处理数据 - * @access protected - * @param mixed $data 要处理的数据 - * @return mixed - */ - protected function output($data) - { - return $data; - } - - /** - * 输出数据 - * @access protected - * @param string $data 要处理的数据 - * @return void - */ - protected function sendData(string $data): void - { - echo $data; - } - - /** - * 输出的参数 - * @access public - * @param mixed $options 输出参数 - * @return $this - */ - public function options(array $options = []) - { - $this->options = array_merge($this->options, $options); - - return $this; - } - - /** - * 输出数据设置 - * @access public - * @param mixed $data 输出数据 - * @return $this - */ - public function data($data) - { - $this->data = $data; - - return $this; - } - - /** - * 是否允许请求缓存 - * @access public - * @param bool $cache 允许请求缓存 - * @return $this - */ - public function allowCache(bool $cache) - { - $this->allowCache = $cache; - - return $this; - } - - /** - * 是否允许请求缓存 - * @access public - * @return $this - */ - public function isAllowCache() - { - return $this->allowCache; - } - - /** - * 设置Cookie - * @access public - * @param string $name cookie名称 - * @param string $value cookie值 - * @param mixed $option 可选参数 - * @return $this - */ - public function cookie(string $name, string $value, $option = null) - { - $this->cookie->set($name, $value, $option); - - return $this; - } - - /** - * 设置响应头 - * @access public - * @param array $header 参数 - * @return $this - */ - public function header(array $header = []) - { - $this->header = array_merge($this->header, $header); - - return $this; - } - - /** - * 设置页面输出内容 - * @access public - * @param mixed $content - * @return $this - */ - public function content($content) - { - if (null !== $content && !is_string($content) && !is_numeric($content) && !is_callable([ - $content, - '__toString', - ]) - ) { - throw new \InvalidArgumentException(sprintf('variable type error: %s', gettype($content))); - } - - $this->content = (string) $content; - - return $this; - } - - /** - * 发送HTTP状态 - * @access public - * @param integer $code 状态码 - * @return $this - */ - public function code(int $code) - { - $this->code = $code; - - return $this; - } - - /** - * LastModified - * @access public - * @param string $time - * @return $this - */ - public function lastModified(string $time) - { - $this->header['Last-Modified'] = $time; - - return $this; - } - - /** - * Expires - * @access public - * @param string $time - * @return $this - */ - public function expires(string $time) - { - $this->header['Expires'] = $time; - - return $this; - } - - /** - * ETag - * @access public - * @param string $eTag - * @return $this - */ - public function eTag(string $eTag) - { - $this->header['ETag'] = $eTag; - - return $this; - } - - /** - * 页面缓存控制 - * @access public - * @param string $cache 状态码 - * @return $this - */ - public function cacheControl(string $cache) - { - $this->header['Cache-control'] = $cache; - - return $this; - } - - /** - * 页面输出类型 - * @access public - * @param string $contentType 输出类型 - * @param string $charset 输出编码 - * @return $this - */ - public function contentType(string $contentType, string $charset = 'utf-8') - { - $this->header['Content-Type'] = $contentType . '; charset=' . $charset; - - return $this; - } - - /** - * 获取头部信息 - * @access public - * @param string $name 头部名称 - * @return mixed - */ - public function getHeader(string $name = '') - { - if (!empty($name)) { - return $this->header[$name] ?? null; - } - - return $this->header; - } - - /** - * 获取原始数据 - * @access public - * @return mixed - */ - public function getData() - { - return $this->data; - } - - /** - * 获取输出数据 - * @access public - * @return string - */ - public function getContent(): string - { - if (null == $this->content) { - $content = $this->output($this->data); - - if (null !== $content && !is_string($content) && !is_numeric($content) && !is_callable([ - $content, - '__toString', - ]) - ) { - throw new \InvalidArgumentException(sprintf('variable type error: %s', gettype($content))); - } - - $this->content = (string) $content; - } - - return $this->content; - } - - /** - * 获取状态码 - * @access public - * @return integer - */ - public function getCode(): int - { - return $this->code; - } -} diff --git a/vendor/topthink/framework/src/think/Route.php b/vendor/topthink/framework/src/think/Route.php deleted file mode 100644 index 6bf7c808a..000000000 --- a/vendor/topthink/framework/src/think/Route.php +++ /dev/null @@ -1,894 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use Closure; -use think\exception\RouteNotFoundException; -use think\route\Dispatch; -use think\route\dispatch\Url as UrlDispatch; -use think\route\Domain; -use think\route\Resource; -use think\route\Rule; -use think\route\RuleGroup; -use think\route\RuleItem; -use think\route\RuleName; -use think\route\Url as UrlBuild; - -/** - * 路由管理类 - * @package think - */ -class Route -{ - /** - * REST定义 - * @var array - */ - protected $rest = [ - 'index' => ['get', '', 'index'], - 'create' => ['get', '/create', 'create'], - 'edit' => ['get', '//edit', 'edit'], - 'read' => ['get', '/', 'read'], - 'save' => ['post', '', 'save'], - 'update' => ['put', '/', 'update'], - 'delete' => ['delete', '/', 'delete'], - ]; - - /** - * 配置参数 - * @var array - */ - protected $config = [ - // pathinfo分隔符 - 'pathinfo_depr' => '/', - // 是否开启路由延迟解析 - 'url_lazy_route' => false, - // 是否强制使用路由 - 'url_route_must' => false, - // 合并路由规则 - 'route_rule_merge' => false, - // 路由是否完全匹配 - 'route_complete_match' => false, - // 去除斜杠 - 'remove_slash' => false, - // 使用注解路由 - 'route_annotation' => false, - // 默认的路由变量规则 - 'default_route_pattern' => '[\w\.]+', - // URL伪静态后缀 - 'url_html_suffix' => 'html', - // 访问控制器层名称 - 'controller_layer' => 'controller', - // 空控制器名 - 'empty_controller' => 'Error', - // 是否使用控制器后缀 - 'controller_suffix' => false, - // 默认控制器名 - 'default_controller' => 'Index', - // 默认操作名 - 'default_action' => 'index', - // 操作方法后缀 - 'action_suffix' => '', - // 非路由变量是否使用普通参数方式(用于URL生成) - 'url_common_param' => true, - ]; - - /** - * 当前应用 - * @var App - */ - protected $app; - - /** - * 请求对象 - * @var Request - */ - protected $request; - - /** - * @var RuleName - */ - protected $ruleName; - - /** - * 当前HOST - * @var string - */ - protected $host; - - /** - * 当前分组对象 - * @var RuleGroup - */ - protected $group; - - /** - * 路由绑定 - * @var array - */ - protected $bind = []; - - /** - * 域名对象 - * @var array - */ - protected $domains = []; - - /** - * 跨域路由规则 - * @var RuleGroup - */ - protected $cross; - - /** - * 路由是否延迟解析 - * @var bool - */ - protected $lazy = true; - - /** - * 路由是否测试模式 - * @var bool - */ - protected $isTest = false; - - /** - * (分组)路由规则是否合并解析 - * @var bool - */ - protected $mergeRuleRegex = false; - - /** - * 是否去除URL最后的斜线 - * @var bool - */ - protected $removeSlash = false; - - public function __construct(App $app) - { - $this->app = $app; - $this->ruleName = new RuleName(); - $this->setDefaultDomain(); - - if (is_file($this->app->getRuntimePath() . 'route.php')) { - // 读取路由映射文件 - $this->import(include $this->app->getRuntimePath() . 'route.php'); - } - } - - protected function init() - { - $this->config = array_merge($this->config, $this->app->config->get('route')); - - if (!empty($this->config['middleware'])) { - $this->app->middleware->import($this->config['middleware'], 'route'); - } - - $this->lazy($this->config['url_lazy_route']); - $this->mergeRuleRegex = $this->config['route_rule_merge']; - $this->removeSlash = $this->config['remove_slash']; - - $this->group->removeSlash($this->removeSlash); - } - - public function config(string $name = null) - { - if (is_null($name)) { - return $this->config; - } - - return $this->config[$name] ?? null; - } - - /** - * 设置路由域名及分组(包括资源路由)是否延迟解析 - * @access public - * @param bool $lazy 路由是否延迟解析 - * @return $this - */ - public function lazy(bool $lazy = true) - { - $this->lazy = $lazy; - return $this; - } - - /** - * 设置路由为测试模式 - * @access public - * @param bool $test 路由是否测试模式 - * @return void - */ - public function setTestMode(bool $test): void - { - $this->isTest = $test; - } - - /** - * 检查路由是否为测试模式 - * @access public - * @return bool - */ - public function isTest(): bool - { - return $this->isTest; - } - - /** - * 设置路由域名及分组(包括资源路由)是否合并解析 - * @access public - * @param bool $merge 路由是否合并解析 - * @return $this - */ - public function mergeRuleRegex(bool $merge = true) - { - $this->mergeRuleRegex = $merge; - $this->group->mergeRuleRegex($merge); - - return $this; - } - - /** - * 初始化默认域名 - * @access protected - * @return void - */ - protected function setDefaultDomain(): void - { - // 注册默认域名 - $domain = new Domain($this); - - $this->domains['-'] = $domain; - - // 默认分组 - $this->group = $domain; - } - - /** - * 设置当前分组 - * @access public - * @param RuleGroup $group 域名 - * @return void - */ - public function setGroup(RuleGroup $group): void - { - $this->group = $group; - } - - /** - * 获取指定标识的路由分组 不指定则获取当前分组 - * @access public - * @param string $name 分组标识 - * @return RuleGroup - */ - public function getGroup(string $name = null) - { - return $name ? $this->ruleName->getGroup($name) : $this->group; - } - - /** - * 注册变量规则 - * @access public - * @param array $pattern 变量规则 - * @return $this - */ - public function pattern(array $pattern) - { - $this->group->pattern($pattern); - - return $this; - } - - /** - * 注册路由参数 - * @access public - * @param array $option 参数 - * @return $this - */ - public function option(array $option) - { - $this->group->option($option); - - return $this; - } - - /** - * 注册域名路由 - * @access public - * @param string|array $name 子域名 - * @param mixed $rule 路由规则 - * @return Domain - */ - public function domain($name, $rule = null): Domain - { - // 支持多个域名使用相同路由规则 - $domainName = is_array($name) ? array_shift($name) : $name; - - if (!isset($this->domains[$domainName])) { - $domain = (new Domain($this, $domainName, $rule)) - ->lazy($this->lazy) - ->removeSlash($this->removeSlash) - ->mergeRuleRegex($this->mergeRuleRegex); - - $this->domains[$domainName] = $domain; - } else { - $domain = $this->domains[$domainName]; - $domain->parseGroupRule($rule); - } - - if (is_array($name) && !empty($name)) { - foreach ($name as $item) { - $this->domains[$item] = $domainName; - } - } - - // 返回域名对象 - return $domain; - } - - /** - * 获取域名 - * @access public - * @return array - */ - public function getDomains(): array - { - return $this->domains; - } - - /** - * 获取RuleName对象 - * @access public - * @return RuleName - */ - public function getRuleName(): RuleName - { - return $this->ruleName; - } - - /** - * 设置路由绑定 - * @access public - * @param string $bind 绑定信息 - * @param string $domain 域名 - * @return $this - */ - public function bind(string $bind, string $domain = null) - { - $domain = is_null($domain) ? '-' : $domain; - - $this->bind[$domain] = $bind; - - return $this; - } - - /** - * 读取路由绑定信息 - * @access public - * @return array - */ - public function getBind(): array - { - return $this->bind; - } - - /** - * 读取路由绑定 - * @access public - * @param string $domain 域名 - * @return string|null - */ - public function getDomainBind(string $domain = null) - { - if (is_null($domain)) { - $domain = $this->host; - } elseif (false === strpos($domain, '.') && $this->request) { - $domain .= '.' . $this->request->rootDomain(); - } - - if ($this->request) { - $subDomain = $this->request->subDomain(); - - if (strpos($subDomain, '.')) { - $name = '*' . strstr($subDomain, '.'); - } - } - - if (isset($this->bind[$domain])) { - $result = $this->bind[$domain]; - } elseif (isset($name) && isset($this->bind[$name])) { - $result = $this->bind[$name]; - } elseif (!empty($subDomain) && isset($this->bind['*'])) { - $result = $this->bind['*']; - } else { - $result = null; - } - - return $result; - } - - /** - * 读取路由标识 - * @access public - * @param string $name 路由标识 - * @param string $domain 域名 - * @param string $method 请求类型 - * @return RuleItem[] - */ - public function getName(string $name = null, string $domain = null, string $method = '*'): array - { - return $this->ruleName->getName($name, $domain, $method); - } - - /** - * 批量导入路由标识 - * @access public - * @param array $name 路由标识 - * @return $this - */ - public function import(array $name): void - { - $this->ruleName->import($name); - } - - /** - * 注册路由标识 - * @access public - * @param string $name 路由标识 - * @param RuleItem $ruleItem 路由规则 - * @param bool $first 是否优先 - * @return void - */ - public function setName(string $name, RuleItem $ruleItem, bool $first = false): void - { - $this->ruleName->setName($name, $ruleItem, $first); - } - - /** - * 保存路由规则 - * @access public - * @param string $rule 路由规则 - * @param RuleItem $ruleItem RuleItem对象 - * @return void - */ - public function setRule(string $rule, RuleItem $ruleItem = null): void - { - $this->ruleName->setRule($rule, $ruleItem); - } - - /** - * 读取路由 - * @access public - * @param string $rule 路由规则 - * @return RuleItem[] - */ - public function getRule(string $rule): array - { - return $this->ruleName->getRule($rule); - } - - /** - * 读取路由列表 - * @access public - * @return array - */ - public function getRuleList(): array - { - return $this->ruleName->getRuleList(); - } - - /** - * 清空路由规则 - * @access public - * @return void - */ - public function clear(): void - { - $this->ruleName->clear(); - - if ($this->group) { - $this->group->clear(); - } - } - - /** - * 注册路由规则 - * @access public - * @param string $rule 路由规则 - * @param mixed $route 路由地址 - * @param string $method 请求类型 - * @return RuleItem - */ - public function rule(string $rule, $route = null, string $method = '*'): RuleItem - { - return $this->group->addRule($rule, $route, $method); - } - - /** - * 设置跨域有效路由规则 - * @access public - * @param Rule $rule 路由规则 - * @param string $method 请求类型 - * @return $this - */ - public function setCrossDomainRule(Rule $rule, string $method = '*') - { - if (!isset($this->cross)) { - $this->cross = (new RuleGroup($this))->mergeRuleRegex($this->mergeRuleRegex); - } - - $this->cross->addRuleItem($rule, $method); - - return $this; - } - - /** - * 注册路由分组 - * @access public - * @param string|\Closure $name 分组名称或者参数 - * @param mixed $route 分组路由 - * @return RuleGroup - */ - public function group($name, $route = null): RuleGroup - { - if ($name instanceof Closure) { - $route = $name; - $name = ''; - } - - return (new RuleGroup($this, $this->group, $name, $route)) - ->lazy($this->lazy) - ->removeSlash($this->removeSlash) - ->mergeRuleRegex($this->mergeRuleRegex); - } - - /** - * 注册路由 - * @access public - * @param string $rule 路由规则 - * @param mixed $route 路由地址 - * @return RuleItem - */ - public function any(string $rule, $route): RuleItem - { - return $this->rule($rule, $route, '*'); - } - - /** - * 注册GET路由 - * @access public - * @param string $rule 路由规则 - * @param mixed $route 路由地址 - * @return RuleItem - */ - public function get(string $rule, $route): RuleItem - { - return $this->rule($rule, $route, 'GET'); - } - - /** - * 注册POST路由 - * @access public - * @param string $rule 路由规则 - * @param mixed $route 路由地址 - * @return RuleItem - */ - public function post(string $rule, $route): RuleItem - { - return $this->rule($rule, $route, 'POST'); - } - - /** - * 注册PUT路由 - * @access public - * @param string $rule 路由规则 - * @param mixed $route 路由地址 - * @return RuleItem - */ - public function put(string $rule, $route): RuleItem - { - return $this->rule($rule, $route, 'PUT'); - } - - /** - * 注册DELETE路由 - * @access public - * @param string $rule 路由规则 - * @param mixed $route 路由地址 - * @return RuleItem - */ - public function delete(string $rule, $route): RuleItem - { - return $this->rule($rule, $route, 'DELETE'); - } - - /** - * 注册PATCH路由 - * @access public - * @param string $rule 路由规则 - * @param mixed $route 路由地址 - * @return RuleItem - */ - public function patch(string $rule, $route): RuleItem - { - return $this->rule($rule, $route, 'PATCH'); - } - - /** - * 注册OPTIONS路由 - * @access public - * @param string $rule 路由规则 - * @param mixed $route 路由地址 - * @return RuleItem - */ - public function options(string $rule, $route): RuleItem - { - return $this->rule($rule, $route, 'OPTIONS'); - } - - /** - * 注册资源路由 - * @access public - * @param string $rule 路由规则 - * @param string $route 路由地址 - * @return Resource - */ - public function resource(string $rule, string $route): Resource - { - return (new Resource($this, $this->group, $rule, $route, $this->rest)) - ->lazy($this->lazy); - } - - /** - * 注册视图路由 - * @access public - * @param string $rule 路由规则 - * @param string $template 路由模板地址 - * @param array $vars 模板变量 - * @return RuleItem - */ - public function view(string $rule, string $template = '', array $vars = []): RuleItem - { - return $this->rule($rule, $template, 'GET')->view($vars); - } - - /** - * 注册重定向路由 - * @access public - * @param string $rule 路由规则 - * @param string $route 路由地址 - * @param int $status 状态码 - * @return RuleItem - */ - public function redirect(string $rule, string $route = '', int $status = 301): RuleItem - { - return $this->rule($rule, $route, '*')->redirect()->status($status); - } - - /** - * rest方法定义和修改 - * @access public - * @param string|array $name 方法名称 - * @param array|bool $resource 资源 - * @return $this - */ - public function rest($name, $resource = []) - { - if (is_array($name)) { - $this->rest = $resource ? $name : array_merge($this->rest, $name); - } else { - $this->rest[$name] = $resource; - } - - return $this; - } - - /** - * 获取rest方法定义的参数 - * @access public - * @param string $name 方法名称 - * @return array|null - */ - public function getRest(string $name = null) - { - if (is_null($name)) { - return $this->rest; - } - - return $this->rest[$name] ?? null; - } - - /** - * 注册未匹配路由规则后的处理 - * @access public - * @param string|Closure $route 路由地址 - * @param string $method 请求类型 - * @return RuleItem - */ - public function miss($route, string $method = '*'): RuleItem - { - return $this->group->miss($route, $method); - } - - /** - * 路由调度 - * @param Request $request - * @param Closure $withRoute - * @return Response - */ - public function dispatch(Request $request, $withRoute = null) - { - $this->request = $request; - $this->host = $this->request->host(true); - $this->init(); - - if ($withRoute) { - //加载路由 - $withRoute(); - $dispatch = $this->check(); - } else { - $dispatch = $this->url($this->path()); - } - - $dispatch->init($this->app); - - return $this->app->middleware->pipeline('route') - ->send($request) - ->then(function () use ($dispatch) { - return $dispatch->run(); - }); - } - - /** - * 检测URL路由 - * @access public - * @return Dispatch - * @throws RouteNotFoundException - */ - public function check(): Dispatch - { - // 自动检测域名路由 - $url = str_replace($this->config['pathinfo_depr'], '|', $this->path()); - - $completeMatch = $this->config['route_complete_match']; - - $result = $this->checkDomain()->check($this->request, $url, $completeMatch); - - if (false === $result && !empty($this->cross)) { - // 检测跨域路由 - $result = $this->cross->check($this->request, $url, $completeMatch); - } - - if (false !== $result) { - return $result; - } elseif ($this->config['url_route_must']) { - throw new RouteNotFoundException(); - } - - return $this->url($url); - } - - /** - * 获取当前请求URL的pathinfo信息(不含URL后缀) - * @access protected - * @return string - */ - protected function path(): string - { - $suffix = $this->config['url_html_suffix']; - $pathinfo = $this->request->pathinfo(); - - if (false === $suffix) { - // 禁止伪静态访问 - $path = $pathinfo; - } elseif ($suffix) { - // 去除正常的URL后缀 - $path = preg_replace('/\.(' . ltrim($suffix, '.') . ')$/i', '', $pathinfo); - } else { - // 允许任何后缀访问 - $path = preg_replace('/\.' . $this->request->ext() . '$/i', '', $pathinfo); - } - - return $path; - } - - /** - * 默认URL解析 - * @access public - * @param string $url URL地址 - * @return Dispatch - */ - public function url(string $url): UrlDispatch - { - return new UrlDispatch($this->request, $this->group, $url); - } - - /** - * 检测域名的路由规则 - * @access protected - * @return Domain - */ - protected function checkDomain(): Domain - { - $item = false; - - if (count($this->domains) > 1) { - // 获取当前子域名 - $subDomain = $this->request->subDomain(); - - $domain = $subDomain ? explode('.', $subDomain) : []; - $domain2 = $domain ? array_pop($domain) : ''; - - if ($domain) { - // 存在三级域名 - $domain3 = array_pop($domain); - } - - if (isset($this->domains[$this->host])) { - // 子域名配置 - $item = $this->domains[$this->host]; - } elseif (isset($this->domains[$subDomain])) { - $item = $this->domains[$subDomain]; - } elseif (isset($this->domains['*.' . $domain2]) && !empty($domain3)) { - // 泛三级域名 - $item = $this->domains['*.' . $domain2]; - $panDomain = $domain3; - } elseif (isset($this->domains['*']) && !empty($domain2)) { - // 泛二级域名 - if ('www' != $domain2) { - $item = $this->domains['*']; - $panDomain = $domain2; - } - } - - if (isset($panDomain)) { - // 保存当前泛域名 - $this->request->setPanDomain($panDomain); - } - } - - if (false === $item) { - // 检测全局域名规则 - $item = $this->domains['-']; - } - - if (is_string($item)) { - $item = $this->domains[$item]; - } - - return $item; - } - - /** - * URL生成 支持路由反射 - * @access public - * @param string $url 路由地址 - * @param array $vars 参数 ['a'=>'val1', 'b'=>'val2'] - * @return UrlBuild - */ - public function buildUrl(string $url = '', array $vars = []): UrlBuild - { - return $this->app->make(UrlBuild::class, [$this, $this->app, $url, $vars], true); - } - - /** - * 设置全局的路由分组参数 - * @access public - * @param string $method 方法名 - * @param array $args 调用参数 - * @return RuleGroup - */ - public function __call($method, $args) - { - return call_user_func_array([$this->group, $method], $args); - } -} diff --git a/vendor/topthink/framework/src/think/Service.php b/vendor/topthink/framework/src/think/Service.php deleted file mode 100644 index 68c678907..000000000 --- a/vendor/topthink/framework/src/think/Service.php +++ /dev/null @@ -1,66 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use Closure; -use think\event\RouteLoaded; - -/** - * 系统服务基础类 - * @method void register() - * @method void boot() - */ -abstract class Service -{ - protected $app; - - public function __construct(App $app) - { - $this->app = $app; - } - - /** - * 加载路由 - * @access protected - * @param string $path 路由路径 - */ - protected function loadRoutesFrom($path) - { - $this->registerRoutes(function () use ($path) { - include $path; - }); - } - - /** - * 注册路由 - * @param Closure $closure - */ - protected function registerRoutes(Closure $closure) - { - $this->app->event->listen(RouteLoaded::class, $closure); - } - - /** - * 添加指令 - * @access protected - * @param array|string $commands 指令 - */ - protected function commands($commands) - { - $commands = is_array($commands) ? $commands : func_get_args(); - - Console::starting(function (Console $console) use ($commands) { - $console->addCommands($commands); - }); - } -} diff --git a/vendor/topthink/framework/src/think/Session.php b/vendor/topthink/framework/src/think/Session.php deleted file mode 100644 index c344f0bd6..000000000 --- a/vendor/topthink/framework/src/think/Session.php +++ /dev/null @@ -1,65 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use think\helper\Arr; -use think\session\Store; - -/** - * Session管理类 - * @package think - * @mixin Store - */ -class Session extends Manager -{ - protected $namespace = '\\think\\session\\driver\\'; - - protected function createDriver(string $name) - { - $handler = parent::createDriver($name); - - return new Store($this->getConfig('name') ?: 'PHPSESSID', $handler, $this->getConfig('serialize')); - } - - /** - * 获取Session配置 - * @access public - * @param null|string $name 名称 - * @param mixed $default 默认值 - * @return mixed - */ - public function getConfig(string $name = null, $default = null) - { - if (!is_null($name)) { - return $this->app->config->get('session.' . $name, $default); - } - - return $this->app->config->get('session'); - } - - protected function resolveConfig(string $name) - { - $config = $this->app->config->get('session', []); - Arr::forget($config, 'type'); - return $config; - } - - /** - * 默认驱动 - * @return string|null - */ - public function getDefaultDriver() - { - return $this->app->config->get('session.type', 'file'); - } -} diff --git a/vendor/topthink/framework/src/think/Validate.php b/vendor/topthink/framework/src/think/Validate.php deleted file mode 100644 index a8db2da29..000000000 --- a/vendor/topthink/framework/src/think/Validate.php +++ /dev/null @@ -1,1674 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use Closure; -use think\exception\ValidateException; -use think\helper\Str; -use think\validate\ValidateRule; - -/** - * 数据验证类 - * @package think - */ -class Validate -{ - /** - * 自定义验证类型 - * @var array - */ - protected $type = []; - - /** - * 验证类型别名 - * @var array - */ - protected $alias = [ - '>' => 'gt', '>=' => 'egt', '<' => 'lt', '<=' => 'elt', '=' => 'eq', 'same' => 'eq', - ]; - - /** - * 当前验证规则 - * @var array - */ - protected $rule = []; - - /** - * 验证提示信息 - * @var array - */ - protected $message = []; - - /** - * 验证字段描述 - * @var array - */ - protected $field = []; - - /** - * 默认规则提示 - * @var array - */ - protected $typeMsg = [ - 'require' => ':attribute require', - 'must' => ':attribute must', - 'number' => ':attribute must be numeric', - 'integer' => ':attribute must be integer', - 'float' => ':attribute must be float', - 'boolean' => ':attribute must be bool', - 'email' => ':attribute not a valid email address', - 'mobile' => ':attribute not a valid mobile', - 'array' => ':attribute must be a array', - 'accepted' => ':attribute must be yes,on or 1', - 'date' => ':attribute not a valid datetime', - 'file' => ':attribute not a valid file', - 'image' => ':attribute not a valid image', - 'alpha' => ':attribute must be alpha', - 'alphaNum' => ':attribute must be alpha-numeric', - 'alphaDash' => ':attribute must be alpha-numeric, dash, underscore', - 'activeUrl' => ':attribute not a valid domain or ip', - 'chs' => ':attribute must be chinese', - 'chsAlpha' => ':attribute must be chinese or alpha', - 'chsAlphaNum' => ':attribute must be chinese,alpha-numeric', - 'chsDash' => ':attribute must be chinese,alpha-numeric,underscore, dash', - 'url' => ':attribute not a valid url', - 'ip' => ':attribute not a valid ip', - 'dateFormat' => ':attribute must be dateFormat of :rule', - 'in' => ':attribute must be in :rule', - 'notIn' => ':attribute be notin :rule', - 'between' => ':attribute must between :1 - :2', - 'notBetween' => ':attribute not between :1 - :2', - 'length' => 'size of :attribute must be :rule', - 'max' => 'max size of :attribute must be :rule', - 'min' => 'min size of :attribute must be :rule', - 'after' => ':attribute cannot be less than :rule', - 'before' => ':attribute cannot exceed :rule', - 'expire' => ':attribute not within :rule', - 'allowIp' => 'access IP is not allowed', - 'denyIp' => 'access IP denied', - 'confirm' => ':attribute out of accord with :2', - 'different' => ':attribute cannot be same with :2', - 'egt' => ':attribute must greater than or equal :rule', - 'gt' => ':attribute must greater than :rule', - 'elt' => ':attribute must less than or equal :rule', - 'lt' => ':attribute must less than :rule', - 'eq' => ':attribute must equal :rule', - 'unique' => ':attribute has exists', - 'regex' => ':attribute not conform to the rules', - 'method' => 'invalid Request method', - 'token' => 'invalid token', - 'fileSize' => 'filesize not match', - 'fileExt' => 'extensions to upload is not allowed', - 'fileMime' => 'mimetype to upload is not allowed', - ]; - - /** - * 当前验证场景 - * @var string - */ - protected $currentScene; - - /** - * 内置正则验证规则 - * @var array - */ - protected $defaultRegex = [ - 'alpha' => '/^[A-Za-z]+$/', - 'alphaNum' => '/^[A-Za-z0-9]+$/', - 'alphaDash' => '/^[A-Za-z0-9\-\_]+$/', - 'chs' => '/^[\x{4e00}-\x{9fa5}]+$/u', - 'chsAlpha' => '/^[\x{4e00}-\x{9fa5}a-zA-Z]+$/u', - 'chsAlphaNum' => '/^[\x{4e00}-\x{9fa5}a-zA-Z0-9]+$/u', - 'chsDash' => '/^[\x{4e00}-\x{9fa5}a-zA-Z0-9\_\-]+$/u', - 'mobile' => '/^1[3-9]\d{9}$/', - 'idCard' => '/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/', - 'zip' => '/\d{6}/', - ]; - - /** - * Filter_var 规则 - * @var array - */ - protected $filter = [ - 'email' => FILTER_VALIDATE_EMAIL, - 'ip' => [FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6], - 'integer' => FILTER_VALIDATE_INT, - 'url' => FILTER_VALIDATE_URL, - 'macAddr' => FILTER_VALIDATE_MAC, - 'float' => FILTER_VALIDATE_FLOAT, - ]; - - /** - * 验证场景定义 - * @var array - */ - protected $scene = []; - - /** - * 验证失败错误信息 - * @var array - */ - protected $error = []; - - /** - * 是否批量验证 - * @var bool - */ - protected $batch = false; - - /** - * 验证失败是否抛出异常 - * @var bool - */ - protected $failException = false; - - /** - * 场景需要验证的规则 - * @var array - */ - protected $only = []; - - /** - * 场景需要移除的验证规则 - * @var array - */ - protected $remove = []; - - /** - * 场景需要追加的验证规则 - * @var array - */ - protected $append = []; - - /** - * 验证正则定义 - * @var array - */ - protected $regex = []; - - /** - * Db对象 - * @var Db - */ - protected $db; - - /** - * 语言对象 - * @var Lang - */ - protected $lang; - - /** - * 请求对象 - * @var Request - */ - protected $request; - - /** - * @var Closure[] - */ - protected static $maker = []; - - /** - * 构造方法 - * @access public - */ - public function __construct() - { - if (!empty(static::$maker)) { - foreach (static::$maker as $maker) { - call_user_func($maker, $this); - } - } - } - - /** - * 设置服务注入 - * @access public - * @param Closure $maker - * @return void - */ - public static function maker(Closure $maker) - { - static::$maker[] = $maker; - } - - /** - * 设置Lang对象 - * @access public - * @param Lang $lang Lang对象 - * @return void - */ - public function setLang(Lang $lang) - { - $this->lang = $lang; - } - - /** - * 设置Db对象 - * @access public - * @param Db $db Db对象 - * @return void - */ - public function setDb(Db $db) - { - $this->db = $db; - } - - /** - * 设置Request对象 - * @access public - * @param Request $request Request对象 - * @return void - */ - public function setRequest(Request $request) - { - $this->request = $request; - } - - /** - * 添加字段验证规则 - * @access protected - * @param string|array $name 字段名称或者规则数组 - * @param mixed $rule 验证规则或者字段描述信息 - * @return $this - */ - public function rule($name, $rule = '') - { - if (is_array($name)) { - $this->rule = $name + $this->rule; - if (is_array($rule)) { - $this->field = array_merge($this->field, $rule); - } - } else { - $this->rule[$name] = $rule; - } - - return $this; - } - - /** - * 注册验证(类型)规则 - * @access public - * @param string $type 验证规则类型 - * @param callable $callback callback方法(或闭包) - * @param string $message 验证失败提示信息 - * @return $this - */ - public function extend(string $type, callable $callback = null, string $message = null) - { - $this->type[$type] = $callback; - - if ($message) { - $this->typeMsg[$type] = $message; - } - - return $this; - } - - /** - * 设置验证规则的默认提示信息 - * @access public - * @param string|array $type 验证规则类型名称或者数组 - * @param string $msg 验证提示信息 - * @return void - */ - public function setTypeMsg($type, string $msg = null): void - { - if (is_array($type)) { - $this->typeMsg = array_merge($this->typeMsg, $type); - } else { - $this->typeMsg[$type] = $msg; - } - } - - /** - * 设置提示信息 - * @access public - * @param array $message 错误信息 - * @return Validate - */ - public function message(array $message) - { - $this->message = array_merge($this->message, $message); - - return $this; - } - - /** - * 设置验证场景 - * @access public - * @param string $name 场景名 - * @return $this - */ - public function scene(string $name) - { - // 设置当前场景 - $this->currentScene = $name; - - return $this; - } - - /** - * 判断是否存在某个验证场景 - * @access public - * @param string $name 场景名 - * @return bool - */ - public function hasScene(string $name): bool - { - return isset($this->scene[$name]) || method_exists($this, 'scene' . $name); - } - - /** - * 设置批量验证 - * @access public - * @param bool $batch 是否批量验证 - * @return $this - */ - public function batch(bool $batch = true) - { - $this->batch = $batch; - - return $this; - } - - /** - * 设置验证失败后是否抛出异常 - * @access protected - * @param bool $fail 是否抛出异常 - * @return $this - */ - public function failException(bool $fail = true) - { - $this->failException = $fail; - - return $this; - } - - /** - * 指定需要验证的字段列表 - * @access public - * @param array $fields 字段名 - * @return $this - */ - public function only(array $fields) - { - $this->only = $fields; - - return $this; - } - - /** - * 移除某个字段的验证规则 - * @access public - * @param string|array $field 字段名 - * @param mixed $rule 验证规则 true 移除所有规则 - * @return $this - */ - public function remove($field, $rule = null) - { - if (is_array($field)) { - foreach ($field as $key => $rule) { - if (is_int($key)) { - $this->remove($rule); - } else { - $this->remove($key, $rule); - } - } - } else { - if (is_string($rule)) { - $rule = explode('|', $rule); - } - - $this->remove[$field] = $rule; - } - - return $this; - } - - /** - * 追加某个字段的验证规则 - * @access public - * @param string|array $field 字段名 - * @param mixed $rule 验证规则 - * @return $this - */ - public function append($field, $rule = null) - { - if (is_array($field)) { - foreach ($field as $key => $rule) { - $this->append($key, $rule); - } - } else { - if (is_string($rule)) { - $rule = explode('|', $rule); - } - - $this->append[$field] = $rule; - } - - return $this; - } - - /** - * 数据自动验证 - * @access public - * @param array $data 数据 - * @param array $rules 验证规则 - * @return bool - */ - public function check(array $data, array $rules = []): bool - { - $this->error = []; - - if (empty($rules)) { - // 读取验证规则 - $rules = $this->rule; - } - - if ($this->currentScene) { - $this->getScene($this->currentScene); - } - - foreach ($this->append as $key => $rule) { - if (!isset($rules[$key])) { - $rules[$key] = $rule; - } - } - - foreach ($rules as $key => $rule) { - // field => 'rule1|rule2...' field => ['rule1','rule2',...] - if (strpos($key, '|')) { - // 字段|描述 用于指定属性名称 - list($key, $title) = explode('|', $key); - } else { - $title = $this->field[$key] ?? $key; - } - - // 场景检测 - if (!empty($this->only) && !in_array($key, $this->only)) { - continue; - } - - // 获取数据 支持二维数组 - $value = $this->getDataValue($data, $key); - - // 字段验证 - if ($rule instanceof Closure) { - $result = call_user_func_array($rule, [$value, $data]); - } elseif ($rule instanceof ValidateRule) { - // 验证因子 - $result = $this->checkItem($key, $value, $rule->getRule(), $data, $rule->getTitle() ?: $title, $rule->getMsg()); - } else { - $result = $this->checkItem($key, $value, $rule, $data, $title); - } - - if (true !== $result) { - // 没有返回true 则表示验证失败 - if (!empty($this->batch)) { - // 批量验证 - $this->error[$key] = $result; - } elseif ($this->failException) { - throw new ValidateException($result); - } else { - $this->error = $result; - return false; - } - } - } - - if (!empty($this->error)) { - if ($this->failException) { - throw new ValidateException($this->error); - } - return false; - } - - return true; - } - - /** - * 根据验证规则验证数据 - * @access public - * @param mixed $value 字段值 - * @param mixed $rules 验证规则 - * @return bool - */ - public function checkRule($value, $rules): bool - { - if ($rules instanceof Closure) { - return call_user_func_array($rules, [$value]); - } elseif ($rules instanceof ValidateRule) { - $rules = $rules->getRule(); - } elseif (is_string($rules)) { - $rules = explode('|', $rules); - } - - foreach ($rules as $key => $rule) { - if ($rule instanceof Closure) { - $result = call_user_func_array($rule, [$value]); - } else { - // 判断验证类型 - list($type, $rule) = $this->getValidateType($key, $rule); - - $callback = $this->type[$type] ?? [$this, $type]; - - $result = call_user_func_array($callback, [$value, $rule]); - } - - if (true !== $result) { - if ($this->failException) { - throw new ValidateException($result); - } - - return $result; - } - } - - return true; - } - - /** - * 验证单个字段规则 - * @access protected - * @param string $field 字段名 - * @param mixed $value 字段值 - * @param mixed $rules 验证规则 - * @param array $data 数据 - * @param string $title 字段描述 - * @param array $msg 提示信息 - * @return mixed - */ - protected function checkItem(string $field, $value, $rules, $data, string $title = '', array $msg = []) - { - if (isset($this->remove[$field]) && true === $this->remove[$field] && empty($this->append[$field])) { - // 字段已经移除 无需验证 - return true; - } - - // 支持多规则验证 require|in:a,b,c|... 或者 ['require','in'=>'a,b,c',...] - if (is_string($rules)) { - $rules = explode('|', $rules); - } - - if (isset($this->append[$field])) { - // 追加额外的验证规则 - $rules = array_unique(array_merge($rules, $this->append[$field]), SORT_REGULAR); - } - - $i = 0; - foreach ($rules as $key => $rule) { - if ($rule instanceof Closure) { - $result = call_user_func_array($rule, [$value, $data]); - $info = is_numeric($key) ? '' : $key; - } else { - // 判断验证类型 - list($type, $rule, $info) = $this->getValidateType($key, $rule); - - if (isset($this->append[$field]) && in_array($info, $this->append[$field])) { - - } elseif (isset($this->remove[$field]) && in_array($info, $this->remove[$field])) { - // 规则已经移除 - $i++; - continue; - } - - if (isset($this->type[$type])) { - $result = call_user_func_array($this->type[$type], [$value, $rule, $data, $field, $title]); - } elseif ('must' == $info || 0 === strpos($info, 'require') || (!is_null($value) && '' !== $value)) { - $result = call_user_func_array([$this, $type], [$value, $rule, $data, $field, $title]); - } else { - $result = true; - } - } - - if (false === $result) { - // 验证失败 返回错误信息 - if (!empty($msg[$i])) { - $message = $msg[$i]; - if (is_string($message) && strpos($message, '{%') === 0) { - $message = $this->lang->get(substr($message, 2, -1)); - } - } else { - $message = $this->getRuleMsg($field, $title, $info, $rule); - } - - return $message; - } elseif (true !== $result) { - // 返回自定义错误信息 - if (is_string($result) && false !== strpos($result, ':')) { - $result = str_replace(':attribute', $title, $result); - - if (strpos($result, ':rule') && is_scalar($rule)) { - $result = str_replace(':rule', (string) $rule, $result); - } - } - - return $result; - } - $i++; - } - - return $result; - } - - /** - * 获取当前验证类型及规则 - * @access public - * @param mixed $key - * @param mixed $rule - * @return array - */ - protected function getValidateType($key, $rule): array - { - // 判断验证类型 - if (!is_numeric($key)) { - if (isset($this->alias[$key])) { - // 判断别名 - $key = $this->alias[$key]; - } - return [$key, $rule, $key]; - } - - if (strpos($rule, ':')) { - list($type, $rule) = explode(':', $rule, 2); - if (isset($this->alias[$type])) { - // 判断别名 - $type = $this->alias[$type]; - } - $info = $type; - } elseif (method_exists($this, $rule)) { - $type = $rule; - $info = $rule; - $rule = ''; - } else { - $type = 'is'; - $info = $rule; - } - - return [$type, $rule, $info]; - } - - /** - * 验证是否和某个字段的值一致 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @param string $field 字段名 - * @return bool - */ - public function confirm($value, $rule, array $data = [], string $field = ''): bool - { - if ('' == $rule) { - if (strpos($field, '_confirm')) { - $rule = strstr($field, '_confirm', true); - } else { - $rule = $field . '_confirm'; - } - } - - return $this->getDataValue($data, $rule) === $value; - } - - /** - * 验证是否和某个字段的值是否不同 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function different($value, $rule, array $data = []): bool - { - return $this->getDataValue($data, $rule) != $value; - } - - /** - * 验证是否大于等于某个值 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function egt($value, $rule, array $data = []): bool - { - return $value >= $this->getDataValue($data, $rule); - } - - /** - * 验证是否大于某个值 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function gt($value, $rule, array $data = []): bool - { - return $value > $this->getDataValue($data, $rule); - } - - /** - * 验证是否小于等于某个值 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function elt($value, $rule, array $data = []): bool - { - return $value <= $this->getDataValue($data, $rule); - } - - /** - * 验证是否小于某个值 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function lt($value, $rule, array $data = []): bool - { - return $value < $this->getDataValue($data, $rule); - } - - /** - * 验证是否等于某个值 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function eq($value, $rule): bool - { - return $value == $rule; - } - - /** - * 必须验证 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function must($value, $rule = null): bool - { - return !empty($value) || '0' == $value; - } - - /** - * 验证字段值是否为有效格式 - * @access public - * @param mixed $value 字段值 - * @param string $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function is($value, string $rule, array $data = []): bool - { - switch (Str::camel($rule)) { - case 'require': - // 必须 - $result = !empty($value) || '0' == $value; - break; - case 'accepted': - // 接受 - $result = in_array($value, ['1', 'on', 'yes']); - break; - case 'date': - // 是否是一个有效日期 - $result = false !== strtotime($value); - break; - case 'activeUrl': - // 是否为有效的网址 - $result = checkdnsrr($value); - break; - case 'boolean': - case 'bool': - // 是否为布尔值 - $result = in_array($value, [true, false, 0, 1, '0', '1'], true); - break; - case 'number': - $result = ctype_digit((string) $value); - break; - case 'alphaNum': - $result = ctype_alnum($value); - break; - case 'array': - // 是否为数组 - $result = is_array($value); - break; - case 'file': - $result = $value instanceof File; - break; - case 'image': - $result = $value instanceof File && in_array($this->getImageType($value->getRealPath()), [1, 2, 3, 6]); - break; - case 'token': - $result = $this->token($value, '__token__', $data); - break; - default: - if (isset($this->type[$rule])) { - // 注册的验证规则 - $result = call_user_func_array($this->type[$rule], [$value]); - } elseif (function_exists('ctype_' . $rule)) { - // ctype验证规则 - $ctypeFun = 'ctype_' . $rule; - $result = $ctypeFun($value); - } elseif (isset($this->filter[$rule])) { - // Filter_var验证规则 - $result = $this->filter($value, $this->filter[$rule]); - } else { - // 正则验证 - $result = $this->regex($value, $rule); - } - } - - return $result; - } - - // 判断图像类型 - protected function getImageType($image) - { - if (function_exists('exif_imagetype')) { - return exif_imagetype($image); - } - - try { - $info = getimagesize($image); - return $info ? $info[2] : false; - } catch (\Exception $e) { - return false; - } - } - - /** - * 验证表单令牌 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function token($value, string $rule, array $data): bool - { - $rule = !empty($rule) ? $rule : '__token__'; - return $this->request->checkToken($rule, $data); - } - - /** - * 验证是否为合格的域名或者IP 支持A,MX,NS,SOA,PTR,CNAME,AAAA,A6, SRV,NAPTR,TXT 或者 ANY类型 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function activeUrl(string $value, string $rule = 'MX'): bool - { - if (!in_array($rule, ['A', 'MX', 'NS', 'SOA', 'PTR', 'CNAME', 'AAAA', 'A6', 'SRV', 'NAPTR', 'TXT', 'ANY'])) { - $rule = 'MX'; - } - - return checkdnsrr($value, $rule); - } - - /** - * 验证是否有效IP - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 ipv4 ipv6 - * @return bool - */ - public function ip($value, string $rule = 'ipv4'): bool - { - if (!in_array($rule, ['ipv4', 'ipv6'])) { - $rule = 'ipv4'; - } - - return $this->filter($value, [FILTER_VALIDATE_IP, 'ipv6' == $rule ? FILTER_FLAG_IPV6 : FILTER_FLAG_IPV4]); - } - - /** - * 检测上传文件后缀 - * @access public - * @param File $file - * @param array|string $ext 允许后缀 - * @return bool - */ - protected function checkExt(File $file, $ext): bool - { - if (is_string($ext)) { - $ext = explode(',', $ext); - } - - return in_array(strtolower($file->extension()), $ext); - } - - /** - * 检测上传文件大小 - * @access public - * @param File $file - * @param integer $size 最大大小 - * @return bool - */ - protected function checkSize(File $file, $size): bool - { - return $file->getSize() <= (int) $size; - } - - /** - * 检测上传文件类型 - * @access public - * @param File $file - * @param array|string $mime 允许类型 - * @return bool - */ - protected function checkMime(File $file, $mime): bool - { - if (is_string($mime)) { - $mime = explode(',', $mime); - } - - return in_array(strtolower($file->getMime()), $mime); - } - - /** - * 验证上传文件后缀 - * @access public - * @param mixed $file 上传文件 - * @param mixed $rule 验证规则 - * @return bool - */ - public function fileExt($file, $rule): bool - { - if (is_array($file)) { - foreach ($file as $item) { - if (!($item instanceof File) || !$this->checkExt($item, $rule)) { - return false; - } - } - return true; - } elseif ($file instanceof File) { - return $this->checkExt($file, $rule); - } - - return false; - } - - /** - * 验证上传文件类型 - * @access public - * @param mixed $file 上传文件 - * @param mixed $rule 验证规则 - * @return bool - */ - public function fileMime($file, $rule): bool - { - if (is_array($file)) { - foreach ($file as $item) { - if (!($item instanceof File) || !$this->checkMime($item, $rule)) { - return false; - } - } - return true; - } elseif ($file instanceof File) { - return $this->checkMime($file, $rule); - } - - return false; - } - - /** - * 验证上传文件大小 - * @access public - * @param mixed $file 上传文件 - * @param mixed $rule 验证规则 - * @return bool - */ - public function fileSize($file, $rule): bool - { - if (is_array($file)) { - foreach ($file as $item) { - if (!($item instanceof File) || !$this->checkSize($item, $rule)) { - return false; - } - } - return true; - } elseif ($file instanceof File) { - return $this->checkSize($file, $rule); - } - - return false; - } - - /** - * 验证图片的宽高及类型 - * @access public - * @param mixed $file 上传文件 - * @param mixed $rule 验证规则 - * @return bool - */ - public function image($file, $rule): bool - { - if (!($file instanceof File)) { - return false; - } - - if ($rule) { - $rule = explode(',', $rule); - - list($width, $height, $type) = getimagesize($file->getRealPath()); - - if (isset($rule[2])) { - $imageType = strtolower($rule[2]); - - if ('jpeg' == $imageType) { - $imageType = 'jpg'; - } - - if (image_type_to_extension($type, false) != $imageType) { - return false; - } - } - - list($w, $h) = $rule; - - return $w == $width && $h == $height; - } - - return in_array($this->getImageType($file->getRealPath()), [1, 2, 3, 6]); - } - - /** - * 验证时间和日期是否符合指定格式 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function dateFormat($value, $rule): bool - { - $info = date_parse_from_format($rule, $value); - return 0 == $info['warning_count'] && 0 == $info['error_count']; - } - - /** - * 验证是否唯一 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 格式:数据表,字段名,排除ID,主键名 - * @param array $data 数据 - * @param string $field 验证字段名 - * @return bool - */ - public function unique($value, $rule, array $data = [], string $field = ''): bool - { - if (is_string($rule)) { - $rule = explode(',', $rule); - } - - if (false !== strpos($rule[0], '\\')) { - // 指定模型类 - $db = new $rule[0]; - } else { - $db = $this->db->name($rule[0]); - } - - $key = $rule[1] ?? $field; - $map = []; - - if (strpos($key, '^')) { - // 支持多个字段验证 - $fields = explode('^', $key); - foreach ($fields as $key) { - if (isset($data[$key])) { - $map[] = [$key, '=', $data[$key]]; - } - } - } elseif (isset($data[$field])) { - $map[] = [$key, '=', $data[$field]]; - } else { - $map = []; - } - - $pk = !empty($rule[3]) ? $rule[3] : $db->getPk(); - - if (is_string($pk)) { - if (isset($rule[2])) { - $map[] = [$pk, '<>', $rule[2]]; - } elseif (isset($data[$pk])) { - $map[] = [$pk, '<>', $data[$pk]]; - } - } - - if ($db->where($map)->field($pk)->find()) { - return false; - } - - return true; - } - - /** - * 使用filter_var方式验证 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function filter($value, $rule): bool - { - if (is_string($rule) && strpos($rule, ',')) { - list($rule, $param) = explode(',', $rule); - } elseif (is_array($rule)) { - $param = $rule[1] ?? null; - $rule = $rule[0]; - } else { - $param = null; - } - - return false !== filter_var($value, is_int($rule) ? $rule : filter_id($rule), $param); - } - - /** - * 验证某个字段等于某个值的时候必须 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function requireIf($value, $rule, array $data = []): bool - { - list($field, $val) = explode(',', $rule); - - if ($this->getDataValue($data, $field) == $val) { - return !empty($value) || '0' == $value; - } - - return true; - } - - /** - * 通过回调方法验证某个字段是否必须 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function requireCallback($value, $rule, array $data = []): bool - { - $result = call_user_func_array([$this, $rule], [$value, $data]); - - if ($result) { - return !empty($value) || '0' == $value; - } - - return true; - } - - /** - * 验证某个字段有值的情况下必须 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function requireWith($value, $rule, array $data = []): bool - { - $val = $this->getDataValue($data, $rule); - - if (!empty($val)) { - return !empty($value) || '0' == $value; - } - - return true; - } - - /** - * 验证某个字段没有值的情况下必须 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function requireWithout($value, $rule, array $data = []): bool - { - $val = $this->getDataValue($data, $rule); - - if (empty($val)) { - return !empty($value) || '0' == $value; - } - - return true; - } - - /** - * 验证是否在范围内 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function in($value, $rule): bool - { - return in_array($value, is_array($rule) ? $rule : explode(',', $rule)); - } - - /** - * 验证是否不在某个范围 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function notIn($value, $rule): bool - { - return !in_array($value, is_array($rule) ? $rule : explode(',', $rule)); - } - - /** - * between验证数据 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function between($value, $rule): bool - { - if (is_string($rule)) { - $rule = explode(',', $rule); - } - list($min, $max) = $rule; - - return $value >= $min && $value <= $max; - } - - /** - * 使用notbetween验证数据 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function notBetween($value, $rule): bool - { - if (is_string($rule)) { - $rule = explode(',', $rule); - } - list($min, $max) = $rule; - - return $value < $min || $value > $max; - } - - /** - * 验证数据长度 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function length($value, $rule): bool - { - if (is_array($value)) { - $length = count($value); - } elseif ($value instanceof File) { - $length = $value->getSize(); - } else { - $length = mb_strlen((string) $value); - } - - if (is_string($rule) && strpos($rule, ',')) { - // 长度区间 - list($min, $max) = explode(',', $rule); - return $length >= $min && $length <= $max; - } - - // 指定长度 - return $length == $rule; - } - - /** - * 验证数据最大长度 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function max($value, $rule): bool - { - if (is_array($value)) { - $length = count($value); - } elseif ($value instanceof File) { - $length = $value->getSize(); - } else { - $length = mb_strlen((string) $value); - } - - return $length <= $rule; - } - - /** - * 验证数据最小长度 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function min($value, $rule): bool - { - if (is_array($value)) { - $length = count($value); - } elseif ($value instanceof File) { - $length = $value->getSize(); - } else { - $length = mb_strlen((string) $value); - } - - return $length >= $rule; - } - - /** - * 验证日期 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function after($value, $rule, array $data = []): bool - { - return strtotime($value) >= strtotime($rule); - } - - /** - * 验证日期 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function before($value, $rule, array $data = []): bool - { - return strtotime($value) <= strtotime($rule); - } - - /** - * 验证日期 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function afterWith($value, $rule, array $data = []): bool - { - $rule = $this->getDataValue($data, $rule); - return !is_null($rule) && strtotime($value) >= strtotime($rule); - } - - /** - * 验证日期 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @param array $data 数据 - * @return bool - */ - public function beforeWith($value, $rule, array $data = []): bool - { - $rule = $this->getDataValue($data, $rule); - return !is_null($rule) && strtotime($value) <= strtotime($rule); - } - - /** - * 验证有效期 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function expire($value, $rule): bool - { - if (is_string($rule)) { - $rule = explode(',', $rule); - } - - list($start, $end) = $rule; - - if (!is_numeric($start)) { - $start = strtotime($start); - } - - if (!is_numeric($end)) { - $end = strtotime($end); - } - - return time() >= $start && time() <= $end; - } - - /** - * 验证IP许可 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function allowIp($value, $rule): bool - { - return in_array($value, is_array($rule) ? $rule : explode(',', $rule)); - } - - /** - * 验证IP禁用 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 - * @return bool - */ - public function denyIp($value, $rule): bool - { - return !in_array($value, is_array($rule) ? $rule : explode(',', $rule)); - } - - /** - * 使用正则验证数据 - * @access public - * @param mixed $value 字段值 - * @param mixed $rule 验证规则 正则规则或者预定义正则名 - * @return bool - */ - public function regex($value, $rule): bool - { - if (isset($this->regex[$rule])) { - $rule = $this->regex[$rule]; - } elseif (isset($this->defaultRegex[$rule])) { - $rule = $this->defaultRegex[$rule]; - } - - if (is_string($rule) && 0 !== strpos($rule, '/') && !preg_match('/\/[imsU]{0,4}$/', $rule)) { - // 不是正则表达式则两端补上/ - $rule = '/^' . $rule . '$/'; - } - - return is_scalar($value) && 1 === preg_match($rule, (string) $value); - } - - // 获取错误信息 - public function getError() - { - return $this->error; - } - - /** - * 获取数据值 - * @access protected - * @param array $data 数据 - * @param string $key 数据标识 支持二维 - * @return mixed - */ - protected function getDataValue(array $data, $key) - { - if (is_numeric($key)) { - $value = $key; - } elseif (is_string($key) && strpos($key, '.')) { - // 支持多维数组验证 - foreach (explode('.', $key) as $key) { - if (!isset($data[$key])) { - $value = null; - break; - } - $value = $data = $data[$key]; - } - } else { - $value = $data[$key] ?? null; - } - - return $value; - } - - /** - * 获取验证规则的错误提示信息 - * @access protected - * @param string $attribute 字段英文名 - * @param string $title 字段描述名 - * @param string $type 验证规则名称 - * @param mixed $rule 验证规则数据 - * @return string|array - */ - protected function getRuleMsg(string $attribute, string $title, string $type, $rule) - { - if (isset($this->message[$attribute . '.' . $type])) { - $msg = $this->message[$attribute . '.' . $type]; - } elseif (isset($this->message[$attribute][$type])) { - $msg = $this->message[$attribute][$type]; - } elseif (isset($this->message[$attribute])) { - $msg = $this->message[$attribute]; - } elseif (isset($this->typeMsg[$type])) { - $msg = $this->typeMsg[$type]; - } elseif (0 === strpos($type, 'require')) { - $msg = $this->typeMsg['require']; - } else { - $msg = $title . $this->lang->get('not conform to the rules'); - } - - if (is_array($msg)) { - return $this->errorMsgIsArray($msg, $rule, $title); - } - - return $this->parseErrorMsg($msg, $rule, $title); - } - - /** - * 获取验证规则的错误提示信息 - * @access protected - * @param string $msg 错误信息 - * @param mixed $rule 验证规则数据 - * @param string $title 字段描述名 - * @return string - */ - protected function parseErrorMsg(string $msg, $rule, string $title) - { - if (0 === strpos($msg, '{%')) { - $msg = $this->lang->get(substr($msg, 2, -1)); - } elseif ($this->lang->has($msg)) { - $msg = $this->lang->get($msg); - } - - if (is_array($msg)) { - return $this->errorMsgIsArray($msg, $rule, $title); - } - - if (is_scalar($rule) && false !== strpos($msg, ':')) { - // 变量替换 - if (is_string($rule) && strpos($rule, ',')) { - $array = array_pad(explode(',', $rule), 3, ''); - } else { - $array = array_pad([], 3, ''); - } - - $msg = str_replace( - [':attribute', ':1', ':2', ':3'], - [$title, $array[0], $array[1], $array[2]], - $msg); - - if (strpos($msg, ':rule')) { - $msg = str_replace(':rule', (string) $rule, $msg); - } - } - - return $msg; - } - - /** - * 错误信息数组处理 - * @access protected - * @param array $msg 错误信息 - * @param mixed $rule 验证规则数据 - * @param string $title 字段描述名 - * @return array - */ - protected function errorMsgIsArray(array $msg, $rule, string $title) - { - foreach ($msg as $key => $val) { - if (is_string($val)) { - $msg[$key] = $this->parseErrorMsg($val, $rule, $title); - } - } - return $msg; - } - - /** - * 获取数据验证的场景 - * @access protected - * @param string $scene 验证场景 - * @return void - */ - protected function getScene(string $scene): void - { - $this->only = $this->append = $this->remove = []; - - if (method_exists($this, 'scene' . $scene)) { - call_user_func([$this, 'scene' . $scene]); - } elseif (isset($this->scene[$scene])) { - // 如果设置了验证适用场景 - $this->only = $this->scene[$scene]; - } - } - - /** - * 动态方法 直接调用is方法进行验证 - * @access public - * @param string $method 方法名 - * @param array $args 调用参数 - * @return bool - */ - public function __call($method, $args) - { - if ('is' == strtolower(substr($method, 0, 2))) { - $method = substr($method, 2); - } - - array_push($args, lcfirst($method)); - - return call_user_func_array([$this, 'is'], $args); - } -} diff --git a/vendor/topthink/framework/src/think/View.php b/vendor/topthink/framework/src/think/View.php deleted file mode 100644 index c2e7368e5..000000000 --- a/vendor/topthink/framework/src/think/View.php +++ /dev/null @@ -1,187 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use think\helper\Arr; - -/** - * 视图类 - * @package think - */ -class View extends Manager -{ - - protected $namespace = '\\think\\view\\driver\\'; - - /** - * 模板变量 - * @var array - */ - protected $data = []; - - /** - * 内容过滤 - * @var mixed - */ - protected $filter; - - /** - * 获取模板引擎 - * @access public - * @param string $type 模板引擎类型 - * @return $this - */ - public function engine(string $type = null) - { - return $this->driver($type); - } - - /** - * 模板变量赋值 - * @access public - * @param string|array $name 模板变量 - * @param mixed $value 变量值 - * @return $this - */ - public function assign($name, $value = null) - { - if (is_array($name)) { - $this->data = array_merge($this->data, $name); - } else { - $this->data[$name] = $value; - } - - return $this; - } - - /** - * 视图过滤 - * @access public - * @param Callable $filter 过滤方法或闭包 - * @return $this - */ - public function filter(callable $filter = null) - { - $this->filter = $filter; - return $this; - } - - /** - * 解析和获取模板内容 用于输出 - * @access public - * @param string $template 模板文件名或者内容 - * @param array $vars 模板变量 - * @return string - * @throws \Exception - */ - public function fetch(string $template = '', array $vars = []): string - { - return $this->getContent(function () use ($vars, $template) { - $this->engine()->fetch($template, array_merge($this->data, $vars)); - }); - } - - /** - * 渲染内容输出 - * @access public - * @param string $content 内容 - * @param array $vars 模板变量 - * @return string - */ - public function display(string $content, array $vars = []): string - { - return $this->getContent(function () use ($vars, $content) { - $this->engine()->display($content, array_merge($this->data, $vars)); - }); - } - - /** - * 获取模板引擎渲染内容 - * @param $callback - * @return string - * @throws \Exception - */ - protected function getContent($callback): string - { - // 页面缓存 - ob_start(); - ob_implicit_flush(0); - - // 渲染输出 - try { - $callback(); - } catch (\Exception $e) { - ob_end_clean(); - throw $e; - } - - // 获取并清空缓存 - $content = ob_get_clean(); - - if ($this->filter) { - $content = call_user_func_array($this->filter, [$content]); - } - - return $content; - } - - /** - * 模板变量赋值 - * @access public - * @param string $name 变量名 - * @param mixed $value 变量值 - */ - public function __set($name, $value) - { - $this->data[$name] = $value; - } - - /** - * 取得模板显示变量的值 - * @access protected - * @param string $name 模板变量 - * @return mixed - */ - public function __get($name) - { - return $this->data[$name]; - } - - /** - * 检测模板变量是否设置 - * @access public - * @param string $name 模板变量名 - * @return bool - */ - public function __isset($name) - { - return isset($this->data[$name]); - } - - protected function resolveConfig(string $name) - { - $config = $this->app->config->get('view', []); - Arr::forget($config, 'type'); - return $config; - } - - /** - * 默认驱动 - * @return string|null - */ - public function getDefaultDriver() - { - return $this->app->config->get('view.type', 'php'); - } - -} diff --git a/vendor/topthink/framework/src/think/cache/Driver.php b/vendor/topthink/framework/src/think/cache/Driver.php deleted file mode 100644 index 30b90f409..000000000 --- a/vendor/topthink/framework/src/think/cache/Driver.php +++ /dev/null @@ -1,346 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\cache; - -use Closure; -use DateInterval; -use DateTime; -use DateTimeInterface; -use Exception; -use Psr\SimpleCache\CacheInterface; -use think\contract\CacheHandlerInterface; -use think\exception\InvalidArgumentException; -use throwable; - -/** - * 缓存基础类 - */ -abstract class Driver implements CacheInterface, CacheHandlerInterface -{ - /** - * 驱动句柄 - * @var object - */ - protected $handler = null; - - /** - * 缓存读取次数 - * @var integer - */ - protected $readTimes = 0; - - /** - * 缓存写入次数 - * @var integer - */ - protected $writeTimes = 0; - - /** - * 缓存参数 - * @var array - */ - protected $options = []; - - /** - * 缓存标签 - * @var array - */ - protected $tag = []; - - /** - * 获取有效期 - * @access protected - * @param integer|DateTimeInterface|DateInterval $expire 有效期 - * @return int - */ - protected function getExpireTime($expire): int - { - if ($expire instanceof DateTimeInterface) { - $expire = $expire->getTimestamp() - time(); - } elseif ($expire instanceof DateInterval) { - $expire = DateTime::createFromFormat('U', (string) time()) - ->add($expire) - ->format('U') - time(); - } - - return (int) $expire; - } - - /** - * 获取实际的缓存标识 - * @access public - * @param string $name 缓存名 - * @return string - */ - public function getCacheKey(string $name): string - { - return $this->options['prefix'] . $name; - } - - /** - * 读取缓存并删除 - * @access public - * @param string $name 缓存变量名 - * @return mixed - */ - public function pull(string $name) - { - $result = $this->get($name, false); - - if ($result) { - $this->delete($name); - return $result; - } - } - - /** - * 追加(数组)缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $value 存储数据 - * @return void - */ - public function push(string $name, $value): void - { - $item = $this->get($name, []); - - if (!is_array($item)) { - throw new InvalidArgumentException('only array cache can be push'); - } - - $item[] = $value; - - if (count($item) > 1000) { - array_shift($item); - } - - $item = array_unique($item); - - $this->set($name, $item); - } - - /** - * 如果不存在则写入缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $value 存储数据 - * @param int $expire 有效时间 0为永久 - * @return mixed - */ - public function remember(string $name, $value, $expire = null) - { - if ($this->has($name)) { - return $this->get($name); - } - - $time = time(); - - while ($time + 5 > time() && $this->has($name . '_lock')) { - // 存在锁定则等待 - usleep(200000); - } - - try { - // 锁定 - $this->set($name . '_lock', true); - - if ($value instanceof Closure) { - // 获取缓存数据 - $value = $value(); - } - - // 缓存数据 - $this->set($name, $value, $expire); - - // 解锁 - $this->delete($name . '_lock'); - } catch (Exception | throwable $e) { - $this->delete($name . '_lock'); - throw $e; - } - - return $value; - } - - /** - * 缓存标签 - * @access public - * @param string|array $name 标签名 - * @return TagSet - */ - public function tag($name): TagSet - { - $name = (array) $name; - $key = implode('-', $name); - - if (!isset($this->tag[$key])) { - $name = array_map(function ($val) { - return $this->getTagKey($val); - }, $name); - $this->tag[$key] = new TagSet($name, $this); - } - - return $this->tag[$key]; - } - - /** - * 获取标签包含的缓存标识 - * @access public - * @param string $tag 标签标识 - * @return array - */ - public function getTagItems(string $tag): array - { - return $this->get($tag, []); - } - - /** - * 获取实际标签名 - * @access public - * @param string $tag 标签名 - * @return string - */ - public function getTagKey(string $tag): string - { - return $this->options['tag_prefix'] . md5($tag); - } - - /** - * 序列化数据 - * @access protected - * @param mixed $data 缓存数据 - * @return string - */ - protected function serialize($data): string - { - if (is_numeric($data)) { - return (string) $data; - } - - $serialize = $this->options['serialize'][0] ?? "\Opis\Closure\serialize"; - - return $serialize($data); - } - - /** - * 反序列化数据 - * @access protected - * @param string $data 缓存数据 - * @return mixed - */ - protected function unserialize(string $data) - { - if (is_numeric($data)) { - return $data; - } - - $unserialize = $this->options['serialize'][1] ?? "\Opis\Closure\unserialize"; - - return $unserialize($data); - } - - /** - * 返回句柄对象,可执行其它高级方法 - * - * @access public - * @return object - */ - public function handler() - { - return $this->handler; - } - - /** - * 返回缓存读取次数 - * @access public - * @return int - */ - public function getReadTimes(): int - { - return $this->readTimes; - } - - /** - * 返回缓存写入次数 - * @access public - * @return int - */ - public function getWriteTimes(): int - { - return $this->writeTimes; - } - - /** - * 读取缓存 - * @access public - * @param iterable $keys 缓存变量名 - * @param mixed $default 默认值 - * @return iterable - * @throws InvalidArgumentException - */ - public function getMultiple($keys, $default = null): iterable - { - $result = []; - - foreach ($keys as $key) { - $result[$key] = $this->get($key, $default); - } - - return $result; - } - - /** - * 写入缓存 - * @access public - * @param iterable $values 缓存数据 - * @param null|int|\DateInterval $ttl 有效时间 0为永久 - * @return bool - */ - public function setMultiple($values, $ttl = null): bool - { - foreach ($values as $key => $val) { - $result = $this->set($key, $val, $ttl); - - if (false === $result) { - return false; - } - } - - return true; - } - - /** - * 删除缓存 - * @access public - * @param iterable $keys 缓存变量名 - * @return bool - * @throws InvalidArgumentException - */ - public function deleteMultiple($keys): bool - { - foreach ($keys as $key) { - $result = $this->delete($key); - - if (false === $result) { - return false; - } - } - - return true; - } - - public function __call($method, $args) - { - return call_user_func_array([$this->handler, $method], $args); - } -} diff --git a/vendor/topthink/framework/src/think/cache/TagSet.php b/vendor/topthink/framework/src/think/cache/TagSet.php deleted file mode 100644 index d890c496a..000000000 --- a/vendor/topthink/framework/src/think/cache/TagSet.php +++ /dev/null @@ -1,130 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\cache; - -/** - * 标签集合 - */ -class TagSet -{ - /** - * 标签的缓存Key - * @var array - */ - protected $tag; - - /** - * 缓存句柄 - * @var Driver - */ - protected $handler; - - /** - * 架构函数 - * @access public - * @param array $tag 缓存标签 - * @param Driver $cache 缓存对象 - */ - public function __construct(array $tag, Driver $cache) - { - $this->tag = $tag; - $this->handler = $cache; - } - - /** - * 写入缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $value 存储数据 - * @param integer|\DateTime $expire 有效时间(秒) - * @return bool - */ - public function set(string $name, $value, $expire = null): bool - { - $this->handler->set($name, $value, $expire); - - $this->append($name); - - return true; - } - - /** - * 追加缓存标识到标签 - * @access public - * @param string $name 缓存变量名 - * @return void - */ - public function append(string $name): void - { - $name = $this->handler->getCacheKey($name); - - foreach ($this->tag as $tag) { - $this->handler->push($tag, $name); - } - } - - /** - * 写入缓存 - * @access public - * @param iterable $values 缓存数据 - * @param null|int|\DateInterval $ttl 有效时间 0为永久 - * @return bool - */ - public function setMultiple($values, $ttl = null): bool - { - foreach ($values as $key => $val) { - $result = $this->set($key, $val, $ttl); - - if (false === $result) { - return false; - } - } - - return true; - } - - /** - * 如果不存在则写入缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $value 存储数据 - * @param int $expire 有效时间 0为永久 - * @return mixed - */ - public function remember(string $name, $value, $expire = null) - { - $result = $this->handler->remember($name, $value, $expire); - - $this->append($name); - - return $result; - } - - /** - * 清除缓存 - * @access public - * @return bool - */ - public function clear(): bool - { - // 指定标签清除 - foreach ($this->tag as $tag) { - $names = $this->handler->getTagItems($tag); - - $this->handler->clearTag($names); - $this->handler->delete($tag); - } - - return true; - } -} diff --git a/vendor/topthink/framework/src/think/cache/driver/File.php b/vendor/topthink/framework/src/think/cache/driver/File.php deleted file mode 100644 index f0122f538..000000000 --- a/vendor/topthink/framework/src/think/cache/driver/File.php +++ /dev/null @@ -1,304 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\cache\driver; - -use FilesystemIterator; -use think\App; -use think\cache\Driver; - -/** - * 文件缓存类 - */ -class File extends Driver -{ - /** - * 配置参数 - * @var array - */ - protected $options = [ - 'expire' => 0, - 'cache_subdir' => true, - 'prefix' => '', - 'path' => '', - 'hash_type' => 'md5', - 'data_compress' => false, - 'tag_prefix' => 'tag:', - 'serialize' => [], - ]; - - /** - * 架构函数 - * @param App $app - * @param array $options 参数 - */ - public function __construct(App $app, array $options = []) - { - if (!empty($options)) { - $this->options = array_merge($this->options, $options); - } - - if (empty($this->options['path'])) { - $this->options['path'] = $app->getRuntimePath() . 'cache'; - } - - if (substr($this->options['path'], -1) != DIRECTORY_SEPARATOR) { - $this->options['path'] .= DIRECTORY_SEPARATOR; - } - } - - /** - * 取得变量的存储文件名 - * @access public - * @param string $name 缓存变量名 - * @return string - */ - public function getCacheKey(string $name): string - { - $name = hash($this->options['hash_type'], $name); - - if ($this->options['cache_subdir']) { - // 使用子目录 - $name = substr($name, 0, 2) . DIRECTORY_SEPARATOR . substr($name, 2); - } - - if ($this->options['prefix']) { - $name = $this->options['prefix'] . DIRECTORY_SEPARATOR . $name; - } - - return $this->options['path'] . $name . '.php'; - } - - /** - * 获取缓存数据 - * @param string $name 缓存标识名 - * @return array|null - */ - protected function getRaw(string $name) - { - $filename = $this->getCacheKey($name); - - if (!is_file($filename)) { - return; - } - - $content = @file_get_contents($filename); - - if (false !== $content) { - $expire = (int) substr($content, 8, 12); - if (0 != $expire && time() - $expire > filemtime($filename)) { - //缓存过期删除缓存文件 - $this->unlink($filename); - return; - } - - $content = substr($content, 32); - - if ($this->options['data_compress'] && function_exists('gzcompress')) { - //启用数据压缩 - $content = gzuncompress($content); - } - - return ['content' => $content, 'expire' => $expire]; - } - } - - /** - * 判断缓存是否存在 - * @access public - * @param string $name 缓存变量名 - * @return bool - */ - public function has($name): bool - { - return $this->getRaw($name) !== null; - } - - /** - * 读取缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $default 默认值 - * @return mixed - */ - public function get($name, $default = null) - { - $this->readTimes++; - - $raw = $this->getRaw($name); - - return is_null($raw) ? $default : $this->unserialize($raw['content']); - } - - /** - * 写入缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $value 存储数据 - * @param int|\DateTime $expire 有效时间 0为永久 - * @return bool - */ - public function set($name, $value, $expire = null): bool - { - $this->writeTimes++; - - if (is_null($expire)) { - $expire = $this->options['expire']; - } - - $expire = $this->getExpireTime($expire); - $filename = $this->getCacheKey($name); - - $dir = dirname($filename); - - if (!is_dir($dir)) { - try { - mkdir($dir, 0755, true); - } catch (\Exception $e) { - // 创建失败 - } - } - - $data = $this->serialize($value); - - if ($this->options['data_compress'] && function_exists('gzcompress')) { - //数据压缩 - $data = gzcompress($data, 3); - } - - $data = "\n" . $data; - $result = file_put_contents($filename, $data); - - if ($result) { - clearstatcache(); - return true; - } - - return false; - } - - /** - * 自增缓存(针对数值缓存) - * @access public - * @param string $name 缓存变量名 - * @param int $step 步长 - * @return false|int - */ - public function inc(string $name, int $step = 1) - { - if ($raw = $this->getRaw($name)) { - $value = $this->unserialize($raw['content']) + $step; - $expire = $raw['expire']; - } else { - $value = $step; - $expire = 0; - } - - return $this->set($name, $value, $expire) ? $value : false; - } - - /** - * 自减缓存(针对数值缓存) - * @access public - * @param string $name 缓存变量名 - * @param int $step 步长 - * @return false|int - */ - public function dec(string $name, int $step = 1) - { - return $this->inc($name, -$step); - } - - /** - * 删除缓存 - * @access public - * @param string $name 缓存变量名 - * @return bool - */ - public function delete($name): bool - { - $this->writeTimes++; - - return $this->unlink($this->getCacheKey($name)); - } - - /** - * 清除缓存 - * @access public - * @return bool - */ - public function clear(): bool - { - $this->writeTimes++; - - $dirname = $this->options['path'] . $this->options['prefix']; - - $this->rmdir($dirname); - - return true; - } - - /** - * 删除缓存标签 - * @access public - * @param array $keys 缓存标识列表 - * @return void - */ - public function clearTag(array $keys): void - { - foreach ($keys as $key) { - $this->unlink($key); - } - } - - /** - * 判断文件是否存在后,删除 - * @access private - * @param string $path - * @return bool - */ - private function unlink(string $path): bool - { - try { - return is_file($path) && unlink($path); - } catch (\Exception $e) { - return false; - } - } - - /** - * 删除文件夹 - * @param $dirname - * @return bool - */ - private function rmdir($dirname) - { - if (!is_dir($dirname)) { - return false; - } - - $items = new FilesystemIterator($dirname); - - foreach ($items as $item) { - if ($item->isDir() && !$item->isLink()) { - $this->rmdir($item->getPathname()); - } else { - $this->unlink($item->getPathname()); - } - } - - @rmdir($dirname); - - return true; - } - -} diff --git a/vendor/topthink/framework/src/think/cache/driver/Memcache.php b/vendor/topthink/framework/src/think/cache/driver/Memcache.php deleted file mode 100644 index 127744792..000000000 --- a/vendor/topthink/framework/src/think/cache/driver/Memcache.php +++ /dev/null @@ -1,209 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\cache\driver; - -use think\cache\Driver; - -/** - * Memcache缓存类 - */ -class Memcache extends Driver -{ - /** - * 配置参数 - * @var array - */ - protected $options = [ - 'host' => '127.0.0.1', - 'port' => 11211, - 'expire' => 0, - 'timeout' => 0, // 超时时间(单位:毫秒) - 'persistent' => true, - 'prefix' => '', - 'tag_prefix' => 'tag:', - 'serialize' => [], - ]; - - /** - * 架构函数 - * @access public - * @param array $options 缓存参数 - * @throws \BadFunctionCallException - */ - public function __construct(array $options = []) - { - if (!extension_loaded('memcache')) { - throw new \BadFunctionCallException('not support: memcache'); - } - - if (!empty($options)) { - $this->options = array_merge($this->options, $options); - } - - $this->handler = new \Memcache; - - // 支持集群 - $hosts = (array) $this->options['host']; - $ports = (array) $this->options['port']; - - if (empty($ports[0])) { - $ports[0] = 11211; - } - - // 建立连接 - foreach ($hosts as $i => $host) { - $port = $ports[$i] ?? $ports[0]; - $this->options['timeout'] > 0 ? - $this->handler->addServer($host, (int) $port, $this->options['persistent'], 1, $this->options['timeout']) : - $this->handler->addServer($host, (int) $port, $this->options['persistent'], 1); - } - } - - /** - * 判断缓存 - * @access public - * @param string $name 缓存变量名 - * @return bool - */ - public function has($name): bool - { - $key = $this->getCacheKey($name); - - return false !== $this->handler->get($key); - } - - /** - * 读取缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $default 默认值 - * @return mixed - */ - public function get($name, $default = null) - { - $this->readTimes++; - - $result = $this->handler->get($this->getCacheKey($name)); - - return false !== $result ? $this->unserialize($result) : $default; - } - - /** - * 写入缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $value 存储数据 - * @param int|\DateTime $expire 有效时间(秒) - * @return bool - */ - public function set($name, $value, $expire = null): bool - { - $this->writeTimes++; - - if (is_null($expire)) { - $expire = $this->options['expire']; - } - - $key = $this->getCacheKey($name); - $expire = $this->getExpireTime($expire); - $value = $this->serialize($value); - - if ($this->handler->set($key, $value, 0, $expire)) { - return true; - } - - return false; - } - - /** - * 自增缓存(针对数值缓存) - * @access public - * @param string $name 缓存变量名 - * @param int $step 步长 - * @return false|int - */ - public function inc(string $name, int $step = 1) - { - $this->writeTimes++; - - $key = $this->getCacheKey($name); - - if ($this->handler->get($key)) { - return $this->handler->increment($key, $step); - } - - return $this->handler->set($key, $step); - } - - /** - * 自减缓存(针对数值缓存) - * @access public - * @param string $name 缓存变量名 - * @param int $step 步长 - * @return false|int - */ - public function dec(string $name, int $step = 1) - { - $this->writeTimes++; - - $key = $this->getCacheKey($name); - $value = $this->handler->get($key) - $step; - $res = $this->handler->set($key, $value); - - return !$res ? false : $value; - } - - /** - * 删除缓存 - * @access public - * @param string $name 缓存变量名 - * @param bool|false $ttl - * @return bool - */ - public function delete($name, $ttl = false): bool - { - $this->writeTimes++; - - $key = $this->getCacheKey($name); - - return false === $ttl ? - $this->handler->delete($key) : - $this->handler->delete($key, $ttl); - } - - /** - * 清除缓存 - * @access public - * @return bool - */ - public function clear(): bool - { - $this->writeTimes++; - - return $this->handler->flush(); - } - - /** - * 删除缓存标签 - * @access public - * @param array $keys 缓存标识列表 - * @return void - */ - public function clearTag(array $keys): void - { - foreach ($keys as $key) { - $this->handler->delete($key); - } - } - -} diff --git a/vendor/topthink/framework/src/think/cache/driver/Memcached.php b/vendor/topthink/framework/src/think/cache/driver/Memcached.php deleted file mode 100644 index a5755b8ca..000000000 --- a/vendor/topthink/framework/src/think/cache/driver/Memcached.php +++ /dev/null @@ -1,218 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\cache\driver; - -use think\cache\Driver; - -/** - * Memcached缓存类 - */ -class Memcached extends Driver -{ - /** - * 配置参数 - * @var array - */ - protected $options = [ - 'host' => '127.0.0.1', - 'port' => 11211, - 'expire' => 0, - 'timeout' => 0, // 超时时间(单位:毫秒) - 'prefix' => '', - 'username' => '', //账号 - 'password' => '', //密码 - 'option' => [], - 'tag_prefix' => 'tag:', - 'serialize' => [], - ]; - - /** - * 架构函数 - * @access public - * @param array $options 缓存参数 - */ - public function __construct(array $options = []) - { - if (!extension_loaded('memcached')) { - throw new \BadFunctionCallException('not support: memcached'); - } - - if (!empty($options)) { - $this->options = array_merge($this->options, $options); - } - - $this->handler = new \Memcached; - - if (!empty($this->options['option'])) { - $this->handler->setOptions($this->options['option']); - } - - // 设置连接超时时间(单位:毫秒) - if ($this->options['timeout'] > 0) { - $this->handler->setOption(\Memcached::OPT_CONNECT_TIMEOUT, $this->options['timeout']); - } - - // 支持集群 - $hosts = (array) $this->options['host']; - $ports = (array) $this->options['port']; - if (empty($ports[0])) { - $ports[0] = 11211; - } - - // 建立连接 - $servers = []; - foreach ($hosts as $i => $host) { - $servers[] = [$host, $ports[$i] ?? $ports[0], 1]; - } - - $this->handler->addServers($servers); - - if ('' != $this->options['username']) { - $this->handler->setOption(\Memcached::OPT_BINARY_PROTOCOL, true); - $this->handler->setSaslAuthData($this->options['username'], $this->options['password']); - } - } - - /** - * 判断缓存 - * @access public - * @param string $name 缓存变量名 - * @return bool - */ - public function has($name): bool - { - $key = $this->getCacheKey($name); - - return $this->handler->get($key) ? true : false; - } - - /** - * 读取缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $default 默认值 - * @return mixed - */ - public function get($name, $default = null) - { - $this->readTimes++; - - $result = $this->handler->get($this->getCacheKey($name)); - - return false !== $result ? $this->unserialize($result) : $default; - } - - /** - * 写入缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $value 存储数据 - * @param integer|\DateTime $expire 有效时间(秒) - * @return bool - */ - public function set($name, $value, $expire = null): bool - { - $this->writeTimes++; - - if (is_null($expire)) { - $expire = $this->options['expire']; - } - - $key = $this->getCacheKey($name); - $expire = $this->getExpireTime($expire); - $value = $this->serialize($value); - - if ($this->handler->set($key, $value, $expire)) { - return true; - } - - return false; - } - - /** - * 自增缓存(针对数值缓存) - * @access public - * @param string $name 缓存变量名 - * @param int $step 步长 - * @return false|int - */ - public function inc(string $name, int $step = 1) - { - $this->writeTimes++; - - $key = $this->getCacheKey($name); - - if ($this->handler->get($key)) { - return $this->handler->increment($key, $step); - } - - return $this->handler->set($key, $step); - } - - /** - * 自减缓存(针对数值缓存) - * @access public - * @param string $name 缓存变量名 - * @param int $step 步长 - * @return false|int - */ - public function dec(string $name, int $step = 1) - { - $this->writeTimes++; - - $key = $this->getCacheKey($name); - $value = $this->handler->get($key) - $step; - $res = $this->handler->set($key, $value); - - return !$res ? false : $value; - } - - /** - * 删除缓存 - * @access public - * @param string $name 缓存变量名 - * @return bool - */ - public function delete($name): bool - { - $this->writeTimes++; - - $key = $this->getCacheKey($name); - - return $this->handler->delete($key); - } - - /** - * 清除缓存 - * @access public - * @return bool - */ - public function clear(): bool - { - $this->writeTimes++; - - return $this->handler->flush(); - } - - /** - * 删除缓存标签 - * @access public - * @param array $keys 缓存标识列表 - * @return void - */ - public function clearTag(array $keys): void - { - $this->handler->deleteMulti($keys); - } - -} diff --git a/vendor/topthink/framework/src/think/cache/driver/Redis.php b/vendor/topthink/framework/src/think/cache/driver/Redis.php deleted file mode 100644 index 23c52dc6d..000000000 --- a/vendor/topthink/framework/src/think/cache/driver/Redis.php +++ /dev/null @@ -1,248 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\cache\driver; - -use think\cache\Driver; - -/** - * Redis缓存驱动,适合单机部署、有前端代理实现高可用的场景,性能最好 - * 有需要在业务层实现读写分离、或者使用RedisCluster的需求,请使用Redisd驱动 - * - * 要求安装phpredis扩展:https://github.com/nicolasff/phpredis - * @author 尘缘 <130775@qq.com> - */ -class Redis extends Driver -{ - /** @var \Predis\Client|\Redis */ - protected $handler; - - /** - * 配置参数 - * @var array - */ - protected $options = [ - 'host' => '127.0.0.1', - 'port' => 6379, - 'password' => '', - 'select' => 0, - 'timeout' => 0, - 'expire' => 0, - 'persistent' => false, - 'prefix' => '', - 'tag_prefix' => 'tag:', - 'serialize' => [], - ]; - - /** - * 架构函数 - * @access public - * @param array $options 缓存参数 - */ - public function __construct(array $options = []) - { - if (!empty($options)) { - $this->options = array_merge($this->options, $options); - } - - if (extension_loaded('redis')) { - $this->handler = new \Redis; - - if ($this->options['persistent']) { - $this->handler->pconnect($this->options['host'], (int) $this->options['port'], $this->options['timeout'], 'persistent_id_' . $this->options['select']); - } else { - $this->handler->connect($this->options['host'], (int) $this->options['port'], $this->options['timeout']); - } - - if ('' != $this->options['password']) { - $this->handler->auth($this->options['password']); - } - } elseif (class_exists('\Predis\Client')) { - $params = []; - foreach ($this->options as $key => $val) { - if (in_array($key, ['aggregate', 'cluster', 'connections', 'exceptions', 'prefix', 'profile', 'replication', 'parameters'])) { - $params[$key] = $val; - unset($this->options[$key]); - } - } - - if ('' == $this->options['password']) { - unset($this->options['password']); - } - - $this->handler = new \Predis\Client($this->options, $params); - - $this->options['prefix'] = ''; - } else { - throw new \BadFunctionCallException('not support: redis'); - } - - if (0 != $this->options['select']) { - $this->handler->select($this->options['select']); - } - } - - /** - * 判断缓存 - * @access public - * @param string $name 缓存变量名 - * @return bool - */ - public function has($name): bool - { - return $this->handler->exists($this->getCacheKey($name)) ? true : false; - } - - /** - * 读取缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $default 默认值 - * @return mixed - */ - public function get($name, $default = null) - { - $this->readTimes++; - - $value = $this->handler->get($this->getCacheKey($name)); - - if (false === $value) { - return $default; - } - - return $this->unserialize($value); - } - - /** - * 写入缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $value 存储数据 - * @param integer|\DateTime $expire 有效时间(秒) - * @return bool - */ - public function set($name, $value, $expire = null): bool - { - $this->writeTimes++; - - if (is_null($expire)) { - $expire = $this->options['expire']; - } - - $key = $this->getCacheKey($name); - $expire = $this->getExpireTime($expire); - $value = $this->serialize($value); - - if ($expire) { - $this->handler->setex($key, $expire, $value); - } else { - $this->handler->set($key, $value); - } - - return true; - } - - /** - * 自增缓存(针对数值缓存) - * @access public - * @param string $name 缓存变量名 - * @param int $step 步长 - * @return false|int - */ - public function inc(string $name, int $step = 1) - { - $this->writeTimes++; - - $key = $this->getCacheKey($name); - - return $this->handler->incrby($key, $step); - } - - /** - * 自减缓存(针对数值缓存) - * @access public - * @param string $name 缓存变量名 - * @param int $step 步长 - * @return false|int - */ - public function dec(string $name, int $step = 1) - { - $this->writeTimes++; - - $key = $this->getCacheKey($name); - - return $this->handler->decrby($key, $step); - } - - /** - * 删除缓存 - * @access public - * @param string $name 缓存变量名 - * @return bool - */ - public function delete($name): bool - { - $this->writeTimes++; - - $result = $this->handler->del($this->getCacheKey($name)); - return $result > 0; - } - - /** - * 清除缓存 - * @access public - * @return bool - */ - public function clear(): bool - { - $this->writeTimes++; - - $this->handler->flushDB(); - return true; - } - - /** - * 删除缓存标签 - * @access public - * @param array $keys 缓存标识列表 - * @return void - */ - public function clearTag(array $keys): void - { - // 指定标签清除 - $this->handler->del($keys); - } - - /** - * 追加(数组)缓存数据 - * @access public - * @param string $name 缓存标识 - * @param mixed $value 数据 - * @return void - */ - public function push(string $name, $value): void - { - $this->handler->sAdd($name, $value); - } - - /** - * 获取标签包含的缓存标识 - * @access public - * @param string $tag 缓存标签 - * @return array - */ - public function getTagItems(string $tag): array - { - return $this->handler->sMembers($tag); - } - -} diff --git a/vendor/topthink/framework/src/think/cache/driver/Wincache.php b/vendor/topthink/framework/src/think/cache/driver/Wincache.php deleted file mode 100644 index 8b8e26df4..000000000 --- a/vendor/topthink/framework/src/think/cache/driver/Wincache.php +++ /dev/null @@ -1,175 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\cache\driver; - -use think\cache\Driver; - -/** - * Wincache缓存驱动 - */ -class Wincache extends Driver -{ - /** - * 配置参数 - * @var array - */ - protected $options = [ - 'prefix' => '', - 'expire' => 0, - 'tag_prefix' => 'tag:', - 'serialize' => [], - ]; - - /** - * 架构函数 - * @access public - * @param array $options 缓存参数 - * @throws \BadFunctionCallException - */ - public function __construct(array $options = []) - { - if (!function_exists('wincache_ucache_info')) { - throw new \BadFunctionCallException('not support: WinCache'); - } - - if (!empty($options)) { - $this->options = array_merge($this->options, $options); - } - } - - /** - * 判断缓存 - * @access public - * @param string $name 缓存变量名 - * @return bool - */ - public function has($name): bool - { - $this->readTimes++; - - $key = $this->getCacheKey($name); - - return wincache_ucache_exists($key); - } - - /** - * 读取缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $default 默认值 - * @return mixed - */ - public function get($name, $default = null) - { - $this->readTimes++; - - $key = $this->getCacheKey($name); - - return wincache_ucache_exists($key) ? $this->unserialize(wincache_ucache_get($key)) : $default; - } - - /** - * 写入缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $value 存储数据 - * @param integer|\DateTime $expire 有效时间(秒) - * @return bool - */ - public function set($name, $value, $expire = null): bool - { - $this->writeTimes++; - - if (is_null($expire)) { - $expire = $this->options['expire']; - } - - $key = $this->getCacheKey($name); - $expire = $this->getExpireTime($expire); - $value = $this->serialize($value); - - if (wincache_ucache_set($key, $value, $expire)) { - return true; - } - - return false; - } - - /** - * 自增缓存(针对数值缓存) - * @access public - * @param string $name 缓存变量名 - * @param int $step 步长 - * @return false|int - */ - public function inc(string $name, int $step = 1) - { - $this->writeTimes++; - - $key = $this->getCacheKey($name); - - return wincache_ucache_inc($key, $step); - } - - /** - * 自减缓存(针对数值缓存) - * @access public - * @param string $name 缓存变量名 - * @param int $step 步长 - * @return false|int - */ - public function dec(string $name, int $step = 1) - { - $this->writeTimes++; - - $key = $this->getCacheKey($name); - - return wincache_ucache_dec($key, $step); - } - - /** - * 删除缓存 - * @access public - * @param string $name 缓存变量名 - * @return bool - */ - public function delete($name): bool - { - $this->writeTimes++; - - return wincache_ucache_delete($this->getCacheKey($name)); - } - - /** - * 清除缓存 - * @access public - * @return bool - */ - public function clear(): bool - { - $this->writeTimes++; - return wincache_ucache_clear(); - } - - /** - * 删除缓存标签 - * @access public - * @param array $keys 缓存标识列表 - * @return void - */ - public function clearTag(array $keys): void - { - wincache_ucache_delete($keys); - } - -} diff --git a/vendor/topthink/framework/src/think/console/Command.php b/vendor/topthink/framework/src/think/console/Command.php deleted file mode 100644 index bd3fb209b..000000000 --- a/vendor/topthink/framework/src/think/console/Command.php +++ /dev/null @@ -1,504 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\console; - -use Exception; -use InvalidArgumentException; -use LogicException; -use think\App; -use think\Console; -use think\console\input\Argument; -use think\console\input\Definition; -use think\console\input\Option; - -abstract class Command -{ - - /** @var Console */ - private $console; - private $name; - private $processTitle; - private $aliases = []; - private $definition; - private $help; - private $description; - private $ignoreValidationErrors = false; - private $consoleDefinitionMerged = false; - private $consoleDefinitionMergedWithArgs = false; - private $synopsis = []; - private $usages = []; - - /** @var Input */ - protected $input; - - /** @var Output */ - protected $output; - - /** @var App */ - protected $app; - - /** - * 构造方法 - * @throws LogicException - * @api - */ - public function __construct() - { - $this->definition = new Definition(); - - $this->configure(); - - if (!$this->name) { - throw new LogicException(sprintf('The command defined in "%s" cannot have an empty name.', get_class($this))); - } - } - - /** - * 忽略验证错误 - */ - public function ignoreValidationErrors(): void - { - $this->ignoreValidationErrors = true; - } - - /** - * 设置控制台 - * @param Console $console - */ - public function setConsole(Console $console = null): void - { - $this->console = $console; - } - - /** - * 获取控制台 - * @return Console - * @api - */ - public function getConsole(): Console - { - return $this->console; - } - - /** - * 设置app - * @param App $app - */ - public function setApp(App $app) - { - $this->app = $app; - } - - /** - * 获取app - * @return App - */ - public function getApp() - { - return $this->app; - } - - /** - * 是否有效 - * @return bool - */ - public function isEnabled(): bool - { - return true; - } - - /** - * 配置指令 - */ - protected function configure() - { - } - - /** - * 执行指令 - * @param Input $input - * @param Output $output - * @return null|int - * @throws LogicException - * @see setCode() - */ - protected function execute(Input $input, Output $output) - { - return $this->app->invoke([$this, 'handle']); - } - - /** - * 用户验证 - * @param Input $input - * @param Output $output - */ - protected function interact(Input $input, Output $output) - { - } - - /** - * 初始化 - * @param Input $input An InputInterface instance - * @param Output $output An OutputInterface instance - */ - protected function initialize(Input $input, Output $output) - { - } - - /** - * 执行 - * @param Input $input - * @param Output $output - * @return int - * @throws Exception - * @see setCode() - * @see execute() - */ - public function run(Input $input, Output $output): int - { - $this->input = $input; - $this->output = $output; - - $this->getSynopsis(true); - $this->getSynopsis(false); - - $this->mergeConsoleDefinition(); - - try { - $input->bind($this->definition); - } catch (Exception $e) { - if (!$this->ignoreValidationErrors) { - throw $e; - } - } - - $this->initialize($input, $output); - - if (null !== $this->processTitle) { - if (function_exists('cli_set_process_title')) { - if (false === @cli_set_process_title($this->processTitle)) { - if ('Darwin' === PHP_OS) { - $output->writeln('Running "cli_get_process_title" as an unprivileged user is not supported on MacOS.'); - } else { - $error = error_get_last(); - trigger_error($error['message'], E_USER_WARNING); - } - } - } elseif (function_exists('setproctitle')) { - setproctitle($this->processTitle); - } elseif (Output::VERBOSITY_VERY_VERBOSE === $output->getVerbosity()) { - $output->writeln('Install the proctitle PECL to be able to change the process title.'); - } - } - - if ($input->isInteractive()) { - $this->interact($input, $output); - } - - $input->validate(); - - $statusCode = $this->execute($input, $output); - - return is_numeric($statusCode) ? (int) $statusCode : 0; - } - - /** - * 合并参数定义 - * @param bool $mergeArgs - */ - public function mergeConsoleDefinition(bool $mergeArgs = true) - { - if (null === $this->console - || (true === $this->consoleDefinitionMerged - && ($this->consoleDefinitionMergedWithArgs || !$mergeArgs)) - ) { - return; - } - - if ($mergeArgs) { - $currentArguments = $this->definition->getArguments(); - $this->definition->setArguments($this->console->getDefinition()->getArguments()); - $this->definition->addArguments($currentArguments); - } - - $this->definition->addOptions($this->console->getDefinition()->getOptions()); - - $this->consoleDefinitionMerged = true; - if ($mergeArgs) { - $this->consoleDefinitionMergedWithArgs = true; - } - } - - /** - * 设置参数定义 - * @param array|Definition $definition - * @return Command - * @api - */ - public function setDefinition($definition) - { - if ($definition instanceof Definition) { - $this->definition = $definition; - } else { - $this->definition->setDefinition($definition); - } - - $this->consoleDefinitionMerged = false; - - return $this; - } - - /** - * 获取参数定义 - * @return Definition - * @api - */ - public function getDefinition(): Definition - { - return $this->definition; - } - - /** - * 获取当前指令的参数定义 - * @return Definition - */ - public function getNativeDefinition(): Definition - { - return $this->getDefinition(); - } - - /** - * 添加参数 - * @param string $name 名称 - * @param int $mode 类型 - * @param string $description 描述 - * @param mixed $default 默认值 - * @return Command - */ - public function addArgument(string $name, int $mode = null, string $description = '', $default = null) - { - $this->definition->addArgument(new Argument($name, $mode, $description, $default)); - - return $this; - } - - /** - * 添加选项 - * @param string $name 选项名称 - * @param string $shortcut 别名 - * @param int $mode 类型 - * @param string $description 描述 - * @param mixed $default 默认值 - * @return Command - */ - public function addOption(string $name, string $shortcut = null, int $mode = null, string $description = '', $default = null) - { - $this->definition->addOption(new Option($name, $shortcut, $mode, $description, $default)); - - return $this; - } - - /** - * 设置指令名称 - * @param string $name - * @return Command - * @throws InvalidArgumentException - */ - public function setName(string $name) - { - $this->validateName($name); - - $this->name = $name; - - return $this; - } - - /** - * 设置进程名称 - * - * PHP 5.5+ or the proctitle PECL library is required - * - * @param string $title The process title - * - * @return $this - */ - public function setProcessTitle($title) - { - $this->processTitle = $title; - - return $this; - } - - /** - * 获取指令名称 - * @return string - */ - public function getName(): string - { - return $this->name ?: ''; - } - - /** - * 设置描述 - * @param string $description - * @return Command - */ - public function setDescription(string $description) - { - $this->description = $description; - - return $this; - } - - /** - * 获取描述 - * @return string - */ - public function getDescription(): string - { - return $this->description ?: ''; - } - - /** - * 设置帮助信息 - * @param string $help - * @return Command - */ - public function setHelp(string $help) - { - $this->help = $help; - - return $this; - } - - /** - * 获取帮助信息 - * @return string - */ - public function getHelp(): string - { - return $this->help ?: ''; - } - - /** - * 描述信息 - * @return string - */ - public function getProcessedHelp(): string - { - $name = $this->name; - - $placeholders = [ - '%command.name%', - '%command.full_name%', - ]; - $replacements = [ - $name, - $_SERVER['PHP_SELF'] . ' ' . $name, - ]; - - return str_replace($placeholders, $replacements, $this->getHelp()); - } - - /** - * 设置别名 - * @param string[] $aliases - * @return Command - * @throws InvalidArgumentException - */ - public function setAliases(iterable $aliases) - { - foreach ($aliases as $alias) { - $this->validateName($alias); - } - - $this->aliases = $aliases; - - return $this; - } - - /** - * 获取别名 - * @return array - */ - public function getAliases(): array - { - return $this->aliases; - } - - /** - * 获取简介 - * @param bool $short 是否简单的 - * @return string - */ - public function getSynopsis(bool $short = false): string - { - $key = $short ? 'short' : 'long'; - - if (!isset($this->synopsis[$key])) { - $this->synopsis[$key] = trim(sprintf('%s %s', $this->name, $this->definition->getSynopsis($short))); - } - - return $this->synopsis[$key]; - } - - /** - * 添加用法介绍 - * @param string $usage - * @return $this - */ - public function addUsage(string $usage) - { - if (0 !== strpos($usage, $this->name)) { - $usage = sprintf('%s %s', $this->name, $usage); - } - - $this->usages[] = $usage; - - return $this; - } - - /** - * 获取用法介绍 - * @return array - */ - public function getUsages(): array - { - return $this->usages; - } - - /** - * 验证指令名称 - * @param string $name - * @throws InvalidArgumentException - */ - private function validateName(string $name) - { - if (!preg_match('/^[^\:]++(\:[^\:]++)*$/', $name)) { - throw new InvalidArgumentException(sprintf('Command name "%s" is invalid.', $name)); - } - } - - /** - * 输出表格 - * @param Table $table - * @return string - */ - protected function table(Table $table): string - { - $content = $table->render(); - $this->output->writeln($content); - return $content; - } - -} diff --git a/vendor/topthink/framework/src/think/console/Input.php b/vendor/topthink/framework/src/think/console/Input.php deleted file mode 100644 index 9ae907758..000000000 --- a/vendor/topthink/framework/src/think/console/Input.php +++ /dev/null @@ -1,465 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\console; - -use think\console\input\Argument; -use think\console\input\Definition; -use think\console\input\Option; - -class Input -{ - - /** - * @var Definition - */ - protected $definition; - - /** - * @var Option[] - */ - protected $options = []; - - /** - * @var Argument[] - */ - protected $arguments = []; - - protected $interactive = true; - - private $tokens; - private $parsed; - - public function __construct($argv = null) - { - if (null === $argv) { - $argv = $_SERVER['argv']; - // 去除命令名 - array_shift($argv); - } - - $this->tokens = $argv; - - $this->definition = new Definition(); - } - - protected function setTokens(array $tokens) - { - $this->tokens = $tokens; - } - - /** - * 绑定实例 - * @param Definition $definition A InputDefinition instance - */ - public function bind(Definition $definition): void - { - $this->arguments = []; - $this->options = []; - $this->definition = $definition; - - $this->parse(); - } - - /** - * 解析参数 - */ - protected function parse(): void - { - $parseOptions = true; - $this->parsed = $this->tokens; - while (null !== $token = array_shift($this->parsed)) { - if ($parseOptions && '' == $token) { - $this->parseArgument($token); - } elseif ($parseOptions && '--' == $token) { - $parseOptions = false; - } elseif ($parseOptions && 0 === strpos($token, '--')) { - $this->parseLongOption($token); - } elseif ($parseOptions && '-' === $token[0] && '-' !== $token) { - $this->parseShortOption($token); - } else { - $this->parseArgument($token); - } - } - } - - /** - * 解析短选项 - * @param string $token 当前的指令. - */ - private function parseShortOption(string $token): void - { - $name = substr($token, 1); - - if (strlen($name) > 1) { - if ($this->definition->hasShortcut($name[0]) - && $this->definition->getOptionForShortcut($name[0])->acceptValue() - ) { - $this->addShortOption($name[0], substr($name, 1)); - } else { - $this->parseShortOptionSet($name); - } - } else { - $this->addShortOption($name, null); - } - } - - /** - * 解析短选项 - * @param string $name 当前指令 - * @throws \RuntimeException - */ - private function parseShortOptionSet(string $name): void - { - $len = strlen($name); - for ($i = 0; $i < $len; ++$i) { - if (!$this->definition->hasShortcut($name[$i])) { - throw new \RuntimeException(sprintf('The "-%s" option does not exist.', $name[$i])); - } - - $option = $this->definition->getOptionForShortcut($name[$i]); - if ($option->acceptValue()) { - $this->addLongOption($option->getName(), $i === $len - 1 ? null : substr($name, $i + 1)); - - break; - } else { - $this->addLongOption($option->getName(), null); - } - } - } - - /** - * 解析完整选项 - * @param string $token 当前指令 - */ - private function parseLongOption(string $token): void - { - $name = substr($token, 2); - - if (false !== $pos = strpos($name, '=')) { - $this->addLongOption(substr($name, 0, $pos), substr($name, $pos + 1)); - } else { - $this->addLongOption($name, null); - } - } - - /** - * 解析参数 - * @param string $token 当前指令 - * @throws \RuntimeException - */ - private function parseArgument(string $token): void - { - $c = count($this->arguments); - - if ($this->definition->hasArgument($c)) { - $arg = $this->definition->getArgument($c); - - $this->arguments[$arg->getName()] = $arg->isArray() ? [$token] : $token; - - } elseif ($this->definition->hasArgument($c - 1) && $this->definition->getArgument($c - 1)->isArray()) { - $arg = $this->definition->getArgument($c - 1); - - $this->arguments[$arg->getName()][] = $token; - } else { - throw new \RuntimeException('Too many arguments.'); - } - } - - /** - * 添加一个短选项的值 - * @param string $shortcut 短名称 - * @param mixed $value 值 - * @throws \RuntimeException - */ - private function addShortOption(string $shortcut, $value): void - { - if (!$this->definition->hasShortcut($shortcut)) { - throw new \RuntimeException(sprintf('The "-%s" option does not exist.', $shortcut)); - } - - $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); - } - - /** - * 添加一个完整选项的值 - * @param string $name 选项名 - * @param mixed $value 值 - * @throws \RuntimeException - */ - private function addLongOption(string $name, $value): void - { - if (!$this->definition->hasOption($name)) { - throw new \RuntimeException(sprintf('The "--%s" option does not exist.', $name)); - } - - $option = $this->definition->getOption($name); - - if (false === $value) { - $value = null; - } - - if (null !== $value && !$option->acceptValue()) { - throw new \RuntimeException(sprintf('The "--%s" option does not accept a value.', $name, $value)); - } - - if (null === $value && $option->acceptValue() && count($this->parsed)) { - $next = array_shift($this->parsed); - if (isset($next[0]) && '-' !== $next[0]) { - $value = $next; - } elseif (empty($next)) { - $value = ''; - } else { - array_unshift($this->parsed, $next); - } - } - - if (null === $value) { - if ($option->isValueRequired()) { - throw new \RuntimeException(sprintf('The "--%s" option requires a value.', $name)); - } - - if (!$option->isArray()) { - $value = $option->isValueOptional() ? $option->getDefault() : true; - } - } - - if ($option->isArray()) { - $this->options[$name][] = $value; - } else { - $this->options[$name] = $value; - } - } - - /** - * 获取第一个参数 - * @return string|null - */ - public function getFirstArgument() - { - foreach ($this->tokens as $token) { - if ($token && '-' === $token[0]) { - continue; - } - - return $token; - } - return; - } - - /** - * 检查原始参数是否包含某个值 - * @param string|array $values 需要检查的值 - * @return bool - */ - public function hasParameterOption($values): bool - { - $values = (array) $values; - - foreach ($this->tokens as $token) { - foreach ($values as $value) { - if ($token === $value || 0 === strpos($token, $value . '=')) { - return true; - } - } - } - - return false; - } - - /** - * 获取原始选项的值 - * @param string|array $values 需要检查的值 - * @param mixed $default 默认值 - * @return mixed The option value - */ - public function getParameterOption($values, $default = false) - { - $values = (array) $values; - $tokens = $this->tokens; - - while (0 < count($tokens)) { - $token = array_shift($tokens); - - foreach ($values as $value) { - if ($token === $value || 0 === strpos($token, $value . '=')) { - if (false !== $pos = strpos($token, '=')) { - return substr($token, $pos + 1); - } - - return array_shift($tokens); - } - } - } - - return $default; - } - - /** - * 验证输入 - * @throws \RuntimeException - */ - public function validate() - { - if (count($this->arguments) < $this->definition->getArgumentRequiredCount()) { - throw new \RuntimeException('Not enough arguments.'); - } - } - - /** - * 检查输入是否是交互的 - * @return bool - */ - public function isInteractive(): bool - { - return $this->interactive; - } - - /** - * 设置输入的交互 - * @param bool - */ - public function setInteractive(bool $interactive): void - { - $this->interactive = $interactive; - } - - /** - * 获取所有的参数 - * @return Argument[] - */ - public function getArguments(): array - { - return array_merge($this->definition->getArgumentDefaults(), $this->arguments); - } - - /** - * 根据名称获取参数 - * @param string $name 参数名 - * @return mixed - * @throws \InvalidArgumentException - */ - public function getArgument(string $name) - { - if (!$this->definition->hasArgument($name)) { - throw new \InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); - } - - return $this->arguments[$name] ?? $this->definition->getArgument($name) - ->getDefault(); - } - - /** - * 设置参数的值 - * @param string $name 参数名 - * @param string $value 值 - * @throws \InvalidArgumentException - */ - public function setArgument(string $name, $value) - { - if (!$this->definition->hasArgument($name)) { - throw new \InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); - } - - $this->arguments[$name] = $value; - } - - /** - * 检查是否存在某个参数 - * @param string|int $name 参数名或位置 - * @return bool - */ - public function hasArgument($name): bool - { - return $this->definition->hasArgument($name); - } - - /** - * 获取所有的选项 - * @return Option[] - */ - public function getOptions(): array - { - return array_merge($this->definition->getOptionDefaults(), $this->options); - } - - /** - * 获取选项值 - * @param string $name 选项名称 - * @return mixed - * @throws \InvalidArgumentException - */ - public function getOption(string $name) - { - if (!$this->definition->hasOption($name)) { - throw new \InvalidArgumentException(sprintf('The "%s" option does not exist.', $name)); - } - - return $this->options[$name] ?? $this->definition->getOption($name)->getDefault(); - } - - /** - * 设置选项值 - * @param string $name 选项名 - * @param string|bool $value 值 - * @throws \InvalidArgumentException - */ - public function setOption(string $name, $value): void - { - if (!$this->definition->hasOption($name)) { - throw new \InvalidArgumentException(sprintf('The "%s" option does not exist.', $name)); - } - - $this->options[$name] = $value; - } - - /** - * 是否有某个选项 - * @param string $name 选项名 - * @return bool - */ - public function hasOption(string $name): bool - { - return $this->definition->hasOption($name) && isset($this->options[$name]); - } - - /** - * 转义指令 - * @param string $token - * @return string - */ - public function escapeToken(string $token): string - { - return preg_match('{^[\w-]+$}', $token) ? $token : escapeshellarg($token); - } - - /** - * 返回传递给命令的参数的字符串 - * @return string - */ - public function __toString() - { - $tokens = array_map(function ($token) { - if (preg_match('{^(-[^=]+=)(.+)}', $token, $match)) { - return $match[1] . $this->escapeToken($match[2]); - } - - if ($token && '-' !== $token[0]) { - return $this->escapeToken($token); - } - - return $token; - }, $this->tokens); - - return implode(' ', $tokens); - } -} diff --git a/vendor/topthink/framework/src/think/console/LICENSE b/vendor/topthink/framework/src/think/console/LICENSE deleted file mode 100644 index 0abe056e1..000000000 --- a/vendor/topthink/framework/src/think/console/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2004-2016 Fabien Potencier - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/vendor/topthink/framework/src/think/console/Output.php b/vendor/topthink/framework/src/think/console/Output.php deleted file mode 100644 index 13837a7dc..000000000 --- a/vendor/topthink/framework/src/think/console/Output.php +++ /dev/null @@ -1,224 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\console; - -use Exception; -use think\console\output\Ask; -use think\console\output\Descriptor; -use think\console\output\driver\Buffer; -use think\console\output\driver\Console; -use think\console\output\driver\Nothing; -use think\console\output\Question; -use think\console\output\question\Choice; -use think\console\output\question\Confirmation; -use Throwable; - -/** - * Class Output - * @package think\console - * - * @see \think\console\output\driver\Console::setDecorated - * @method void setDecorated($decorated) - * - * @see \think\console\output\driver\Buffer::fetch - * @method string fetch() - * - * @method void info($message) - * @method void error($message) - * @method void comment($message) - * @method void warning($message) - * @method void highlight($message) - * @method void question($message) - */ -class Output -{ - const VERBOSITY_QUIET = 0; - const VERBOSITY_NORMAL = 1; - const VERBOSITY_VERBOSE = 2; - const VERBOSITY_VERY_VERBOSE = 3; - const VERBOSITY_DEBUG = 4; - - const OUTPUT_NORMAL = 0; - const OUTPUT_RAW = 1; - const OUTPUT_PLAIN = 2; - - private $verbosity = self::VERBOSITY_NORMAL; - - /** @var Buffer|Console|Nothing */ - private $handle = null; - - protected $styles = [ - 'info', - 'error', - 'comment', - 'question', - 'highlight', - 'warning', - ]; - - public function __construct($driver = 'console') - { - $class = '\\think\\console\\output\\driver\\' . ucwords($driver); - - $this->handle = new $class($this); - } - - public function ask(Input $input, $question, $default = null, $validator = null) - { - $question = new Question($question, $default); - $question->setValidator($validator); - - return $this->askQuestion($input, $question); - } - - public function askHidden(Input $input, $question, $validator = null) - { - $question = new Question($question); - - $question->setHidden(true); - $question->setValidator($validator); - - return $this->askQuestion($input, $question); - } - - public function confirm(Input $input, $question, $default = true) - { - return $this->askQuestion($input, new Confirmation($question, $default)); - } - - /** - * {@inheritdoc} - */ - public function choice(Input $input, $question, array $choices, $default = null) - { - if (null !== $default) { - $values = array_flip($choices); - $default = $values[$default]; - } - - return $this->askQuestion($input, new Choice($question, $choices, $default)); - } - - protected function askQuestion(Input $input, Question $question) - { - $ask = new Ask($input, $this, $question); - $answer = $ask->run(); - - if ($input->isInteractive()) { - $this->newLine(); - } - - return $answer; - } - - protected function block(string $style, string $message): void - { - $this->writeln("<{$style}>{$message}"); - } - - /** - * 输出空行 - * @param int $count - */ - public function newLine(int $count = 1): void - { - $this->write(str_repeat(PHP_EOL, $count)); - } - - /** - * 输出信息并换行 - * @param string $messages - * @param int $type - */ - public function writeln(string $messages, int $type = 0): void - { - $this->write($messages, true, $type); - } - - /** - * 输出信息 - * @param string $messages - * @param bool $newline - * @param int $type - */ - public function write(string $messages, bool $newline = false, int $type = 0): void - { - $this->handle->write($messages, $newline, $type); - } - - public function renderException(Throwable $e): void - { - $this->handle->renderException($e); - } - - /** - * {@inheritdoc} - */ - public function setVerbosity(int $level) - { - $this->verbosity = $level; - } - - /** - * {@inheritdoc} - */ - public function getVerbosity(): int - { - return $this->verbosity; - } - - public function isQuiet(): bool - { - return self::VERBOSITY_QUIET === $this->verbosity; - } - - public function isVerbose(): bool - { - return self::VERBOSITY_VERBOSE <= $this->verbosity; - } - - public function isVeryVerbose(): bool - { - return self::VERBOSITY_VERY_VERBOSE <= $this->verbosity; - } - - public function isDebug(): bool - { - return self::VERBOSITY_DEBUG <= $this->verbosity; - } - - public function describe($object, array $options = []): void - { - $descriptor = new Descriptor(); - $options = array_merge([ - 'raw_text' => false, - ], $options); - - $descriptor->describe($this, $object, $options); - } - - public function __call($method, $args) - { - if (in_array($method, $this->styles)) { - array_unshift($args, $method); - return call_user_func_array([$this, 'block'], $args); - } - - if ($this->handle && method_exists($this->handle, $method)) { - return call_user_func_array([$this->handle, $method], $args); - } else { - throw new Exception('method not exists:' . __CLASS__ . '->' . $method); - } - } - -} diff --git a/vendor/topthink/framework/src/think/console/Table.php b/vendor/topthink/framework/src/think/console/Table.php deleted file mode 100644 index 5a861d7fe..000000000 --- a/vendor/topthink/framework/src/think/console/Table.php +++ /dev/null @@ -1,300 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\console; - -class Table -{ - const ALIGN_LEFT = 1; - const ALIGN_RIGHT = 0; - const ALIGN_CENTER = 2; - - /** - * 头信息数据 - * @var array - */ - protected $header = []; - - /** - * 头部对齐方式 默认1 ALGIN_LEFT 0 ALIGN_RIGHT 2 ALIGN_CENTER - * @var int - */ - protected $headerAlign = 1; - - /** - * 表格数据(二维数组) - * @var array - */ - protected $rows = []; - - /** - * 单元格对齐方式 默认1 ALGIN_LEFT 0 ALIGN_RIGHT 2 ALIGN_CENTER - * @var int - */ - protected $cellAlign = 1; - - /** - * 单元格宽度信息 - * @var array - */ - protected $colWidth = []; - - /** - * 表格输出样式 - * @var string - */ - protected $style = 'default'; - - /** - * 表格样式定义 - * @var array - */ - protected $format = [ - 'compact' => [], - 'default' => [ - 'top' => ['+', '-', '+', '+'], - 'cell' => ['|', ' ', '|', '|'], - 'middle' => ['+', '-', '+', '+'], - 'bottom' => ['+', '-', '+', '+'], - 'cross-top' => ['+', '-', '-', '+'], - 'cross-bottom' => ['+', '-', '-', '+'], - ], - 'markdown' => [ - 'top' => [' ', ' ', ' ', ' '], - 'cell' => ['|', ' ', '|', '|'], - 'middle' => ['|', '-', '|', '|'], - 'bottom' => [' ', ' ', ' ', ' '], - 'cross-top' => ['|', ' ', ' ', '|'], - 'cross-bottom' => ['|', ' ', ' ', '|'], - ], - 'borderless' => [ - 'top' => ['=', '=', ' ', '='], - 'cell' => [' ', ' ', ' ', ' '], - 'middle' => ['=', '=', ' ', '='], - 'bottom' => ['=', '=', ' ', '='], - 'cross-top' => ['=', '=', ' ', '='], - 'cross-bottom' => ['=', '=', ' ', '='], - ], - 'box' => [ - 'top' => ['┌', '─', '┬', '┐'], - 'cell' => ['│', ' ', '│', '│'], - 'middle' => ['├', '─', '┼', '┤'], - 'bottom' => ['└', '─', '┴', '┘'], - 'cross-top' => ['├', '─', '┴', '┤'], - 'cross-bottom' => ['├', '─', '┬', '┤'], - ], - 'box-double' => [ - 'top' => ['╔', '═', '╤', '╗'], - 'cell' => ['║', ' ', '│', '║'], - 'middle' => ['╠', '─', '╪', '╣'], - 'bottom' => ['╚', '═', '╧', '╝'], - 'cross-top' => ['╠', '═', '╧', '╣'], - 'cross-bottom' => ['╠', '═', '╤', '╣'], - ], - ]; - - /** - * 设置表格头信息 以及对齐方式 - * @access public - * @param array $header 要输出的Header信息 - * @param int $align 对齐方式 默认1 ALGIN_LEFT 0 ALIGN_RIGHT 2 ALIGN_CENTER - * @return void - */ - public function setHeader(array $header, int $align = 1): void - { - $this->header = $header; - $this->headerAlign = $align; - - $this->checkColWidth($header); - } - - /** - * 设置输出表格数据 及对齐方式 - * @access public - * @param array $rows 要输出的表格数据(二维数组) - * @param int $align 对齐方式 默认1 ALGIN_LEFT 0 ALIGN_RIGHT 2 ALIGN_CENTER - * @return void - */ - public function setRows(array $rows, int $align = 1): void - { - $this->rows = $rows; - $this->cellAlign = $align; - - foreach ($rows as $row) { - $this->checkColWidth($row); - } - } - - /** - * 设置全局单元格对齐方式 - * @param int $align 对齐方式 默认1 ALGIN_LEFT 0 ALIGN_RIGHT 2 ALIGN_CENTER - * @return $this - */ - public function setCellAlign(int $align = 1) - { - $this->cellAlign = $align; - return $this; - } - - /** - * 检查列数据的显示宽度 - * @access public - * @param mixed $row 行数据 - * @return void - */ - protected function checkColWidth($row): void - { - if (is_array($row)) { - foreach ($row as $key => $cell) { - $width = mb_strwidth((string) $cell); - if (!isset($this->colWidth[$key]) || $width > $this->colWidth[$key]) { - $this->colWidth[$key] = $width; - } - } - } - } - - /** - * 增加一行表格数据 - * @access public - * @param mixed $row 行数据 - * @param bool $first 是否在开头插入 - * @return void - */ - public function addRow($row, bool $first = false): void - { - if ($first) { - array_unshift($this->rows, $row); - } else { - $this->rows[] = $row; - } - - $this->checkColWidth($row); - } - - /** - * 设置输出表格的样式 - * @access public - * @param string $style 样式名 - * @return void - */ - public function setStyle(string $style): void - { - $this->style = isset($this->format[$style]) ? $style : 'default'; - } - - /** - * 输出分隔行 - * @access public - * @param string $pos 位置 - * @return string - */ - protected function renderSeparator(string $pos): string - { - $style = $this->getStyle($pos); - $array = []; - - foreach ($this->colWidth as $width) { - $array[] = str_repeat($style[1], $width + 2); - } - - return $style[0] . implode($style[2], $array) . $style[3] . PHP_EOL; - } - - /** - * 输出表格头部 - * @access public - * @return string - */ - protected function renderHeader(): string - { - $style = $this->getStyle('cell'); - $content = $this->renderSeparator('top'); - - foreach ($this->header as $key => $header) { - $array[] = ' ' . str_pad($header, $this->colWidth[$key], $style[1], $this->headerAlign); - } - - if (!empty($array)) { - $content .= $style[0] . implode(' ' . $style[2], $array) . ' ' . $style[3] . PHP_EOL; - - if (!empty($this->rows)) { - $content .= $this->renderSeparator('middle'); - } - } - - return $content; - } - - protected function getStyle(string $style): array - { - if ($this->format[$this->style]) { - $style = $this->format[$this->style][$style]; - } else { - $style = [' ', ' ', ' ', ' ']; - } - - return $style; - } - - /** - * 输出表格 - * @access public - * @param array $dataList 表格数据 - * @return string - */ - public function render(array $dataList = []): string - { - if (!empty($dataList)) { - $this->setRows($dataList); - } - - // 输出头部 - $content = $this->renderHeader(); - $style = $this->getStyle('cell'); - - if (!empty($this->rows)) { - foreach ($this->rows as $row) { - if (is_string($row) && '-' === $row) { - $content .= $this->renderSeparator('middle'); - } elseif (is_scalar($row)) { - $content .= $this->renderSeparator('cross-top'); - $width = 3 * (count($this->colWidth) - 1) + array_reduce($this->colWidth, function ($a, $b) { - return $a + $b; - }); - $array = str_pad($row, $width); - - $content .= $style[0] . ' ' . $array . ' ' . $style[3] . PHP_EOL; - $content .= $this->renderSeparator('cross-bottom'); - } else { - $array = []; - - foreach ($row as $key => $val) { - $width = $this->colWidth[$key]; - // form https://github.com/symfony/console/blob/20c9821c8d1c2189f287dcee709b2f86353ea08f/Helper/Table.php#L467 - // str_pad won't work properly with multi-byte strings, we need to fix the padding - if (false !== $encoding = mb_detect_encoding((string) $val, null, true)) { - $width += strlen((string) $val) - mb_strwidth((string) $val, $encoding); - } - $array[] = ' ' . str_pad((string) $val, $width, ' ', $this->cellAlign); - } - - $content .= $style[0] . implode(' ' . $style[2], $array) . ' ' . $style[3] . PHP_EOL; - } - } - } - - $content .= $this->renderSeparator('bottom'); - - return $content; - } -} diff --git a/vendor/topthink/framework/src/think/console/bin/README.md b/vendor/topthink/framework/src/think/console/bin/README.md deleted file mode 100644 index 9acc52fba..000000000 --- a/vendor/topthink/framework/src/think/console/bin/README.md +++ /dev/null @@ -1 +0,0 @@ -console 工具使用 hiddeninput.exe 在 windows 上隐藏密码输入,该二进制文件由第三方提供,相关源码和其他细节可以在 [Hidden Input](https://github.com/Seldaek/hidden-input) 找到。 diff --git a/vendor/topthink/framework/src/think/console/bin/hiddeninput.exe b/vendor/topthink/framework/src/think/console/bin/hiddeninput.exe deleted file mode 100644 index c8cf65e8d819e6e525121cf6b21f1c2429746038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9216 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 J0sQ~1{4brj`U(I5 diff --git a/vendor/topthink/framework/src/think/console/command/Clear.php b/vendor/topthink/framework/src/think/console/command/Clear.php deleted file mode 100644 index 81878c598..000000000 --- a/vendor/topthink/framework/src/think/console/command/Clear.php +++ /dev/null @@ -1,64 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think\console\command; - -use think\console\Command; -use think\console\Input; -use think\console\input\Option; -use think\console\Output; - -class Clear extends Command -{ - protected function configure() - { - // 指令配置 - $this->setName('clear') - ->addOption('path', 'd', Option::VALUE_OPTIONAL, 'path to clear', null) - ->addOption('cache', 'c', Option::VALUE_NONE, 'clear cache file') - ->addOption('log', 'l', Option::VALUE_NONE, 'clear log file') - ->addOption('dir', 'r', Option::VALUE_NONE, 'clear empty dir') - ->setDescription('Clear runtime file'); - } - - protected function execute(Input $input, Output $output) - { - $runtimePath = $this->app->getRootPath() . 'runtime' . DIRECTORY_SEPARATOR; - - if ($input->getOption('cache')) { - $path = $runtimePath . 'cache'; - } elseif ($input->getOption('log')) { - $path = $runtimePath . 'log'; - } else { - $path = $input->getOption('path') ?: $runtimePath; - } - - $rmdir = $input->getOption('dir') ? true : false; - $this->clear(rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR, $rmdir); - - $output->writeln("Clear Successed"); - } - - protected function clear(string $path, bool $rmdir): void - { - $files = is_dir($path) ? scandir($path) : []; - - foreach ($files as $file) { - if ('.' != $file && '..' != $file && is_dir($path . $file)) { - array_map('unlink', glob($path . $file . DIRECTORY_SEPARATOR . '*.*')); - if ($rmdir) { - rmdir($path . $file); - } - } elseif ('.gitignore' != $file && is_file($path . $file)) { - unlink($path . $file); - } - } - } -} diff --git a/vendor/topthink/framework/src/think/console/command/Help.php b/vendor/topthink/framework/src/think/console/command/Help.php deleted file mode 100644 index d3833b8e2..000000000 --- a/vendor/topthink/framework/src/think/console/command/Help.php +++ /dev/null @@ -1,69 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\command; - -use think\console\Command; -use think\console\Input; -use think\console\input\Argument as InputArgument; -use think\console\input\Option as InputOption; -use think\console\Output; - -class Help extends Command -{ - - private $command; - - /** - * {@inheritdoc} - */ - protected function configure() - { - $this->ignoreValidationErrors(); - - $this->setName('help')->setDefinition([ - new InputArgument('command_name', InputArgument::OPTIONAL, 'The command name', 'help'), - new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command help'), - ])->setDescription('Displays help for a command')->setHelp(<<%command.name% command displays help for a given command: - - php %command.full_name% list - -To display the list of available commands, please use the list command. -EOF - ); - } - - /** - * Sets the command. - * @param Command $command The command to set - */ - public function setCommand(Command $command): void - { - $this->command = $command; - } - - /** - * {@inheritdoc} - */ - protected function execute(Input $input, Output $output) - { - if (null === $this->command) { - $this->command = $this->getConsole()->find($input->getArgument('command_name')); - } - - $output->describe($this->command, [ - 'raw_text' => $input->getOption('raw'), - ]); - - $this->command = null; - } -} diff --git a/vendor/topthink/framework/src/think/console/command/Lists.php b/vendor/topthink/framework/src/think/console/command/Lists.php deleted file mode 100644 index 278c2bd46..000000000 --- a/vendor/topthink/framework/src/think/console/command/Lists.php +++ /dev/null @@ -1,73 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\command; - -use think\console\Command; -use think\console\Input; -use think\console\input\Argument as InputArgument; -use think\console\input\Definition as InputDefinition; -use think\console\input\Option as InputOption; -use think\console\Output; - -class Lists extends Command -{ - /** - * {@inheritdoc} - */ - protected function configure() - { - $this->setName('list')->setDefinition($this->createDefinition())->setDescription('Lists commands')->setHelp(<<%command.name% command lists all commands: - - php %command.full_name% - -You can also display the commands for a specific namespace: - - php %command.full_name% test - -It's also possible to get raw list of commands (useful for embedding command runner): - - php %command.full_name% --raw -EOF - ); - } - - /** - * {@inheritdoc} - */ - public function getNativeDefinition(): InputDefinition - { - return $this->createDefinition(); - } - - /** - * {@inheritdoc} - */ - protected function execute(Input $input, Output $output) - { - $output->describe($this->getConsole(), [ - 'raw_text' => $input->getOption('raw'), - 'namespace' => $input->getArgument('namespace'), - ]); - } - - /** - * {@inheritdoc} - */ - private function createDefinition(): InputDefinition - { - return new InputDefinition([ - new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name'), - new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command list'), - ]); - } -} diff --git a/vendor/topthink/framework/src/think/console/command/Make.php b/vendor/topthink/framework/src/think/console/command/Make.php deleted file mode 100644 index c355a92f2..000000000 --- a/vendor/topthink/framework/src/think/console/command/Make.php +++ /dev/null @@ -1,99 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\command; - -use think\console\Command; -use think\console\Input; -use think\console\input\Argument; -use think\console\Output; - -abstract class Make extends Command -{ - protected $type; - - abstract protected function getStub(); - - protected function configure() - { - $this->addArgument('name', Argument::REQUIRED, "The name of the class"); - } - - protected function execute(Input $input, Output $output) - { - $name = trim($input->getArgument('name')); - - $classname = $this->getClassName($name); - - $pathname = $this->getPathName($classname); - - if (is_file($pathname)) { - $output->writeln('' . $this->type . ':' . $classname . ' already exists!'); - return false; - } - - if (!is_dir(dirname($pathname))) { - mkdir(dirname($pathname), 0755, true); - } - - file_put_contents($pathname, $this->buildClass($classname)); - - $output->writeln('' . $this->type . ':' . $classname . ' created successfully.'); - } - - protected function buildClass(string $name) - { - $stub = file_get_contents($this->getStub()); - - $namespace = trim(implode('\\', array_slice(explode('\\', $name), 0, -1)), '\\'); - - $class = str_replace($namespace . '\\', '', $name); - - return str_replace(['{%className%}', '{%actionSuffix%}', '{%namespace%}', '{%app_namespace%}'], [ - $class, - $this->app->config->get('route.action_suffix'), - $namespace, - $this->app->getNamespace(), - ], $stub); - } - - protected function getPathName(string $name): string - { - $name = str_replace('app\\', '', $name); - - return $this->app->getBasePath() . ltrim(str_replace('\\', '/', $name), '/') . '.php'; - } - - protected function getClassName(string $name): string - { - if (strpos($name, '\\') !== false) { - return $name; - } - - if (strpos($name, '@')) { - list($app, $name) = explode('@', $name); - } else { - $app = ''; - } - - if (strpos($name, '/') !== false) { - $name = str_replace('/', '\\', $name); - } - - return $this->getNamespace($app) . '\\' . $name; - } - - protected function getNamespace(string $app): string - { - return 'app' . ($app ? '\\' . $app : ''); - } - -} diff --git a/vendor/topthink/framework/src/think/console/command/RouteList.php b/vendor/topthink/framework/src/think/console/command/RouteList.php deleted file mode 100644 index ed579b856..000000000 --- a/vendor/topthink/framework/src/think/console/command/RouteList.php +++ /dev/null @@ -1,129 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think\console\command; - -use think\console\Command; -use think\console\Input; -use think\console\input\Argument; -use think\console\input\Option; -use think\console\Output; -use think\console\Table; -use think\event\RouteLoaded; - -class RouteList extends Command -{ - protected $sortBy = [ - 'rule' => 0, - 'route' => 1, - 'method' => 2, - 'name' => 3, - 'domain' => 4, - ]; - - protected function configure() - { - $this->setName('route:list') - ->addArgument('dir', Argument::OPTIONAL, 'dir name .') - ->addArgument('style', Argument::OPTIONAL, "the style of the table.", 'default') - ->addOption('sort', 's', Option::VALUE_OPTIONAL, 'order by rule name.', 0) - ->addOption('more', 'm', Option::VALUE_NONE, 'show route options.') - ->setDescription('show route list.'); - } - - protected function execute(Input $input, Output $output) - { - $dir = $input->getArgument('dir') ?: ''; - - $filename = $this->app->getRootPath() . 'runtime' . DIRECTORY_SEPARATOR . ($dir ? $dir . DIRECTORY_SEPARATOR : '') . 'route_list.php'; - - if (is_file($filename)) { - unlink($filename); - } elseif (!is_dir(dirname($filename))) { - mkdir(dirname($filename), 0755); - } - - $content = $this->getRouteList($dir); - file_put_contents($filename, 'Route List' . PHP_EOL . $content); - } - - protected function getRouteList(string $dir = null): string - { - $this->app->route->setTestMode(true); - $this->app->route->clear(); - - if ($dir) { - $path = $this->app->getRootPath() . 'route' . DIRECTORY_SEPARATOR . $dir . DIRECTORY_SEPARATOR; - } else { - $path = $this->app->getRootPath() . 'route' . DIRECTORY_SEPARATOR; - } - - $files = is_dir($path) ? scandir($path) : []; - - foreach ($files as $file) { - if (strpos($file, '.php')) { - include $path . $file; - } - } - - //触发路由载入完成事件 - $this->app->event->trigger(RouteLoaded::class); - - $table = new Table(); - - if ($this->input->hasOption('more')) { - $header = ['Rule', 'Route', 'Method', 'Name', 'Domain', 'Option', 'Pattern']; - } else { - $header = ['Rule', 'Route', 'Method', 'Name']; - } - - $table->setHeader($header); - - $routeList = $this->app->route->getRuleList(); - $rows = []; - - foreach ($routeList as $item) { - $item['route'] = $item['route'] instanceof \Closure ? '' : $item['route']; - - if ($this->input->hasOption('more')) { - $item = [$item['rule'], $item['route'], $item['method'], $item['name'], $item['domain'], json_encode($item['option']), json_encode($item['pattern'])]; - } else { - $item = [$item['rule'], $item['route'], $item['method'], $item['name']]; - } - - $rows[] = $item; - } - - if ($this->input->getOption('sort')) { - $sort = strtolower($this->input->getOption('sort')); - - if (isset($this->sortBy[$sort])) { - $sort = $this->sortBy[$sort]; - } - - uasort($rows, function ($a, $b) use ($sort) { - $itemA = $a[$sort] ?? null; - $itemB = $b[$sort] ?? null; - - return strcasecmp($itemA, $itemB); - }); - } - - $table->setRows($rows); - - if ($this->input->getArgument('style')) { - $style = $this->input->getArgument('style'); - $table->setStyle($style); - } - - return $this->table($table); - } - -} diff --git a/vendor/topthink/framework/src/think/console/command/RunServer.php b/vendor/topthink/framework/src/think/console/command/RunServer.php deleted file mode 100644 index 82d2744b9..000000000 --- a/vendor/topthink/framework/src/think/console/command/RunServer.php +++ /dev/null @@ -1,57 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\console\command; - -use think\console\Command; -use think\console\Input; -use think\console\input\Option; -use think\console\Output; - -class RunServer extends Command -{ - public function configure() - { - $this->setName('run') - ->addOption('host', 'H', Option::VALUE_OPTIONAL, - 'The host to server the application on', '0.0.0.0') - ->addOption('port', 'p', Option::VALUE_OPTIONAL, - 'The port to server the application on', 8000) - ->addOption('root', 'r', Option::VALUE_OPTIONAL, - 'The document root of the application', '') - ->setDescription('PHP Built-in Server for ThinkPHP'); - } - - public function execute(Input $input, Output $output) - { - $host = $input->getOption('host'); - $port = $input->getOption('port'); - $root = $input->getOption('root'); - if (empty($root)) { - $root = $this->app->getRootPath() . 'public'; - } - - $command = sprintf( - 'php -S %s:%d -t %s %s', - $host, - $port, - escapeshellarg($root), - escapeshellarg($root . DIRECTORY_SEPARATOR . 'router.php') - ); - - $output->writeln(sprintf('ThinkPHP Development server is started On ', '0.0.0.0' == $host ? '127.0.0.1' : $host, $port)); - $output->writeln(sprintf('You can exit with `CTRL-C`')); - $output->writeln(sprintf('Document root is: %s', $root)); - passthru($command); - } - -} diff --git a/vendor/topthink/framework/src/think/console/command/ServiceDiscover.php b/vendor/topthink/framework/src/think/console/command/ServiceDiscover.php deleted file mode 100644 index 3aae1db57..000000000 --- a/vendor/topthink/framework/src/think/console/command/ServiceDiscover.php +++ /dev/null @@ -1,48 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\console\command; - -use think\console\Command; -use think\console\Input; -use think\console\Output; - -class ServiceDiscover extends Command -{ - public function configure() - { - $this->setName('service:discover') - ->setDescription('Discover Services for ThinkPHP'); - } - - public function execute(Input $input, Output $output) - { - if (is_file($path = $this->app->getRootPath() . 'vendor/composer/installed.json')) { - $packages = json_decode(@file_get_contents($path), true); - - $services = []; - foreach ($packages as $package) { - if (!empty($package['extra']['think']['services'])) { - $services = array_merge($services, (array) $package['extra']['think']['services']); - } - } - - $header = '// This file is automatically generated at:' . date('Y-m-d H:i:s') . PHP_EOL . 'declare (strict_types = 1);' . PHP_EOL; - - $content = 'app->getRootPath() . 'vendor/services.php', $content); - - $output->writeln('Succeed!'); - } - } -} diff --git a/vendor/topthink/framework/src/think/console/command/VendorPublish.php b/vendor/topthink/framework/src/think/console/command/VendorPublish.php deleted file mode 100644 index 7b4376216..000000000 --- a/vendor/topthink/framework/src/think/console/command/VendorPublish.php +++ /dev/null @@ -1,66 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\console\command; - -use think\console\Command; -use think\console\input\Option; - -class VendorPublish extends Command -{ - public function configure() - { - $this->setName('vendor:publish') - ->addOption('force', 'f', Option::VALUE_NONE, 'Overwrite any existing files') - ->setDescription('Publish any publishable assets from vendor packages'); - } - - public function handle() - { - - $force = $this->input->getOption('force'); - - if (is_file($path = $this->app->getRootPath() . 'vendor/composer/installed.json')) { - $packages = json_decode(@file_get_contents($path), true); - - foreach ($packages as $package) { - //配置 - $configDir = $this->app->getConfigPath(); - - if (!empty($package['extra']['think']['config'])) { - - $installPath = $this->app->getRootPath() . 'vendor/' . $package['name'] . DIRECTORY_SEPARATOR; - - foreach ((array) $package['extra']['think']['config'] as $name => $file) { - - $target = $configDir . $name . '.php'; - $source = $installPath . $file; - - if (is_file($target) && !$force) { - $this->output->info("File {$target} exist!"); - continue; - } - - if (!is_file($source)) { - $this->output->info("File {$source} not exist!"); - continue; - } - - copy($source, $target); - } - } - } - - $this->output->writeln('Succeed!'); - } - } -} diff --git a/vendor/topthink/framework/src/think/console/command/Version.php b/vendor/topthink/framework/src/think/console/command/Version.php deleted file mode 100644 index beb49d2c6..000000000 --- a/vendor/topthink/framework/src/think/console/command/Version.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\console\command; - -use think\console\Command; -use think\console\Input; -use think\console\Output; - -class Version extends Command -{ - protected function configure() - { - // 指令配置 - $this->setName('version') - ->setDescription('show thinkphp framework version'); - } - - protected function execute(Input $input, Output $output) - { - $output->writeln('v' . $this->app->version()); - } - -} diff --git a/vendor/topthink/framework/src/think/console/command/make/Command.php b/vendor/topthink/framework/src/think/console/command/make/Command.php deleted file mode 100644 index 88e665a56..000000000 --- a/vendor/topthink/framework/src/think/console/command/make/Command.php +++ /dev/null @@ -1,55 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\command\make; - -use think\console\command\Make; -use think\console\input\Argument; - -class Command extends Make -{ - protected $type = "Command"; - - protected function configure() - { - parent::configure(); - $this->setName('make:command') - ->addArgument('commandName', Argument::OPTIONAL, "The name of the command") - ->setDescription('Create a new command class'); - } - - protected function buildClass(string $name): string - { - $commandName = $this->input->getArgument('commandName') ?: strtolower(basename($name)); - $namespace = trim(implode('\\', array_slice(explode('\\', $name), 0, -1)), '\\'); - - $class = str_replace($namespace . '\\', '', $name); - $stub = file_get_contents($this->getStub()); - - return str_replace(['{%commandName%}', '{%className%}', '{%namespace%}', '{%app_namespace%}'], [ - $commandName, - $class, - $namespace, - $this->app->getNamespace(), - ], $stub); - } - - protected function getStub(): string - { - return __DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . 'command.stub'; - } - - protected function getNamespace(string $app): string - { - return parent::getNamespace($app) . '\\command'; - } - -} diff --git a/vendor/topthink/framework/src/think/console/command/make/Controller.php b/vendor/topthink/framework/src/think/console/command/make/Controller.php deleted file mode 100644 index 582cffbb6..000000000 --- a/vendor/topthink/framework/src/think/console/command/make/Controller.php +++ /dev/null @@ -1,56 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\command\make; - -use think\console\command\Make; -use think\console\input\Option; - -class Controller extends Make -{ - - protected $type = "Controller"; - - protected function configure() - { - parent::configure(); - $this->setName('make:controller') - ->addOption('api', null, Option::VALUE_NONE, 'Generate an api controller class.') - ->addOption('plain', null, Option::VALUE_NONE, 'Generate an empty controller class.') - ->setDescription('Create a new resource controller class'); - } - - protected function getStub(): string - { - $stubPath = __DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR; - - if ($this->input->getOption('api')) { - return $stubPath . 'controller.api.stub'; - } - - if ($this->input->getOption('plain')) { - return $stubPath . 'controller.plain.stub'; - } - - return $stubPath . 'controller.stub'; - } - - protected function getClassName(string $name): string - { - return parent::getClassName($name) . ($this->app->config->get('route.controller_suffix') ? 'Controller' : ''); - } - - protected function getNamespace(string $app): string - { - return parent::getNamespace($app) . '\\controller'; - } - -} diff --git a/vendor/topthink/framework/src/think/console/command/make/Event.php b/vendor/topthink/framework/src/think/console/command/make/Event.php deleted file mode 100644 index a4676d8f6..000000000 --- a/vendor/topthink/framework/src/think/console/command/make/Event.php +++ /dev/null @@ -1,35 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think\console\command\make; - -use think\console\command\Make; - -class Event extends Make -{ - protected $type = "Event"; - - protected function configure() - { - parent::configure(); - $this->setName('make:event') - ->setDescription('Create a new event class'); - } - - protected function getStub(): string - { - return __DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . 'event.stub'; - } - - protected function getNamespace(string $app): string - { - return parent::getNamespace($app) . '\\event'; - } -} diff --git a/vendor/topthink/framework/src/think/console/command/make/Listener.php b/vendor/topthink/framework/src/think/console/command/make/Listener.php deleted file mode 100644 index bb2966835..000000000 --- a/vendor/topthink/framework/src/think/console/command/make/Listener.php +++ /dev/null @@ -1,35 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think\console\command\make; - -use think\console\command\Make; - -class Listener extends Make -{ - protected $type = "Listener"; - - protected function configure() - { - parent::configure(); - $this->setName('make:listener') - ->setDescription('Create a new listener class'); - } - - protected function getStub(): string - { - return __DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . 'listener.stub'; - } - - protected function getNamespace(string $app): string - { - return parent::getNamespace($app) . '\\listener'; - } -} diff --git a/vendor/topthink/framework/src/think/console/command/make/Middleware.php b/vendor/topthink/framework/src/think/console/command/make/Middleware.php deleted file mode 100644 index 80f456339..000000000 --- a/vendor/topthink/framework/src/think/console/command/make/Middleware.php +++ /dev/null @@ -1,36 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\command\make; - -use think\console\command\Make; - -class Middleware extends Make -{ - protected $type = "Middleware"; - - protected function configure() - { - parent::configure(); - $this->setName('make:middleware') - ->setDescription('Create a new middleware class'); - } - - protected function getStub(): string - { - return __DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . 'middleware.stub'; - } - - protected function getNamespace(string $app): string - { - return 'app\\middleware'; - } -} diff --git a/vendor/topthink/framework/src/think/console/command/make/Model.php b/vendor/topthink/framework/src/think/console/command/make/Model.php deleted file mode 100644 index acb37e7c3..000000000 --- a/vendor/topthink/framework/src/think/console/command/make/Model.php +++ /dev/null @@ -1,36 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\command\make; - -use think\console\command\Make; - -class Model extends Make -{ - protected $type = "Model"; - - protected function configure() - { - parent::configure(); - $this->setName('make:model') - ->setDescription('Create a new model class'); - } - - protected function getStub(): string - { - return __DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . 'model.stub'; - } - - protected function getNamespace(string $app): string - { - return parent::getNamespace($app) . '\\model'; - } -} diff --git a/vendor/topthink/framework/src/think/console/command/make/Service.php b/vendor/topthink/framework/src/think/console/command/make/Service.php deleted file mode 100644 index 18bd54eb2..000000000 --- a/vendor/topthink/framework/src/think/console/command/make/Service.php +++ /dev/null @@ -1,36 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\command\make; - -use think\console\command\Make; - -class Service extends Make -{ - protected $type = "Service"; - - protected function configure() - { - parent::configure(); - $this->setName('make:service') - ->setDescription('Create a new Service class'); - } - - protected function getStub(): string - { - return __DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . 'service.stub'; - } - - protected function getNamespace(string $app): string - { - return parent::getNamespace($app) . '\\service'; - } -} diff --git a/vendor/topthink/framework/src/think/console/command/make/Subscribe.php b/vendor/topthink/framework/src/think/console/command/make/Subscribe.php deleted file mode 100644 index 4203986e4..000000000 --- a/vendor/topthink/framework/src/think/console/command/make/Subscribe.php +++ /dev/null @@ -1,35 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think\console\command\make; - -use think\console\command\Make; - -class Subscribe extends Make -{ - protected $type = "Subscribe"; - - protected function configure() - { - parent::configure(); - $this->setName('make:subscribe') - ->setDescription('Create a new subscribe class'); - } - - protected function getStub(): string - { - return __DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . 'subscribe.stub'; - } - - protected function getNamespace(string $app): string - { - return parent::getNamespace($app) . '\\subscribe'; - } -} diff --git a/vendor/topthink/framework/src/think/console/command/make/Validate.php b/vendor/topthink/framework/src/think/console/command/make/Validate.php deleted file mode 100644 index 4926e20df..000000000 --- a/vendor/topthink/framework/src/think/console/command/make/Validate.php +++ /dev/null @@ -1,39 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\command\make; - -use think\console\command\Make; - -class Validate extends Make -{ - protected $type = "Validate"; - - protected function configure() - { - parent::configure(); - $this->setName('make:validate') - ->setDescription('Create a validate class'); - } - - protected function getStub(): string - { - $stubPath = __DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR; - - return $stubPath . 'validate.stub'; - } - - protected function getNamespace(string $app): string - { - return parent::getNamespace($app) . '\\validate'; - } - -} diff --git a/vendor/topthink/framework/src/think/console/command/make/stubs/command.stub b/vendor/topthink/framework/src/think/console/command/make/stubs/command.stub deleted file mode 100644 index e9121cdd7..000000000 --- a/vendor/topthink/framework/src/think/console/command/make/stubs/command.stub +++ /dev/null @@ -1,26 +0,0 @@ -setName('{%commandName%}') - ->setDescription('the {%commandName%} command'); - } - - protected function execute(Input $input, Output $output) - { - // 指令输出 - $output->writeln('{%commandName%}'); - } -} diff --git a/vendor/topthink/framework/src/think/console/command/make/stubs/controller.api.stub b/vendor/topthink/framework/src/think/console/command/make/stubs/controller.api.stub deleted file mode 100644 index 5d3383d20..000000000 --- a/vendor/topthink/framework/src/think/console/command/make/stubs/controller.api.stub +++ /dev/null @@ -1,64 +0,0 @@ - ['规则1','规则2'...] - * - * @var array - */ - protected $rule = []; - - /** - * 定义错误信息 - * 格式:'字段名.规则名' => '错误信息' - * - * @var array - */ - protected $message = []; -} diff --git a/vendor/topthink/framework/src/think/console/command/optimize/Route.php b/vendor/topthink/framework/src/think/console/command/optimize/Route.php deleted file mode 100644 index f72532f69..000000000 --- a/vendor/topthink/framework/src/think/console/command/optimize/Route.php +++ /dev/null @@ -1,67 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think\console\command\optimize; - -use think\console\Command; -use think\console\Input; -use think\console\input\Argument; -use think\console\Output; -use think\event\RouteLoaded; - -class Route extends Command -{ - protected function configure() - { - $this->setName('optimize:route') - ->addArgument('dir', Argument::OPTIONAL, 'dir name .') - ->setDescription('Build app route cache.'); - } - - protected function execute(Input $input, Output $output) - { - $dir = $input->getArgument('dir') ?: ''; - - $path = $this->app->getRootPath() . 'runtime' . DIRECTORY_SEPARATOR . ($dir ? $dir . DIRECTORY_SEPARATOR : ''); - - $filename = $path . 'route.php'; - if (is_file($filename)) { - unlink($filename); - } - - file_put_contents($filename, $this->buildRouteCache($dir)); - $output->writeln('Succeed!'); - } - - protected function buildRouteCache(string $dir = null): string - { - $this->app->route->clear(); - $this->app->route->lazy(false); - - // 路由检测 - $path = $this->app->getRootPath() . 'route' . DIRECTORY_SEPARATOR . ($dir ? $dir . DIRECTORY_SEPARATOR : ''); - - $files = is_dir($path) ? scandir($path) : []; - - foreach ($files as $file) { - if (strpos($file, '.php')) { - include $path . $file; - } - } - - //触发路由载入完成事件 - $this->app->event->trigger(RouteLoaded::class); - - $content = 'app->route->getName()) . '\');'; - return $content; - } - -} diff --git a/vendor/topthink/framework/src/think/console/command/optimize/Schema.php b/vendor/topthink/framework/src/think/console/command/optimize/Schema.php deleted file mode 100644 index 77b06e433..000000000 --- a/vendor/topthink/framework/src/think/console/command/optimize/Schema.php +++ /dev/null @@ -1,116 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think\console\command\optimize; - -use think\console\Command; -use think\console\Input; -use think\console\input\Argument; -use think\console\input\Option; -use think\console\Output; - -class Schema extends Command -{ - protected function configure() - { - $this->setName('optimize:schema') - ->addArgument('dir', Argument::OPTIONAL, 'dir name .') - ->addOption('db', null, Option::VALUE_REQUIRED, 'db name .') - ->addOption('table', null, Option::VALUE_REQUIRED, 'table name .') - ->setDescription('Build database schema cache.'); - } - - protected function execute(Input $input, Output $output) - { - $dir = $input->getArgument('dir') ?: ''; - - $schemaPath = $this->app->db->getConnection()->getConfig('schema_cache_path'); - - if (!is_dir($schemaPath)) { - mkdir($schemaPath, 0755, true); - } - - if ($input->hasOption('table')) { - $table = $input->getOption('table'); - if (false === strpos($table, '.')) { - $dbName = $this->app->db->getConnection()->getConfig('database'); - } - - $tables[] = $table; - } elseif ($input->hasOption('db')) { - $dbName = $input->getOption('db'); - $tables = $this->app->db->getConnection()->getTables($dbName); - } else { - if ($dir) { - $appPath = $this->app->getBasePath() . $dir . DIRECTORY_SEPARATOR; - $namespace = 'app\\' . $dir; - } else { - $appPath = $this->app->getBasePath(); - $namespace = 'app'; - } - - $path = $appPath . 'model'; - $list = is_dir($path) ? scandir($path) : []; - - foreach ($list as $file) { - if (0 === strpos($file, '.')) { - continue; - } - $class = '\\' . $namespace . '\\model\\' . pathinfo($file, PATHINFO_FILENAME); - $this->buildModelSchema($class); - } - - $output->writeln('Succeed!'); - return; - } - - $db = isset($dbName) ? $dbName . '.' : ''; - $this->buildDataBaseSchema($schemaPath, $tables, $db); - - $output->writeln('Succeed!'); - } - - protected function buildModelSchema(string $class): void - { - $reflect = new \ReflectionClass($class); - if (!$reflect->isAbstract() && $reflect->isSubclassOf('\think\Model')) { - /** @var \think\Model $model */ - $model = new $class; - - $table = $model->getTable(); - $dbName = $model->getConnection()->getConfig('database'); - $path = $model->getConnection()->getConfig('schema_cache_path'); - if (!is_dir($path)) { - mkdir($path, 0755, true); - } - $content = 'db()->getConnection()->getTableFieldsInfo($table); - $content .= var_export($info, true) . ';'; - - file_put_contents($path . $dbName . '.' . $table . '.php', $content); - } - } - - protected function buildDataBaseSchema(string $path, array $tables, string $db): void - { - if ('' == $db) { - $dbName = $this->app->db->getConnection()->getConfig('database') . '.'; - } else { - $dbName = $db; - } - - foreach ($tables as $table) { - $content = 'app->db->getConnection()->getTableFieldsInfo($db . $table); - $content .= var_export($info, true) . ';'; - file_put_contents($path . $dbName . $table . '.php', $content); - } - } -} diff --git a/vendor/topthink/framework/src/think/console/input/Argument.php b/vendor/topthink/framework/src/think/console/input/Argument.php deleted file mode 100644 index 4fa3e3cd5..000000000 --- a/vendor/topthink/framework/src/think/console/input/Argument.php +++ /dev/null @@ -1,115 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\input; - -class Argument -{ - - const REQUIRED = 1; - const OPTIONAL = 2; - const IS_ARRAY = 4; - - private $name; - private $mode; - private $default; - private $description; - - /** - * 构造方法 - * @param string $name 参数名 - * @param int $mode 参数类型: self::REQUIRED 或者 self::OPTIONAL - * @param string $description 描述 - * @param mixed $default 默认值 (仅 self::OPTIONAL 类型有效) - * @throws \InvalidArgumentException - */ - public function __construct(string $name, int $mode = null, string $description = '', $default = null) - { - if (null === $mode) { - $mode = self::OPTIONAL; - } elseif (!is_int($mode) || $mode > 7 || $mode < 1) { - throw new \InvalidArgumentException(sprintf('Argument mode "%s" is not valid.', $mode)); - } - - $this->name = $name; - $this->mode = $mode; - $this->description = $description; - - $this->setDefault($default); - } - - /** - * 获取参数名 - * @return string - */ - public function getName(): string - { - return $this->name; - } - - /** - * 是否必须 - * @return bool - */ - public function isRequired(): bool - { - return self::REQUIRED === (self::REQUIRED & $this->mode); - } - - /** - * 该参数是否接受数组 - * @return bool - */ - public function isArray(): bool - { - return self::IS_ARRAY === (self::IS_ARRAY & $this->mode); - } - - /** - * 设置默认值 - * @param mixed $default 默认值 - * @throws \LogicException - */ - public function setDefault($default = null): void - { - if (self::REQUIRED === $this->mode && null !== $default) { - throw new \LogicException('Cannot set a default value except for InputArgument::OPTIONAL mode.'); - } - - if ($this->isArray()) { - if (null === $default) { - $default = []; - } elseif (!is_array($default)) { - throw new \LogicException('A default value for an array argument must be an array.'); - } - } - - $this->default = $default; - } - - /** - * 获取默认值 - * @return mixed - */ - public function getDefault() - { - return $this->default; - } - - /** - * 获取描述 - * @return string - */ - public function getDescription(): string - { - return $this->description; - } -} diff --git a/vendor/topthink/framework/src/think/console/input/Definition.php b/vendor/topthink/framework/src/think/console/input/Definition.php deleted file mode 100644 index ccf02a0c7..000000000 --- a/vendor/topthink/framework/src/think/console/input/Definition.php +++ /dev/null @@ -1,375 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\input; - -class Definition -{ - - /** - * @var Argument[] - */ - private $arguments; - - private $requiredCount; - private $hasAnArrayArgument = false; - private $hasOptional; - - /** - * @var Option[] - */ - private $options; - private $shortcuts; - - /** - * 构造方法 - * @param array $definition - * @api - */ - public function __construct(array $definition = []) - { - $this->setDefinition($definition); - } - - /** - * 设置指令的定义 - * @param array $definition 定义的数组 - */ - public function setDefinition(array $definition): void - { - $arguments = []; - $options = []; - foreach ($definition as $item) { - if ($item instanceof Option) { - $options[] = $item; - } else { - $arguments[] = $item; - } - } - - $this->setArguments($arguments); - $this->setOptions($options); - } - - /** - * 设置参数 - * @param Argument[] $arguments 参数数组 - */ - public function setArguments(array $arguments = []): void - { - $this->arguments = []; - $this->requiredCount = 0; - $this->hasOptional = false; - $this->hasAnArrayArgument = false; - $this->addArguments($arguments); - } - - /** - * 添加参数 - * @param Argument[] $arguments 参数数组 - * @api - */ - public function addArguments(array $arguments = []): void - { - if (null !== $arguments) { - foreach ($arguments as $argument) { - $this->addArgument($argument); - } - } - } - - /** - * 添加一个参数 - * @param Argument $argument 参数 - * @throws \LogicException - */ - public function addArgument(Argument $argument): void - { - if (isset($this->arguments[$argument->getName()])) { - throw new \LogicException(sprintf('An argument with name "%s" already exists.', $argument->getName())); - } - - if ($this->hasAnArrayArgument) { - throw new \LogicException('Cannot add an argument after an array argument.'); - } - - if ($argument->isRequired() && $this->hasOptional) { - throw new \LogicException('Cannot add a required argument after an optional one.'); - } - - if ($argument->isArray()) { - $this->hasAnArrayArgument = true; - } - - if ($argument->isRequired()) { - ++$this->requiredCount; - } else { - $this->hasOptional = true; - } - - $this->arguments[$argument->getName()] = $argument; - } - - /** - * 根据名称或者位置获取参数 - * @param string|int $name 参数名或者位置 - * @return Argument 参数 - * @throws \InvalidArgumentException - */ - public function getArgument($name): Argument - { - if (!$this->hasArgument($name)) { - throw new \InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); - } - - $arguments = is_int($name) ? array_values($this->arguments) : $this->arguments; - - return $arguments[$name]; - } - - /** - * 根据名称或位置检查是否具有某个参数 - * @param string|int $name 参数名或者位置 - * @return bool - * @api - */ - public function hasArgument($name): bool - { - $arguments = is_int($name) ? array_values($this->arguments) : $this->arguments; - - return isset($arguments[$name]); - } - - /** - * 获取所有的参数 - * @return Argument[] 参数数组 - */ - public function getArguments(): array - { - return $this->arguments; - } - - /** - * 获取参数数量 - * @return int - */ - public function getArgumentCount(): int - { - return $this->hasAnArrayArgument ? PHP_INT_MAX : count($this->arguments); - } - - /** - * 获取必填的参数的数量 - * @return int - */ - public function getArgumentRequiredCount(): int - { - return $this->requiredCount; - } - - /** - * 获取参数默认值 - * @return array - */ - public function getArgumentDefaults(): array - { - $values = []; - foreach ($this->arguments as $argument) { - $values[$argument->getName()] = $argument->getDefault(); - } - - return $values; - } - - /** - * 设置选项 - * @param Option[] $options 选项数组 - */ - public function setOptions(array $options = []): void - { - $this->options = []; - $this->shortcuts = []; - $this->addOptions($options); - } - - /** - * 添加选项 - * @param Option[] $options 选项数组 - * @api - */ - public function addOptions(array $options = []): void - { - foreach ($options as $option) { - $this->addOption($option); - } - } - - /** - * 添加一个选项 - * @param Option $option 选项 - * @throws \LogicException - * @api - */ - public function addOption(Option $option): void - { - if (isset($this->options[$option->getName()]) && !$option->equals($this->options[$option->getName()])) { - throw new \LogicException(sprintf('An option named "%s" already exists.', $option->getName())); - } - - if ($option->getShortcut()) { - foreach (explode('|', $option->getShortcut()) as $shortcut) { - if (isset($this->shortcuts[$shortcut]) - && !$option->equals($this->options[$this->shortcuts[$shortcut]]) - ) { - throw new \LogicException(sprintf('An option with shortcut "%s" already exists.', $shortcut)); - } - } - } - - $this->options[$option->getName()] = $option; - if ($option->getShortcut()) { - foreach (explode('|', $option->getShortcut()) as $shortcut) { - $this->shortcuts[$shortcut] = $option->getName(); - } - } - } - - /** - * 根据名称获取选项 - * @param string $name 选项名 - * @return Option - * @throws \InvalidArgumentException - * @api - */ - public function getOption(string $name): Option - { - if (!$this->hasOption($name)) { - throw new \InvalidArgumentException(sprintf('The "--%s" option does not exist.', $name)); - } - - return $this->options[$name]; - } - - /** - * 根据名称检查是否有这个选项 - * @param string $name 选项名 - * @return bool - * @api - */ - public function hasOption(string $name): bool - { - return isset($this->options[$name]); - } - - /** - * 获取所有选项 - * @return Option[] - * @api - */ - public function getOptions(): array - { - return $this->options; - } - - /** - * 根据名称检查某个选项是否有短名称 - * @param string $name 短名称 - * @return bool - */ - public function hasShortcut(string $name): bool - { - return isset($this->shortcuts[$name]); - } - - /** - * 根据短名称获取选项 - * @param string $shortcut 短名称 - * @return Option - */ - public function getOptionForShortcut(string $shortcut): Option - { - return $this->getOption($this->shortcutToName($shortcut)); - } - - /** - * 获取所有选项的默认值 - * @return array - */ - public function getOptionDefaults(): array - { - $values = []; - foreach ($this->options as $option) { - $values[$option->getName()] = $option->getDefault(); - } - - return $values; - } - - /** - * 根据短名称获取选项名 - * @param string $shortcut 短名称 - * @return string - * @throws \InvalidArgumentException - */ - private function shortcutToName(string $shortcut): string - { - if (!isset($this->shortcuts[$shortcut])) { - throw new \InvalidArgumentException(sprintf('The "-%s" option does not exist.', $shortcut)); - } - - return $this->shortcuts[$shortcut]; - } - - /** - * 获取该指令的介绍 - * @param bool $short 是否简洁介绍 - * @return string - */ - public function getSynopsis(bool $short = false): string - { - $elements = []; - - if ($short && $this->getOptions()) { - $elements[] = '[options]'; - } elseif (!$short) { - foreach ($this->getOptions() as $option) { - $value = ''; - if ($option->acceptValue()) { - $value = sprintf(' %s%s%s', $option->isValueOptional() ? '[' : '', strtoupper($option->getName()), $option->isValueOptional() ? ']' : ''); - } - - $shortcut = $option->getShortcut() ? sprintf('-%s|', $option->getShortcut()) : ''; - $elements[] = sprintf('[%s--%s%s]', $shortcut, $option->getName(), $value); - } - } - - if (count($elements) && $this->getArguments()) { - $elements[] = '[--]'; - } - - foreach ($this->getArguments() as $argument) { - $element = '<' . $argument->getName() . '>'; - if (!$argument->isRequired()) { - $element = '[' . $element . ']'; - } elseif ($argument->isArray()) { - $element .= ' (' . $element . ')'; - } - - if ($argument->isArray()) { - $element .= '...'; - } - - $elements[] = $element; - } - - return implode(' ', $elements); - } -} diff --git a/vendor/topthink/framework/src/think/console/input/Option.php b/vendor/topthink/framework/src/think/console/input/Option.php deleted file mode 100644 index e5707c9ae..000000000 --- a/vendor/topthink/framework/src/think/console/input/Option.php +++ /dev/null @@ -1,190 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\input; - -class Option -{ - - const VALUE_NONE = 1; - const VALUE_REQUIRED = 2; - const VALUE_OPTIONAL = 4; - const VALUE_IS_ARRAY = 8; - - private $name; - private $shortcut; - private $mode; - private $default; - private $description; - - /** - * 构造方法 - * @param string $name 选项名 - * @param string|array $shortcut 短名称,多个用|隔开或者使用数组 - * @param int $mode 选项类型(可选类型为 self::VALUE_*) - * @param string $description 描述 - * @param mixed $default 默认值 (类型为 self::VALUE_REQUIRED 或者 self::VALUE_NONE 的时候必须为null) - * @throws \InvalidArgumentException - */ - public function __construct($name, $shortcut = null, $mode = null, $description = '', $default = null) - { - if (0 === strpos($name, '--')) { - $name = substr($name, 2); - } - - if (empty($name)) { - throw new \InvalidArgumentException('An option name cannot be empty.'); - } - - if (empty($shortcut)) { - $shortcut = null; - } - - if (null !== $shortcut) { - if (is_array($shortcut)) { - $shortcut = implode('|', $shortcut); - } - $shortcuts = preg_split('{(\|)-?}', ltrim($shortcut, '-')); - $shortcuts = array_filter($shortcuts); - $shortcut = implode('|', $shortcuts); - - if (empty($shortcut)) { - throw new \InvalidArgumentException('An option shortcut cannot be empty.'); - } - } - - if (null === $mode) { - $mode = self::VALUE_NONE; - } elseif (!is_int($mode) || $mode > 15 || $mode < 1) { - throw new \InvalidArgumentException(sprintf('Option mode "%s" is not valid.', $mode)); - } - - $this->name = $name; - $this->shortcut = $shortcut; - $this->mode = $mode; - $this->description = $description; - - if ($this->isArray() && !$this->acceptValue()) { - throw new \InvalidArgumentException('Impossible to have an option mode VALUE_IS_ARRAY if the option does not accept a value.'); - } - - $this->setDefault($default); - } - - /** - * 获取短名称 - * @return string - */ - public function getShortcut() - { - return $this->shortcut; - } - - /** - * 获取选项名 - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * 是否可以设置值 - * @return bool 类型不是 self::VALUE_NONE 的时候返回true,其他均返回false - */ - public function acceptValue() - { - return $this->isValueRequired() || $this->isValueOptional(); - } - - /** - * 是否必须 - * @return bool 类型是 self::VALUE_REQUIRED 的时候返回true,其他均返回false - */ - public function isValueRequired() - { - return self::VALUE_REQUIRED === (self::VALUE_REQUIRED & $this->mode); - } - - /** - * 是否可选 - * @return bool 类型是 self::VALUE_OPTIONAL 的时候返回true,其他均返回false - */ - public function isValueOptional() - { - return self::VALUE_OPTIONAL === (self::VALUE_OPTIONAL & $this->mode); - } - - /** - * 选项值是否接受数组 - * @return bool 类型是 self::VALUE_IS_ARRAY 的时候返回true,其他均返回false - */ - public function isArray() - { - return self::VALUE_IS_ARRAY === (self::VALUE_IS_ARRAY & $this->mode); - } - - /** - * 设置默认值 - * @param mixed $default 默认值 - * @throws \LogicException - */ - public function setDefault($default = null) - { - if (self::VALUE_NONE === (self::VALUE_NONE & $this->mode) && null !== $default) { - throw new \LogicException('Cannot set a default value when using InputOption::VALUE_NONE mode.'); - } - - if ($this->isArray()) { - if (null === $default) { - $default = []; - } elseif (!is_array($default)) { - throw new \LogicException('A default value for an array option must be an array.'); - } - } - - $this->default = $this->acceptValue() ? $default : false; - } - - /** - * 获取默认值 - * @return mixed - */ - public function getDefault() - { - return $this->default; - } - - /** - * 获取描述文字 - * @return string - */ - public function getDescription() - { - return $this->description; - } - - /** - * 检查所给选项是否是当前这个 - * @param Option $option - * @return bool - */ - public function equals(Option $option) - { - return $option->getName() === $this->getName() - && $option->getShortcut() === $this->getShortcut() - && $option->getDefault() === $this->getDefault() - && $option->isArray() === $this->isArray() - && $option->isValueRequired() === $this->isValueRequired() - && $option->isValueOptional() === $this->isValueOptional(); - } -} diff --git a/vendor/topthink/framework/src/think/console/output/Ask.php b/vendor/topthink/framework/src/think/console/output/Ask.php deleted file mode 100644 index 56821c72d..000000000 --- a/vendor/topthink/framework/src/think/console/output/Ask.php +++ /dev/null @@ -1,336 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\output; - -use think\console\Input; -use think\console\Output; -use think\console\output\question\Choice; -use think\console\output\question\Confirmation; - -class Ask -{ - private static $stty; - - private static $shell; - - /** @var Input */ - protected $input; - - /** @var Output */ - protected $output; - - /** @var Question */ - protected $question; - - public function __construct(Input $input, Output $output, Question $question) - { - $this->input = $input; - $this->output = $output; - $this->question = $question; - } - - public function run() - { - if (!$this->input->isInteractive()) { - return $this->question->getDefault(); - } - - if (!$this->question->getValidator()) { - return $this->doAsk(); - } - - $that = $this; - - $interviewer = function () use ($that) { - return $that->doAsk(); - }; - - return $this->validateAttempts($interviewer); - } - - protected function doAsk() - { - $this->writePrompt(); - - $inputStream = STDIN; - $autocomplete = $this->question->getAutocompleterValues(); - - if (null === $autocomplete || !$this->hasSttyAvailable()) { - $ret = false; - if ($this->question->isHidden()) { - try { - $ret = trim($this->getHiddenResponse($inputStream)); - } catch (\RuntimeException $e) { - if (!$this->question->isHiddenFallback()) { - throw $e; - } - } - } - - if (false === $ret) { - $ret = fgets($inputStream, 4096); - if (false === $ret) { - throw new \RuntimeException('Aborted'); - } - $ret = trim($ret); - } - } else { - $ret = trim($this->autocomplete($inputStream)); - } - - $ret = strlen($ret) > 0 ? $ret : $this->question->getDefault(); - - if ($normalizer = $this->question->getNormalizer()) { - return $normalizer($ret); - } - - return $ret; - } - - private function autocomplete($inputStream) - { - $autocomplete = $this->question->getAutocompleterValues(); - $ret = ''; - - $i = 0; - $ofs = -1; - $matches = $autocomplete; - $numMatches = count($matches); - - $sttyMode = shell_exec('stty -g'); - - shell_exec('stty -icanon -echo'); - - while (!feof($inputStream)) { - $c = fread($inputStream, 1); - - if ("\177" === $c) { - if (0 === $numMatches && 0 !== $i) { - --$i; - $this->output->write("\033[1D"); - } - - if ($i === 0) { - $ofs = -1; - $matches = $autocomplete; - $numMatches = count($matches); - } else { - $numMatches = 0; - } - - $ret = substr($ret, 0, $i); - } elseif ("\033" === $c) { - $c .= fread($inputStream, 2); - - if (isset($c[2]) && ('A' === $c[2] || 'B' === $c[2])) { - if ('A' === $c[2] && -1 === $ofs) { - $ofs = 0; - } - - if (0 === $numMatches) { - continue; - } - - $ofs += ('A' === $c[2]) ? -1 : 1; - $ofs = ($numMatches + $ofs) % $numMatches; - } - } elseif (ord($c) < 32) { - if ("\t" === $c || "\n" === $c) { - if ($numMatches > 0 && -1 !== $ofs) { - $ret = $matches[$ofs]; - $this->output->write(substr($ret, $i)); - $i = strlen($ret); - } - - if ("\n" === $c) { - $this->output->write($c); - break; - } - - $numMatches = 0; - } - - continue; - } else { - $this->output->write($c); - $ret .= $c; - ++$i; - - $numMatches = 0; - $ofs = 0; - - foreach ($autocomplete as $value) { - if (0 === strpos($value, $ret) && $i !== strlen($value)) { - $matches[$numMatches++] = $value; - } - } - } - - $this->output->write("\033[K"); - - if ($numMatches > 0 && -1 !== $ofs) { - $this->output->write("\0337"); - $this->output->highlight(substr($matches[$ofs], $i)); - $this->output->write("\0338"); - } - } - - shell_exec(sprintf('stty %s', $sttyMode)); - - return $ret; - } - - protected function getHiddenResponse($inputStream) - { - if ('\\' === DIRECTORY_SEPARATOR) { - $exe = __DIR__ . '/../bin/hiddeninput.exe'; - - $value = rtrim(shell_exec($exe)); - $this->output->writeln(''); - - return $value; - } - - if ($this->hasSttyAvailable()) { - $sttyMode = shell_exec('stty -g'); - - shell_exec('stty -echo'); - $value = fgets($inputStream, 4096); - shell_exec(sprintf('stty %s', $sttyMode)); - - if (false === $value) { - throw new \RuntimeException('Aborted'); - } - - $value = trim($value); - $this->output->writeln(''); - - return $value; - } - - if (false !== $shell = $this->getShell()) { - $readCmd = $shell === 'csh' ? 'set mypassword = $<' : 'read -r mypassword'; - $command = sprintf("/usr/bin/env %s -c 'stty -echo; %s; stty echo; echo \$mypassword'", $shell, $readCmd); - $value = rtrim(shell_exec($command)); - $this->output->writeln(''); - - return $value; - } - - throw new \RuntimeException('Unable to hide the response.'); - } - - protected function validateAttempts($interviewer) - { - /** @var \Exception $error */ - $error = null; - $attempts = $this->question->getMaxAttempts(); - while (null === $attempts || $attempts--) { - if (null !== $error) { - $this->output->error($error->getMessage()); - } - - try { - return call_user_func($this->question->getValidator(), $interviewer()); - } catch (\Exception $error) { - } - } - - throw $error; - } - - /** - * 显示问题的提示信息 - */ - protected function writePrompt() - { - $text = $this->question->getQuestion(); - $default = $this->question->getDefault(); - - switch (true) { - case null === $default: - $text = sprintf(' %s:', $text); - - break; - - case $this->question instanceof Confirmation: - $text = sprintf(' %s (yes/no) [%s]:', $text, $default ? 'yes' : 'no'); - - break; - - case $this->question instanceof Choice && $this->question->isMultiselect(): - $choices = $this->question->getChoices(); - $default = explode(',', $default); - - foreach ($default as $key => $value) { - $default[$key] = $choices[trim($value)]; - } - - $text = sprintf(' %s [%s]:', $text, implode(', ', $default)); - - break; - - case $this->question instanceof Choice: - $choices = $this->question->getChoices(); - $text = sprintf(' %s [%s]:', $text, $choices[$default]); - - break; - - default: - $text = sprintf(' %s [%s]:', $text, $default); - } - - $this->output->writeln($text); - - if ($this->question instanceof Choice) { - $width = max(array_map('strlen', array_keys($this->question->getChoices()))); - - foreach ($this->question->getChoices() as $key => $value) { - $this->output->writeln(sprintf(" [%-${width}s] %s", $key, $value)); - } - } - - $this->output->write(' > '); - } - - private function getShell() - { - if (null !== self::$shell) { - return self::$shell; - } - - self::$shell = false; - - if (file_exists('/usr/bin/env')) { - $test = "/usr/bin/env %s -c 'echo OK' 2> /dev/null"; - foreach (['bash', 'zsh', 'ksh', 'csh'] as $sh) { - if ('OK' === rtrim(shell_exec(sprintf($test, $sh)))) { - self::$shell = $sh; - break; - } - } - } - - return self::$shell; - } - - private function hasSttyAvailable() - { - if (null !== self::$stty) { - return self::$stty; - } - - exec('stty 2>&1', $output, $exitcode); - - return self::$stty = $exitcode === 0; - } -} diff --git a/vendor/topthink/framework/src/think/console/output/Descriptor.php b/vendor/topthink/framework/src/think/console/output/Descriptor.php deleted file mode 100644 index 8582b5952..000000000 --- a/vendor/topthink/framework/src/think/console/output/Descriptor.php +++ /dev/null @@ -1,319 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\output; - -use think\Console; -use think\console\Command; -use think\console\input\Argument as InputArgument; -use think\console\input\Definition as InputDefinition; -use think\console\input\Option as InputOption; -use think\console\Output; -use think\console\output\descriptor\Console as ConsoleDescription; - -class Descriptor -{ - - /** - * @var Output - */ - protected $output; - - /** - * {@inheritdoc} - */ - public function describe(Output $output, $object, array $options = []) - { - $this->output = $output; - - switch (true) { - case $object instanceof InputArgument: - $this->describeInputArgument($object, $options); - break; - case $object instanceof InputOption: - $this->describeInputOption($object, $options); - break; - case $object instanceof InputDefinition: - $this->describeInputDefinition($object, $options); - break; - case $object instanceof Command: - $this->describeCommand($object, $options); - break; - case $object instanceof Console: - $this->describeConsole($object, $options); - break; - default: - throw new \InvalidArgumentException(sprintf('Object of type "%s" is not describable.', get_class($object))); - } - } - - /** - * 输出内容 - * @param string $content - * @param bool $decorated - */ - protected function write($content, $decorated = false) - { - $this->output->write($content, false, $decorated ? Output::OUTPUT_NORMAL : Output::OUTPUT_RAW); - } - - /** - * 描述参数 - * @param InputArgument $argument - * @param array $options - * @return string|mixed - */ - protected function describeInputArgument(InputArgument $argument, array $options = []) - { - if (null !== $argument->getDefault() - && (!is_array($argument->getDefault()) - || count($argument->getDefault())) - ) { - $default = sprintf(' [default: %s]', $this->formatDefaultValue($argument->getDefault())); - } else { - $default = ''; - } - - $totalWidth = $options['total_width'] ?? strlen($argument->getName()); - $spacingWidth = $totalWidth - strlen($argument->getName()) + 2; - - $this->writeText(sprintf(" %s%s%s%s", $argument->getName(), str_repeat(' ', $spacingWidth), // + 17 = 2 spaces + + + 2 spaces - preg_replace('/\s*\R\s*/', PHP_EOL . str_repeat(' ', $totalWidth + 17), $argument->getDescription()), $default), $options); - } - - /** - * 描述选项 - * @param InputOption $option - * @param array $options - * @return string|mixed - */ - protected function describeInputOption(InputOption $option, array $options = []) - { - if ($option->acceptValue() && null !== $option->getDefault() - && (!is_array($option->getDefault()) - || count($option->getDefault())) - ) { - $default = sprintf(' [default: %s]', $this->formatDefaultValue($option->getDefault())); - } else { - $default = ''; - } - - $value = ''; - if ($option->acceptValue()) { - $value = '=' . strtoupper($option->getName()); - - if ($option->isValueOptional()) { - $value = '[' . $value . ']'; - } - } - - $totalWidth = $options['total_width'] ?? $this->calculateTotalWidthForOptions([$option]); - $synopsis = sprintf('%s%s', $option->getShortcut() ? sprintf('-%s, ', $option->getShortcut()) : ' ', sprintf('--%s%s', $option->getName(), $value)); - - $spacingWidth = $totalWidth - strlen($synopsis) + 2; - - $this->writeText(sprintf(" %s%s%s%s%s", $synopsis, str_repeat(' ', $spacingWidth), // + 17 = 2 spaces + + + 2 spaces - preg_replace('/\s*\R\s*/', "\n" . str_repeat(' ', $totalWidth + 17), $option->getDescription()), $default, $option->isArray() ? ' (multiple values allowed)' : ''), $options); - } - - /** - * 描述输入 - * @param InputDefinition $definition - * @param array $options - * @return string|mixed - */ - protected function describeInputDefinition(InputDefinition $definition, array $options = []) - { - $totalWidth = $this->calculateTotalWidthForOptions($definition->getOptions()); - foreach ($definition->getArguments() as $argument) { - $totalWidth = max($totalWidth, strlen($argument->getName())); - } - - if ($definition->getArguments()) { - $this->writeText('Arguments:', $options); - $this->writeText("\n"); - foreach ($definition->getArguments() as $argument) { - $this->describeInputArgument($argument, array_merge($options, ['total_width' => $totalWidth])); - $this->writeText("\n"); - } - } - - if ($definition->getArguments() && $definition->getOptions()) { - $this->writeText("\n"); - } - - if ($definition->getOptions()) { - $laterOptions = []; - - $this->writeText('Options:', $options); - foreach ($definition->getOptions() as $option) { - if (strlen($option->getShortcut()) > 1) { - $laterOptions[] = $option; - continue; - } - $this->writeText("\n"); - $this->describeInputOption($option, array_merge($options, ['total_width' => $totalWidth])); - } - foreach ($laterOptions as $option) { - $this->writeText("\n"); - $this->describeInputOption($option, array_merge($options, ['total_width' => $totalWidth])); - } - } - } - - /** - * 描述指令 - * @param Command $command - * @param array $options - * @return string|mixed - */ - protected function describeCommand(Command $command, array $options = []) - { - $command->getSynopsis(true); - $command->getSynopsis(false); - $command->mergeConsoleDefinition(false); - - $this->writeText('Usage:', $options); - foreach (array_merge([$command->getSynopsis(true)], $command->getAliases(), $command->getUsages()) as $usage) { - $this->writeText("\n"); - $this->writeText(' ' . $usage, $options); - } - $this->writeText("\n"); - - $definition = $command->getNativeDefinition(); - if ($definition->getOptions() || $definition->getArguments()) { - $this->writeText("\n"); - $this->describeInputDefinition($definition, $options); - $this->writeText("\n"); - } - - if ($help = $command->getProcessedHelp()) { - $this->writeText("\n"); - $this->writeText('Help:', $options); - $this->writeText("\n"); - $this->writeText(' ' . str_replace("\n", "\n ", $help), $options); - $this->writeText("\n"); - } - } - - /** - * 描述控制台 - * @param Console $console - * @param array $options - * @return string|mixed - */ - protected function describeConsole(Console $console, array $options = []) - { - $describedNamespace = isset($options['namespace']) ? $options['namespace'] : null; - $description = new ConsoleDescription($console, $describedNamespace); - - if (isset($options['raw_text']) && $options['raw_text']) { - $width = $this->getColumnWidth($description->getCommands()); - - foreach ($description->getCommands() as $command) { - $this->writeText(sprintf("%-${width}s %s", $command->getName(), $command->getDescription()), $options); - $this->writeText("\n"); - } - } else { - if ('' != $help = $console->getHelp()) { - $this->writeText("$help\n\n", $options); - } - - $this->writeText("Usage:\n", $options); - $this->writeText(" command [options] [arguments]\n\n", $options); - - $this->describeInputDefinition(new InputDefinition($console->getDefinition()->getOptions()), $options); - - $this->writeText("\n"); - $this->writeText("\n"); - - $width = $this->getColumnWidth($description->getCommands()); - - if ($describedNamespace) { - $this->writeText(sprintf('Available commands for the "%s" namespace:', $describedNamespace), $options); - } else { - $this->writeText('Available commands:', $options); - } - - // add commands by namespace - foreach ($description->getNamespaces() as $namespace) { - if (!$describedNamespace && ConsoleDescription::GLOBAL_NAMESPACE !== $namespace['id']) { - $this->writeText("\n"); - $this->writeText(' ' . $namespace['id'] . '', $options); - } - - foreach ($namespace['commands'] as $name) { - $this->writeText("\n"); - $spacingWidth = $width - strlen($name); - $this->writeText(sprintf(" %s%s%s", $name, str_repeat(' ', $spacingWidth), $description->getCommand($name) - ->getDescription()), $options); - } - } - - $this->writeText("\n"); - } - } - - /** - * {@inheritdoc} - */ - private function writeText($content, array $options = []) - { - $this->write(isset($options['raw_text']) - && $options['raw_text'] ? strip_tags($content) : $content, isset($options['raw_output']) ? !$options['raw_output'] : true); - } - - /** - * 格式化 - * @param mixed $default - * @return string - */ - private function formatDefaultValue($default) - { - return json_encode($default, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); - } - - /** - * @param Command[] $commands - * @return int - */ - private function getColumnWidth(array $commands) - { - $width = 0; - foreach ($commands as $command) { - $width = strlen($command->getName()) > $width ? strlen($command->getName()) : $width; - } - - return $width + 2; - } - - /** - * @param InputOption[] $options - * @return int - */ - private function calculateTotalWidthForOptions($options) - { - $totalWidth = 0; - foreach ($options as $option) { - $nameLength = 4 + strlen($option->getName()) + 2; // - + shortcut + , + whitespace + name + -- - - if ($option->acceptValue()) { - $valueLength = 1 + strlen($option->getName()); // = + value - $valueLength += $option->isValueOptional() ? 2 : 0; // [ + ] - - $nameLength += $valueLength; - } - $totalWidth = max($totalWidth, $nameLength); - } - - return $totalWidth; - } -} diff --git a/vendor/topthink/framework/src/think/console/output/Formatter.php b/vendor/topthink/framework/src/think/console/output/Formatter.php deleted file mode 100644 index 1b97ca324..000000000 --- a/vendor/topthink/framework/src/think/console/output/Formatter.php +++ /dev/null @@ -1,198 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think\console\output; - -use think\console\output\formatter\Stack as StyleStack; -use think\console\output\formatter\Style; - -class Formatter -{ - - private $decorated = false; - private $styles = []; - private $styleStack; - - /** - * 转义 - * @param string $text - * @return string - */ - public static function escape($text) - { - return preg_replace('/([^\\\\]?)setStyle('error', new Style('white', 'red')); - $this->setStyle('info', new Style('green')); - $this->setStyle('comment', new Style('yellow')); - $this->setStyle('question', new Style('black', 'cyan')); - $this->setStyle('highlight', new Style('red')); - $this->setStyle('warning', new Style('black', 'yellow')); - - $this->styleStack = new StyleStack(); - } - - /** - * 设置外观标识 - * @param bool $decorated 是否美化文字 - */ - public function setDecorated($decorated) - { - $this->decorated = (bool) $decorated; - } - - /** - * 获取外观标识 - * @return bool - */ - public function isDecorated() - { - return $this->decorated; - } - - /** - * 添加一个新样式 - * @param string $name 样式名 - * @param Style $style 样式实例 - */ - public function setStyle($name, Style $style) - { - $this->styles[strtolower($name)] = $style; - } - - /** - * 是否有这个样式 - * @param string $name - * @return bool - */ - public function hasStyle($name) - { - return isset($this->styles[strtolower($name)]); - } - - /** - * 获取样式 - * @param string $name - * @return Style - * @throws \InvalidArgumentException - */ - public function getStyle($name) - { - if (!$this->hasStyle($name)) { - throw new \InvalidArgumentException(sprintf('Undefined style: %s', $name)); - } - - return $this->styles[strtolower($name)]; - } - - /** - * 使用所给的样式格式化文字 - * @param string $message 文字 - * @return string - */ - public function format($message) - { - $offset = 0; - $output = ''; - $tagRegex = '[a-z][a-z0-9_=;-]*'; - preg_match_all("#<(($tagRegex) | /($tagRegex)?)>#isx", $message, $matches, PREG_OFFSET_CAPTURE); - foreach ($matches[0] as $i => $match) { - $pos = $match[1]; - $text = $match[0]; - - if (0 != $pos && '\\' == $message[$pos - 1]) { - continue; - } - - $output .= $this->applyCurrentStyle(substr($message, $offset, $pos - $offset)); - $offset = $pos + strlen($text); - - if ($open = '/' != $text[1]) { - $tag = $matches[1][$i][0]; - } else { - $tag = $matches[3][$i][0] ?? ''; - } - - if (!$open && !$tag) { - // - $this->styleStack->pop(); - } elseif (false === $style = $this->createStyleFromString(strtolower($tag))) { - $output .= $this->applyCurrentStyle($text); - } elseif ($open) { - $this->styleStack->push($style); - } else { - $this->styleStack->pop($style); - } - } - - $output .= $this->applyCurrentStyle(substr($message, $offset)); - - return str_replace('\\<', '<', $output); - } - - /** - * @return StyleStack - */ - public function getStyleStack() - { - return $this->styleStack; - } - - /** - * 根据字符串创建新的样式实例 - * @param string $string - * @return Style|bool - */ - private function createStyleFromString($string) - { - if (isset($this->styles[$string])) { - return $this->styles[$string]; - } - - if (!preg_match_all('/([^=]+)=([^;]+)(;|$)/', strtolower($string), $matches, PREG_SET_ORDER)) { - return false; - } - - $style = new Style(); - foreach ($matches as $match) { - array_shift($match); - - if ('fg' == $match[0]) { - $style->setForeground($match[1]); - } elseif ('bg' == $match[0]) { - $style->setBackground($match[1]); - } else { - try { - $style->setOption($match[1]); - } catch (\InvalidArgumentException $e) { - return false; - } - } - } - - return $style; - } - - /** - * 从堆栈应用样式到文字 - * @param string $text 文字 - * @return string - */ - private function applyCurrentStyle($text) - { - return $this->isDecorated() && strlen($text) > 0 ? $this->styleStack->getCurrent()->apply($text) : $text; - } -} diff --git a/vendor/topthink/framework/src/think/console/output/Question.php b/vendor/topthink/framework/src/think/console/output/Question.php deleted file mode 100644 index 03975f274..000000000 --- a/vendor/topthink/framework/src/think/console/output/Question.php +++ /dev/null @@ -1,211 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\output; - -class Question -{ - - private $question; - private $attempts; - private $hidden = false; - private $hiddenFallback = true; - private $autocompleterValues; - private $validator; - private $default; - private $normalizer; - - /** - * 构造方法 - * @param string $question 问题 - * @param mixed $default 默认答案 - */ - public function __construct($question, $default = null) - { - $this->question = $question; - $this->default = $default; - } - - /** - * 获取问题 - * @return string - */ - public function getQuestion() - { - return $this->question; - } - - /** - * 获取默认答案 - * @return mixed - */ - public function getDefault() - { - return $this->default; - } - - /** - * 是否隐藏答案 - * @return bool - */ - public function isHidden() - { - return $this->hidden; - } - - /** - * 隐藏答案 - * @param bool $hidden - * @return Question - */ - public function setHidden($hidden) - { - if ($this->autocompleterValues) { - throw new \LogicException('A hidden question cannot use the autocompleter.'); - } - - $this->hidden = (bool) $hidden; - - return $this; - } - - /** - * 不能被隐藏是否撤销 - * @return bool - */ - public function isHiddenFallback() - { - return $this->hiddenFallback; - } - - /** - * 设置不能被隐藏的时候的操作 - * @param bool $fallback - * @return Question - */ - public function setHiddenFallback($fallback) - { - $this->hiddenFallback = (bool) $fallback; - - return $this; - } - - /** - * 获取自动完成 - * @return null|array|\Traversable - */ - public function getAutocompleterValues() - { - return $this->autocompleterValues; - } - - /** - * 设置自动完成的值 - * @param null|array|\Traversable $values - * @return Question - * @throws \InvalidArgumentException - * @throws \LogicException - */ - public function setAutocompleterValues($values) - { - if (is_array($values) && $this->isAssoc($values)) { - $values = array_merge(array_keys($values), array_values($values)); - } - - if (null !== $values && !is_array($values)) { - if (!$values instanceof \Traversable || $values instanceof \Countable) { - throw new \InvalidArgumentException('Autocompleter values can be either an array, `null` or an object implementing both `Countable` and `Traversable` interfaces.'); - } - } - - if ($this->hidden) { - throw new \LogicException('A hidden question cannot use the autocompleter.'); - } - - $this->autocompleterValues = $values; - - return $this; - } - - /** - * 设置答案的验证器 - * @param null|callable $validator - * @return Question The current instance - */ - public function setValidator($validator) - { - $this->validator = $validator; - - return $this; - } - - /** - * 获取验证器 - * @return null|callable - */ - public function getValidator() - { - return $this->validator; - } - - /** - * 设置最大重试次数 - * @param null|int $attempts - * @return Question - * @throws \InvalidArgumentException - */ - public function setMaxAttempts($attempts) - { - if (null !== $attempts && $attempts < 1) { - throw new \InvalidArgumentException('Maximum number of attempts must be a positive value.'); - } - - $this->attempts = $attempts; - - return $this; - } - - /** - * 获取最大重试次数 - * @return null|int - */ - public function getMaxAttempts() - { - return $this->attempts; - } - - /** - * 设置响应的回调 - * @param string|\Closure $normalizer - * @return Question - */ - public function setNormalizer($normalizer) - { - $this->normalizer = $normalizer; - - return $this; - } - - /** - * 获取响应回调 - * The normalizer can ba a callable (a string), a closure or a class implementing __invoke. - * @return string|\Closure - */ - public function getNormalizer() - { - return $this->normalizer; - } - - protected function isAssoc($array) - { - return (bool) count(array_filter(array_keys($array), 'is_string')); - } -} diff --git a/vendor/topthink/framework/src/think/console/output/descriptor/Console.php b/vendor/topthink/framework/src/think/console/output/descriptor/Console.php deleted file mode 100644 index ff9f4641e..000000000 --- a/vendor/topthink/framework/src/think/console/output/descriptor/Console.php +++ /dev/null @@ -1,153 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\output\descriptor; - -use think\Console as ThinkConsole; -use think\console\Command; - -class Console -{ - - const GLOBAL_NAMESPACE = '_global'; - - /** - * @var ThinkConsole - */ - private $console; - - /** - * @var null|string - */ - private $namespace; - - /** - * @var array - */ - private $namespaces; - - /** - * @var Command[] - */ - private $commands; - - /** - * @var Command[] - */ - private $aliases; - - /** - * 构造方法 - * @param ThinkConsole $console - * @param string|null $namespace - */ - public function __construct(ThinkConsole $console, $namespace = null) - { - $this->console = $console; - $this->namespace = $namespace; - } - - /** - * @return array - */ - public function getNamespaces(): array - { - if (null === $this->namespaces) { - $this->inspectConsole(); - } - - return $this->namespaces; - } - - /** - * @return Command[] - */ - public function getCommands(): array - { - if (null === $this->commands) { - $this->inspectConsole(); - } - - return $this->commands; - } - - /** - * @param string $name - * @return Command - * @throws \InvalidArgumentException - */ - public function getCommand(string $name): Command - { - if (!isset($this->commands[$name]) && !isset($this->aliases[$name])) { - throw new \InvalidArgumentException(sprintf('Command %s does not exist.', $name)); - } - - return $this->commands[$name] ?? $this->aliases[$name]; - } - - private function inspectConsole(): void - { - $this->commands = []; - $this->namespaces = []; - - $all = $this->console->all($this->namespace ? $this->console->findNamespace($this->namespace) : null); - foreach ($this->sortCommands($all) as $namespace => $commands) { - $names = []; - - /** @var Command $command */ - foreach ($commands as $name => $command) { - if (is_string($command)) { - $command = new $command(); - } - - if (!$command->getName()) { - continue; - } - - if ($command->getName() === $name) { - $this->commands[$name] = $command; - } else { - $this->aliases[$name] = $command; - } - - $names[] = $name; - } - - $this->namespaces[$namespace] = ['id' => $namespace, 'commands' => $names]; - } - } - - /** - * @param array $commands - * @return array - */ - private function sortCommands(array $commands): array - { - $namespacedCommands = []; - foreach ($commands as $name => $command) { - $key = $this->console->extractNamespace($name, 1); - if (!$key) { - $key = self::GLOBAL_NAMESPACE; - } - - $namespacedCommands[$key][$name] = $command; - } - ksort($namespacedCommands); - - foreach ($namespacedCommands as &$commandsSet) { - ksort($commandsSet); - } - // unset reference to keep scope clear - unset($commandsSet); - - return $namespacedCommands; - } -} diff --git a/vendor/topthink/framework/src/think/console/output/driver/Buffer.php b/vendor/topthink/framework/src/think/console/output/driver/Buffer.php deleted file mode 100644 index 576f31ac3..000000000 --- a/vendor/topthink/framework/src/think/console/output/driver/Buffer.php +++ /dev/null @@ -1,52 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\output\driver; - -use think\console\Output; - -class Buffer -{ - /** - * @var string - */ - private $buffer = ''; - - public function __construct(Output $output) - { - // do nothing - } - - public function fetch() - { - $content = $this->buffer; - $this->buffer = ''; - return $content; - } - - public function write($messages, bool $newline = false, int $options = 0) - { - $messages = (array) $messages; - - foreach ($messages as $message) { - $this->buffer .= $message; - } - if ($newline) { - $this->buffer .= "\n"; - } - } - - public function renderException(\Throwable $e) - { - // do nothing - } - -} diff --git a/vendor/topthink/framework/src/think/console/output/driver/Console.php b/vendor/topthink/framework/src/think/console/output/driver/Console.php deleted file mode 100644 index 31bdf1f52..000000000 --- a/vendor/topthink/framework/src/think/console/output/driver/Console.php +++ /dev/null @@ -1,368 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\output\driver; - -use think\console\Output; -use think\console\output\Formatter; - -class Console -{ - - /** @var Resource */ - private $stdout; - - /** @var Formatter */ - private $formatter; - - private $terminalDimensions; - - /** @var Output */ - private $output; - - public function __construct(Output $output) - { - $this->output = $output; - $this->formatter = new Formatter(); - $this->stdout = $this->openOutputStream(); - $decorated = $this->hasColorSupport($this->stdout); - $this->formatter->setDecorated($decorated); - } - - public function setDecorated($decorated) - { - $this->formatter->setDecorated($decorated); - } - - public function write($messages, bool $newline = false, int $type = 0, $stream = null) - { - if (Output::VERBOSITY_QUIET === $this->output->getVerbosity()) { - return; - } - - $messages = (array) $messages; - - foreach ($messages as $message) { - switch ($type) { - case Output::OUTPUT_NORMAL: - $message = $this->formatter->format($message); - break; - case Output::OUTPUT_RAW: - break; - case Output::OUTPUT_PLAIN: - $message = strip_tags($this->formatter->format($message)); - break; - default: - throw new \InvalidArgumentException(sprintf('Unknown output type given (%s)', $type)); - } - - $this->doWrite($message, $newline, $stream); - } - } - - public function renderException(\Throwable $e) - { - $stderr = $this->openErrorStream(); - $decorated = $this->hasColorSupport($stderr); - $this->formatter->setDecorated($decorated); - - do { - $title = sprintf(' [%s] ', get_class($e)); - - $len = $this->stringWidth($title); - - $width = $this->getTerminalWidth() ? $this->getTerminalWidth() - 1 : PHP_INT_MAX; - - if (defined('HHVM_VERSION') && $width > 1 << 31) { - $width = 1 << 31; - } - $lines = []; - foreach (preg_split('/\r?\n/', $e->getMessage()) as $line) { - foreach ($this->splitStringByWidth($line, $width - 4) as $line) { - - $lineLength = $this->stringWidth(preg_replace('/\[[^m]*m/', '', $line)) + 4; - $lines[] = [$line, $lineLength]; - - $len = max($lineLength, $len); - } - } - - $messages = ['', '']; - $messages[] = $emptyLine = sprintf('%s', str_repeat(' ', $len)); - $messages[] = sprintf('%s%s', $title, str_repeat(' ', max(0, $len - $this->stringWidth($title)))); - foreach ($lines as $line) { - $messages[] = sprintf(' %s %s', $line[0], str_repeat(' ', $len - $line[1])); - } - $messages[] = $emptyLine; - $messages[] = ''; - $messages[] = ''; - - $this->write($messages, true, Output::OUTPUT_NORMAL, $stderr); - - if (Output::VERBOSITY_VERBOSE <= $this->output->getVerbosity()) { - $this->write('Exception trace:', true, Output::OUTPUT_NORMAL, $stderr); - - // exception related properties - $trace = $e->getTrace(); - array_unshift($trace, [ - 'function' => '', - 'file' => $e->getFile() !== null ? $e->getFile() : 'n/a', - 'line' => $e->getLine() !== null ? $e->getLine() : 'n/a', - 'args' => [], - ]); - - for ($i = 0, $count = count($trace); $i < $count; ++$i) { - $class = isset($trace[$i]['class']) ? $trace[$i]['class'] : ''; - $type = isset($trace[$i]['type']) ? $trace[$i]['type'] : ''; - $function = $trace[$i]['function']; - $file = isset($trace[$i]['file']) ? $trace[$i]['file'] : 'n/a'; - $line = isset($trace[$i]['line']) ? $trace[$i]['line'] : 'n/a'; - - $this->write(sprintf(' %s%s%s() at %s:%s', $class, $type, $function, $file, $line), true, Output::OUTPUT_NORMAL, $stderr); - } - - $this->write('', true, Output::OUTPUT_NORMAL, $stderr); - $this->write('', true, Output::OUTPUT_NORMAL, $stderr); - } - } while ($e = $e->getPrevious()); - - } - - /** - * 获取终端宽度 - * @return int|null - */ - protected function getTerminalWidth() - { - $dimensions = $this->getTerminalDimensions(); - - return $dimensions[0]; - } - - /** - * 获取终端高度 - * @return int|null - */ - protected function getTerminalHeight() - { - $dimensions = $this->getTerminalDimensions(); - - return $dimensions[1]; - } - - /** - * 获取当前终端的尺寸 - * @return array - */ - public function getTerminalDimensions(): array - { - if ($this->terminalDimensions) { - return $this->terminalDimensions; - } - - if ('\\' === DIRECTORY_SEPARATOR) { - if (preg_match('/^(\d+)x\d+ \(\d+x(\d+)\)$/', trim(getenv('ANSICON')), $matches)) { - return [(int) $matches[1], (int) $matches[2]]; - } - if (preg_match('/^(\d+)x(\d+)$/', $this->getMode(), $matches)) { - return [(int) $matches[1], (int) $matches[2]]; - } - } - - if ($sttyString = $this->getSttyColumns()) { - if (preg_match('/rows.(\d+);.columns.(\d+);/i', $sttyString, $matches)) { - return [(int) $matches[2], (int) $matches[1]]; - } - if (preg_match('/;.(\d+).rows;.(\d+).columns/i', $sttyString, $matches)) { - return [(int) $matches[2], (int) $matches[1]]; - } - } - - return [null, null]; - } - - /** - * 获取stty列数 - * @return string - */ - private function getSttyColumns() - { - if (!function_exists('proc_open')) { - return; - } - - $descriptorspec = [1 => ['pipe', 'w'], 2 => ['pipe', 'w']]; - $process = proc_open('stty -a | grep columns', $descriptorspec, $pipes, null, null, ['suppress_errors' => true]); - if (is_resource($process)) { - $info = stream_get_contents($pipes[1]); - fclose($pipes[1]); - fclose($pipes[2]); - proc_close($process); - - return $info; - } - return; - } - - /** - * 获取终端模式 - * @return string x 或 null - */ - private function getMode() - { - if (!function_exists('proc_open')) { - return; - } - - $descriptorspec = [1 => ['pipe', 'w'], 2 => ['pipe', 'w']]; - $process = proc_open('mode CON', $descriptorspec, $pipes, null, null, ['suppress_errors' => true]); - if (is_resource($process)) { - $info = stream_get_contents($pipes[1]); - fclose($pipes[1]); - fclose($pipes[2]); - proc_close($process); - - if (preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) { - return $matches[2] . 'x' . $matches[1]; - } - } - return; - } - - private function stringWidth(string $string): int - { - if (!function_exists('mb_strwidth')) { - return strlen($string); - } - - if (false === $encoding = mb_detect_encoding($string)) { - return strlen($string); - } - - return mb_strwidth($string, $encoding); - } - - private function splitStringByWidth(string $string, int $width): array - { - if (!function_exists('mb_strwidth')) { - return str_split($string, $width); - } - - if (false === $encoding = mb_detect_encoding($string)) { - return str_split($string, $width); - } - - $utf8String = mb_convert_encoding($string, 'utf8', $encoding); - $lines = []; - $line = ''; - foreach (preg_split('//u', $utf8String) as $char) { - if (mb_strwidth($line . $char, 'utf8') <= $width) { - $line .= $char; - continue; - } - $lines[] = str_pad($line, $width); - $line = $char; - } - if (strlen($line)) { - $lines[] = count($lines) ? str_pad($line, $width) : $line; - } - - mb_convert_variables($encoding, 'utf8', $lines); - - return $lines; - } - - private function isRunningOS400(): bool - { - $checks = [ - function_exists('php_uname') ? php_uname('s') : '', - getenv('OSTYPE'), - PHP_OS, - ]; - return false !== stripos(implode(';', $checks), 'OS400'); - } - - /** - * 当前环境是否支持写入控制台输出到stdout. - * - * @return bool - */ - protected function hasStdoutSupport(): bool - { - return false === $this->isRunningOS400(); - } - - /** - * 当前环境是否支持写入控制台输出到stderr. - * - * @return bool - */ - protected function hasStderrSupport(): bool - { - return false === $this->isRunningOS400(); - } - - /** - * @return resource - */ - private function openOutputStream() - { - if (!$this->hasStdoutSupport()) { - return fopen('php://output', 'w'); - } - return @fopen('php://stdout', 'w') ?: fopen('php://output', 'w'); - } - - /** - * @return resource - */ - private function openErrorStream() - { - return fopen($this->hasStderrSupport() ? 'php://stderr' : 'php://output', 'w'); - } - - /** - * 将消息写入到输出。 - * @param string $message 消息 - * @param bool $newline 是否另起一行 - * @param null $stream - */ - protected function doWrite($message, $newline, $stream = null) - { - if (null === $stream) { - $stream = $this->stdout; - } - if (false === @fwrite($stream, $message . ($newline ? PHP_EOL : ''))) { - throw new \RuntimeException('Unable to write output.'); - } - - fflush($stream); - } - - /** - * 是否支持着色 - * @param $stream - * @return bool - */ - protected function hasColorSupport($stream): bool - { - if (DIRECTORY_SEPARATOR === '\\') { - return - '10.0.10586' === PHP_WINDOWS_VERSION_MAJOR . '.' . PHP_WINDOWS_VERSION_MINOR . '.' . PHP_WINDOWS_VERSION_BUILD - || false !== getenv('ANSICON') - || 'ON' === getenv('ConEmuANSI') - || 'xterm' === getenv('TERM'); - } - - return function_exists('posix_isatty') && @posix_isatty($stream); - } - -} diff --git a/vendor/topthink/framework/src/think/console/output/driver/Nothing.php b/vendor/topthink/framework/src/think/console/output/driver/Nothing.php deleted file mode 100644 index a7cc49e24..000000000 --- a/vendor/topthink/framework/src/think/console/output/driver/Nothing.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\output\driver; - -use think\console\Output; - -class Nothing -{ - - public function __construct(Output $output) - { - // do nothing - } - - public function write($messages, bool $newline = false, int $options = 0) - { - // do nothing - } - - public function renderException(\Throwable $e) - { - // do nothing - } -} diff --git a/vendor/topthink/framework/src/think/console/output/formatter/Stack.php b/vendor/topthink/framework/src/think/console/output/formatter/Stack.php deleted file mode 100644 index 536625991..000000000 --- a/vendor/topthink/framework/src/think/console/output/formatter/Stack.php +++ /dev/null @@ -1,116 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\output\formatter; - -class Stack -{ - - /** - * @var Style[] - */ - private $styles; - - /** - * @var Style - */ - private $emptyStyle; - - /** - * 构造方法 - * @param Style|null $emptyStyle - */ - public function __construct(Style $emptyStyle = null) - { - $this->emptyStyle = $emptyStyle ?: new Style(); - $this->reset(); - } - - /** - * 重置堆栈 - */ - public function reset(): void - { - $this->styles = []; - } - - /** - * 推一个样式进入堆栈 - * @param Style $style - */ - public function push(Style $style): void - { - $this->styles[] = $style; - } - - /** - * 从堆栈中弹出一个样式 - * @param Style|null $style - * @return Style - * @throws \InvalidArgumentException - */ - public function pop(Style $style = null): Style - { - if (empty($this->styles)) { - return $this->emptyStyle; - } - - if (null === $style) { - return array_pop($this->styles); - } - - /** - * @var int $index - * @var Style $stackedStyle - */ - foreach (array_reverse($this->styles, true) as $index => $stackedStyle) { - if ($style->apply('') === $stackedStyle->apply('')) { - $this->styles = array_slice($this->styles, 0, $index); - - return $stackedStyle; - } - } - - throw new \InvalidArgumentException('Incorrectly nested style tag found.'); - } - - /** - * 计算堆栈的当前样式。 - * @return Style - */ - public function getCurrent(): Style - { - if (empty($this->styles)) { - return $this->emptyStyle; - } - - return $this->styles[count($this->styles) - 1]; - } - - /** - * @param Style $emptyStyle - * @return Stack - */ - public function setEmptyStyle(Style $emptyStyle) - { - $this->emptyStyle = $emptyStyle; - - return $this; - } - - /** - * @return Style - */ - public function getEmptyStyle(): Style - { - return $this->emptyStyle; - } -} diff --git a/vendor/topthink/framework/src/think/console/output/formatter/Style.php b/vendor/topthink/framework/src/think/console/output/formatter/Style.php deleted file mode 100644 index 2aae76829..000000000 --- a/vendor/topthink/framework/src/think/console/output/formatter/Style.php +++ /dev/null @@ -1,190 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\output\formatter; - -class Style -{ - protected static $availableForegroundColors = [ - 'black' => ['set' => 30, 'unset' => 39], - 'red' => ['set' => 31, 'unset' => 39], - 'green' => ['set' => 32, 'unset' => 39], - 'yellow' => ['set' => 33, 'unset' => 39], - 'blue' => ['set' => 34, 'unset' => 39], - 'magenta' => ['set' => 35, 'unset' => 39], - 'cyan' => ['set' => 36, 'unset' => 39], - 'white' => ['set' => 37, 'unset' => 39], - ]; - - protected static $availableBackgroundColors = [ - 'black' => ['set' => 40, 'unset' => 49], - 'red' => ['set' => 41, 'unset' => 49], - 'green' => ['set' => 42, 'unset' => 49], - 'yellow' => ['set' => 43, 'unset' => 49], - 'blue' => ['set' => 44, 'unset' => 49], - 'magenta' => ['set' => 45, 'unset' => 49], - 'cyan' => ['set' => 46, 'unset' => 49], - 'white' => ['set' => 47, 'unset' => 49], - ]; - - protected static $availableOptions = [ - 'bold' => ['set' => 1, 'unset' => 22], - 'underscore' => ['set' => 4, 'unset' => 24], - 'blink' => ['set' => 5, 'unset' => 25], - 'reverse' => ['set' => 7, 'unset' => 27], - 'conceal' => ['set' => 8, 'unset' => 28], - ]; - - private $foreground; - private $background; - private $options = []; - - /** - * 初始化输出的样式 - * @param string|null $foreground 字体颜色 - * @param string|null $background 背景色 - * @param array $options 格式 - * @api - */ - public function __construct($foreground = null, $background = null, array $options = []) - { - if (null !== $foreground) { - $this->setForeground($foreground); - } - if (null !== $background) { - $this->setBackground($background); - } - if (count($options)) { - $this->setOptions($options); - } - } - - /** - * 设置字体颜色 - * @param string|null $color 颜色名 - * @throws \InvalidArgumentException - * @api - */ - public function setForeground($color = null) - { - if (null === $color) { - $this->foreground = null; - - return; - } - - if (!isset(static::$availableForegroundColors[$color])) { - throw new \InvalidArgumentException(sprintf('Invalid foreground color specified: "%s". Expected one of (%s)', $color, implode(', ', array_keys(static::$availableForegroundColors)))); - } - - $this->foreground = static::$availableForegroundColors[$color]; - } - - /** - * 设置背景色 - * @param string|null $color 颜色名 - * @throws \InvalidArgumentException - * @api - */ - public function setBackground($color = null) - { - if (null === $color) { - $this->background = null; - - return; - } - - if (!isset(static::$availableBackgroundColors[$color])) { - throw new \InvalidArgumentException(sprintf('Invalid background color specified: "%s". Expected one of (%s)', $color, implode(', ', array_keys(static::$availableBackgroundColors)))); - } - - $this->background = static::$availableBackgroundColors[$color]; - } - - /** - * 设置字体格式 - * @param string $option 格式名 - * @throws \InvalidArgumentException When the option name isn't defined - * @api - */ - public function setOption(string $option): void - { - if (!isset(static::$availableOptions[$option])) { - throw new \InvalidArgumentException(sprintf('Invalid option specified: "%s". Expected one of (%s)', $option, implode(', ', array_keys(static::$availableOptions)))); - } - - if (!in_array(static::$availableOptions[$option], $this->options)) { - $this->options[] = static::$availableOptions[$option]; - } - } - - /** - * 重置字体格式 - * @param string $option 格式名 - * @throws \InvalidArgumentException - */ - public function unsetOption(string $option): void - { - if (!isset(static::$availableOptions[$option])) { - throw new \InvalidArgumentException(sprintf('Invalid option specified: "%s". Expected one of (%s)', $option, implode(', ', array_keys(static::$availableOptions)))); - } - - $pos = array_search(static::$availableOptions[$option], $this->options); - if (false !== $pos) { - unset($this->options[$pos]); - } - } - - /** - * 批量设置字体格式 - * @param array $options - */ - public function setOptions(array $options) - { - $this->options = []; - - foreach ($options as $option) { - $this->setOption($option); - } - } - - /** - * 应用样式到文字 - * @param string $text 文字 - * @return string - */ - public function apply(string $text): string - { - $setCodes = []; - $unsetCodes = []; - - if (null !== $this->foreground) { - $setCodes[] = $this->foreground['set']; - $unsetCodes[] = $this->foreground['unset']; - } - if (null !== $this->background) { - $setCodes[] = $this->background['set']; - $unsetCodes[] = $this->background['unset']; - } - if (count($this->options)) { - foreach ($this->options as $option) { - $setCodes[] = $option['set']; - $unsetCodes[] = $option['unset']; - } - } - - if (0 === count($setCodes)) { - return $text; - } - - return sprintf("\033[%sm%s\033[%sm", implode(';', $setCodes), $text, implode(';', $unsetCodes)); - } -} diff --git a/vendor/topthink/framework/src/think/console/output/question/Choice.php b/vendor/topthink/framework/src/think/console/output/question/Choice.php deleted file mode 100644 index 1da1750cc..000000000 --- a/vendor/topthink/framework/src/think/console/output/question/Choice.php +++ /dev/null @@ -1,163 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\output\question; - -use think\console\output\Question; - -class Choice extends Question -{ - - private $choices; - private $multiselect = false; - private $prompt = ' > '; - private $errorMessage = 'Value "%s" is invalid'; - - /** - * 构造方法 - * @param string $question 问题 - * @param array $choices 选项 - * @param mixed $default 默认答案 - */ - public function __construct($question, array $choices, $default = null) - { - parent::__construct($question, $default); - - $this->choices = $choices; - $this->setValidator($this->getDefaultValidator()); - $this->setAutocompleterValues($choices); - } - - /** - * 可选项 - * @return array - */ - public function getChoices(): array - { - return $this->choices; - } - - /** - * 设置可否多选 - * @param bool $multiselect - * @return self - */ - public function setMultiselect(bool $multiselect) - { - $this->multiselect = $multiselect; - $this->setValidator($this->getDefaultValidator()); - - return $this; - } - - public function isMultiselect(): bool - { - return $this->multiselect; - } - - /** - * 获取提示 - * @return string - */ - public function getPrompt(): string - { - return $this->prompt; - } - - /** - * 设置提示 - * @param string $prompt - * @return self - */ - public function setPrompt(string $prompt) - { - $this->prompt = $prompt; - - return $this; - } - - /** - * 设置错误提示信息 - * @param string $errorMessage - * @return self - */ - public function setErrorMessage(string $errorMessage) - { - $this->errorMessage = $errorMessage; - $this->setValidator($this->getDefaultValidator()); - - return $this; - } - - /** - * 获取默认的验证方法 - * @return callable - */ - private function getDefaultValidator() - { - $choices = $this->choices; - $errorMessage = $this->errorMessage; - $multiselect = $this->multiselect; - $isAssoc = $this->isAssoc($choices); - - return function ($selected) use ($choices, $errorMessage, $multiselect, $isAssoc) { - // Collapse all spaces. - $selectedChoices = str_replace(' ', '', $selected); - - if ($multiselect) { - // Check for a separated comma values - if (!preg_match('/^[a-zA-Z0-9_-]+(?:,[a-zA-Z0-9_-]+)*$/', $selectedChoices, $matches)) { - throw new \InvalidArgumentException(sprintf($errorMessage, $selected)); - } - $selectedChoices = explode(',', $selectedChoices); - } else { - $selectedChoices = [$selected]; - } - - $multiselectChoices = []; - foreach ($selectedChoices as $value) { - $results = []; - foreach ($choices as $key => $choice) { - if ($choice === $value) { - $results[] = $key; - } - } - - if (count($results) > 1) { - throw new \InvalidArgumentException(sprintf('The provided answer is ambiguous. Value should be one of %s.', implode(' or ', $results))); - } - - $result = array_search($value, $choices); - - if (!$isAssoc) { - if (!empty($result)) { - $result = $choices[$result]; - } elseif (isset($choices[$value])) { - $result = $choices[$value]; - } - } elseif (empty($result) && array_key_exists($value, $choices)) { - $result = $value; - } - - if (false === $result) { - throw new \InvalidArgumentException(sprintf($errorMessage, $value)); - } - array_push($multiselectChoices, $result); - } - - if ($multiselect) { - return $multiselectChoices; - } - - return current($multiselectChoices); - }; - } -} diff --git a/vendor/topthink/framework/src/think/console/output/question/Confirmation.php b/vendor/topthink/framework/src/think/console/output/question/Confirmation.php deleted file mode 100644 index bf71b5d6d..000000000 --- a/vendor/topthink/framework/src/think/console/output/question/Confirmation.php +++ /dev/null @@ -1,57 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\console\output\question; - -use think\console\output\Question; - -class Confirmation extends Question -{ - - private $trueAnswerRegex; - - /** - * 构造方法 - * @param string $question 问题 - * @param bool $default 默认答案 - * @param string $trueAnswerRegex 验证正则 - */ - public function __construct(string $question, bool $default = true, string $trueAnswerRegex = '/^y/i') - { - parent::__construct($question, (bool) $default); - - $this->trueAnswerRegex = $trueAnswerRegex; - $this->setNormalizer($this->getDefaultNormalizer()); - } - - /** - * 获取默认的答案回调 - * @return callable - */ - private function getDefaultNormalizer() - { - $default = $this->getDefault(); - $regex = $this->trueAnswerRegex; - - return function ($answer) use ($default, $regex) { - if (is_bool($answer)) { - return $answer; - } - - $answerIsTrue = (bool) preg_match($regex, $answer); - if (false === $default) { - return $answer && $answerIsTrue; - } - - return !$answer || $answerIsTrue; - }; - } -} diff --git a/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php b/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php deleted file mode 100644 index e953f663f..000000000 --- a/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php +++ /dev/null @@ -1,88 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\contract; - -/** - * 缓存驱动接口 - */ -interface CacheHandlerInterface -{ - /** - * 判断缓存 - * @access public - * @param string $name 缓存变量名 - * @return bool - */ - public function has($name); - - /** - * 读取缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $default 默认值 - * @return mixed - */ - public function get($name, $default = null); - - /** - * 写入缓存 - * @access public - * @param string $name 缓存变量名 - * @param mixed $value 存储数据 - * @param integer|\DateTime $expire 有效时间(秒) - * @return bool - */ - public function set($name, $value, $expire = null); - - /** - * 自增缓存(针对数值缓存) - * @access public - * @param string $name 缓存变量名 - * @param int $step 步长 - * @return false|int - */ - public function inc(string $name, int $step = 1); - - /** - * 自减缓存(针对数值缓存) - * @access public - * @param string $name 缓存变量名 - * @param int $step 步长 - * @return false|int - */ - public function dec(string $name, int $step = 1); - - /** - * 删除缓存 - * @access public - * @param string $name 缓存变量名 - * @return bool - */ - public function delete($name); - - /** - * 清除缓存 - * @access public - * @return bool - */ - public function clear(); - - /** - * 删除缓存标签 - * @access public - * @param array $keys 缓存标识列表 - * @return void - */ - public function clearTag(array $keys); - -} diff --git a/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php b/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php deleted file mode 100644 index 896ac29db..000000000 --- a/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\contract; - -/** - * 日志驱动接口 - */ -interface LogHandlerInterface -{ - /** - * 日志写入接口 - * @access public - * @param array $log 日志信息 - * @return bool - */ - public function save(array $log): bool; - -} diff --git a/vendor/topthink/framework/src/think/contract/ModelRelationInterface.php b/vendor/topthink/framework/src/think/contract/ModelRelationInterface.php deleted file mode 100644 index 49cfa75d3..000000000 --- a/vendor/topthink/framework/src/think/contract/ModelRelationInterface.php +++ /dev/null @@ -1,99 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\contract; - -use Closure; -use think\Collection; -use think\db\Query; -use think\Model; - -/** - * 模型关联接口 - */ -interface ModelRelationInterface -{ - /** - * 延迟获取关联数据 - * @access public - * @param array $subRelation 子关联 - * @param Closure $closure 闭包查询条件 - * @return Collection - */ - public function getRelation(array $subRelation = [], Closure $closure = null): Collection; - - /** - * 预载入关联查询 - * @access public - * @param array $resultSet 数据集 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包条件 - * @return void - */ - public function eagerlyResultSet(array &$resultSet, string $relation, array $subRelation, Closure $closure = null): void; - - /** - * 预载入关联查询 - * @access public - * @param Model $result 数据对象 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包条件 - * @return void - */ - public function eagerlyResult(Model $result, string $relation, array $subRelation = [], Closure $closure = null): void; - - /** - * 关联统计 - * @access public - * @param Model $result 模型对象 - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return integer - */ - public function relationCount(Model $result, Closure $closure, string $aggregate = 'count', string $field = '*', string &$name = null); - - /** - * 创建关联统计子查询 - * @access public - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return string - */ - public function getRelationCountQuery(Closure $closure = null, string $aggregate = 'count', string $field = '*', string &$name = null): string; - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $operator 比较操作符 - * @param integer $count 个数 - * @param string $id 关联表的统计字段 - * @param string $joinType JOIN类型 - * @return Query - */ - public function has(string $operator = '>=', int $count = 1, string $id = '*', string $joinType = 'INNER'): Query; - - /** - * 根据关联条件查询当前模型 - * @access public - * @param mixed $where 查询条件(数组或者闭包) - * @param mixed $fields 字段 - * @param string $joinType JOIN类型 - * @return Query - */ - public function hasWhere($where = [], $fields = null, string $joinType = ''): Query; -} diff --git a/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php b/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php deleted file mode 100644 index caed32221..000000000 --- a/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php +++ /dev/null @@ -1,23 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\contract; - -/** - * Session驱动接口 - */ -interface SessionHandlerInterface -{ - public function read(string $sessionId): string; - public function delete(string $sessionId): bool; - public function write(string $sessionId, string $data): bool; -} diff --git a/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php b/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php deleted file mode 100644 index f01820dd4..000000000 --- a/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php +++ /dev/null @@ -1,61 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\contract; - -/** - * 视图驱动接口 - */ -interface TemplateHandlerInterface -{ - /** - * 检测是否存在模板文件 - * @access public - * @param string $template 模板文件或者模板规则 - * @return bool - */ - public function exists(string $template): bool; - - /** - * 渲染模板文件 - * @access public - * @param string $template 模板文件 - * @param array $data 模板变量 - * @return void - */ - public function fetch(string $template, array $data = []): void; - - /** - * 渲染模板内容 - * @access public - * @param string $content 模板内容 - * @param array $data 模板变量 - * @return void - */ - public function display(string $content, array $data = []): void; - - /** - * 配置模板引擎 - * @access private - * @param array $config 参数 - * @return void - */ - public function config(array $config): void; - - /** - * 获取模板引擎配置 - * @access public - * @param string $name 参数名 - * @return void - */ - public function getConfig(string $name); -} diff --git a/vendor/topthink/framework/src/think/event/AppInit.php b/vendor/topthink/framework/src/think/event/AppInit.php deleted file mode 100644 index 83d75e7d4..000000000 --- a/vendor/topthink/framework/src/think/event/AppInit.php +++ /dev/null @@ -1,19 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\event; - -/** - * AppInit事件类 - */ -class AppInit -{} diff --git a/vendor/topthink/framework/src/think/event/HttpEnd.php b/vendor/topthink/framework/src/think/event/HttpEnd.php deleted file mode 100644 index 5296ef175..000000000 --- a/vendor/topthink/framework/src/think/event/HttpEnd.php +++ /dev/null @@ -1,19 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\event; - -/** - * HttpEnd事件类 - */ -class HttpEnd -{} diff --git a/vendor/topthink/framework/src/think/event/HttpRun.php b/vendor/topthink/framework/src/think/event/HttpRun.php deleted file mode 100644 index a9cd7c397..000000000 --- a/vendor/topthink/framework/src/think/event/HttpRun.php +++ /dev/null @@ -1,19 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\event; - -/** - * HttpRun事件类 - */ -class HttpRun -{} diff --git a/vendor/topthink/framework/src/think/event/LogWrite.php b/vendor/topthink/framework/src/think/event/LogWrite.php deleted file mode 100644 index 470e11983..000000000 --- a/vendor/topthink/framework/src/think/event/LogWrite.php +++ /dev/null @@ -1,31 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\event; - -/** - * LogWrite事件类 - */ -class LogWrite -{ - /** @var string */ - public $channel; - - /** @var array */ - public $log; - - public function __construct($channel, $log) - { - $this->channel = $channel; - $this->log = $log; - } -} diff --git a/vendor/topthink/framework/src/think/event/RouteLoaded.php b/vendor/topthink/framework/src/think/event/RouteLoaded.php deleted file mode 100644 index eee1f3ef2..000000000 --- a/vendor/topthink/framework/src/think/event/RouteLoaded.php +++ /dev/null @@ -1,21 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\event; - -/** - * 路由加载完成事件 - */ -class RouteLoaded -{ - -} diff --git a/vendor/topthink/framework/src/think/exception/ClassNotFoundException.php b/vendor/topthink/framework/src/think/exception/ClassNotFoundException.php deleted file mode 100644 index 2fa1f5811..000000000 --- a/vendor/topthink/framework/src/think/exception/ClassNotFoundException.php +++ /dev/null @@ -1,39 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\exception; - -use Psr\Container\NotFoundExceptionInterface; -use RuntimeException; -use Throwable; - -class ClassNotFoundException extends RuntimeException implements NotFoundExceptionInterface -{ - protected $class; - - public function __construct(string $message, string $class = '', Throwable $previous = null) - { - $this->message = $message; - $this->class = $class; - - parent::__construct($message, 0, $previous); - } - - /** - * 获取类名 - * @access public - * @return string - */ - public function getClass() - { - return $this->class; - } -} diff --git a/vendor/topthink/framework/src/think/exception/ErrorException.php b/vendor/topthink/framework/src/think/exception/ErrorException.php deleted file mode 100644 index 54de0fee2..000000000 --- a/vendor/topthink/framework/src/think/exception/ErrorException.php +++ /dev/null @@ -1,57 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\exception; - -use think\Exception; - -/** - * ThinkPHP错误异常 - * 主要用于封装 set_error_handler 和 register_shutdown_function 得到的错误 - * 除开从 think\Exception 继承的功能 - * 其他和PHP系统\ErrorException功能基本一样 - */ -class ErrorException extends Exception -{ - /** - * 用于保存错误级别 - * @var integer - */ - protected $severity; - - /** - * 错误异常构造函数 - * @access public - * @param integer $severity 错误级别 - * @param string $message 错误详细信息 - * @param string $file 出错文件路径 - * @param integer $line 出错行号 - */ - public function __construct(int $severity, string $message, string $file, int $line) - { - $this->severity = $severity; - $this->message = $message; - $this->file = $file; - $this->line = $line; - $this->code = 0; - } - - /** - * 获取错误级别 - * @access public - * @return integer 错误级别 - */ - final public function getSeverity() - { - return $this->severity; - } -} diff --git a/vendor/topthink/framework/src/think/exception/FileException.php b/vendor/topthink/framework/src/think/exception/FileException.php deleted file mode 100644 index 22544728c..000000000 --- a/vendor/topthink/framework/src/think/exception/FileException.php +++ /dev/null @@ -1,17 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\exception; - -class FileException extends \RuntimeException -{ -} diff --git a/vendor/topthink/framework/src/think/exception/FuncNotFoundException.php b/vendor/topthink/framework/src/think/exception/FuncNotFoundException.php deleted file mode 100644 index ee2bcad2e..000000000 --- a/vendor/topthink/framework/src/think/exception/FuncNotFoundException.php +++ /dev/null @@ -1,30 +0,0 @@ -message = $message; - $this->func = $func; - - parent::__construct($message, 0, $previous); - } - - /** - * 获取方法名 - * @access public - * @return string - */ - public function getFunc() - { - return $this->func; - } -} diff --git a/vendor/topthink/framework/src/think/exception/Handle.php b/vendor/topthink/framework/src/think/exception/Handle.php deleted file mode 100644 index 1725a7227..000000000 --- a/vendor/topthink/framework/src/think/exception/Handle.php +++ /dev/null @@ -1,323 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\exception; - -use Exception; -use think\App; -use think\console\Output; -use think\db\exception\DataNotFoundException; -use think\db\exception\ModelNotFoundException; -use think\Request; -use think\Response; -use Throwable; - -/** - * 系统异常处理类 - */ -class Handle -{ - /** @var App */ - protected $app; - - protected $ignoreReport = [ - HttpException::class, - HttpResponseException::class, - ModelNotFoundException::class, - DataNotFoundException::class, - ValidateException::class, - ]; - - protected $isJson = false; - - public function __construct(App $app) - { - $this->app = $app; - } - - /** - * Report or log an exception. - * - * @access public - * @param Throwable $exception - * @return void - */ - public function report(Throwable $exception): void - { - if (!$this->isIgnoreReport($exception)) { - // 收集异常数据 - if ($this->app->isDebug()) { - $data = [ - 'file' => $exception->getFile(), - 'line' => $exception->getLine(), - 'message' => $this->getMessage($exception), - 'code' => $this->getCode($exception), - ]; - $log = "[{$data['code']}]{$data['message']}[{$data['file']}:{$data['line']}]"; - } else { - $data = [ - 'code' => $this->getCode($exception), - 'message' => $this->getMessage($exception), - ]; - $log = "[{$data['code']}]{$data['message']}"; - } - - if ($this->app->config->get('log.record_trace')) { - $log .= PHP_EOL . $exception->getTraceAsString(); - } - - $this->app->log->record($log, 'error'); - } - } - - protected function isIgnoreReport(Throwable $exception): bool - { - foreach ($this->ignoreReport as $class) { - if ($exception instanceof $class) { - return true; - } - } - - return false; - } - - /** - * Render an exception into an HTTP response. - * - * @access public - * @param Request $request - * @param Throwable $e - * @return Response - */ - public function render($request, Throwable $e): Response - { - $this->isJson = $request->isJson(); - if ($e instanceof HttpResponseException) { - return $e->getResponse(); - } elseif ($e instanceof HttpException) { - return $this->renderHttpException($e); - } else { - return $this->convertExceptionToResponse($e); - } - } - - /** - * @access public - * @param Output $output - * @param Throwable $e - */ - public function renderForConsole(Output $output, Throwable $e): void - { - if ($this->app->isDebug()) { - $output->setVerbosity(Output::VERBOSITY_DEBUG); - } - - $output->renderException($e); - } - - /** - * @access protected - * @param HttpException $e - * @return Response - */ - protected function renderHttpException(HttpException $e): Response - { - $status = $e->getStatusCode(); - $template = $this->app->config->get('app.http_exception_template'); - - if (!$this->app->isDebug() && !empty($template[$status])) { - return Response::create($template[$status], 'view', $status)->assign(['e' => $e]); - } else { - return $this->convertExceptionToResponse($e); - } - } - - /** - * 收集异常数据 - * @param Throwable $exception - * @return array - */ - protected function convertExceptionToArray(Throwable $exception): array - { - if ($this->app->isDebug()) { - // 调试模式,获取详细的错误信息 - $data = [ - 'name' => get_class($exception), - 'file' => $exception->getFile(), - 'line' => $exception->getLine(), - 'message' => $this->getMessage($exception), - 'trace' => $exception->getTrace(), - 'code' => $this->getCode($exception), - 'source' => $this->getSourceCode($exception), - 'datas' => $this->getExtendData($exception), - 'tables' => [ - 'GET Data' => $this->app->request->get(), - 'POST Data' => $this->app->request->post(), - 'Files' => $this->app->request->file(), - 'Cookies' => $this->app->request->cookie(), - 'Session' => $this->app->session->all(), - 'Server/Request Data' => $this->app->request->server(), - 'Environment Variables' => $this->app->request->env(), - 'ThinkPHP Constants' => $this->getConst(), - ], - ]; - } else { - // 部署模式仅显示 Code 和 Message - $data = [ - 'code' => $this->getCode($exception), - 'message' => $this->getMessage($exception), - ]; - - if (!$this->app->config->get('app.show_error_msg')) { - // 不显示详细错误信息 - $data['message'] = $this->app->config->get('app.error_message'); - } - } - - return $data; - } - - /** - * @access protected - * @param Throwable $exception - * @return Response - */ - protected function convertExceptionToResponse(Throwable $exception): Response - { - if (!$this->isJson) { - $response = Response::create($this->renderExceptionContent($exception)); - } else { - $response = Response::create($this->convertExceptionToArray($exception), 'json'); - } - - if ($exception instanceof HttpException) { - $statusCode = $exception->getStatusCode(); - $response->header($exception->getHeaders()); - } - - return $response->code($statusCode ?? 500); - } - - protected function renderExceptionContent(Throwable $exception): string - { - ob_start(); - $data = $this->convertExceptionToArray($exception); - extract($data); - include $this->app->config->get('app.exception_tmpl') ?: __DIR__ . '/../../tpl/think_exception.tpl'; - - return ob_get_clean(); - } - - /** - * 获取错误编码 - * ErrorException则使用错误级别作为错误编码 - * @access protected - * @param Throwable $exception - * @return integer 错误编码 - */ - protected function getCode(Throwable $exception) - { - $code = $exception->getCode(); - - if (!$code && $exception instanceof ErrorException) { - $code = $exception->getSeverity(); - } - - return $code; - } - - /** - * 获取错误信息 - * ErrorException则使用错误级别作为错误编码 - * @access protected - * @param Throwable $exception - * @return string 错误信息 - */ - protected function getMessage(Throwable $exception): string - { - $message = $exception->getMessage(); - - if ($this->app->runningInConsole()) { - return $message; - } - - $lang = $this->app->lang; - - if (strpos($message, ':')) { - $name = strstr($message, ':', true); - $message = $lang->has($name) ? $lang->get($name) . strstr($message, ':') : $message; - } elseif (strpos($message, ',')) { - $name = strstr($message, ',', true); - $message = $lang->has($name) ? $lang->get($name) . ':' . substr(strstr($message, ','), 1) : $message; - } elseif ($lang->has($message)) { - $message = $lang->get($message); - } - - return $message; - } - - /** - * 获取出错文件内容 - * 获取错误的前9行和后9行 - * @access protected - * @param Throwable $exception - * @return array 错误文件内容 - */ - protected function getSourceCode(Throwable $exception): array - { - // 读取前9行和后9行 - $line = $exception->getLine(); - $first = ($line - 9 > 0) ? $line - 9 : 1; - - try { - $contents = file($exception->getFile()) ?: []; - $source = [ - 'first' => $first, - 'source' => array_slice($contents, $first - 1, 19), - ]; - } catch (Exception $e) { - $source = []; - } - - return $source; - } - - /** - * 获取异常扩展信息 - * 用于非调试模式html返回类型显示 - * @access protected - * @param Throwable $exception - * @return array 异常类定义的扩展数据 - */ - protected function getExtendData(Throwable $exception): array - { - $data = []; - - if ($exception instanceof \think\Exception) { - $data = $exception->getData(); - } - - return $data; - } - - /** - * 获取常量列表 - * @access protected - * @return array 常量列表 - */ - protected function getConst(): array - { - $const = get_defined_constants(true); - - return $const['user'] ?? []; - } -} diff --git a/vendor/topthink/framework/src/think/exception/HttpException.php b/vendor/topthink/framework/src/think/exception/HttpException.php deleted file mode 100644 index 74fabfc69..000000000 --- a/vendor/topthink/framework/src/think/exception/HttpException.php +++ /dev/null @@ -1,42 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\exception; - -use Exception; - -/** - * HTTP异常 - */ -class HttpException extends \RuntimeException -{ - private $statusCode; - private $headers; - - public function __construct(int $statusCode, string $message = '', Exception $previous = null, array $headers = [], $code = 0) - { - $this->statusCode = $statusCode; - $this->headers = $headers; - - parent::__construct($message, $code, $previous); - } - - public function getStatusCode() - { - return $this->statusCode; - } - - public function getHeaders() - { - return $this->headers; - } -} diff --git a/vendor/topthink/framework/src/think/exception/HttpResponseException.php b/vendor/topthink/framework/src/think/exception/HttpResponseException.php deleted file mode 100644 index 759254c1f..000000000 --- a/vendor/topthink/framework/src/think/exception/HttpResponseException.php +++ /dev/null @@ -1,37 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\exception; - -use think\Response; - -/** - * HTTP响应异常 - */ -class HttpResponseException extends \RuntimeException -{ - /** - * @var Response - */ - protected $response; - - public function __construct(Response $response) - { - $this->response = $response; - } - - public function getResponse() - { - return $this->response; - } - -} diff --git a/vendor/topthink/framework/src/think/exception/InvalidArgumentException.php b/vendor/topthink/framework/src/think/exception/InvalidArgumentException.php deleted file mode 100644 index d317278b5..000000000 --- a/vendor/topthink/framework/src/think/exception/InvalidArgumentException.php +++ /dev/null @@ -1,22 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); -namespace think\exception; - -use Psr\Cache\InvalidArgumentException as Psr6CacheInvalidArgumentInterface; -use Psr\SimpleCache\InvalidArgumentException as SimpleCacheInvalidArgumentInterface; - -/** - * 非法数据异常 - */ -class InvalidArgumentException extends \InvalidArgumentException implements Psr6CacheInvalidArgumentInterface, SimpleCacheInvalidArgumentInterface -{ -} diff --git a/vendor/topthink/framework/src/think/exception/RouteNotFoundException.php b/vendor/topthink/framework/src/think/exception/RouteNotFoundException.php deleted file mode 100644 index f50dff678..000000000 --- a/vendor/topthink/framework/src/think/exception/RouteNotFoundException.php +++ /dev/null @@ -1,26 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\exception; - -/** - * 路由未定义异常 - */ -class RouteNotFoundException extends HttpException -{ - - public function __construct() - { - parent::__construct(404, 'Route Not Found'); - } - -} diff --git a/vendor/topthink/framework/src/think/exception/ValidateException.php b/vendor/topthink/framework/src/think/exception/ValidateException.php deleted file mode 100644 index cc79e1912..000000000 --- a/vendor/topthink/framework/src/think/exception/ValidateException.php +++ /dev/null @@ -1,37 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\exception; - -/** - * 数据验证异常 - */ -class ValidateException extends \RuntimeException -{ - protected $error; - - public function __construct($error) - { - $this->error = $error; - $this->message = is_array($error) ? implode(PHP_EOL, $error) : $error; - } - - /** - * 获取验证错误信息 - * @access public - * @return array|string - */ - public function getError() - { - return $this->error; - } -} diff --git a/vendor/topthink/framework/src/think/facade/App.php b/vendor/topthink/framework/src/think/facade/App.php deleted file mode 100644 index 4f64d9612..000000000 --- a/vendor/topthink/framework/src/think/facade/App.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\App - * @package think\facade - * @mixin \think\App - */ -class App extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'app'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Cache.php b/vendor/topthink/framework/src/think/facade/Cache.php deleted file mode 100644 index 62391b734..000000000 --- a/vendor/topthink/framework/src/think/facade/Cache.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\Cache - * @package think\facade - * @mixin \think\Cache - */ -class Cache extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'cache'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Config.php b/vendor/topthink/framework/src/think/facade/Config.php deleted file mode 100644 index 93916e45e..000000000 --- a/vendor/topthink/framework/src/think/facade/Config.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\Config - * @package think\facade - * @mixin \think\Config - */ -class Config extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'config'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Console.php b/vendor/topthink/framework/src/think/facade/Console.php deleted file mode 100644 index f3f92394b..000000000 --- a/vendor/topthink/framework/src/think/facade/Console.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * Class Console - * @package think\facade - * @mixin \think\Console - */ -class Console extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'console'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Cookie.php b/vendor/topthink/framework/src/think/facade/Cookie.php deleted file mode 100644 index 98aa6c2d5..000000000 --- a/vendor/topthink/framework/src/think/facade/Cookie.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\Cookie - * @package think\facade - * @mixin \think\Cookie - */ -class Cookie extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'cookie'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Env.php b/vendor/topthink/framework/src/think/facade/Env.php deleted file mode 100644 index 5452e9088..000000000 --- a/vendor/topthink/framework/src/think/facade/Env.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\Env - * @package think\facade - * @mixin \think\Env - */ -class Env extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'env'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Event.php b/vendor/topthink/framework/src/think/facade/Event.php deleted file mode 100644 index 09344526d..000000000 --- a/vendor/topthink/framework/src/think/facade/Event.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\Event - * @package think\facade - * @mixin \think\Event - */ -class Event extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'event'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Filesystem.php b/vendor/topthink/framework/src/think/facade/Filesystem.php deleted file mode 100644 index 6fe4d5a72..000000000 --- a/vendor/topthink/framework/src/think/facade/Filesystem.php +++ /dev/null @@ -1,28 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * Class Filesystem - * @package think\facade - * @mixin \think\Filesystem - */ -class Filesystem extends Facade -{ - protected static function getFacadeClass() - { - return 'filesystem'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Lang.php b/vendor/topthink/framework/src/think/facade/Lang.php deleted file mode 100644 index 1085c159f..000000000 --- a/vendor/topthink/framework/src/think/facade/Lang.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\Lang - * @package think\facade - * @mixin \think\Lang - */ -class Lang extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'lang'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Log.php b/vendor/topthink/framework/src/think/facade/Log.php deleted file mode 100644 index e92a5dc6b..000000000 --- a/vendor/topthink/framework/src/think/facade/Log.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\Log - * @package think\facade - * @mixin \think\Log - */ -class Log extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'log'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Middleware.php b/vendor/topthink/framework/src/think/facade/Middleware.php deleted file mode 100644 index 8a9cc36a0..000000000 --- a/vendor/topthink/framework/src/think/facade/Middleware.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\Middleware - * @package think\facade - * @mixin \think\Middleware - */ -class Middleware extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'middleware'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Request.php b/vendor/topthink/framework/src/think/facade/Request.php deleted file mode 100644 index 8bf5fc230..000000000 --- a/vendor/topthink/framework/src/think/facade/Request.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\Request - * @package think\facade - * @mixin \think\Request - */ -class Request extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'request'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Route.php b/vendor/topthink/framework/src/think/facade/Route.php deleted file mode 100644 index 5fd5e4097..000000000 --- a/vendor/topthink/framework/src/think/facade/Route.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\Route - * @package think\facade - * @mixin \think\Route - */ -class Route extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'route'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Session.php b/vendor/topthink/framework/src/think/facade/Session.php deleted file mode 100644 index 4bcb6e80c..000000000 --- a/vendor/topthink/framework/src/think/facade/Session.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\Session - * @package think\facade - * @mixin \think\Session - */ -class Session extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'session'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/Validate.php b/vendor/topthink/framework/src/think/facade/Validate.php deleted file mode 100644 index 0d6a34e2c..000000000 --- a/vendor/topthink/framework/src/think/facade/Validate.php +++ /dev/null @@ -1,39 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\Validate - * @package think\facade - * @mixin \think\Validate - */ -class Validate extends Facade -{ - /** - * 始终创建新的对象实例 - * @var bool - */ - protected static $alwaysNewInstance = true; - - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'validate'; - } -} diff --git a/vendor/topthink/framework/src/think/facade/View.php b/vendor/topthink/framework/src/think/facade/View.php deleted file mode 100644 index 0fecb15f7..000000000 --- a/vendor/topthink/framework/src/think/facade/View.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\facade; - -use think\Facade; - -/** - * @see \think\View - * @package think\facade - * @mixin \think\View - */ -class View extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'view'; - } -} diff --git a/vendor/topthink/framework/src/think/file/UploadedFile.php b/vendor/topthink/framework/src/think/file/UploadedFile.php deleted file mode 100644 index 7810eac1a..000000000 --- a/vendor/topthink/framework/src/think/file/UploadedFile.php +++ /dev/null @@ -1,143 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\file; - -use think\exception\FileException; -use think\File; - -class UploadedFile extends File -{ - - private $test = false; - private $originalName; - private $mimeType; - private $error; - - public function __construct(string $path, string $originalName, string $mimeType = null, int $error = null, bool $test = false) - { - $this->originalName = $originalName; - $this->mimeType = $mimeType ?: 'application/octet-stream'; - $this->test = $test; - $this->error = $error ?: UPLOAD_ERR_OK; - - parent::__construct($path, UPLOAD_ERR_OK === $this->error); - } - - public function isValid(): bool - { - $isOk = UPLOAD_ERR_OK === $this->error; - - return $this->test ? $isOk : $isOk && is_uploaded_file($this->getPathname()); - } - - /** - * 上传文件 - * @access public - * @param string $directory 保存路径 - * @param string|null $name 保存的文件名 - * @return File - */ - public function move(string $directory, string $name = null): File - { - if ($this->isValid()) { - if ($this->test) { - return parent::move($directory, $name); - } - - $target = $this->getTargetFile($directory, $name); - - set_error_handler(function ($type, $msg) use (&$error) { - $error = $msg; - }); - - $moved = move_uploaded_file($this->getPathname(), $target); - restore_error_handler(); - if (!$moved) { - throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s)', $this->getPathname(), $target, strip_tags($error))); - } - - @chmod($target, 0666 & ~umask()); - - return $target; - } - - throw new FileException($this->getErrorMessage()); - } - - /** - * 获取错误信息 - * @access public - * @return string - */ - protected function getErrorMessage(): string - { - switch ($this->error) { - case 1: - case 2: - $message = 'upload File size exceeds the maximum value'; - break; - case 3: - $message = 'only the portion of file is uploaded'; - break; - case 4: - $message = 'no file to uploaded'; - break; - case 6: - $message = 'upload temp dir not found'; - break; - case 7: - $message = 'file write error'; - break; - default: - $message = 'unknown upload error'; - } - - return $message; - } - - /** - * 获取上传文件类型信息 - * @return string - */ - public function getOriginalMime(): string - { - return $this->mimeType; - } - - /** - * 上传文件名 - * @return string - */ - public function getOriginalName(): string - { - return $this->originalName; - } - - /** - * 获取上传文件扩展名 - * @return string - */ - public function getOriginalExtension(): string - { - return pathinfo($this->originalName, PATHINFO_EXTENSION); - } - - /** - * 获取文件扩展名 - * @return string - */ - public function extension(): string - { - return $this->getOriginalExtension(); - } -} diff --git a/vendor/topthink/framework/src/think/filesystem/CacheStore.php b/vendor/topthink/framework/src/think/filesystem/CacheStore.php deleted file mode 100644 index 46659ba7b..000000000 --- a/vendor/topthink/framework/src/think/filesystem/CacheStore.php +++ /dev/null @@ -1,54 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\filesystem; - -use League\Flysystem\Cached\Storage\AbstractCache; -use Psr\SimpleCache\CacheInterface; - -class CacheStore extends AbstractCache -{ - protected $store; - - protected $key; - - protected $expire; - - public function __construct(CacheInterface $store, $key = 'flysystem', $expire = null) - { - $this->key = $key; - $this->store = $store; - $this->expire = $expire; - } - - /** - * Store the cache. - */ - public function save() - { - $contents = $this->getForStorage(); - - $this->store->set($this->key, $contents, $this->expire); - } - - /** - * Load the cache. - */ - public function load() - { - $contents = $this->store->get($this->key); - - if (!is_null($contents)) { - $this->setFromStorage($contents); - } - } -} diff --git a/vendor/topthink/framework/src/think/filesystem/Driver.php b/vendor/topthink/framework/src/think/filesystem/Driver.php deleted file mode 100644 index 26826adf8..000000000 --- a/vendor/topthink/framework/src/think/filesystem/Driver.php +++ /dev/null @@ -1,133 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\filesystem; - -use League\Flysystem\AdapterInterface; -use League\Flysystem\Adapter\AbstractAdapter; -use League\Flysystem\Cached\CachedAdapter; -use League\Flysystem\Cached\Storage\Memory as MemoryStore; -use League\Flysystem\Filesystem; -use think\Cache; -use think\File; - -/** - * Class Driver - * @package think\filesystem - * @mixin Filesystem - */ -abstract class Driver -{ - - /** @var Cache */ - protected $cache; - - /** @var Filesystem */ - protected $filesystem; - - /** - * 配置参数 - * @var array - */ - protected $config = []; - - public function __construct(Cache $cache, array $config) - { - $this->cache = $cache; - $this->config = array_merge($this->config, $config); - - $adapter = $this->createAdapter(); - $this->filesystem = $this->createFilesystem($adapter); - } - - protected function createCacheStore($config) - { - if (true === $config) { - return new MemoryStore; - } - - return new CacheStore( - $this->cache->store($config['store']), - $config['prefix'] ?? 'flysystem', - $config['expire'] ?? null - ); - } - - abstract protected function createAdapter(): AdapterInterface; - - protected function createFilesystem(AdapterInterface $adapter): Filesystem - { - if (!empty($this->config['cache'])) { - $adapter = new CachedAdapter($adapter, $this->createCacheStore($this->config['cache'])); - } - - $config = array_intersect_key($this->config, array_flip(['visibility', 'disable_asserts', 'url'])); - - return new Filesystem($adapter, count($config) > 0 ? $config : null); - } - - /** - * 获取文件完整路径 - * @param string $path - * @return string - */ - public function path(string $path): string - { - $adapter = $this->filesystem->getAdapter(); - - if ($adapter instanceof AbstractAdapter) { - return $adapter->applyPathPrefix($path); - } - - return $path; - } - - /** - * 保存文件 - * @param string $path 路径 - * @param File $file 文件 - * @param null|string|\Closure $rule 文件名规则 - * @param array $options 参数 - * @return bool|string - */ - public function putFile(string $path, File $file, $rule = null, array $options = []) - { - return $this->putFileAs($path, $file, $file->hashName($rule), $options); - } - - /** - * 指定文件名保存文件 - * @param string $path 路径 - * @param File $file 文件 - * @param string $name 文件名 - * @param array $options 参数 - * @return bool|string - */ - public function putFileAs(string $path, File $file, string $name, array $options = []) - { - $stream = fopen($file->getRealPath(), 'r'); - $path = trim($path . '/' . $name, '/'); - - $result = $this->putStream($path, $stream, $options); - - if (is_resource($stream)) { - fclose($stream); - } - - return $result ? $path : false; - } - - public function __call($method, $parameters) - { - return $this->filesystem->$method(...$parameters); - } -} diff --git a/vendor/topthink/framework/src/think/filesystem/driver/Local.php b/vendor/topthink/framework/src/think/filesystem/driver/Local.php deleted file mode 100644 index 60aa71c4c..000000000 --- a/vendor/topthink/framework/src/think/filesystem/driver/Local.php +++ /dev/null @@ -1,41 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\filesystem\driver; - -use League\Flysystem\AdapterInterface; -use League\Flysystem\Adapter\Local as LocalAdapter; -use think\filesystem\Driver; - -class Local extends Driver -{ - /** - * 配置参数 - * @var array - */ - protected $config = [ - 'root' => '', - ]; - - protected function createAdapter(): AdapterInterface - { - $permissions = $this->config['permissions'] ?? []; - - $links = ($this->config['links'] ?? null) === 'skip' - ? LocalAdapter::SKIP_LINKS - : LocalAdapter::DISALLOW_LINKS; - - return new LocalAdapter( - $this->config['root'], LOCK_EX, $links, $permissions - ); - } -} diff --git a/vendor/topthink/framework/src/think/initializer/BootService.php b/vendor/topthink/framework/src/think/initializer/BootService.php deleted file mode 100644 index ef9b25e52..000000000 --- a/vendor/topthink/framework/src/think/initializer/BootService.php +++ /dev/null @@ -1,26 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\initializer; - -use think\App; - -/** - * 启动系统服务 - */ -class BootService -{ - public function init(App $app) - { - $app->boot(); - } -} diff --git a/vendor/topthink/framework/src/think/initializer/Error.php b/vendor/topthink/framework/src/think/initializer/Error.php deleted file mode 100644 index 27fef6455..000000000 --- a/vendor/topthink/framework/src/think/initializer/Error.php +++ /dev/null @@ -1,117 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\initializer; - -use think\App; -use think\console\Output as ConsoleOutput; -use think\exception\ErrorException; -use think\exception\Handle; -use Throwable; - -/** - * 错误和异常处理 - */ -class Error -{ - /** @var App */ - protected $app; - - /** - * 注册异常处理 - * @access public - * @param App $app - * @return void - */ - public function init(App $app) - { - $this->app = $app; - error_reporting(E_ALL); - set_error_handler([$this, 'appError']); - set_exception_handler([$this, 'appException']); - register_shutdown_function([$this, 'appShutdown']); - } - - /** - * Exception Handler - * @access public - * @param \Throwable $e - */ - public function appException(Throwable $e): void - { - $handler = $this->getExceptionHandler(); - - $handler->report($e); - - if ($this->app->runningInConsole()) { - $handler->renderForConsole(new ConsoleOutput, $e); - } else { - $handler->render($this->app->request, $e)->send(); - } - } - - /** - * Error Handler - * @access public - * @param integer $errno 错误编号 - * @param string $errstr 详细错误信息 - * @param string $errfile 出错的文件 - * @param integer $errline 出错行号 - * @throws ErrorException - */ - public function appError(int $errno, string $errstr, string $errfile = '', int $errline = 0): void - { - $exception = new ErrorException($errno, $errstr, $errfile, $errline); - - if (error_reporting() & $errno) { - // 将错误信息托管至 think\exception\ErrorException - throw $exception; - } - } - - /** - * Shutdown Handler - * @access public - */ - public function appShutdown(): void - { - if (!is_null($error = error_get_last()) && $this->isFatal($error['type'])) { - // 将错误信息托管至think\ErrorException - $exception = new ErrorException($error['type'], $error['message'], $error['file'], $error['line']); - - $this->appException($exception); - } - } - - /** - * 确定错误类型是否致命 - * - * @access protected - * @param int $type - * @return bool - */ - protected function isFatal(int $type): bool - { - return in_array($type, [E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE]); - } - - /** - * Get an instance of the exception handler. - * - * @access protected - * @return Handle - */ - protected function getExceptionHandler() - { - return $this->app->make(Handle::class); - } -} diff --git a/vendor/topthink/framework/src/think/initializer/RegisterService.php b/vendor/topthink/framework/src/think/initializer/RegisterService.php deleted file mode 100644 index c63ab355f..000000000 --- a/vendor/topthink/framework/src/think/initializer/RegisterService.php +++ /dev/null @@ -1,48 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\initializer; - -use think\App; -use think\service\ModelService; -use think\service\PaginatorService; -use think\service\ValidateService; - -/** - * 注册系统服务 - */ -class RegisterService -{ - - protected $services = [ - PaginatorService::class, - ValidateService::class, - ModelService::class, - ]; - - public function init(App $app) - { - $file = $app->getRootPath() . 'vendor/services.php'; - - $services = $this->services; - - if (is_file($file)) { - $services = array_merge($services, include $file); - } - - foreach ($services as $service) { - if (class_exists($service)) { - $app->register($service); - } - } - } -} diff --git a/vendor/topthink/framework/src/think/log/Channel.php b/vendor/topthink/framework/src/think/log/Channel.php deleted file mode 100644 index 2660a6034..000000000 --- a/vendor/topthink/framework/src/think/log/Channel.php +++ /dev/null @@ -1,282 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\log; - -use Psr\Log\LoggerInterface; -use think\contract\LogHandlerInterface; -use think\Event; -use think\event\LogWrite; - -class Channel implements LoggerInterface -{ - protected $name; - protected $logger; - protected $event; - - protected $lazy = true; - /** - * 日志信息 - * @var array - */ - protected $log = []; - - /** - * 关闭日志 - * @var array - */ - protected $close = false; - - /** - * 允许写入类型 - * @var array - */ - protected $allow = []; - - public function __construct(string $name, LogHandlerInterface $logger, array $allow, bool $lazy = true, Event $event = null) - { - $this->name = $name; - $this->logger = $logger; - $this->allow = $allow; - $this->lazy = $lazy; - $this->event = $event; - } - - /** - * 关闭通道 - */ - public function close() - { - $this->clear(); - $this->close = true; - } - - /** - * 清空日志 - */ - public function clear() - { - $this->log = []; - } - - /** - * 记录日志信息 - * @access public - * @param mixed $msg 日志信息 - * @param string $type 日志级别 - * @param array $context 替换内容 - * @param bool $lazy - * @return $this - */ - public function record($msg, string $type = 'info', array $context = [], bool $lazy = true) - { - if ($this->close || (!empty($this->allow) && !in_array($type, $this->allow))) { - return $this; - } - - if (is_string($msg) && !empty($context)) { - $replace = []; - foreach ($context as $key => $val) { - $replace['{' . $key . '}'] = $val; - } - - $msg = strtr($msg, $replace); - } - - if (!empty($msg) || 0 === $msg) { - $this->log[$type][] = $msg; - } - - if (!$this->lazy || !$lazy) { - $this->save(); - } - - return $this; - } - - /** - * 实时写入日志信息 - * @access public - * @param mixed $msg 调试信息 - * @param string $type 日志级别 - * @param array $context 替换内容 - * @return $this - */ - public function write($msg, string $type = 'info', array $context = []) - { - return $this->record($msg, $type, $context, false); - } - - /** - * 获取日志信息 - * @return array - */ - public function getLog(): array - { - return $this->log; - } - - /** - * 保存日志 - * @return bool - */ - public function save(): bool - { - $log = $this->log; - if ($this->event) { - $event = new LogWrite($this->name, $log); - $this->event->trigger($event); - $log = $event->log; - } - - if ($this->logger->save($log)) { - $this->clear(); - return true; - } - - return false; - } - - /** - * System is unusable. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function emergency($message, array $context = []) - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function alert($message, array $context = []) - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function critical($message, array $context = []) - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function error($message, array $context = []) - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function warning($message, array $context = []) - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * Normal but significant events. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function notice($message, array $context = []) - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function info($message, array $context = []) - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * Detailed debug information. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function debug($message, array $context = []) - { - $this->log(__FUNCTION__, $message, $context); - } - - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param array $context - * - * @return void - */ - public function log($level, $message, array $context = []) - { - $this->record($message, $level, $context); - } - - public function __call($method, $parameters) - { - $this->log($method, ...$parameters); - } -} diff --git a/vendor/topthink/framework/src/think/log/ChannelSet.php b/vendor/topthink/framework/src/think/log/ChannelSet.php deleted file mode 100644 index e38811c00..000000000 --- a/vendor/topthink/framework/src/think/log/ChannelSet.php +++ /dev/null @@ -1,39 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\log; - -use think\Log; - -/** - * Class ChannelSet - * @package think\log - * @mixin Channel - */ -class ChannelSet -{ - protected $log; - protected $channels; - - public function __construct(Log $log, array $channels) - { - $this->log = $log; - $this->channels = $channels; - } - - public function __call($method, $arguments) - { - foreach ($this->channels as $channel) { - $this->log->channel($channel)->{$method}(...$arguments); - } - } -} diff --git a/vendor/topthink/framework/src/think/log/driver/File.php b/vendor/topthink/framework/src/think/log/driver/File.php deleted file mode 100644 index 1b6314da3..000000000 --- a/vendor/topthink/framework/src/think/log/driver/File.php +++ /dev/null @@ -1,205 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\log\driver; - -use think\App; -use think\contract\LogHandlerInterface; - -/** - * 本地化调试输出到文件 - */ -class File implements LogHandlerInterface -{ - /** - * 配置参数 - * @var array - */ - protected $config = [ - 'time_format' => 'c', - 'single' => false, - 'file_size' => 2097152, - 'path' => '', - 'apart_level' => [], - 'max_files' => 0, - 'json' => false, - 'json_options' => JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES, - 'format' => '[%s][%s] %s', - ]; - - // 实例化并传入参数 - public function __construct(App $app, $config = []) - { - if (is_array($config)) { - $this->config = array_merge($this->config, $config); - } - - if (empty($this->config['format'])) { - $this->config['format'] = '[%s][%s] %s'; - } - - if (empty($this->config['path'])) { - $this->config['path'] = $app->getRuntimePath() . 'log'; - } - - if (substr($this->config['path'], -1) != DIRECTORY_SEPARATOR) { - $this->config['path'] .= DIRECTORY_SEPARATOR; - } - } - - /** - * 日志写入接口 - * @access public - * @param array $log 日志信息 - * @return bool - */ - public function save(array $log): bool - { - $destination = $this->getMasterLogFile(); - - $path = dirname($destination); - !is_dir($path) && mkdir($path, 0755, true); - - $info = []; - - // 日志信息封装 - $time = date($this->config['time_format']); - - foreach ($log as $type => $val) { - $message = []; - foreach ($val as $msg) { - if (!is_string($msg)) { - $msg = var_export($msg, true); - } - - $message[] = $this->config['json'] ? - json_encode(['time' => $time, 'type' => $type, 'msg' => $msg], $this->config['json_options']) : - sprintf($this->config['format'], $time, $type, $msg); - } - - if (true === $this->config['apart_level'] || in_array($type, $this->config['apart_level'])) { - // 独立记录的日志级别 - $filename = $this->getApartLevelFile($path, $type); - $this->write($message, $filename); - continue; - } - - $info[$type] = $message; - } - - if ($info) { - return $this->write($info, $destination); - } - - return true; - } - - /** - * 日志写入 - * @access protected - * @param array $message 日志信息 - * @param string $destination 日志文件 - * @return bool - */ - protected function write(array $message, string $destination): bool - { - // 检测日志文件大小,超过配置大小则备份日志文件重新生成 - $this->checkLogSize($destination); - - $info = []; - - foreach ($message as $type => $msg) { - $info[$type] = is_array($msg) ? implode(PHP_EOL, $msg) : $msg; - } - - $message = implode(PHP_EOL, $info) . PHP_EOL; - - return error_log($message, 3, $destination); - } - - /** - * 获取主日志文件名 - * @access public - * @return string - */ - protected function getMasterLogFile(): string - { - - if ($this->config['max_files']) { - $files = glob($this->config['path'] . '*.log'); - - try { - if (count($files) > $this->config['max_files']) { - unlink($files[0]); - } - } catch (\Exception $e) { - // - } - } - - if ($this->config['single']) { - $name = is_string($this->config['single']) ? $this->config['single'] : 'single'; - $destination = $this->config['path'] . $name . '.log'; - } else { - - if ($this->config['max_files']) { - $filename = date('Ymd') . '.log'; - } else { - $filename = date('Ym') . DIRECTORY_SEPARATOR . date('d') . '.log'; - } - - $destination = $this->config['path'] . $filename; - } - - return $destination; - } - - /** - * 获取独立日志文件名 - * @access public - * @param string $path 日志目录 - * @param string $type 日志类型 - * @return string - */ - protected function getApartLevelFile(string $path, string $type): string - { - - if ($this->config['single']) { - $name = is_string($this->config['single']) ? $this->config['single'] : 'single'; - - $name .= '_' . $type; - } elseif ($this->config['max_files']) { - $name = date('Ymd') . '_' . $type; - } else { - $name = date('d') . '_' . $type; - } - - return $path . DIRECTORY_SEPARATOR . $name . '.log'; - } - - /** - * 检查日志文件大小并自动生成备份文件 - * @access protected - * @param string $destination 日志文件 - * @return void - */ - protected function checkLogSize(string $destination): void - { - if (is_file($destination) && floor($this->config['file_size']) <= filesize($destination)) { - try { - rename($destination, dirname($destination) . DIRECTORY_SEPARATOR . time() . '-' . basename($destination)); - } catch (\Exception $e) { - // - } - } - } -} diff --git a/vendor/topthink/framework/src/think/log/driver/Socket.php b/vendor/topthink/framework/src/think/log/driver/Socket.php deleted file mode 100644 index 8fde70a21..000000000 --- a/vendor/topthink/framework/src/think/log/driver/Socket.php +++ /dev/null @@ -1,271 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\log\driver; - -use think\contract\LogHandlerInterface; - -/** - * github: https://github.com/luofei614/SocketLog - * @author luofei614 - */ -class Socket implements LogHandlerInterface -{ - public $port = 1116; //SocketLog 服务的http的端口号 - - protected $config = [ - // socket服务器地址 - 'host' => 'localhost', - // 是否显示加载的文件列表 - 'show_included_files' => false, - // 日志强制记录到配置的client_id - 'force_client_ids' => [], - // 限制允许读取日志的client_id - 'allow_client_ids' => [], - // 调试开关 - 'debug' => false, - ]; - - protected $css = [ - 'sql' => 'color:#009bb4;', - 'sql_warn' => 'color:#009bb4;font-size:14px;', - 'error' => 'color:#f4006b;font-size:14px;', - 'page' => 'color:#40e2ff;background:#171717;', - 'big' => 'font-size:20px;color:red;', - ]; - - protected $allowForceClientIds = []; //配置强制推送且被授权的client_id - - /** - * 架构函数 - * @access public - * @param array $config 缓存参数 - */ - public function __construct(array $config = []) - { - if (!empty($config)) { - $this->config = array_merge($this->config, $config); - } - } - - /** - * 调试输出接口 - * @access public - * @param array $log 日志信息 - * @return bool - */ - public function save(array $log = []): bool - { - if (!$this->check()) { - return false; - } - - $trace = []; - - if ($this->config['debug']) { - - if (isset($_SERVER['HTTP_HOST'])) { - $current_uri = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - } else { - $current_uri = 'cmd:' . implode(' ', $_SERVER['argv']); - } - - // 基本信息 - $trace[] = [ - 'type' => 'group', - 'msg' => $current_uri, - 'css' => $this->css['page'], - ]; - } - - foreach ($log as $type => $val) { - $trace[] = [ - 'type' => 'groupCollapsed', - 'msg' => '[ ' . $type . ' ]', - 'css' => isset($this->css[$type]) ? $this->css[$type] : '', - ]; - - foreach ($val as $msg) { - if (!is_string($msg)) { - $msg = var_export($msg, true); - } - $trace[] = [ - 'type' => 'log', - 'msg' => $msg, - 'css' => '', - ]; - } - - $trace[] = [ - 'type' => 'groupEnd', - 'msg' => '', - 'css' => '', - ]; - } - - if ($this->config['show_included_files']) { - $trace[] = [ - 'type' => 'groupCollapsed', - 'msg' => '[ file ]', - 'css' => '', - ]; - - $trace[] = [ - 'type' => 'log', - 'msg' => implode("\n", get_included_files()), - 'css' => '', - ]; - - $trace[] = [ - 'type' => 'groupEnd', - 'msg' => '', - 'css' => '', - ]; - } - - $trace[] = [ - 'type' => 'groupEnd', - 'msg' => '', - 'css' => '', - ]; - - $tabid = $this->getClientArg('tabid'); - - if (!$client_id = $this->getClientArg('client_id')) { - $client_id = ''; - } - - if (!empty($this->allowForceClientIds)) { - //强制推送到多个client_id - foreach ($this->allowForceClientIds as $force_client_id) { - $client_id = $force_client_id; - $this->sendToClient($tabid, $client_id, $trace, $force_client_id); - } - } else { - $this->sendToClient($tabid, $client_id, $trace, ''); - } - - return true; - } - - /** - * 发送给指定客户端 - * @access protected - * @param $tabid - * @param $client_id - * @param $logs - * @param $force_client_id - * @author Zjmainstay - */ - protected function sendToClient($tabid, $client_id, $logs, $force_client_id) - { - $logs = [ - 'tabid' => $tabid, - 'client_id' => $client_id, - 'logs' => $logs, - 'force_client_id' => $force_client_id, - ]; - - $msg = @json_encode($logs); - $address = '/' . $client_id; //将client_id作为地址, server端通过地址判断将日志发布给谁 - - $this->send($this->config['host'], $msg, $address); - } - - protected function check() - { - $tabid = $this->getClientArg('tabid'); - - //是否记录日志的检查 - if (!$tabid && !$this->config['force_client_ids']) { - return false; - } - - //用户认证 - $allow_client_ids = $this->config['allow_client_ids']; - - if (!empty($allow_client_ids)) { - //通过数组交集得出授权强制推送的client_id - $this->allowForceClientIds = array_intersect($allow_client_ids, $this->config['force_client_ids']); - if (!$tabid && count($this->allowForceClientIds)) { - return true; - } - - $client_id = $this->getClientArg('client_id'); - if (!in_array($client_id, $allow_client_ids)) { - return false; - } - } else { - $this->allowForceClientIds = $this->config['force_client_ids']; - } - - return true; - } - - protected function getClientArg($name) - { - static $args = []; - - $key = 'HTTP_USER_AGENT'; - - if (isset($_SERVER['HTTP_SOCKETLOG'])) { - $key = 'HTTP_SOCKETLOG'; - } - - if (!isset($_SERVER[$key])) { - return; - } - - if (empty($args)) { - if (!preg_match('/SocketLog\((.*?)\)/', $_SERVER[$key], $match)) { - $args = ['tabid' => null]; - return; - } - parse_str($match[1], $args); - } - - if (isset($args[$name])) { - return $args[$name]; - } - - return; - } - - /** - * @access protected - * @param string $host - $host of socket server - * @param string $message - 发送的消息 - * @param string $address - 地址 - * @return bool - */ - protected function send($host, $message = '', $address = '/') - { - $url = 'http://' . $host . ':' . $this->port . $address; - $ch = curl_init(); - - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_POSTFIELDS, $message); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); - curl_setopt($ch, CURLOPT_TIMEOUT, 10); - - $headers = [ - "Content-Type: application/json;charset=UTF-8", - ]; - - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //设置header - - return curl_exec($ch); - } - -} diff --git a/vendor/topthink/framework/src/think/middleware/AllowCrossDomain.php b/vendor/topthink/framework/src/think/middleware/AllowCrossDomain.php deleted file mode 100644 index 1c1d4c701..000000000 --- a/vendor/topthink/framework/src/think/middleware/AllowCrossDomain.php +++ /dev/null @@ -1,66 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\middleware; - -use Closure; -use think\Config; -use think\Request; -use think\Response; - -/** - * 跨域请求支持 - */ -class AllowCrossDomain -{ - protected $cookieDomain; - - protected $header = [ - 'Access-Control-Allow-Credentials' => 'true', - 'Access-Control-Allow-Methods' => 'GET, POST, PATCH, PUT, DELETE, OPTIONS', - 'Access-Control-Allow-Headers' => 'Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-CSRF-TOKEN, X-Requested-With', - ]; - - public function __construct(Config $config) - { - $this->cookieDomain = $config->get('cookie.domain', ''); - } - - /** - * 允许跨域请求 - * @access public - * @param Request $request - * @param Closure $next - * @param array $header - * @return Response - */ - public function handle($request, Closure $next, ?array $header = []) - { - $header = !empty($header) ? array_merge($this->header, $header) : $this->header; - - if (!isset($header['Access-Control-Allow-Origin'])) { - $origin = $request->header('origin'); - - if ($origin && ('' == $this->cookieDomain || strpos($origin, $this->cookieDomain))) { - $header['Access-Control-Allow-Origin'] = $origin; - } else { - $header['Access-Control-Allow-Origin'] = '*'; - } - } - - if ($request->method(true) == 'OPTIONS') { - return Response::create()->code(204)->header($header); - } - - return $next($request)->header($header); - } -} diff --git a/vendor/topthink/framework/src/think/middleware/CheckRequestCache.php b/vendor/topthink/framework/src/think/middleware/CheckRequestCache.php deleted file mode 100644 index eab1da670..000000000 --- a/vendor/topthink/framework/src/think/middleware/CheckRequestCache.php +++ /dev/null @@ -1,163 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\middleware; - -use Closure; -use think\Cache; -use think\Config; -use think\Request; -use think\Response; - -/** - * 请求缓存处理 - */ -class CheckRequestCache -{ - /** - * 缓存对象 - * @var Cache - */ - protected $cache; - - /** - * 配置参数 - * @var array - */ - protected $config = [ - // 请求缓存规则 true为自动规则 - 'request_cache_key' => true, - // 请求缓存有效期 - 'request_cache_expire' => null, - // 全局请求缓存排除规则 - 'request_cache_except' => [], - // 请求缓存的Tag - 'request_cache_tag' => '', - ]; - - public function __construct(Cache $cache, Config $config) - { - $this->cache = $cache; - $this->config = array_merge($this->config, $config->get('route')); - } - - /** - * 设置当前地址的请求缓存 - * @access public - * @param Request $request - * @param Closure $next - * @param mixed $cache - * @return Response - */ - public function handle($request, Closure $next, $cache = null) - { - if ($request->isGet() && false !== $cache) { - $cache = $cache ?: $this->getRequestCache($request); - - if ($cache) { - if (is_array($cache)) { - list($key, $expire, $tag) = $cache; - } else { - $key = str_replace('|', '/', $request->url()); - $expire = $cache; - $tag = null; - } - - if (strtotime($request->server('HTTP_IF_MODIFIED_SINCE', '')) + $expire > $request->server('REQUEST_TIME')) { - // 读取缓存 - return Response::create()->code(304); - } elseif (($hit = $this->cache->get($key)) !== null) { - list($content, $header, $when) = $hit; - if ($expire === null || $when + $expire > $request->server('REQUEST_TIME')) { - return Response::create($content)->header($header); - } - } - } - } - - $response = $next($request); - - if (isset($key) && 200 == $response->getCode() && $response->isAllowCache()) { - $header = $response->getHeader(); - $header['Cache-Control'] = 'max-age=' . $expire . ',must-revalidate'; - $header['Last-Modified'] = gmdate('D, d M Y H:i:s') . ' GMT'; - $header['Expires'] = gmdate('D, d M Y H:i:s', time() + $expire) . ' GMT'; - - $this->cache->tag($tag)->set($key, [$response->getContent(), $header, time()], $expire); - } - - return $response; - } - - /** - * 读取当前地址的请求缓存信息 - * @access protected - * @param Request $request - * @return mixed - */ - protected function getRequestCache($request) - { - $key = $this->config['request_cache_key']; - $expire = $this->config['request_cache_expire']; - $except = $this->config['request_cache_except']; - $tag = $this->config['request_cache_tag']; - - if ($key instanceof \Closure) { - $key = call_user_func($key, $request); - } - - if (false === $key) { - // 关闭当前缓存 - return; - } - - foreach ($except as $rule) { - if (0 === stripos($request->url(), $rule)) { - return; - } - } - - if (true === $key) { - // 自动缓存功能 - $key = '__URL__'; - } elseif (strpos($key, '|')) { - list($key, $fun) = explode('|', $key); - } - - // 特殊规则替换 - if (false !== strpos($key, '__')) { - $key = str_replace(['__CONTROLLER__', '__ACTION__', '__URL__'], [$request->controller(), $request->action(), md5($request->url(true))], $key); - } - - if (false !== strpos($key, ':')) { - $param = $request->param(); - foreach ($param as $item => $val) { - if (is_string($val) && false !== strpos($key, ':' . $item)) { - $key = str_replace(':' . $item, $val, $key); - } - } - } elseif (strpos($key, ']')) { - if ('[' . $request->ext() . ']' == $key) { - // 缓存某个后缀的请求 - $key = md5($request->url()); - } else { - return; - } - } - - if (isset($fun)) { - $key = $fun($key); - } - - return [$key, $expire, $tag]; - } -} diff --git a/vendor/topthink/framework/src/think/middleware/FormTokenCheck.php b/vendor/topthink/framework/src/think/middleware/FormTokenCheck.php deleted file mode 100644 index f507903cb..000000000 --- a/vendor/topthink/framework/src/think/middleware/FormTokenCheck.php +++ /dev/null @@ -1,45 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\middleware; - -use Closure; -use think\exception\ValidateException; -use think\Request; -use think\Response; - -/** - * 表单令牌支持 - */ -class FormTokenCheck -{ - - /** - * 表单令牌检测 - * @access public - * @param Request $request - * @param Closure $next - * @param string $token 表单令牌Token名称 - * @return Response - */ - public function handle(Request $request, Closure $next, string $token = null) - { - $check = $request->checkToken($token ?: '__token__'); - - if (false === $check) { - throw new ValidateException('invalid token'); - } - - return $next($request); - } - -} diff --git a/vendor/topthink/framework/src/think/middleware/LoadLangPack.php b/vendor/topthink/framework/src/think/middleware/LoadLangPack.php deleted file mode 100644 index c9e7a9d3f..000000000 --- a/vendor/topthink/framework/src/think/middleware/LoadLangPack.php +++ /dev/null @@ -1,61 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\middleware; - -use Closure; -use think\App; -use think\Lang; -use think\Request; -use think\Response; - -/** - * 多语言加载 - */ -class LoadLangPack -{ - protected $app; - - protected $lang; - - public function __construct(App $app, Lang $lang) - { - $this->app = $app; - $this->lang = $lang; - } - - /** - * 路由初始化(路由规则注册) - * @access public - * @param Request $request - * @param Closure $next - * @return Response - */ - public function handle($request, Closure $next) - { - // 自动侦测当前语言 - $langset = $this->lang->detect($request); - - if ($this->lang->defaultLangSet() != $langset) { - // 加载系统语言包 - $this->lang->load([ - $this->app->getThinkPath() . 'lang' . DIRECTORY_SEPARATOR . $langset . '.php', - ]); - - $this->app->LoadLangPack($langset); - } - - $this->lang->saveToCookie($this->app->cookie); - - return $next($request); - } -} diff --git a/vendor/topthink/framework/src/think/middleware/SessionInit.php b/vendor/topthink/framework/src/think/middleware/SessionInit.php deleted file mode 100644 index 8c2a7b448..000000000 --- a/vendor/topthink/framework/src/think/middleware/SessionInit.php +++ /dev/null @@ -1,80 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\middleware; - -use Closure; -use think\App; -use think\Request; -use think\Response; -use think\Session; - -/** - * Session初始化 - */ -class SessionInit -{ - - /** @var App */ - protected $app; - - /** @var Session */ - protected $session; - - public function __construct(App $app, Session $session) - { - $this->app = $app; - $this->session = $session; - } - - /** - * Session初始化 - * @access public - * @param Request $request - * @param Closure $next - * @return Response - */ - public function handle($request, Closure $next) - { - // Session初始化 - $varSessionId = $this->app->config->get('session.var_session_id'); - $cookieName = $this->session->getName(); - - if ($varSessionId && $request->request($varSessionId)) { - $sessionId = $request->request($varSessionId); - } else { - $sessionId = $request->cookie($cookieName); - } - - if ($sessionId) { - $this->session->setId($sessionId); - } - - $this->session->init(); - - $request->withSession($this->session); - - /** @var Response $response */ - $response = $next($request); - - $response->setSession($this->session); - - $this->app->cookie->set($cookieName, $this->session->getId()); - - return $response; - } - - public function end(Response $response) - { - $this->session->save(); - } -} diff --git a/vendor/topthink/framework/src/think/response/File.php b/vendor/topthink/framework/src/think/response/File.php deleted file mode 100644 index ce000ab70..000000000 --- a/vendor/topthink/framework/src/think/response/File.php +++ /dev/null @@ -1,145 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\response; - -use think\Exception; -use think\Response; - -/** - * File Response - */ -class File extends Response -{ - protected $expire = 360; - protected $name; - protected $mimeType; - protected $isContent = false; - - public function __construct($data = '', int $code = 200) - { - $this->init($data, $code); - } - - /** - * 处理数据 - * @access protected - * @param mixed $data 要处理的数据 - * @return mixed - * @throws \Exception - */ - protected function output($data) - { - if (!$this->isContent && !is_file($data)) { - throw new Exception('file not exists:' . $data); - } - - ob_end_clean(); - - if (!empty($this->name)) { - $name = $this->name; - } else { - $name = !$this->isContent ? pathinfo($data, PATHINFO_BASENAME) : ''; - } - - if ($this->isContent) { - $mimeType = $this->mimeType; - $size = strlen($data); - } else { - $mimeType = $this->getMimeType($data); - $size = filesize($data); - } - - $this->header['Pragma'] = 'public'; - $this->header['Content-Type'] = $mimeType ?: 'application/octet-stream'; - $this->header['Cache-control'] = 'max-age=' . $this->expire; - $this->header['Content-Disposition'] = 'attachment; filename="' . $name . '"'; - $this->header['Content-Length'] = $size; - $this->header['Content-Transfer-Encoding'] = 'binary'; - $this->header['Expires'] = gmdate("D, d M Y H:i:s", time() + $this->expire) . ' GMT'; - - $this->lastModified(gmdate('D, d M Y H:i:s', time()) . ' GMT'); - - return $this->isContent ? $data : file_get_contents($data); - } - - /** - * 设置是否为内容 必须配合mimeType方法使用 - * @access public - * @param bool $content - * @return $this - */ - public function isContent(bool $content = true) - { - $this->isContent = $content; - return $this; - } - - /** - * 设置有效期 - * @access public - * @param integer $expire 有效期 - * @return $this - */ - public function expire(int $expire) - { - $this->expire = $expire; - return $this; - } - - /** - * 设置文件类型 - * @access public - * @param string $filename 文件名 - * @return $this - */ - public function mimeType(string $mimeType) - { - $this->mimeType = $mimeType; - return $this; - } - - /** - * 获取文件类型信息 - * @access public - * @param string $filename 文件名 - * @return string - */ - protected function getMimeType(string $filename): string - { - if (!empty($this->mimeType)) { - return $this->mimeType; - } - - $finfo = finfo_open(FILEINFO_MIME_TYPE); - - return finfo_file($finfo, $filename); - } - - /** - * 设置下载文件的显示名称 - * @access public - * @param string $filename 文件名 - * @param bool $extension 后缀自动识别 - * @return $this - */ - public function name(string $filename, bool $extension = true) - { - $this->name = $filename; - - if ($extension && false === strpos($filename, '.')) { - $this->name .= '.' . pathinfo($this->data, PATHINFO_EXTENSION); - } - - return $this; - } -} diff --git a/vendor/topthink/framework/src/think/response/Html.php b/vendor/topthink/framework/src/think/response/Html.php deleted file mode 100644 index dbf23c78b..000000000 --- a/vendor/topthink/framework/src/think/response/Html.php +++ /dev/null @@ -1,34 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\response; - -use think\Cookie; -use think\Response; - -/** - * Html Response - */ -class Html extends Response -{ - /** - * 输出type - * @var string - */ - protected $contentType = 'text/html'; - - public function __construct(Cookie $cookie, $data = '', int $code = 200) - { - $this->init($data, $code); - $this->cookie = $cookie; - } -} diff --git a/vendor/topthink/framework/src/think/response/Json.php b/vendor/topthink/framework/src/think/response/Json.php deleted file mode 100644 index 85d2d228b..000000000 --- a/vendor/topthink/framework/src/think/response/Json.php +++ /dev/null @@ -1,62 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\response; - -use think\Cookie; -use think\Response; - -/** - * Json Response - */ -class Json extends Response -{ - // 输出参数 - protected $options = [ - 'json_encode_param' => JSON_UNESCAPED_UNICODE, - ]; - - protected $contentType = 'application/json'; - - public function __construct(Cookie $cookie, $data = '', int $code = 200) - { - $this->init($data, $code); - $this->cookie = $cookie; - } - - /** - * 处理数据 - * @access protected - * @param mixed $data 要处理的数据 - * @return string - * @throws \Exception - */ - protected function output($data): string - { - try { - // 返回JSON数据格式到客户端 包含状态信息 - $data = json_encode($data, $this->options['json_encode_param']); - - if (false === $data) { - throw new \InvalidArgumentException(json_last_error_msg()); - } - - return $data; - } catch (\Exception $e) { - if ($e->getPrevious()) { - throw $e->getPrevious(); - } - throw $e; - } - } - -} diff --git a/vendor/topthink/framework/src/think/response/Jsonp.php b/vendor/topthink/framework/src/think/response/Jsonp.php deleted file mode 100644 index a098d4c70..000000000 --- a/vendor/topthink/framework/src/think/response/Jsonp.php +++ /dev/null @@ -1,74 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\response; - -use think\Cookie; -use think\Request; -use think\Response; - -/** - * Jsonp Response - */ -class Jsonp extends Response -{ - // 输出参数 - protected $options = [ - 'var_jsonp_handler' => 'callback', - 'default_jsonp_handler' => 'jsonpReturn', - 'json_encode_param' => JSON_UNESCAPED_UNICODE, - ]; - - protected $contentType = 'application/javascript'; - - protected $request; - - public function __construct(Cookie $cookie, Request $request, $data = '', int $code = 200) - { - $this->init($data, $code); - - $this->cookie = $cookie; - $this->request = $request; - } - - /** - * 处理数据 - * @access protected - * @param mixed $data 要处理的数据 - * @return string - * @throws \Exception - */ - protected function output($data): string - { - try { - // 返回JSON数据格式到客户端 包含状态信息 [当url_common_param为false时是无法获取到$_GET的数据的,故使用Request来获取] - $var_jsonp_handler = $this->request->param($this->options['var_jsonp_handler'], ""); - $handler = !empty($var_jsonp_handler) ? $var_jsonp_handler : $this->options['default_jsonp_handler']; - - $data = json_encode($data, $this->options['json_encode_param']); - - if (false === $data) { - throw new \InvalidArgumentException(json_last_error_msg()); - } - - $data = $handler . '(' . $data . ');'; - - return $data; - } catch (\Exception $e) { - if ($e->getPrevious()) { - throw $e->getPrevious(); - } - throw $e; - } - } - -} diff --git a/vendor/topthink/framework/src/think/response/Redirect.php b/vendor/topthink/framework/src/think/response/Redirect.php deleted file mode 100644 index 3d201aadf..000000000 --- a/vendor/topthink/framework/src/think/response/Redirect.php +++ /dev/null @@ -1,98 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\response; - -use think\Cookie; -use think\Request; -use think\Response; -use think\Session; - -/** - * Redirect Response - */ -class Redirect extends Response -{ - - protected $request; - - public function __construct(Cookie $cookie, Request $request, Session $session, $data = '', int $code = 302) - { - $this->init((string) $data, $code); - - $this->cookie = $cookie; - $this->request = $request; - $this->session = $session; - - $this->cacheControl('no-cache,must-revalidate'); - } - - /** - * 处理数据 - * @access protected - * @param mixed $data 要处理的数据 - * @return string - */ - protected function output($data): string - { - $this->header['Location'] = $data; - - return ''; - } - - /** - * 重定向传值(通过Session) - * @access protected - * @param string|array $name 变量名或者数组 - * @param mixed $value 值 - * @return $this - */ - public function with($name, $value = null) - { - if (is_array($name)) { - foreach ($name as $key => $val) { - $this->session->flash($key, $val); - } - } else { - $this->session->flash($name, $value); - } - - return $this; - } - - /** - * 记住当前url后跳转 - * @access public - * @return $this - */ - public function remember() - { - $this->session->set('redirect_url', $this->request->url()); - - return $this; - } - - /** - * 跳转到上次记住的url - * @access public - * @return $this - */ - public function restore() - { - if ($this->session->has('redirect_url')) { - $this->data = $this->session->get('redirect_url'); - $this->session->delete('redirect_url'); - } - - return $this; - } -} diff --git a/vendor/topthink/framework/src/think/response/View.php b/vendor/topthink/framework/src/think/response/View.php deleted file mode 100644 index 0b1ae88ce..000000000 --- a/vendor/topthink/framework/src/think/response/View.php +++ /dev/null @@ -1,149 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\response; - -use think\Cookie; -use think\Response; -use think\View as BaseView; - -/** - * View Response - */ -class View extends Response -{ - /** - * 输出参数 - * @var array - */ - protected $options = []; - - /** - * 输出变量 - * @var array - */ - protected $vars = []; - - /** - * 输出过滤 - * @var mixed - */ - protected $filter; - - /** - * 输出type - * @var string - */ - protected $contentType = 'text/html'; - - /** - * View对象 - * @var BaseView - */ - protected $view; - - /** - * 是否内容渲染 - * @var bool - */ - protected $isContent = false; - - public function __construct(Cookie $cookie, BaseView $view, $data = '', int $code = 200) - { - $this->init($data, $code); - - $this->cookie = $cookie; - $this->view = $view; - } - - /** - * 设置是否为内容渲染 - * @access public - * @param bool $content - * @return $this - */ - public function isContent(bool $content = true) - { - $this->isContent = $content; - return $this; - } - - /** - * 处理数据 - * @access protected - * @param mixed $data 要处理的数据 - * @return string - */ - protected function output($data): string - { - // 渲染模板输出 - return $this->view->filter($this->filter) - ->fetch($data, $this->vars, $this->isContent); - } - - /** - * 获取视图变量 - * @access public - * @param string $name 模板变量 - * @return mixed - */ - public function getVars(string $name = null) - { - if (is_null($name)) { - return $this->vars; - } else { - return $this->vars[$name] ?? null; - } - } - - /** - * 模板变量赋值 - * @access public - * @param string|array $name 模板变量 - * @param mixed $value 变量值 - * @return $this - */ - public function assign($name, $value = null) - { - if (is_array($name)) { - $this->vars = array_merge($this->vars, $name); - } else { - $this->vars[$name] = $value; - } - - return $this; - } - - /** - * 视图内容过滤 - * @access public - * @param callable $filter - * @return $this - */ - public function filter(callable $filter = null) - { - $this->filter = $filter; - return $this; - } - - /** - * 检查模板是否存在 - * @access public - * @param string $name 模板名 - * @return bool - */ - public function exists(string $name): bool - { - return $this->view->exists($name); - } - -} diff --git a/vendor/topthink/framework/src/think/response/Xml.php b/vendor/topthink/framework/src/think/response/Xml.php deleted file mode 100644 index 359754873..000000000 --- a/vendor/topthink/framework/src/think/response/Xml.php +++ /dev/null @@ -1,127 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\response; - -use think\Collection; -use think\Cookie; -use think\Model; -use think\Response; - -/** - * XML Response - */ -class Xml extends Response -{ - // 输出参数 - protected $options = [ - // 根节点名 - 'root_node' => 'think', - // 根节点属性 - 'root_attr' => '', - //数字索引的子节点名 - 'item_node' => 'item', - // 数字索引子节点key转换的属性名 - 'item_key' => 'id', - // 数据编码 - 'encoding' => 'utf-8', - ]; - - protected $contentType = 'text/xml'; - - public function __construct(Cookie $cookie, $data = '', int $code = 200) - { - $this->init($data, $code); - $this->cookie = $cookie; - } - - /** - * 处理数据 - * @access protected - * @param mixed $data 要处理的数据 - * @return mixed - */ - protected function output($data): string - { - if (is_string($data)) { - if (0 !== strpos($data, 'options['encoding']; - $xml = ""; - $data = $xml . $data; - } - return $data; - } - - // XML数据转换 - return $this->xmlEncode($data, $this->options['root_node'], $this->options['item_node'], $this->options['root_attr'], $this->options['item_key'], $this->options['encoding']); - } - - /** - * XML编码 - * @access protected - * @param mixed $data 数据 - * @param string $root 根节点名 - * @param string $item 数字索引的子节点名 - * @param mixed $attr 根节点属性 - * @param string $id 数字索引子节点key转换的属性名 - * @param string $encoding 数据编码 - * @return string - */ - protected function xmlEncode($data, string $root, string $item, $attr, string $id, string $encoding): string - { - if (is_array($attr)) { - $array = []; - foreach ($attr as $key => $value) { - $array[] = "{$key}=\"{$value}\""; - } - $attr = implode(' ', $array); - } - - $attr = trim($attr); - $attr = empty($attr) ? '' : " {$attr}"; - $xml = ""; - $xml .= "<{$root}{$attr}>"; - $xml .= $this->dataToXml($data, $item, $id); - $xml .= ""; - - return $xml; - } - - /** - * 数据XML编码 - * @access protected - * @param mixed $data 数据 - * @param string $item 数字索引时的节点名称 - * @param string $id 数字索引key转换为的属性名 - * @return string - */ - protected function dataToXml($data, string $item, string $id): string - { - $xml = $attr = ''; - - if ($data instanceof Collection || $data instanceof Model) { - $data = $data->toArray(); - } - - foreach ($data as $key => $val) { - if (is_numeric($key)) { - $id && $attr = " {$id}=\"{$key}\""; - $key = $item; - } - $xml .= "<{$key}{$attr}>"; - $xml .= (is_array($val) || is_object($val)) ? $this->dataToXml($val, $item, $id) : $val; - $xml .= ""; - } - - return $xml; - } -} diff --git a/vendor/topthink/framework/src/think/route/Dispatch.php b/vendor/topthink/framework/src/think/route/Dispatch.php deleted file mode 100644 index c97758673..000000000 --- a/vendor/topthink/framework/src/think/route/Dispatch.php +++ /dev/null @@ -1,265 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route; - -use think\App; -use think\Container; -use think\Request; -use think\Response; -use think\Validate; - -/** - * 路由调度基础类 - */ -abstract class Dispatch -{ - /** - * 应用对象 - * @var \think\App - */ - protected $app; - - /** - * 请求对象 - * @var Request - */ - protected $request; - - /** - * 路由规则 - * @var Rule - */ - protected $rule; - - /** - * 调度信息 - * @var mixed - */ - protected $dispatch; - - /** - * 路由变量 - * @var array - */ - protected $param; - - /** - * 状态码 - * @var int - */ - protected $code; - - public function __construct(Request $request, Rule $rule, $dispatch, array $param = [], int $code = null) - { - $this->request = $request; - $this->rule = $rule; - $this->dispatch = $dispatch; - $this->param = $param; - $this->code = $code; - } - - public function init(App $app) - { - $this->app = $app; - - // 执行路由后置操作 - $this->doRouteAfter(); - } - - /** - * 执行路由调度 - * @access public - * @return mixed - */ - public function run(): Response - { - if ($this->rule instanceof RuleItem && $this->request->method() == 'OPTIONS' && $this->rule->isAutoOptions()) { - $rules = $this->rule->getRouter()->getRule($this->rule->getRule()); - $allow = []; - foreach ($rules as $item) { - $allow[] = strtoupper($item->getMethod()); - } - - return Response::create('', 'html', 204)->header(['Allow' => implode(', ', $allow)]); - } - - $data = $this->exec(); - return $this->autoResponse($data); - } - - protected function autoResponse($data): Response - { - if ($data instanceof Response) { - $response = $data; - } elseif (!is_null($data)) { - // 默认自动识别响应输出类型 - $type = $this->request->isJson() ? 'json' : 'html'; - $response = Response::create($data, $type); - } else { - $data = ob_get_clean(); - - $content = false === $data ? '' : $data; - $status = '' === $content && $this->request->isJson() ? 204 : 200; - $response = Response::create($content, 'html', $status); - } - - return $response; - } - - /** - * 检查路由后置操作 - * @access protected - * @return void - */ - protected function doRouteAfter(): void - { - $option = $this->rule->getOption(); - - // 添加中间件 - if (!empty($option['middleware'])) { - $this->app->middleware->import($option['middleware'], 'route'); - } - - if (!empty($option['append'])) { - $this->param = array_merge($this->param, $option['append']); - } - - // 绑定模型数据 - if (!empty($option['model'])) { - $this->createBindModel($option['model'], $this->param); - } - - // 数据自动验证 - if (isset($option['validate'])) { - $this->autoValidate($option['validate']); - } - - // 记录当前请求的路由规则 - $this->request->setRule($this->rule); - - // 记录路由变量 - $this->request->setRoute($this->param); - } - - /** - * 路由绑定模型实例 - * @access protected - * @param array $bindModel 绑定模型 - * @param array $matches 路由变量 - * @return void - */ - protected function createBindModel(array $bindModel, array $matches): void - { - foreach ($bindModel as $key => $val) { - if ($val instanceof \Closure) { - $result = $this->app->invokeFunction($val, $matches); - } else { - $fields = explode('&', $key); - - if (is_array($val)) { - list($model, $exception) = $val; - } else { - $model = $val; - $exception = true; - } - - $where = []; - $match = true; - - foreach ($fields as $field) { - if (!isset($matches[$field])) { - $match = false; - break; - } else { - $where[] = [$field, '=', $matches[$field]]; - } - } - - if ($match) { - $result = $model::where($where)->failException($exception)->find(); - } - } - - if (!empty($result)) { - // 注入容器 - $this->app->instance(get_class($result), $result); - } - } - } - - /** - * 验证数据 - * @access protected - * @param array $option - * @return void - * @throws \think\exception\ValidateException - */ - protected function autoValidate(array $option): void - { - list($validate, $scene, $message, $batch) = $option; - - if (is_array($validate)) { - // 指定验证规则 - $v = new Validate(); - $v->rule($validate); - } else { - // 调用验证器 - $class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate); - - $v = new $class(); - - if (!empty($scene)) { - $v->scene($scene); - } - } - - /** @var Validate $v */ - $v->message($message) - ->batch($batch) - ->failException(true) - ->check($this->request->param()); - } - - public function getDispatch() - { - return $this->dispatch; - } - - public function getParam(): array - { - return $this->param; - } - - abstract public function exec(); - - public function __sleep() - { - return ['rule', 'dispatch', 'param', 'code', 'controller', 'actionName']; - } - - public function __wakeup() - { - $this->app = Container::pull('app'); - $this->request = $this->app->request; - } - - public function __debugInfo() - { - return [ - 'dispatch' => $this->dispatch, - 'param' => $this->param, - 'code' => $this->code, - 'rule' => $this->rule, - ]; - } -} diff --git a/vendor/topthink/framework/src/think/route/Domain.php b/vendor/topthink/framework/src/think/route/Domain.php deleted file mode 100644 index 49ccd2ceb..000000000 --- a/vendor/topthink/framework/src/think/route/Domain.php +++ /dev/null @@ -1,183 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route; - -use think\helper\Str; -use think\Request; -use think\Route; -use think\route\dispatch\Callback as CallbackDispatch; -use think\route\dispatch\Controller as ControllerDispatch; - -/** - * 域名路由 - */ -class Domain extends RuleGroup -{ - /** - * 架构函数 - * @access public - * @param Route $router 路由对象 - * @param string $name 路由域名 - * @param mixed $rule 域名路由 - */ - public function __construct(Route $router, string $name = null, $rule = null) - { - $this->router = $router; - $this->domain = $name; - $this->rule = $rule; - } - - /** - * 检测域名路由 - * @access public - * @param Request $request 请求对象 - * @param string $url 访问地址 - * @param bool $completeMatch 路由是否完全匹配 - * @return Dispatch|false - */ - public function check(Request $request, string $url, bool $completeMatch = false) - { - // 检测URL绑定 - $result = $this->checkUrlBind($request, $url); - - if (!empty($this->option['append'])) { - $request->setRoute($this->option['append']); - unset($this->option['append']); - } - - if (false !== $result) { - return $result; - } - - return parent::check($request, $url, $completeMatch); - } - - /** - * 设置路由绑定 - * @access public - * @param string $bind 绑定信息 - * @return $this - */ - public function bind(string $bind) - { - $this->router->bind($bind, $this->domain); - - return $this; - } - - /** - * 检测URL绑定 - * @access private - * @param Request $request - * @param string $url URL地址 - * @return Dispatch|false - */ - private function checkUrlBind(Request $request, string $url) - { - $bind = $this->router->getDomainBind($this->domain); - - if ($bind) { - $this->parseBindAppendParam($bind); - - // 如果有URL绑定 则进行绑定检测 - $type = substr($bind, 0, 1); - $bind = substr($bind, 1); - - $bindTo = [ - '\\' => 'bindToClass', - '@' => 'bindToController', - ':' => 'bindToNamespace', - ]; - - if (isset($bindTo[$type])) { - return $this->{$bindTo[$type]}($request, $url, $bind); - } - } - - return false; - } - - protected function parseBindAppendParam(string &$bind): void - { - if (false !== strpos($bind, '?')) { - list($bind, $query) = explode('?', $bind); - parse_str($query, $vars); - $this->append($vars); - } - } - - /** - * 绑定到类 - * @access protected - * @param Request $request - * @param string $url URL地址 - * @param string $class 类名(带命名空间) - * @return CallbackDispatch - */ - protected function bindToClass(Request $request, string $url, string $class): CallbackDispatch - { - $array = explode('|', $url, 2); - $action = !empty($array[0]) ? $array[0] : $this->router->config('default_action'); - $param = []; - - if (!empty($array[1])) { - $this->parseUrlParams($array[1], $param); - } - - return new CallbackDispatch($request, $this, [$class, $action], $param); - } - - /** - * 绑定到命名空间 - * @access protected - * @param Request $request - * @param string $url URL地址 - * @param string $namespace 命名空间 - * @return CallbackDispatch - */ - protected function bindToNamespace(Request $request, string $url, string $namespace): CallbackDispatch - { - $array = explode('|', $url, 3); - $class = !empty($array[0]) ? $array[0] : $this->router->config('default_controller'); - $method = !empty($array[1]) ? $array[1] : $this->router->config('default_action'); - $param = []; - - if (!empty($array[2])) { - $this->parseUrlParams($array[2], $param); - } - - return new CallbackDispatch($request, $this, [$namespace . '\\' . Str::studly($class), $method], $param); - } - - /** - * 绑定到控制器 - * @access protected - * @param Request $request - * @param string $url URL地址 - * @param string $controller 控制器名 - * @return ControllerDispatch - */ - protected function bindToController(Request $request, string $url, string $controller): ControllerDispatch - { - $array = explode('|', $url, 2); - $action = !empty($array[0]) ? $array[0] : $this->router->config('default_action'); - $param = []; - - if (!empty($array[1])) { - $this->parseUrlParams($array[1], $param); - } - - return new ControllerDispatch($request, $this, $controller . '/' . $action, $param); - } - -} diff --git a/vendor/topthink/framework/src/think/route/Resource.php b/vendor/topthink/framework/src/think/route/Resource.php deleted file mode 100644 index 01565fc73..000000000 --- a/vendor/topthink/framework/src/think/route/Resource.php +++ /dev/null @@ -1,251 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route; - -use think\Route; - -/** - * 资源路由类 - */ -class Resource extends RuleGroup -{ - /** - * 资源路由名称 - * @var string - */ - protected $resource; - - /** - * 资源路由地址 - * @var string - */ - protected $route; - - /** - * REST方法定义 - * @var array - */ - protected $rest = []; - - /** - * 模型绑定 - * @var array - */ - protected $model = []; - - /** - * 数据验证 - * @var array - */ - protected $validate = []; - - /** - * 中间件 - * @var array - */ - protected $middleware = []; - - /** - * 架构函数 - * @access public - * @param Route $router 路由对象 - * @param RuleGroup $parent 上级对象 - * @param string $name 资源名称 - * @param string $route 路由地址 - * @param array $rest 资源定义 - */ - public function __construct(Route $router, RuleGroup $parent = null, string $name = '', string $route = '', array $rest = []) - { - $name = ltrim($name, '/'); - $this->router = $router; - $this->parent = $parent; - $this->resource = $name; - $this->route = $route; - $this->name = strpos($name, '.') ? strstr($name, '.', true) : $name; - - $this->setFullName(); - - // 资源路由默认为完整匹配 - $this->option['complete_match'] = true; - - $this->rest = $rest; - - if ($this->parent) { - $this->domain = $this->parent->getDomain(); - $this->parent->addRuleItem($this); - } - - if ($router->isTest()) { - $this->buildResourceRule(); - } - } - - /** - * 生成资源路由规则 - * @access protected - * @return void - */ - protected function buildResourceRule(): void - { - $rule = $this->resource; - $option = $this->option; - $origin = $this->router->getGroup(); - $this->router->setGroup($this); - - if (strpos($rule, '.')) { - // 注册嵌套资源路由 - $array = explode('.', $rule); - $last = array_pop($array); - $item = []; - - foreach ($array as $val) { - $item[] = $val . '/<' . ($option['var'][$val] ?? $val . '_id') . '>'; - } - - $rule = implode('/', $item) . '/' . $last; - } - - $prefix = substr($rule, strlen($this->name) + 1); - - // 注册资源路由 - foreach ($this->rest as $key => $val) { - if ((isset($option['only']) && !in_array($key, $option['only'])) - || (isset($option['except']) && in_array($key, $option['except']))) { - continue; - } - - if (isset($last) && strpos($val[1], '') && isset($option['var'][$last])) { - $val[1] = str_replace('', '<' . $option['var'][$last] . '>', $val[1]); - } elseif (strpos($val[1], '') && isset($option['var'][$rule])) { - $val[1] = str_replace('', '<' . $option['var'][$rule] . '>', $val[1]); - } - - $ruleItem = $this->addRule(trim($prefix . $val[1], '/'), $this->route . '/' . $val[2], $val[0]); - - foreach (['model', 'validate', 'middleware'] as $name) { - if (isset($this->$name[$key])) { - call_user_func_array([$ruleItem, $name], (array) $this->$name[$key]); - } - - } - } - - $this->router->setGroup($origin); - } - - /** - * 设置资源允许 - * @access public - * @param array $only 资源允许 - * @return $this - */ - public function only(array $only) - { - return $this->setOption('only', $only); - } - - /** - * 设置资源排除 - * @access public - * @param array $except 排除资源 - * @return $this - */ - public function except(array $except) - { - return $this->setOption('except', $except); - } - - /** - * 设置资源路由的变量 - * @access public - * @param array $vars 资源变量 - * @return $this - */ - public function vars(array $vars) - { - return $this->setOption('var', $vars); - } - - /** - * 绑定资源验证 - * @access public - * @param array|string $name 资源类型或者验证信息 - * @param array|string $validate 验证信息 - * @return $this - */ - public function withValidate($name, $validate = []) - { - if (is_array($name)) { - $this->validate = array_merge($this->validate, $name); - } else { - $this->validate[$name] = $validate; - } - - return $this; - } - - /** - * 绑定资源模型 - * @access public - * @param array|string $name 资源类型或者模型绑定 - * @param array|string $model 模型绑定 - * @return $this - */ - public function withModel($name, $model = []) - { - if (is_array($name)) { - $this->model = array_merge($this->model, $name); - } else { - $this->model[$name] = $model; - } - - return $this; - } - - /** - * 绑定资源模型 - * @access public - * @param array|string $name 资源类型或者中间件定义 - * @param array|string $middleware 中间件定义 - * @return $this - */ - public function withMiddleware($name, $middleware = []) - { - if (is_array($name)) { - $this->middleware = array_merge($this->middleware, $name); - } else { - $this->middleware[$name] = $middleware; - } - - return $this; - } - - /** - * rest方法定义和修改 - * @access public - * @param array|string $name 方法名称 - * @param array|bool $resource 资源 - * @return $this - */ - public function rest($name, $resource = []) - { - if (is_array($name)) { - $this->rest = $resource ? $name : array_merge($this->rest, $name); - } else { - $this->rest[$name] = $resource; - } - - return $this; - } - -} diff --git a/vendor/topthink/framework/src/think/route/Rule.php b/vendor/topthink/framework/src/think/route/Rule.php deleted file mode 100644 index fd9e2809e..000000000 --- a/vendor/topthink/framework/src/think/route/Rule.php +++ /dev/null @@ -1,925 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route; - -use Closure; -use think\Container; -use think\middleware\AllowCrossDomain; -use think\middleware\CheckRequestCache; -use think\middleware\FormTokenCheck; -use think\Request; -use think\Response; -use think\Route; -use think\route\dispatch\Callback as CallbackDispatch; -use think\route\dispatch\Controller as ControllerDispatch; -use think\route\dispatch\Redirect as RedirectDispatch; -use think\route\dispatch\Response as ResponseDispatch; -use think\route\dispatch\View as ViewDispatch; - -/** - * 路由规则基础类 - */ -abstract class Rule -{ - /** - * 路由标识 - * @var string - */ - protected $name; - - /** - * 所在域名 - * @var string - */ - protected $domain; - - /** - * 路由对象 - * @var Route - */ - protected $router; - - /** - * 路由所属分组 - * @var RuleGroup - */ - protected $parent; - - /** - * 路由规则 - * @var mixed - */ - protected $rule; - - /** - * 路由地址 - * @var string|Closure - */ - protected $route; - - /** - * 请求类型 - * @var string - */ - protected $method; - - /** - * 路由变量 - * @var array - */ - protected $vars = []; - - /** - * 路由参数 - * @var array - */ - protected $option = []; - - /** - * 路由变量规则 - * @var array - */ - protected $pattern = []; - - /** - * 需要和分组合并的路由参数 - * @var array - */ - protected $mergeOptions = ['model', 'append', 'middleware']; - - abstract public function check(Request $request, string $url, bool $completeMatch = false); - - /** - * 设置路由参数 - * @access public - * @param array $option 参数 - * @return $this - */ - public function option(array $option) - { - $this->option = array_merge($this->option, $option); - - return $this; - } - - /** - * 设置单个路由参数 - * @access public - * @param string $name 参数名 - * @param mixed $value 值 - * @return $this - */ - public function setOption(string $name, $value) - { - $this->option[$name] = $value; - - return $this; - } - - /** - * 注册变量规则 - * @access public - * @param array $pattern 变量规则 - * @return $this - */ - public function pattern(array $pattern) - { - $this->pattern = array_merge($this->pattern, $pattern); - - return $this; - } - - /** - * 设置标识 - * @access public - * @param string $name 标识名 - * @return $this - */ - public function name(string $name) - { - $this->name = $name; - - return $this; - } - - /** - * 获取路由对象 - * @access public - * @return Route - */ - public function getRouter(): Route - { - return $this->router; - } - - /** - * 获取Name - * @access public - * @return string - */ - public function getName(): string - { - return $this->name ?: ''; - } - - /** - * 获取当前路由规则 - * @access public - * @return mixed - */ - public function getRule() - { - return $this->rule; - } - - /** - * 获取当前路由地址 - * @access public - * @return mixed - */ - public function getRoute() - { - return $this->route; - } - - /** - * 获取当前路由的变量 - * @access public - * @return array - */ - public function getVars(): array - { - return $this->vars; - } - - /** - * 获取Parent对象 - * @access public - * @return $this|null - */ - public function getParent() - { - return $this->parent; - } - - /** - * 获取路由所在域名 - * @access public - * @return string - */ - public function getDomain(): string - { - return $this->domain ?: $this->parent->getDomain(); - } - - /** - * 获取路由参数 - * @access public - * @param string $name 变量名 - * @return mixed - */ - public function config(string $name = '') - { - return $this->router->config($name); - } - - /** - * 获取变量规则定义 - * @access public - * @param string $name 变量名 - * @return mixed - */ - public function getPattern(string $name = '') - { - if ('' === $name) { - return $this->pattern; - } - - return $this->pattern[$name] ?? null; - } - - /** - * 获取路由参数定义 - * @access public - * @param string $name 参数名 - * @param mixed $default 默认值 - * @return mixed - */ - public function getOption(string $name = '', $default = null) - { - if ('' === $name) { - return $this->option; - } - - return $this->option[$name] ?? $default; - } - - /** - * 获取当前路由的请求类型 - * @access public - * @return string - */ - public function getMethod(): string - { - return strtolower($this->method); - } - - /** - * 设置路由请求类型 - * @access public - * @param string $method 请求类型 - * @return $this - */ - public function method(string $method) - { - return $this->setOption('method', strtolower($method)); - } - - /** - * 检查后缀 - * @access public - * @param string $ext URL后缀 - * @return $this - */ - public function ext(string $ext = '') - { - return $this->setOption('ext', $ext); - } - - /** - * 检查禁止后缀 - * @access public - * @param string $ext URL后缀 - * @return $this - */ - public function denyExt(string $ext = '') - { - return $this->setOption('deny_ext', $ext); - } - - /** - * 检查域名 - * @access public - * @param string $domain 域名 - * @return $this - */ - public function domain(string $domain) - { - $this->domain = $domain; - return $this->setOption('domain', $domain); - } - - /** - * 设置参数过滤检查 - * @access public - * @param array $filter 参数过滤 - * @return $this - */ - public function filter(array $filter) - { - $this->option['filter'] = $filter; - - return $this; - } - - /** - * 绑定模型 - * @access public - * @param array|string|Closure $var 路由变量名 多个使用 & 分割 - * @param string|Closure $model 绑定模型类 - * @param bool $exception 是否抛出异常 - * @return $this - */ - public function model($var, $model = null, bool $exception = true) - { - if ($var instanceof Closure) { - $this->option['model'][] = $var; - } elseif (is_array($var)) { - $this->option['model'] = $var; - } elseif (is_null($model)) { - $this->option['model']['id'] = [$var, true]; - } else { - $this->option['model'][$var] = [$model, $exception]; - } - - return $this; - } - - /** - * 附加路由隐式参数 - * @access public - * @param array $append 追加参数 - * @return $this - */ - public function append(array $append = []) - { - $this->option['append'] = $append; - - return $this; - } - - /** - * 绑定验证 - * @access public - * @param mixed $validate 验证器类 - * @param string $scene 验证场景 - * @param array $message 验证提示 - * @param bool $batch 批量验证 - * @return $this - */ - public function validate($validate, string $scene = null, array $message = [], bool $batch = false) - { - $this->option['validate'] = [$validate, $scene, $message, $batch]; - - return $this; - } - - /** - * 指定路由中间件 - * @access public - * @param string|array|Closure $middleware 中间件 - * @param mixed $param 参数 - * @return $this - */ - public function middleware($middleware, $param = null) - { - if (is_null($param) && is_array($middleware)) { - $this->option['middleware'] = $middleware; - } else { - foreach ((array) $middleware as $item) { - $this->option['middleware'][] = [$item, $param]; - } - } - - return $this; - } - - /** - * 允许跨域 - * @access public - * @param array $header 自定义Header - * @return $this - */ - public function allowCrossDomain(array $header = []) - { - return $this->middleware(AllowCrossDomain::class, $header); - } - - /** - * 表单令牌验证 - * @access public - * @param string $token 表单令牌token名称 - * @return $this - */ - public function token(string $token = '__token__') - { - return $this->middleware(FormTokenCheck::class, $token); - } - - /** - * 设置路由缓存 - * @access public - * @param array|string $cache 缓存 - * @return $this - */ - public function cache($cache) - { - return $this->middleware(CheckRequestCache::class, $cache); - } - - /** - * 检查URL分隔符 - * @access public - * @param string $depr URL分隔符 - * @return $this - */ - public function depr(string $depr) - { - return $this->setOption('param_depr', $depr); - } - - /** - * 设置需要合并的路由参数 - * @access public - * @param array $option 路由参数 - * @return $this - */ - public function mergeOptions(array $option = []) - { - $this->mergeOptions = array_merge($this->mergeOptions, $option); - return $this; - } - - /** - * 检查是否为HTTPS请求 - * @access public - * @param bool $https 是否为HTTPS - * @return $this - */ - public function https(bool $https = true) - { - return $this->setOption('https', $https); - } - - /** - * 检查是否为JSON请求 - * @access public - * @param bool $json 是否为JSON - * @return $this - */ - public function json(bool $json = true) - { - return $this->setOption('json', $json); - } - - /** - * 检查是否为AJAX请求 - * @access public - * @param bool $ajax 是否为AJAX - * @return $this - */ - public function ajax(bool $ajax = true) - { - return $this->setOption('ajax', $ajax); - } - - /** - * 检查是否为PJAX请求 - * @access public - * @param bool $pjax 是否为PJAX - * @return $this - */ - public function pjax(bool $pjax = true) - { - return $this->setOption('pjax', $pjax); - } - - /** - * 当前路由到一个模板地址 当使用数组的时候可以传入模板变量 - * @access public - * @param bool|array $view 视图 - * @return $this - */ - public function view($view = true) - { - return $this->setOption('view', $view); - } - - /** - * 当前路由为重定向 - * @access public - * @param bool $redirect 是否为重定向 - * @return $this - */ - public function redirect(bool $redirect = true) - { - return $this->setOption('redirect', $redirect); - } - - /** - * 设置status - * @access public - * @param int $status 状态码 - * @return $this - */ - public function status(int $status) - { - return $this->setOption('status', $status); - } - - /** - * 设置路由完整匹配 - * @access public - * @param bool $match 是否完整匹配 - * @return $this - */ - public function completeMatch(bool $match = true) - { - return $this->setOption('complete_match', $match); - } - - /** - * 是否去除URL最后的斜线 - * @access public - * @param bool $remove 是否去除最后斜线 - * @return $this - */ - public function removeSlash(bool $remove = true) - { - return $this->setOption('remove_slash', $remove); - } - - /** - * 设置路由规则全局有效 - * @access public - * @return $this - */ - public function crossDomainRule() - { - if ($this instanceof RuleGroup) { - $method = '*'; - } else { - $method = $this->method; - } - - $this->router->setCrossDomainRule($this, $method); - - return $this; - } - - /** - * 合并分组参数 - * @access public - * @return array - */ - public function mergeGroupOptions(): array - { - $parentOption = $this->parent->getOption(); - // 合并分组参数 - foreach ($this->mergeOptions as $item) { - if (isset($parentOption[$item]) && isset($this->option[$item])) { - $this->option[$item] = array_merge($parentOption[$item], $this->option[$item]); - } - } - - $this->option = array_merge($parentOption, $this->option); - - return $this->option; - } - - /** - * 解析匹配到的规则路由 - * @access public - * @param Request $request 请求对象 - * @param string $rule 路由规则 - * @param mixed $route 路由地址 - * @param string $url URL地址 - * @param array $option 路由参数 - * @param array $matches 匹配的变量 - * @return Dispatch - */ - public function parseRule(Request $request, string $rule, $route, string $url, array $option = [], array $matches = []): Dispatch - { - if (is_string($route) && isset($option['prefix'])) { - // 路由地址前缀 - $route = $option['prefix'] . $route; - } - - // 替换路由地址中的变量 - if (is_string($route) && !empty($matches)) { - $search = $replace = []; - - foreach ($matches as $key => $value) { - $search[] = '<' . $key . '>'; - $replace[] = $value; - - $search[] = ':' . $key; - $replace[] = $value; - } - - $route = str_replace($search, $replace, $route); - } - - // 解析额外参数 - $count = substr_count($rule, '/'); - $url = array_slice(explode('|', $url), $count + 1); - $this->parseUrlParams(implode('|', $url), $matches); - - $this->vars = $matches; - - // 发起路由调度 - return $this->dispatch($request, $route, $option); - } - - /** - * 发起路由调度 - * @access protected - * @param Request $request Request对象 - * @param mixed $route 路由地址 - * @param array $option 路由参数 - * @return Dispatch - */ - protected function dispatch(Request $request, $route, array $option): Dispatch - { - if ($route instanceof Dispatch) { - $result = $route; - } elseif ($route instanceof Closure) { - // 执行闭包 - $result = new CallbackDispatch($request, $this, $route, $this->vars); - } elseif ($route instanceof Response) { - $result = new ResponseDispatch($request, $this, $route); - } elseif (isset($option['view']) && false !== $option['view']) { - $result = new ViewDispatch($request, $this, $route, is_array($option['view']) ? $option['view'] : $this->vars); - } elseif (!empty($option['redirect'])) { - // 路由到重定向地址 - $result = new RedirectDispatch($request, $this, $route, $this->vars, $option['status'] ?? 301); - } elseif (false !== strpos($route, '\\')) { - // 路由到类的方法 - $result = $this->dispatchMethod($request, $route); - } else { - // 路由到控制器/操作 - $result = $this->dispatchController($request, $route); - } - - return $result; - } - - /** - * 解析URL地址为 模块/控制器/操作 - * @access protected - * @param Request $request Request对象 - * @param string $route 路由地址 - * @return CallbackDispatch - */ - protected function dispatchMethod(Request $request, string $route): CallbackDispatch - { - $path = $this->parseUrlPath($route); - - $route = str_replace('/', '@', implode('/', $path)); - $method = strpos($route, '@') ? explode('@', $route) : $route; - - return new CallbackDispatch($request, $this, $method, $this->vars); - } - - /** - * 解析URL地址为 模块/控制器/操作 - * @access protected - * @param Request $request Request对象 - * @param string $route 路由地址 - * @return ControllerDispatch - */ - protected function dispatchController(Request $request, string $route): ControllerDispatch - { - $path = $this->parseUrlPath($route); - - $action = array_pop($path); - $controller = !empty($path) ? array_pop($path) : null; - - // 路由到模块/控制器/操作 - return new ControllerDispatch($request, $this, [$controller, $action], $this->vars); - } - - /** - * 路由检查 - * @access protected - * @param array $option 路由参数 - * @param Request $request Request对象 - * @return bool - */ - protected function checkOption(array $option, Request $request): bool - { - // 请求类型检测 - if (!empty($option['method'])) { - if (is_string($option['method']) && false === stripos($option['method'], $request->method())) { - return false; - } - } - - // AJAX PJAX 请求检查 - foreach (['ajax', 'pjax', 'json'] as $item) { - if (isset($option[$item])) { - $call = 'is' . $item; - if ($option[$item] && !$request->$call() || !$option[$item] && $request->$call()) { - return false; - } - } - } - - // 伪静态后缀检测 - if ($request->url() != '/' && ((isset($option['ext']) && false === stripos('|' . $option['ext'] . '|', '|' . $request->ext() . '|')) - || (isset($option['deny_ext']) && false !== stripos('|' . $option['deny_ext'] . '|', '|' . $request->ext() . '|')))) { - return false; - } - - // 域名检查 - if ((isset($option['domain']) && !in_array($option['domain'], [$request->host(true), $request->subDomain()]))) { - return false; - } - - // HTTPS检查 - if ((isset($option['https']) && $option['https'] && !$request->isSsl()) - || (isset($option['https']) && !$option['https'] && $request->isSsl())) { - return false; - } - - // 请求参数检查 - if (isset($option['filter'])) { - foreach ($option['filter'] as $name => $value) { - if ($request->param($name, '', null) != $value) { - return false; - } - } - } - - return true; - } - - /** - * 解析URL地址中的参数Request对象 - * @access protected - * @param string $rule 路由规则 - * @param array $var 变量 - * @return void - */ - protected function parseUrlParams(string $url, array &$var = []): void - { - if ($url) { - preg_replace_callback('/(\w+)\|([^\|]+)/', function ($match) use (&$var) { - $var[$match[1]] = strip_tags($match[2]); - }, $url); - } - } - - /** - * 解析URL的pathinfo参数 - * @access public - * @param string $url URL地址 - * @return array - */ - public function parseUrlPath(string $url): array - { - // 分隔符替换 确保路由定义使用统一的分隔符 - $url = str_replace('|', '/', $url); - $url = trim($url, '/'); - - if (strpos($url, '/')) { - // [控制器/操作] - $path = explode('/', $url); - } else { - $path = [$url]; - } - - return $path; - } - - /** - * 生成路由的正则规则 - * @access protected - * @param string $rule 路由规则 - * @param array $match 匹配的变量 - * @param array $pattern 路由变量规则 - * @param array $option 路由参数 - * @param bool $completeMatch 路由是否完全匹配 - * @param string $suffix 路由正则变量后缀 - * @return string - */ - protected function buildRuleRegex(string $rule, array $match, array $pattern = [], array $option = [], bool $completeMatch = false, string $suffix = ''): string - { - foreach ($match as $name) { - $replace[] = $this->buildNameRegex($name, $pattern, $suffix); - } - - // 是否区分 / 地址访问 - if ('/' != $rule) { - if (!empty($option['remove_slash'])) { - $rule = rtrim($rule, '/'); - } elseif (substr($rule, -1) == '/') { - $rule = rtrim($rule, '/'); - $hasSlash = true; - } - } - - $regex = str_replace(array_unique($match), array_unique($replace), $rule); - $regex = str_replace([')?/', ')/', ')?-', ')-', '\\\\/'], [')\/', ')\/', ')\-', ')\-', '\/'], $regex); - - if (isset($hasSlash)) { - $regex .= '\/'; - } - - return $regex . ($completeMatch ? '$' : ''); - } - - /** - * 生成路由变量的正则规则 - * @access protected - * @param string $name 路由变量 - * @param array $pattern 变量规则 - * @param string $suffix 路由正则变量后缀 - * @return string - */ - protected function buildNameRegex(string $name, array $pattern, string $suffix): string - { - $optional = ''; - $slash = substr($name, 0, 1); - - if (in_array($slash, ['/', '-'])) { - $prefix = '\\' . $slash; - $name = substr($name, 1); - $slash = substr($name, 0, 1); - } else { - $prefix = ''; - } - - if ('<' != $slash) { - return $prefix . preg_quote($name, '/'); - } - - if (strpos($name, '?')) { - $name = substr($name, 1, -2); - $optional = '?'; - } elseif (strpos($name, '>')) { - $name = substr($name, 1, -1); - } - - if (isset($pattern[$name])) { - $nameRule = $pattern[$name]; - if (0 === strpos($nameRule, '/') && '/' == substr($nameRule, -1)) { - $nameRule = substr($nameRule, 1, -1); - } - } else { - $nameRule = $this->router->config('default_route_pattern'); - } - - return '(' . $prefix . '(?<' . $name . $suffix . '>' . $nameRule . '))' . $optional; - } - - /** - * 设置路由参数 - * @access public - * @param string $method 方法名 - * @param array $args 调用参数 - * @return $this - */ - public function __call($method, $args) - { - if (count($args) > 1) { - $args[0] = $args; - } - array_unshift($args, $method); - - return call_user_func_array([$this, 'setOption'], $args); - } - - public function __sleep() - { - return ['name', 'rule', 'route', 'method', 'vars', 'option', 'pattern']; - } - - public function __wakeup() - { - $this->router = Container::pull('route'); - } - - public function __debugInfo() - { - return [ - 'name' => $this->name, - 'rule' => $this->rule, - 'route' => $this->route, - 'method' => $this->method, - 'vars' => $this->vars, - 'option' => $this->option, - 'pattern' => $this->pattern, - ]; - } -} diff --git a/vendor/topthink/framework/src/think/route/RuleGroup.php b/vendor/topthink/framework/src/think/route/RuleGroup.php deleted file mode 100644 index 77de00025..000000000 --- a/vendor/topthink/framework/src/think/route/RuleGroup.php +++ /dev/null @@ -1,541 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route; - -use Closure; -use think\Container; -use think\Exception; -use think\Request; -use think\Response; -use think\Route; -use think\route\dispatch\Response as ResponseDispatch; - -/** - * 路由分组类 - */ -class RuleGroup extends Rule -{ - /** - * 分组路由(包括子分组) - * @var array - */ - protected $rules = [ - '*' => [], - 'get' => [], - 'post' => [], - 'put' => [], - 'patch' => [], - 'delete' => [], - 'head' => [], - 'options' => [], - ]; - - /** - * 分组路由规则 - * @var mixed - */ - protected $rule; - - /** - * MISS路由 - * @var RuleItem - */ - protected $miss; - - /** - * 完整名称 - * @var string - */ - protected $fullName; - - /** - * 分组别名 - * @var string - */ - protected $alias; - - /** - * 架构函数 - * @access public - * @param Route $router 路由对象 - * @param RuleGroup $parent 上级对象 - * @param string $name 分组名称 - * @param mixed $rule 分组路由 - */ - public function __construct(Route $router, RuleGroup $parent = null, string $name = '', $rule = null) - { - $this->router = $router; - $this->parent = $parent; - $this->rule = $rule; - $this->name = trim($name, '/'); - - $this->setFullName(); - - if ($this->parent) { - $this->domain = $this->parent->getDomain(); - $this->parent->addRuleItem($this); - } - - if ($router->isTest()) { - $this->lazy(false); - } - } - - /** - * 设置分组的路由规则 - * @access public - * @return void - */ - protected function setFullName(): void - { - if (false !== strpos($this->name, ':')) { - $this->name = preg_replace(['/\[\:(\w+)\]/', '/\:(\w+)/'], ['<\1?>', '<\1>'], $this->name); - } - - if ($this->parent && $this->parent->getFullName()) { - $this->fullName = $this->parent->getFullName() . ($this->name ? '/' . $this->name : ''); - } else { - $this->fullName = $this->name; - } - - if ($this->name) { - $this->router->getRuleName()->setGroup($this->name, $this); - } - } - - /** - * 获取所属域名 - * @access public - * @return string - */ - public function getDomain(): string - { - return $this->domain ?: '-'; - } - - /** - * 获取分组别名 - * @access public - * @return string - */ - public function getAlias(): string - { - return $this->alias ?: ''; - } - - /** - * 检测分组路由 - * @access public - * @param Request $request 请求对象 - * @param string $url 访问地址 - * @param bool $completeMatch 路由是否完全匹配 - * @return Dispatch|false - */ - public function check(Request $request, string $url, bool $completeMatch = false) - { - // 检查分组有效性 - if (!$this->checkOption($this->option, $request) || !$this->checkUrl($url)) { - return false; - } - - // 解析分组路由 - if ($this instanceof Resource) { - $this->buildResourceRule(); - } elseif ($this->rule instanceof Response) { - return new ResponseDispatch($request, $this, $this->rule); - } else { - $this->parseGroupRule($this->rule); - } - - // 获取当前路由规则 - $method = strtolower($request->method()); - $rules = $this->getMethodRules($method); - - if ($this->parent) { - // 合并分组参数 - $this->mergeGroupOptions(); - // 合并分组变量规则 - $this->pattern = array_merge($this->parent->getPattern(), $this->pattern); - } - - if (isset($this->option['complete_match'])) { - $completeMatch = $this->option['complete_match']; - } - - if (!empty($this->option['merge_rule_regex'])) { - // 合并路由正则规则进行路由匹配检查 - $result = $this->checkMergeRuleRegex($request, $rules, $url, $completeMatch); - - if (false !== $result) { - return $result; - } - } - - // 检查分组路由 - foreach ($rules as $key => $item) { - $result = $item->check($request, $url, $completeMatch); - - if (false !== $result) { - return $result; - } - } - - if ($this->miss && in_array($this->miss->getMethod(), ['*', $method])) { - // 未匹配所有路由的路由规则处理 - $result = $this->parseRule($request, '', $this->miss->getRoute(), $url, $this->miss->mergeGroupOptions()); - } else { - $result = false; - } - - return $result; - } - - /** - * 获取当前请求的路由规则(包括子分组、资源路由) - * @access protected - * @param string $method 请求类型 - * @return array - */ - protected function getMethodRules(string $method): array - { - return array_merge($this->rules[$method], $this->rules['*']); - } - - /** - * 分组URL匹配检查 - * @access protected - * @param string $url URL - * @return bool - */ - protected function checkUrl(string $url): bool - { - if ($this->fullName) { - $pos = strpos($this->fullName, '<'); - - if (false !== $pos) { - $str = substr($this->fullName, 0, $pos); - } else { - $str = $this->fullName; - } - - if ($str && 0 !== stripos(str_replace('|', '/', $url), $str)) { - return false; - } - } - - return true; - } - - /** - * 设置路由分组别名 - * @access public - * @param string $alias 路由分组别名 - * @return $this - */ - public function alias(string $alias) - { - $this->alias = $alias; - $this->router->getRuleName()->setGroup($alias, $this); - - return $this; - } - - /** - * 延迟解析分组的路由规则 - * @access public - * @param bool $lazy 路由是否延迟解析 - * @return $this - */ - public function lazy(bool $lazy = true) - { - if (!$lazy) { - $this->parseGroupRule($this->rule); - $this->rule = null; - } - - return $this; - } - - /** - * 解析分组和域名的路由规则及绑定 - * @access public - * @param mixed $rule 路由规则 - * @return void - */ - public function parseGroupRule($rule): void - { - $origin = $this->router->getGroup(); - $this->router->setGroup($this); - - if ($rule instanceof \Closure) { - Container::getInstance()->invokeFunction($rule); - } elseif (is_string($rule) && $rule) { - $this->router->bind($rule, $this->domain); - } - - $this->router->setGroup($origin); - } - - /** - * 检测分组路由 - * @access public - * @param Request $request 请求对象 - * @param array $rules 路由规则 - * @param string $url 访问地址 - * @param bool $completeMatch 路由是否完全匹配 - * @return Dispatch|false - */ - protected function checkMergeRuleRegex(Request $request, array &$rules, string $url, bool $completeMatch) - { - $depr = $this->router->config('pathinfo_depr'); - $url = $depr . str_replace('|', $depr, $url); - $regex = []; - $items = []; - - foreach ($rules as $key => $item) { - if ($item instanceof RuleItem) { - $rule = $depr . str_replace('/', $depr, $item->getRule()); - if ($depr == $rule && $depr != $url) { - unset($rules[$key]); - continue; - } - - $complete = $item->getOption('complete_match', $completeMatch); - - if (false === strpos($rule, '<')) { - if (0 === strcasecmp($rule, $url) || (!$complete && 0 === strncasecmp($rule, $url, strlen($rule)))) { - return $item->checkRule($request, $url, []); - } - - unset($rules[$key]); - continue; - } - - $slash = preg_quote('/-' . $depr, '/'); - - if ($matchRule = preg_split('/[' . $slash . ']<\w+\??>/', $rule, 2)) { - if ($matchRule[0] && 0 !== strncasecmp($rule, $url, strlen($matchRule[0]))) { - unset($rules[$key]); - continue; - } - } - - if (preg_match_all('/[' . $slash . ']??/', $rule, $matches)) { - unset($rules[$key]); - $pattern = array_merge($this->getPattern(), $item->getPattern()); - $option = array_merge($this->getOption(), $item->getOption()); - - $regex[$key] = $this->buildRuleRegex($rule, $matches[0], $pattern, $option, $complete, '_THINK_' . $key); - $items[$key] = $item; - } - } - } - - if (empty($regex)) { - return false; - } - - try { - $result = preg_match('/^(?:' . implode('|', $regex) . ')/u', $url, $match); - } catch (\Exception $e) { - throw new Exception('route pattern error'); - } - - if ($result) { - $var = []; - foreach ($match as $key => $val) { - if (is_string($key) && '' !== $val) { - list($name, $pos) = explode('_THINK_', $key); - - $var[$name] = $val; - } - } - - if (!isset($pos)) { - foreach ($regex as $key => $item) { - if (0 === strpos(str_replace(['\/', '\-', '\\' . $depr], ['/', '-', $depr], $item), $match[0])) { - $pos = $key; - break; - } - } - } - - $rule = $items[$pos]->getRule(); - $array = $this->router->getRule($rule); - - foreach ($array as $item) { - if (in_array($item->getMethod(), ['*', strtolower($request->method())])) { - $result = $item->checkRule($request, $url, $var); - - if (false !== $result) { - return $result; - } - } - } - } - - return false; - } - - /** - * 获取分组的MISS路由 - * @access public - * @return RuleItem|null - */ - public function getMissRule(): ? RuleItem - { - return $this->miss; - } - - /** - * 注册MISS路由 - * @access public - * @param string|Closure $route 路由地址 - * @param string $method 请求类型 - * @return RuleItem - */ - public function miss($route, string $method = '*') : RuleItem - { - // 创建路由规则实例 - $ruleItem = new RuleItem($this->router, $this, null, '', $route, strtolower($method)); - - $ruleItem->setMiss(); - $this->miss = $ruleItem; - - return $ruleItem; - } - - /** - * 添加分组下的路由规则 - * @access public - * @param string $rule 路由规则 - * @param mixed $route 路由地址 - * @param string $method 请求类型 - * @return RuleItem - */ - public function addRule(string $rule, $route = null, string $method = '*'): RuleItem - { - // 读取路由标识 - if (is_string($route)) { - $name = $route; - } else { - $name = null; - } - - $method = strtolower($method); - - if ('' === $rule || '/' === $rule) { - $rule .= '$'; - } - - // 创建路由规则实例 - $ruleItem = new RuleItem($this->router, $this, $name, $rule, $route, $method); - - $this->addRuleItem($ruleItem, $method); - - return $ruleItem; - } - - /** - * 注册分组下的路由规则 - * @access public - * @param Rule $rule 路由规则 - * @param string $method 请求类型 - * @return $this - */ - public function addRuleItem(Rule $rule, string $method = '*') - { - if (strpos($method, '|')) { - $rule->method($method); - $method = '*'; - } - - $this->rules[$method][] = $rule; - - if ($rule instanceof RuleItem && 'options' != $method) { - $this->rules['options'][] = $rule->setAutoOptions(); - } - - return $this; - } - - /** - * 设置分组的路由前缀 - * @access public - * @param string $prefix 路由前缀 - * @return $this - */ - public function prefix(string $prefix) - { - if ($this->parent && $this->parent->getOption('prefix')) { - $prefix = $this->parent->getOption('prefix') . $prefix; - } - - return $this->setOption('prefix', $prefix); - } - - /** - * 合并分组的路由规则正则 - * @access public - * @param bool $merge 是否合并 - * @return $this - */ - public function mergeRuleRegex(bool $merge = true) - { - return $this->setOption('merge_rule_regex', $merge); - } - - /** - * 获取完整分组Name - * @access public - * @return string - */ - public function getFullName(): string - { - return $this->fullName ?: ''; - } - - /** - * 获取分组的路由规则 - * @access public - * @param string $method 请求类型 - * @return array - */ - public function getRules(string $method = ''): array - { - if ('' === $method) { - return $this->rules; - } - - return $this->rules[strtolower($method)] ?? []; - } - - /** - * 清空分组下的路由规则 - * @access public - * @return void - */ - public function clear(): void - { - $this->rules = [ - '*' => [], - 'get' => [], - 'post' => [], - 'put' => [], - 'patch' => [], - 'delete' => [], - 'head' => [], - 'options' => [], - ]; - } -} diff --git a/vendor/topthink/framework/src/think/route/RuleItem.php b/vendor/topthink/framework/src/think/route/RuleItem.php deleted file mode 100644 index f7f72ba1f..000000000 --- a/vendor/topthink/framework/src/think/route/RuleItem.php +++ /dev/null @@ -1,330 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route; - -use think\Exception; -use think\Request; -use think\Route; - -/** - * 路由规则类 - */ -class RuleItem extends Rule -{ - /** - * 是否为MISS规则 - * @var bool - */ - protected $miss = false; - - /** - * 是否为额外自动注册的OPTIONS规则 - * @var bool - */ - protected $autoOption = false; - - /** - * 架构函数 - * @access public - * @param Route $router 路由实例 - * @param RuleGroup $parent 上级对象 - * @param string $name 路由标识 - * @param string $rule 路由规则 - * @param string|\Closure $route 路由地址 - * @param string $method 请求类型 - */ - public function __construct(Route $router, RuleGroup $parent, string $name = null, string $rule = '', $route = null, string $method = '*') - { - $this->router = $router; - $this->parent = $parent; - $this->name = $name; - $this->route = $route; - $this->method = $method; - - $this->setRule($rule); - - $this->router->setRule($this->rule, $this); - } - - /** - * 设置当前路由规则为MISS路由 - * @access public - * @return $this - */ - public function setMiss() - { - $this->miss = true; - return $this; - } - - /** - * 判断当前路由规则是否为MISS路由 - * @access public - * @return bool - */ - public function isMiss(): bool - { - return $this->miss; - } - - /** - * 设置当前路由为自动注册OPTIONS - * @access public - * @return $this - */ - public function setAutoOptions() - { - $this->autoOption = true; - return $this; - } - - /** - * 判断当前路由规则是否为自动注册的OPTIONS路由 - * @access public - * @return bool - */ - public function isAutoOptions(): bool - { - return $this->autoOption; - } - - /** - * 获取当前路由的URL后缀 - * @access public - * @return string|null - */ - public function getSuffix() - { - if (isset($this->option['ext'])) { - $suffix = $this->option['ext']; - } elseif ($this->parent->getOption('ext')) { - $suffix = $this->parent->getOption('ext'); - } else { - $suffix = null; - } - - return $suffix; - } - - /** - * 路由规则预处理 - * @access public - * @param string $rule 路由规则 - * @return void - */ - public function setRule(string $rule): void - { - if ('$' == substr($rule, -1, 1)) { - // 是否完整匹配 - $rule = substr($rule, 0, -1); - - $this->option['complete_match'] = true; - } - - $rule = '/' != $rule ? ltrim($rule, '/') : ''; - - if ($this->parent && $prefix = $this->parent->getFullName()) { - $rule = $prefix . ($rule ? '/' . ltrim($rule, '/') : ''); - } - - if (false !== strpos($rule, ':')) { - $this->rule = preg_replace(['/\[\:(\w+)\]/', '/\:(\w+)/'], ['<\1?>', '<\1>'], $rule); - } else { - $this->rule = $rule; - } - - // 生成路由标识的快捷访问 - $this->setRuleName(); - } - - /** - * 设置别名 - * @access public - * @param string $name - * @return $this - */ - public function name(string $name) - { - $this->name = $name; - $this->setRuleName(true); - - return $this; - } - - /** - * 设置路由标识 用于URL反解生成 - * @access protected - * @param bool $first 是否插入开头 - * @return void - */ - protected function setRuleName(bool $first = false): void - { - if ($this->name) { - $this->router->setName($this->name, $this, $first); - } - } - - /** - * 检测路由 - * @access public - * @param Request $request 请求对象 - * @param string $url 访问地址 - * @param array $match 匹配路由变量 - * @param bool $completeMatch 路由是否完全匹配 - * @return Dispatch|false - */ - public function checkRule(Request $request, string $url, $match = null, bool $completeMatch = false) - { - // 检查参数有效性 - if (!$this->checkOption($this->option, $request)) { - return false; - } - - // 合并分组参数 - $option = $this->mergeGroupOptions(); - - $url = $this->urlSuffixCheck($request, $url, $option); - - if (is_null($match)) { - $match = $this->match($url, $option, $completeMatch); - } - - if (false !== $match) { - return $this->parseRule($request, $this->rule, $this->route, $url, $option, $match); - } - - return false; - } - - /** - * 检测路由(含路由匹配) - * @access public - * @param Request $request 请求对象 - * @param string $url 访问地址 - * @param bool $completeMatch 路由是否完全匹配 - * @return Dispatch|false - */ - public function check(Request $request, string $url, bool $completeMatch = false) - { - return $this->checkRule($request, $url, null, $completeMatch); - } - - /** - * URL后缀及Slash检查 - * @access protected - * @param Request $request 请求对象 - * @param string $url 访问地址 - * @param array $option 路由参数 - * @return string - */ - protected function urlSuffixCheck(Request $request, string $url, array $option = []): string - { - // 是否区分 / 地址访问 - if (!empty($option['remove_slash']) && '/' != $this->rule) { - $this->rule = rtrim($this->rule, '/'); - $url = rtrim($url, '|'); - } - - if (isset($option['ext'])) { - // 路由ext参数 优先于系统配置的URL伪静态后缀参数 - $url = preg_replace('/\.(' . $request->ext() . ')$/i', '', $url); - } - - return $url; - } - - /** - * 检测URL和规则路由是否匹配 - * @access private - * @param string $url URL地址 - * @param array $option 路由参数 - * @param bool $completeMatch 路由是否完全匹配 - * @return array|false - */ - private function match(string $url, array $option, bool $completeMatch) - { - if (isset($option['complete_match'])) { - $completeMatch = $option['complete_match']; - } - - $depr = $this->router->config('pathinfo_depr'); - $pattern = array_merge($this->parent->getPattern(), $this->pattern); - - // 检查完整规则定义 - if (isset($pattern['__url__']) && !preg_match(0 === strpos($pattern['__url__'], '/') ? $pattern['__url__'] : '/^' . $pattern['__url__'] . ($completeMatch ? '$' : '') . '/', str_replace('|', $depr, $url))) { - return false; - } - - $var = []; - $url = $depr . str_replace('|', $depr, $url); - $rule = $depr . str_replace('/', $depr, $this->rule); - - if ($depr == $rule && $depr != $url) { - return false; - } - - if (false === strpos($rule, '<')) { - if (0 === strcasecmp($rule, $url) || (!$completeMatch && 0 === strncasecmp($rule . $depr, $url . $depr, strlen($rule . $depr)))) { - return $var; - } - return false; - } - - $slash = preg_quote('/-' . $depr, '/'); - - if ($matchRule = preg_split('/[' . $slash . ']?<\w+\??>/', $rule, 2)) { - if ($matchRule[0] && 0 !== strncasecmp($rule, $url, strlen($matchRule[0]))) { - return false; - } - } - - if (preg_match_all('/[' . $slash . ']??/', $rule, $matches)) { - $regex = $this->buildRuleRegex($rule, $matches[0], $pattern, $option, $completeMatch); - - try { - if (!preg_match('/^' . $regex . '/u', $url, $match)) { - return false; - } - } catch (\Exception $e) { - throw new Exception('route pattern error'); - } - - foreach ($match as $key => $val) { - if (is_string($key)) { - $var[$key] = $val; - } - } - } - - // 成功匹配后返回URL中的动态变量数组 - return $var; - } - - /** - * 设置路由所属分组(用于注解路由) - * @access public - * @param string $name 分组名称或者标识 - * @return $this - */ - public function group(string $name) - { - $group = $this->router->getRuleName()->getGroup($name); - - if ($group) { - $this->parent = $group; - $this->setRule($this->rule); - } - - return $this; - } -} diff --git a/vendor/topthink/framework/src/think/route/RuleName.php b/vendor/topthink/framework/src/think/route/RuleName.php deleted file mode 100644 index 9b1088aed..000000000 --- a/vendor/topthink/framework/src/think/route/RuleName.php +++ /dev/null @@ -1,195 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route; - -/** - * 路由标识管理类 - */ -class RuleName -{ - /** - * 路由标识 - * @var array - */ - protected $item = []; - - /** - * 路由规则 - * @var array - */ - protected $rule = []; - - /** - * 路由分组 - * @var array - */ - protected $group = []; - - /** - * 注册路由标识 - * @access public - * @param string $name 路由标识 - * @param RuleItem $ruleItem 路由规则 - * @param bool $first 是否优先 - * @return void - */ - public function setName(string $name, RuleItem $ruleItem, bool $first = false): void - { - $name = strtolower($name); - if ($first && isset($this->item[$name])) { - array_unshift($this->item[$name], $ruleItem); - } else { - $this->item[$name][] = $ruleItem; - } - } - - /** - * 注册路由分组标识 - * @access public - * @param string $name 路由分组标识 - * @param RuleGroup $group 路由分组 - * @return void - */ - public function setGroup(string $name, RuleGroup $group): void - { - $this->group[strtolower($name)] = $group; - } - - /** - * 注册路由规则 - * @access public - * @param string $rule 路由规则 - * @param RuleItem $ruleItem 路由 - * @return void - */ - public function setRule(string $rule, RuleItem $ruleItem): void - { - $route = $ruleItem->getRoute(); - - if (is_string($route)) { - $this->rule[$rule][$route] = $ruleItem; - } else { - $this->rule[$rule][] = $ruleItem; - } - } - - /** - * 根据路由规则获取路由对象(列表) - * @access public - * @param string $rule 路由标识 - * @return RuleItem[] - */ - public function getRule(string $rule): array - { - return $this->rule[$rule] ?? []; - } - - /** - * 根据路由分组标识获取分组 - * @access public - * @param string $name 路由分组标识 - * @return RuleGroup|null - */ - public function getGroup(string $name) - { - return $this->group[strtolower($name)] ?? null; - } - - /** - * 清空路由规则 - * @access public - * @return void - */ - public function clear(): void - { - $this->item = []; - $this->rule = []; - } - - /** - * 获取全部路由列表 - * @access public - * @return array - */ - public function getRuleList(): array - { - $list = []; - - foreach ($this->rule as $rule => $rules) { - foreach ($rules as $item) { - $val = []; - - foreach (['method', 'rule', 'name', 'route', 'domain', 'pattern', 'option'] as $param) { - $call = 'get' . $param; - $val[$param] = $item->$call(); - } - - if ($item->isMiss()) { - $val['rule'] .= ''; - } - - $list[] = $val; - } - } - - return $list; - } - - /** - * 导入路由标识 - * @access public - * @param array $item 路由标识 - * @return void - */ - public function import(array $item): void - { - $this->item = $item; - } - - /** - * 根据路由标识获取路由信息(用于URL生成) - * @access public - * @param string $name 路由标识 - * @param string $domain 域名 - * @param string $method 请求类型 - * @return array - */ - public function getName(string $name = null, string $domain = null, string $method = '*'): array - { - if (is_null($name)) { - return $this->item; - } - - $name = strtolower($name); - $method = strtolower($method); - $result = []; - - if (isset($this->item[$name])) { - if (is_null($domain)) { - $result = $this->item[$name]; - } else { - foreach ($this->item[$name] as $item) { - $itemDomain = $item->getDomain(); - $itemMethod = $item->getMethod(); - - if (($itemDomain == $domain || '-' == $itemDomain) && ('*' == $itemMethod || '*' == $method || $method == $itemMethod)) { - $result[] = $item; - } - } - } - } - - return $result; - } - -} diff --git a/vendor/topthink/framework/src/think/route/Url.php b/vendor/topthink/framework/src/think/route/Url.php deleted file mode 100644 index b7f1a387f..000000000 --- a/vendor/topthink/framework/src/think/route/Url.php +++ /dev/null @@ -1,507 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route; - -use think\App; -use think\Route; - -/** - * 路由地址生成 - */ -class Url -{ - /** - * 应用对象 - * @var App - */ - protected $app; - - /** - * 路由对象 - * @var Route - */ - protected $route; - - /** - * URL变量 - * @var array - */ - protected $vars = []; - - /** - * 路由URL - * @var string - */ - protected $url; - - /** - * URL 根地址 - * @var string - */ - protected $root = ''; - - /** - * HTTPS - * @var bool - */ - protected $https; - - /** - * URL后缀 - * @var string|bool - */ - protected $suffix = true; - - /** - * URL域名 - * @var string|bool - */ - protected $domain = false; - - /** - * 架构函数 - * @access public - * @param string $url URL地址 - * @param array $vars 参数 - */ - public function __construct(Route $route, App $app, string $url = '', array $vars = []) - { - $this->route = $route; - $this->app = $app; - $this->url = $url; - $this->vars = $vars; - } - - /** - * 设置URL参数 - * @access public - * @param array $vars URL参数 - * @return $this - */ - public function vars(array $vars = []) - { - $this->vars = $vars; - return $this; - } - - /** - * 设置URL后缀 - * @access public - * @param string|bool $suffix URL后缀 - * @return $this - */ - public function suffix($suffix) - { - $this->suffix = $suffix; - return $this; - } - - /** - * 设置URL域名(或者子域名) - * @access public - * @param string|bool $domain URL域名 - * @return $this - */ - public function domain($domain) - { - $this->domain = $domain; - return $this; - } - - /** - * 设置URL 根地址 - * @access public - * @param string $root URL root - * @return $this - */ - public function root(string $root) - { - $this->root = $root; - return $this; - } - - /** - * 设置是否使用HTTPS - * @access public - * @param bool $https - * @return $this - */ - public function https(bool $https = true) - { - $this->https = $https; - return $this; - } - - /** - * 检测域名 - * @access protected - * @param string $url URL - * @param string|true $domain 域名 - * @return string - */ - protected function parseDomain(string &$url, $domain): string - { - if (!$domain) { - return ''; - } - - $request = $this->app->request; - $rootDomain = $request->rootDomain(); - - if (true === $domain) { - // 自动判断域名 - $domain = $request->host(); - $domains = $this->route->getDomains(); - - if (!empty($domains)) { - $route_domain = array_keys($domains); - foreach ($route_domain as $domain_prefix) { - if (0 === strpos($domain_prefix, '*.') && strpos($domain, ltrim($domain_prefix, '*.')) !== false) { - foreach ($domains as $key => $rule) { - $rule = is_array($rule) ? $rule[0] : $rule; - if (is_string($rule) && false === strpos($key, '*') && 0 === strpos($url, $rule)) { - $url = ltrim($url, $rule); - $domain = $key; - - // 生成对应子域名 - if (!empty($rootDomain)) { - $domain .= $rootDomain; - } - break; - } elseif (false !== strpos($key, '*')) { - if (!empty($rootDomain)) { - $domain .= $rootDomain; - } - - break; - } - } - } - } - } - } elseif (false === strpos($domain, '.') && 0 !== strpos($domain, $rootDomain)) { - $domain .= '.' . $rootDomain; - } - - if (false !== strpos($domain, '://')) { - $scheme = ''; - } else { - $scheme = $this->https || $request->isSsl() ? 'https://' : 'http://'; - } - - return $scheme . $domain; - } - - /** - * 解析URL后缀 - * @access protected - * @param string|bool $suffix 后缀 - * @return string - */ - protected function parseSuffix($suffix): string - { - if ($suffix) { - $suffix = true === $suffix ? $this->route->config('url_html_suffix') : $suffix; - - if ($pos = strpos($suffix, '|')) { - $suffix = substr($suffix, 0, $pos); - } - } - - return (empty($suffix) || 0 === strpos($suffix, '.')) ? (string) $suffix : '.' . $suffix; - } - - /** - * 直接解析URL地址 - * @access protected - * @param string $url URL - * @param string|bool $domain Domain - * @return string - */ - protected function parseUrl(string $url, &$domain): string - { - $request = $this->app->request; - - if (0 === strpos($url, '/')) { - // 直接作为路由地址解析 - $url = substr($url, 1); - } elseif (false !== strpos($url, '\\')) { - // 解析到类 - $url = ltrim(str_replace('\\', '/', $url), '/'); - } elseif (0 === strpos($url, '@')) { - // 解析到控制器 - $url = substr($url, 1); - } elseif ('' === $url) { - $url = $request->controller() . '/' . $request->action(); - } else { - $controller = $request->controller(); - - $path = explode('/', $url); - $action = array_pop($path); - $controller = empty($path) ? $controller : array_pop($path); - - $url = $controller . '/' . $action; - } - - return $url; - } - - /** - * 分析路由规则中的变量 - * @access protected - * @param string $rule 路由规则 - * @return array - */ - protected function parseVar(string $rule): array - { - // 提取路由规则中的变量 - $var = []; - - if (preg_match_all('/<\w+\??>/', $rule, $matches)) { - foreach ($matches[0] as $name) { - $optional = false; - - if (strpos($name, '?')) { - $name = substr($name, 1, -2); - $optional = true; - } else { - $name = substr($name, 1, -1); - } - - $var[$name] = $optional ? 2 : 1; - } - } - - return $var; - } - - /** - * 匹配路由地址 - * @access protected - * @param array $rule 路由规则 - * @param array $vars 路由变量 - * @param mixed $allowDomain 允许域名 - * @return array - */ - protected function getRuleUrl(array $rule, array &$vars = [], $allowDomain = ''): array - { - $request = $this->app->request; - if (is_string($allowDomain) && false === strpos($allowDomain, '.')) { - $allowDomain .= '.' . $request->rootDomain(); - } - $port = $request->port(); - - foreach ($rule as $item) { - $url = $item->getRule(); - $pattern = $this->parseVar($url); - $domain = $item->getDomain(); - $suffix = $item->getSuffix(); - - if ('-' == $domain) { - $domain = is_string($allowDomain) ? $allowDomain : $request->host(true); - } - - if (is_string($allowDomain) && $domain != $allowDomain) { - continue; - } - - if ($port && !in_array($port, [80, 443])) { - $domain .= ':' . $port; - } - - if (empty($pattern)) { - return [rtrim($url, '?/-'), $domain, $suffix]; - } - - $type = $this->route->config('url_common_param'); - - foreach ($pattern as $key => $val) { - if (isset($vars[$key])) { - $url = str_replace(['[:' . $key . ']', '<' . $key . '?>', ':' . $key, '<' . $key . '>'], $type ? $vars[$key] : urlencode((string) $vars[$key]), $url); - unset($vars[$key]); - $url = str_replace(['/?', '-?'], ['/', '-'], $url); - $result = [rtrim($url, '?/-'), $domain, $suffix]; - } elseif (2 == $val) { - $url = str_replace(['/[:' . $key . ']', '[:' . $key . ']', '<' . $key . '?>'], '', $url); - $url = str_replace(['/?', '-?'], ['/', '-'], $url); - $result = [rtrim($url, '?/-'), $domain, $suffix]; - } else { - break; - } - } - - if (isset($result)) { - return $result; - } - } - - return []; - } - - public function build() - { - // 解析URL - $url = $this->url; - $suffix = $this->suffix; - $domain = $this->domain; - $request = $this->app->request; - $vars = $this->vars; - - if (0 === strpos($url, '[') && $pos = strpos($url, ']')) { - // [name] 表示使用路由命名标识生成URL - $name = substr($url, 1, $pos - 1); - $url = 'name' . substr($url, $pos + 1); - } - - if (false === strpos($url, '://') && 0 !== strpos($url, '/')) { - $info = parse_url($url); - $url = !empty($info['path']) ? $info['path'] : ''; - - if (isset($info['fragment'])) { - // 解析锚点 - $anchor = $info['fragment']; - - if (false !== strpos($anchor, '?')) { - // 解析参数 - list($anchor, $info['query']) = explode('?', $anchor, 2); - } - - if (false !== strpos($anchor, '@')) { - // 解析域名 - list($anchor, $domain) = explode('@', $anchor, 2); - } - } elseif (strpos($url, '@') && false === strpos($url, '\\')) { - // 解析域名 - list($url, $domain) = explode('@', $url, 2); - } - } - - if ($url) { - $checkName = isset($name) ? $name : $url . (isset($info['query']) ? '?' . $info['query'] : ''); - $checkDomain = $domain && is_string($domain) ? $domain : null; - - $rule = $this->route->getName($checkName, $checkDomain); - - if (empty($rule) && isset($info['query'])) { - $rule = $this->route->getName($url, $checkDomain); - // 解析地址里面参数 合并到vars - parse_str($info['query'], $params); - $vars = array_merge($params, $vars); - unset($info['query']); - } - } - - if (!empty($rule) && $match = $this->getRuleUrl($rule, $vars, $domain)) { - // 匹配路由命名标识 - $url = $match[0]; - - if ($domain && !empty($match[1])) { - $domain = $match[1]; - } - - if (!is_null($match[2])) { - $suffix = $match[2]; - } - } elseif (!empty($rule) && isset($name)) { - throw new \InvalidArgumentException('route name not exists:' . $name); - } else { - // 检测URL绑定 - $bind = $this->route->getDomainBind($domain && is_string($domain) ? $domain : null); - - if ($bind && 0 === strpos($url, $bind)) { - $url = substr($url, strlen($bind) + 1); - } else { - $binds = $this->route->getBind(); - - foreach ($binds as $key => $val) { - if (is_string($val) && 0 === strpos($url, $val) && substr_count($val, '/') > 1) { - $url = substr($url, strlen($val) + 1); - $domain = $key; - break; - } - } - } - - // 路由标识不存在 直接解析 - $url = $this->parseUrl($url, $domain); - - if (isset($info['query'])) { - // 解析地址里面参数 合并到vars - parse_str($info['query'], $params); - $vars = array_merge($params, $vars); - } - } - - // 还原URL分隔符 - $depr = $this->route->config('pathinfo_depr'); - $url = str_replace('/', $depr, $url); - - $file = $request->baseFile(); - if ($file && 0 !== strpos($request->url(), $file)) { - $file = str_replace('\\', '/', dirname($file)); - } - - $url = rtrim($file, '/') . '/' . $url; - - // URL后缀 - if ('/' == substr($url, -1) || '' == $url) { - $suffix = ''; - } else { - $suffix = $this->parseSuffix($suffix); - } - - // 锚点 - $anchor = !empty($anchor) ? '#' . $anchor : ''; - - // 参数组装 - if (!empty($vars)) { - // 添加参数 - if ($this->route->config('url_common_param')) { - $vars = http_build_query($vars); - $url .= $suffix . '?' . $vars . $anchor; - } else { - foreach ($vars as $var => $val) { - $val = (string) $val; - if ('' !== $val) { - $url .= $depr . $var . $depr . urlencode($val); - } - } - - $url .= $suffix . $anchor; - } - } else { - $url .= $suffix . $anchor; - } - - // 检测域名 - $domain = $this->parseDomain($url, $domain); - - // URL组装 - return $domain . rtrim($this->root, '/') . '/' . ltrim($url, '/'); - } - - public function __toString() - { - return $this->build(); - } - - public function __debugInfo() - { - return [ - 'url' => $this->url, - 'vars' => $this->vars, - 'suffix' => $this->suffix, - 'domain' => $this->domain, - ]; - } -} diff --git a/vendor/topthink/framework/src/think/route/dispatch/Callback.php b/vendor/topthink/framework/src/think/route/dispatch/Callback.php deleted file mode 100644 index 7658c3dff..000000000 --- a/vendor/topthink/framework/src/think/route/dispatch/Callback.php +++ /dev/null @@ -1,30 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route\dispatch; - -use think\route\Dispatch; - -/** - * Callback Dispatcher - */ -class Callback extends Dispatch -{ - public function exec() - { - // 执行回调方法 - $vars = array_merge($this->request->param(), $this->param); - - return $this->app->invoke($this->dispatch, $vars); - } - -} diff --git a/vendor/topthink/framework/src/think/route/dispatch/Controller.php b/vendor/topthink/framework/src/think/route/dispatch/Controller.php deleted file mode 100644 index 413c1a1bc..000000000 --- a/vendor/topthink/framework/src/think/route/dispatch/Controller.php +++ /dev/null @@ -1,175 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route\dispatch; - -use ReflectionClass; -use ReflectionException; -use ReflectionMethod; -use think\App; -use think\exception\ClassNotFoundException; -use think\exception\HttpException; -use think\helper\Str; -use think\route\Dispatch; - -/** - * Controller Dispatcher - */ -class Controller extends Dispatch -{ - /** - * 控制器名 - * @var string - */ - protected $controller; - - /** - * 操作名 - * @var string - */ - protected $actionName; - - public function init(App $app) - { - parent::init($app); - - $result = $this->dispatch; - - if (is_string($result)) { - $result = explode('/', $result); - } - - // 获取控制器名 - $controller = strip_tags($result[0] ?: $this->rule->config('default_controller')); - - if (strpos($controller, '.')) { - $pos = strrpos($controller, '.'); - $this->controller = substr($controller, 0, $pos) . '.' . Str::studly(substr($controller, $pos + 1)); - } else { - $this->controller = Str::studly($controller); - } - - // 获取操作名 - $this->actionName = strip_tags($result[1] ?: $this->rule->config('default_action')); - - // 设置当前请求的控制器、操作 - $this->request - ->setController($this->controller) - ->setAction($this->actionName); - } - - public function exec() - { - try { - // 实例化控制器 - $instance = $this->controller($this->controller); - } catch (ClassNotFoundException $e) { - throw new HttpException(404, 'controller not exists:' . $e->getClass()); - } - - // 注册控制器中间件 - $this->registerControllerMiddleware($instance); - - return $this->app->middleware->pipeline('controller') - ->send($this->request) - ->then(function () use ($instance) { - // 获取当前操作名 - $action = $this->actionName . $this->rule->config('action_suffix'); - - if (is_callable([$instance, $action])) { - $vars = $this->request->param(); - try { - $reflect = new ReflectionMethod($instance, $action); - // 严格获取当前操作方法名 - $actionName = $reflect->getName(); - $this->request->setAction($actionName); - } catch (ReflectionException $e) { - $reflect = new ReflectionMethod($instance, '__call'); - $vars = [$action, $vars]; - $this->request->setAction($action); - } - } else { - // 操作不存在 - throw new HttpException(404, 'method not exists:' . get_class($instance) . '->' . $action . '()'); - } - - $data = $this->app->invokeReflectMethod($instance, $reflect, $vars); - - return $this->autoResponse($data); - }); - } - - /** - * 使用反射机制注册控制器中间件 - * @access public - * @param object $controller 控制器实例 - * @return void - */ - protected function registerControllerMiddleware($controller): void - { - $class = new ReflectionClass($controller); - - if ($class->hasProperty('middleware')) { - $reflectionProperty = $class->getProperty('middleware'); - $reflectionProperty->setAccessible(true); - - $middlewares = $reflectionProperty->getValue($controller); - - foreach ($middlewares as $key => $val) { - if (!is_int($key)) { - if (isset($val['only']) && !in_array($this->request->action(true), array_map(function ($item) { - return strtolower($item); - }, is_string($val['only']) ? explode(",", $val['only']) : $val['only']))) { - continue; - } elseif (isset($val['except']) && in_array($this->request->action(true), array_map(function ($item) { - return strtolower($item); - }, is_string($val['except']) ? explode(',', $val['except']) : $val['except']))) { - continue; - } else { - $val = $key; - } - } - - if (is_string($val) && strpos($val, ':')) { - $val = explode(':', $val, 2); - } - - $this->app->middleware->controller($val); - } - } - } - - /** - * 实例化访问控制器 - * @access public - * @param string $name 资源地址 - * @return object - * @throws ClassNotFoundException - */ - public function controller(string $name) - { - $suffix = $this->rule->config('controller_suffix') ? 'Controller' : ''; - - $controllerLayer = $this->rule->config('controller_layer') ?: 'controller'; - $emptyController = $this->rule->config('empty_controller') ?: 'Error'; - - $class = $this->app->parseClass($controllerLayer, $name . $suffix); - - if (class_exists($class)) { - return $this->app->make($class, [], true); - } elseif ($emptyController && class_exists($emptyClass = $this->app->parseClass($controllerLayer, $emptyController . $suffix))) { - return $this->app->make($emptyClass, [], true); - } - - throw new ClassNotFoundException('class not exists:' . $class, $class); - } -} diff --git a/vendor/topthink/framework/src/think/route/dispatch/Redirect.php b/vendor/topthink/framework/src/think/route/dispatch/Redirect.php deleted file mode 100644 index 1ec9ed974..000000000 --- a/vendor/topthink/framework/src/think/route/dispatch/Redirect.php +++ /dev/null @@ -1,27 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route\dispatch; - -use think\Response; -use think\route\Dispatch; - -/** - * Redirect Dispatcher - */ -class Redirect extends Dispatch -{ - public function exec() - { - return Response::create($this->dispatch, 'redirect')->code($this->code); - } -} diff --git a/vendor/topthink/framework/src/think/route/dispatch/Response.php b/vendor/topthink/framework/src/think/route/dispatch/Response.php deleted file mode 100644 index 3ae4c0a2d..000000000 --- a/vendor/topthink/framework/src/think/route/dispatch/Response.php +++ /dev/null @@ -1,27 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route\dispatch; - -use think\route\Dispatch; - -/** - * Response Dispatcher - */ -class Response extends Dispatch -{ - public function exec() - { - return $this->dispatch; - } - -} diff --git a/vendor/topthink/framework/src/think/route/dispatch/Url.php b/vendor/topthink/framework/src/think/route/dispatch/Url.php deleted file mode 100644 index acbd9d05a..000000000 --- a/vendor/topthink/framework/src/think/route/dispatch/Url.php +++ /dev/null @@ -1,118 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route\dispatch; - -use think\exception\HttpException; -use think\helper\Str; -use think\Request; -use think\route\Rule; - -/** - * Url Dispatcher - */ -class Url extends Controller -{ - - public function __construct(Request $request, Rule $rule, $dispatch, array $param = [], int $code = null) - { - $this->request = $request; - $this->rule = $rule; - // 解析默认的URL规则 - $dispatch = $this->parseUrl($dispatch); - - parent::__construct($request, $rule, $dispatch, $this->param, $code); - } - - /** - * 解析URL地址 - * @access protected - * @param string $url URL - * @return array - */ - protected function parseUrl(string $url): array - { - $depr = $this->rule->config('pathinfo_depr'); - $bind = $this->rule->getRouter()->getDomainBind(); - - if ($bind && preg_match('/^[a-z]/is', $bind)) { - $bind = str_replace('/', $depr, $bind); - // 如果有域名绑定 - $url = $bind . ('.' != substr($bind, -1) ? $depr : '') . ltrim($url, $depr); - } - - $path = $this->rule->parseUrlPath($url); - if (empty($path)) { - return [null, null]; - } - - // 解析控制器 - $controller = !empty($path) ? array_shift($path) : null; - - if ($controller && !preg_match('/^[A-Za-z][\w|\.]*$/', $controller)) { - throw new HttpException(404, 'controller not exists:' . $controller); - } - - // 解析操作 - $action = !empty($path) ? array_shift($path) : null; - $var = []; - - // 解析额外参数 - if ($path) { - preg_replace_callback('/(\w+)\|([^\|]+)/', function ($match) use (&$var) { - $var[$match[1]] = strip_tags($match[2]); - }, implode('|', $path)); - } - - $panDomain = $this->request->panDomain(); - if ($panDomain && $key = array_search('*', $var)) { - // 泛域名赋值 - $var[$key] = $panDomain; - } - - // 设置当前请求的参数 - $this->param = $var; - - // 封装路由 - $route = [$controller, $action]; - - if ($this->hasDefinedRoute($route)) { - throw new HttpException(404, 'invalid request:' . str_replace('|', $depr, $url)); - } - - return $route; - } - - /** - * 检查URL是否已经定义过路由 - * @access protected - * @param array $route 路由信息 - * @return bool - */ - protected function hasDefinedRoute(array $route): bool - { - list($controller, $action) = $route; - - // 检查地址是否被定义过路由 - $name = strtolower(Str::studly($controller) . '/' . $action); - - $host = $this->request->host(true); - $method = $this->request->method(); - - if ($this->rule->getRouter()->getName($name, $host, $method)) { - return true; - } - - return false; - } - -} diff --git a/vendor/topthink/framework/src/think/route/dispatch/View.php b/vendor/topthink/framework/src/think/route/dispatch/View.php deleted file mode 100644 index 94f904762..000000000 --- a/vendor/topthink/framework/src/think/route/dispatch/View.php +++ /dev/null @@ -1,28 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\route\dispatch; - -use think\Response; -use think\route\Dispatch; - -/** - * View Dispatcher - */ -class View extends Dispatch -{ - public function exec() - { - // 渲染模板输出 - return Response::create($this->dispatch, 'view')->assign($this->param); - } -} diff --git a/vendor/topthink/framework/src/think/service/ModelService.php b/vendor/topthink/framework/src/think/service/ModelService.php deleted file mode 100644 index a212a58ec..000000000 --- a/vendor/topthink/framework/src/think/service/ModelService.php +++ /dev/null @@ -1,47 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\service; - -use think\Model; -use think\Service; - -/** - * 模型服务类 - */ -class ModelService extends Service -{ - public function boot() - { - Model::setDb($this->app->db); - Model::setEvent($this->app->event); - Model::setInvoker([$this->app, 'invoke']); - Model::maker(function (Model $model) { - $config = $this->app->config; - - $isAutoWriteTimestamp = $model->getAutoWriteTimestamp(); - - if (is_null($isAutoWriteTimestamp)) { - // 自动写入时间戳 - $model->isAutoWriteTimestamp($config->get('database.auto_timestamp', 'timestamp')); - } - - $dateFormat = $model->getDateFormat(); - - if (is_null($dateFormat)) { - // 设置时间戳格式 - $model->setDateFormat($config->get('database.datetime_format', 'Y-m-d H:i:s')); - } - - }); - } -} diff --git a/vendor/topthink/framework/src/think/service/PaginatorService.php b/vendor/topthink/framework/src/think/service/PaginatorService.php deleted file mode 100644 index b13dc1dfb..000000000 --- a/vendor/topthink/framework/src/think/service/PaginatorService.php +++ /dev/null @@ -1,52 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\service; - -use think\Paginator; -use think\paginator\driver\Bootstrap; -use think\Service; - -/** - * 分页服务类 - */ -class PaginatorService extends Service -{ - public function register() - { - if (!$this->app->bound(Paginator::class)) { - $this->app->bind(Paginator::class, Bootstrap::class); - } - } - - public function boot() - { - Paginator::maker(function (...$args) { - return $this->app->make(Paginator::class, $args, true); - }); - - Paginator::currentPathResolver(function () { - return $this->app->request->baseUrl(); - }); - - Paginator::currentPageResolver(function ($varPage = 'page') { - - $page = $this->app->request->param($varPage); - - if (filter_var($page, FILTER_VALIDATE_INT) !== false && (int) $page >= 1) { - return (int) $page; - } - - return 1; - }); - } -} diff --git a/vendor/topthink/framework/src/think/service/ValidateService.php b/vendor/topthink/framework/src/think/service/ValidateService.php deleted file mode 100644 index d96dea010..000000000 --- a/vendor/topthink/framework/src/think/service/ValidateService.php +++ /dev/null @@ -1,31 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\service; - -use think\Service; -use think\Validate; - -/** - * 验证服务类 - */ -class ValidateService extends Service -{ - public function boot() - { - Validate::maker(function (Validate $validate) { - $validate->setLang($this->app->lang); - $validate->setDb($this->app->db); - $validate->setRequest($this->app->request); - }); - } -} diff --git a/vendor/topthink/framework/src/think/session/Store.php b/vendor/topthink/framework/src/think/session/Store.php deleted file mode 100644 index 30f463009..000000000 --- a/vendor/topthink/framework/src/think/session/Store.php +++ /dev/null @@ -1,340 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\session; - -use think\contract\SessionHandlerInterface; -use think\helper\Arr; - -class Store -{ - - /** - * Session数据 - * @var array - */ - protected $data = []; - - /** - * 是否初始化 - * @var bool - */ - protected $init = null; - - /** - * 记录Session name - * @var string - */ - protected $name = 'PHPSESSID'; - - /** - * 记录Session Id - * @var string - */ - protected $id; - - /** - * @var SessionHandlerInterface - */ - protected $handler; - - /** @var array */ - protected $serialize = []; - - public function __construct($name, SessionHandlerInterface $handler, array $serialize = null) - { - $this->name = $name; - $this->handler = $handler; - - if (!empty($serialize)) { - $this->serialize = $serialize; - } - - $this->setId(); - } - - /** - * 设置数据 - * @access public - * @param array $data - * @return void - */ - public function setData(array $data): void - { - $this->data = $data; - } - - /** - * session初始化 - * @access public - * @return void - */ - public function init(): void - { - // 读取缓存数据 - $data = $this->handler->read($this->getId()); - - if (!empty($data)) { - $this->data = array_merge($this->data, $this->unserialize($data)); - } - - $this->init = true; - } - - /** - * 设置SessionName - * @access public - * @param string $name session_name - * @return void - */ - public function setName(string $name): void - { - $this->name = $name; - } - - /** - * 获取sessionName - * @access public - * @return string - */ - public function getName(): string - { - return $this->name; - } - - /** - * session_id设置 - * @access public - * @param string $id session_id - * @return void - */ - public function setId($id = null): void - { - $this->id = is_string($id) && strlen($id) === 32 ? $id : md5(microtime(true) . session_create_id()); - } - - /** - * 获取session_id - * @access public - * @return string - */ - public function getId(): string - { - return $this->id; - } - - /** - * 获取所有数据 - * @return array - */ - public function all(): array - { - return $this->data; - } - - /** - * session设置 - * @access public - * @param string $name session名称 - * @param mixed $value session值 - * @return void - */ - public function set(string $name, $value): void - { - Arr::set($this->data, $name, $value); - } - - /** - * session获取 - * @access public - * @param string $name session名称 - * @param mixed $default 默认值 - * @return mixed - */ - public function get(string $name, $default = null) - { - return Arr::get($this->data, $name, $default); - } - - /** - * session获取并删除 - * @access public - * @param string $name session名称 - * @return mixed - */ - public function pull(string $name) - { - return Arr::pull($this->data, $name); - } - - /** - * 添加数据到一个session数组 - * @access public - * @param string $key - * @param mixed $value - * @return void - */ - public function push(string $key, $value): void - { - $array = $this->get($key, []); - - $array[] = $value; - - $this->set($key, $array); - } - - /** - * 判断session数据 - * @access public - * @param string $name session名称 - * @return bool - */ - public function has(string $name): bool - { - return Arr::has($this->data, $name); - } - - /** - * 删除session数据 - * @access public - * @param string $name session名称 - * @return void - */ - public function delete(string $name): void - { - Arr::forget($this->data, $name); - } - - /** - * 清空session数据 - * @access public - * @return void - */ - public function clear(): void - { - $this->data = []; - } - - /** - * 销毁session - */ - public function destroy(): void - { - $this->clear(); - - $this->regenerate(true); - } - - /** - * 重新生成session id - * @param bool $destroy - */ - public function regenerate(bool $destroy = false): void - { - if ($destroy) { - $this->handler->delete($this->getId()); - } - - $this->setId(); - } - - /** - * 保存session数据 - * @access public - * @return void - */ - public function save(): void - { - $this->clearFlashData(); - - $sessionId = $this->getId(); - - if (!empty($this->data)) { - $data = $this->serialize($this->data); - - $this->handler->write($sessionId, $data); - } else { - $this->handler->delete($sessionId); - } - - $this->init = false; - } - - /** - * session设置 下一次请求有效 - * @access public - * @param string $name session名称 - * @param mixed $value session值 - * @return void - */ - public function flash(string $name, $value): void - { - $this->set($name, $value); - $this->push('__flash__.__next__', $name); - $this->set('__flash__.__current__', Arr::except($this->get('__flash__.__current__', []), $name)); - } - - /** - * 将本次闪存数据推迟到下次请求 - * - * @return void - */ - public function reflash(): void - { - $keys = $this->get('__flash__.__current__', []); - $values = array_unique(array_merge($this->get('__flash__.__next__', []), $keys)); - $this->set('__flash__.__next__', $values); - $this->set('__flash__.__current__', []); - } - - /** - * 清空当前请求的session数据 - * @access public - * @return void - */ - public function clearFlashData(): void - { - Arr::forget($this->data, $this->get('__flash__.__current__', [])); - if (!empty($next = $this->get('__flash__.__next__', []))) { - $this->set('__flash__.__current__', $next); - } else { - $this->delete('__flash__.__current__'); - } - $this->delete('__flash__.__next__'); - } - - /** - * 序列化数据 - * @access protected - * @param mixed $data - * @return string - */ - protected function serialize($data): string - { - $serialize = $this->serialize[0] ?? 'serialize'; - - return $serialize($data); - } - - /** - * 反序列化数据 - * @access protected - * @param string $data - * @return array - */ - protected function unserialize(string $data): array - { - $unserialize = $this->serialize[1] ?? 'unserialize'; - - return (array) $unserialize($data); - } - -} diff --git a/vendor/topthink/framework/src/think/session/driver/Cache.php b/vendor/topthink/framework/src/think/session/driver/Cache.php deleted file mode 100644 index c25e2efee..000000000 --- a/vendor/topthink/framework/src/think/session/driver/Cache.php +++ /dev/null @@ -1,50 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think\session\driver; - -use Psr\SimpleCache\CacheInterface; -use think\contract\SessionHandlerInterface; -use think\helper\Arr; - -class Cache implements SessionHandlerInterface -{ - - /** @var CacheInterface */ - protected $handler; - - /** @var integer */ - protected $expire; - - /** @var string */ - protected $prefix; - - public function __construct(\think\Cache $cache, array $config = []) - { - $this->handler = $cache->store(Arr::get($config, 'store')); - $this->expire = Arr::get($config, 'expire', 1440); - $this->prefix = Arr::get($config, 'prefix', ''); - } - - public function read(string $sessionId): string - { - return (string) $this->handler->get($this->prefix . $sessionId); - } - - public function delete(string $sessionId): bool - { - return $this->handler->delete($this->prefix . $sessionId); - } - - public function write(string $sessionId, string $data): bool - { - return $this->handler->set($this->prefix . $sessionId, $data, $this->expire); - } -} diff --git a/vendor/topthink/framework/src/think/session/driver/File.php b/vendor/topthink/framework/src/think/session/driver/File.php deleted file mode 100644 index 1846089a7..000000000 --- a/vendor/topthink/framework/src/think/session/driver/File.php +++ /dev/null @@ -1,249 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\session\driver; - -use Closure; -use Exception; -use FilesystemIterator; -use Generator; -use SplFileInfo; -use think\App; -use think\contract\SessionHandlerInterface; - -/** - * Session 文件驱动 - */ -class File implements SessionHandlerInterface -{ - protected $config = [ - 'path' => '', - 'expire' => 1440, - 'prefix' => '', - 'data_compress' => false, - 'gc_probability' => 1, - 'gc_divisor' => 100, - ]; - - public function __construct(App $app, array $config = []) - { - $this->config = array_merge($this->config, $config); - - if (empty($this->config['path'])) { - $this->config['path'] = $app->getRootPath() . 'runtime' . DIRECTORY_SEPARATOR . 'session' . DIRECTORY_SEPARATOR; - } elseif (substr($this->config['path'], -1) != DIRECTORY_SEPARATOR) { - $this->config['path'] .= DIRECTORY_SEPARATOR; - } - - $this->init(); - } - - /** - * 打开Session - * @access protected - * @throws Exception - */ - protected function init(): void - { - try { - !is_dir($this->config['path']) && mkdir($this->config['path'], 0755, true); - } catch (\Exception $e) { - // 写入失败 - } - - // 垃圾回收 - if (random_int(1, $this->config['gc_divisor']) <= $this->config['gc_probability']) { - $this->gc(); - } - } - - /** - * Session 垃圾回收 - * @access public - * @return void - */ - public function gc(): void - { - $lifetime = $this->config['expire']; - $now = time(); - - $files = $this->findFiles($this->config['path'], function (SplFileInfo $item) use ($lifetime, $now) { - return $now - $lifetime > $item->getMTime(); - }); - - foreach ($files as $file) { - $this->unlink($file->getPathname()); - } - } - - /** - * 查找文件 - * @param string $root - * @param Closure $filter - * @return Generator - */ - protected function findFiles(string $root, Closure $filter) - { - $items = new FilesystemIterator($root); - - /** @var SplFileInfo $item */ - foreach ($items as $item) { - if ($item->isDir() && !$item->isLink()) { - yield from $this->findFiles($item->getPathname(), $filter); - } else { - if ($filter($item)) { - yield $item; - } - } - } - } - - /** - * 取得变量的存储文件名 - * @access protected - * @param string $name 缓存变量名 - * @param bool $auto 是否自动创建目录 - * @return string - */ - protected function getFileName(string $name, bool $auto = false): string - { - if ($this->config['prefix']) { - // 使用子目录 - $name = $this->config['prefix'] . DIRECTORY_SEPARATOR . 'sess_' . $name; - } else { - $name = 'sess_' . $name; - } - - $filename = $this->config['path'] . $name; - $dir = dirname($filename); - - if ($auto && !is_dir($dir)) { - try { - mkdir($dir, 0755, true); - } catch (\Exception $e) { - // 创建失败 - } - } - - return $filename; - } - - /** - * 读取Session - * @access public - * @param string $sessID - * @return string - */ - public function read(string $sessID): string - { - $filename = $this->getFileName($sessID); - - if (is_file($filename) && filemtime($filename) >= time() - $this->config['expire']) { - $content = $this->readFile($filename); - - if ($this->config['data_compress'] && function_exists('gzcompress')) { - //启用数据压缩 - $content = gzuncompress($content); - } - - return $content; - } - - return ''; - } - - /** - * 写文件(加锁) - * @param $path - * @param $content - * @return bool - */ - protected function writeFile($path, $content): bool - { - return (bool) file_put_contents($path, $content, LOCK_EX); - } - - /** - * 读取文件内容(加锁) - * @param $path - * @return string - */ - protected function readFile($path): string - { - $contents = ''; - - $handle = fopen($path, 'rb'); - - if ($handle) { - try { - if (flock($handle, LOCK_SH)) { - clearstatcache(true, $path); - - $contents = fread($handle, filesize($path) ?: 1); - - flock($handle, LOCK_UN); - } - } finally { - fclose($handle); - } - } - - return $contents; - } - - /** - * 写入Session - * @access public - * @param string $sessID - * @param string $sessData - * @return bool - */ - public function write(string $sessID, string $sessData): bool - { - $filename = $this->getFileName($sessID, true); - $data = $sessData; - - if ($this->config['data_compress'] && function_exists('gzcompress')) { - //数据压缩 - $data = gzcompress($data, 3); - } - - return $this->writeFile($filename, $data); - } - - /** - * 删除Session - * @access public - * @param string $sessID - * @return bool - */ - public function delete(string $sessID): bool - { - try { - return $this->unlink($this->getFileName($sessID)); - } catch (\Exception $e) { - return false; - } - } - - /** - * 判断文件是否存在后,删除 - * @access private - * @param string $file - * @return bool - */ - private function unlink(string $file): bool - { - return is_file($file) && unlink($file); - } - -} diff --git a/vendor/topthink/framework/src/think/validate/ValidateRule.php b/vendor/topthink/framework/src/think/validate/ValidateRule.php deleted file mode 100644 index 05e275fe3..000000000 --- a/vendor/topthink/framework/src/think/validate/ValidateRule.php +++ /dev/null @@ -1,172 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\validate; - -/** - * Class ValidateRule - * @package think\validate - * @method ValidateRule confirm(mixed $rule, string $msg = '') static 验证是否和某个字段的值一致 - * @method ValidateRule different(mixed $rule, string $msg = '') static 验证是否和某个字段的值是否不同 - * @method ValidateRule egt(mixed $rule, string $msg = '') static 验证是否大于等于某个值 - * @method ValidateRule gt(mixed $rule, string $msg = '') static 验证是否大于某个值 - * @method ValidateRule elt(mixed $rule, string $msg = '') static 验证是否小于等于某个值 - * @method ValidateRule lt(mixed $rule, string $msg = '') static 验证是否小于某个值 - * @method ValidateRule eg(mixed $rule, string $msg = '') static 验证是否等于某个值 - * @method ValidateRule in(mixed $rule, string $msg = '') static 验证是否在范围内 - * @method ValidateRule notIn(mixed $rule, string $msg = '') static 验证是否不在某个范围 - * @method ValidateRule between(mixed $rule, string $msg = '') static 验证是否在某个区间 - * @method ValidateRule notBetween(mixed $rule, string $msg = '') static 验证是否不在某个区间 - * @method ValidateRule length(mixed $rule, string $msg = '') static 验证数据长度 - * @method ValidateRule max(mixed $rule, string $msg = '') static 验证数据最大长度 - * @method ValidateRule min(mixed $rule, string $msg = '') static 验证数据最小长度 - * @method ValidateRule after(mixed $rule, string $msg = '') static 验证日期 - * @method ValidateRule before(mixed $rule, string $msg = '') static 验证日期 - * @method ValidateRule expire(mixed $rule, string $msg = '') static 验证有效期 - * @method ValidateRule allowIp(mixed $rule, string $msg = '') static 验证IP许可 - * @method ValidateRule denyIp(mixed $rule, string $msg = '') static 验证IP禁用 - * @method ValidateRule regex(mixed $rule, string $msg = '') static 使用正则验证数据 - * @method ValidateRule token(mixed $rule='__token__', string $msg = '') static 验证表单令牌 - * @method ValidateRule is(mixed $rule, string $msg = '') static 验证字段值是否为有效格式 - * @method ValidateRule isRequire(mixed $rule = null, string $msg = '') static 验证字段必须 - * @method ValidateRule isNumber(mixed $rule = null, string $msg = '') static 验证字段值是否为数字 - * @method ValidateRule isArray(mixed $rule = null, string $msg = '') static 验证字段值是否为数组 - * @method ValidateRule isInteger(mixed $rule = null, string $msg = '') static 验证字段值是否为整形 - * @method ValidateRule isFloat(mixed $rule = null, string $msg = '') static 验证字段值是否为浮点数 - * @method ValidateRule isMobile(mixed $rule = null, string $msg = '') static 验证字段值是否为手机 - * @method ValidateRule isIdCard(mixed $rule = null, string $msg = '') static 验证字段值是否为身份证号码 - * @method ValidateRule isChs(mixed $rule = null, string $msg = '') static 验证字段值是否为中文 - * @method ValidateRule isChsDash(mixed $rule = null, string $msg = '') static 验证字段值是否为中文字母及下划线 - * @method ValidateRule isChsAlpha(mixed $rule = null, string $msg = '') static 验证字段值是否为中文和字母 - * @method ValidateRule isChsAlphaNum(mixed $rule = null, string $msg = '') static 验证字段值是否为中文字母和数字 - * @method ValidateRule isDate(mixed $rule = null, string $msg = '') static 验证字段值是否为有效格式 - * @method ValidateRule isBool(mixed $rule = null, string $msg = '') static 验证字段值是否为布尔值 - * @method ValidateRule isAlpha(mixed $rule = null, string $msg = '') static 验证字段值是否为字母 - * @method ValidateRule isAlphaDash(mixed $rule = null, string $msg = '') static 验证字段值是否为字母和下划线 - * @method ValidateRule isAlphaNum(mixed $rule = null, string $msg = '') static 验证字段值是否为字母和数字 - * @method ValidateRule isAccepted(mixed $rule = null, string $msg = '') static 验证字段值是否为yes, on, 或是 1 - * @method ValidateRule isEmail(mixed $rule = null, string $msg = '') static 验证字段值是否为有效邮箱格式 - * @method ValidateRule isUrl(mixed $rule = null, string $msg = '') static 验证字段值是否为有效URL地址 - * @method ValidateRule activeUrl(mixed $rule, string $msg = '') static 验证是否为合格的域名或者IP - * @method ValidateRule ip(mixed $rule, string $msg = '') static 验证是否有效IP - * @method ValidateRule fileExt(mixed $rule, string $msg = '') static 验证文件后缀 - * @method ValidateRule fileMime(mixed $rule, string $msg = '') static 验证文件类型 - * @method ValidateRule fileSize(mixed $rule, string $msg = '') static 验证文件大小 - * @method ValidateRule image(mixed $rule, string $msg = '') static 验证图像文件 - * @method ValidateRule method(mixed $rule, string $msg = '') static 验证请求类型 - * @method ValidateRule dateFormat(mixed $rule, string $msg = '') static 验证时间和日期是否符合指定格式 - * @method ValidateRule unique(mixed $rule, string $msg = '') static 验证是否唯一 - * @method ValidateRule behavior(mixed $rule, string $msg = '') static 使用行为类验证 - * @method ValidateRule filter(mixed $rule, string $msg = '') static 使用filter_var方式验证 - * @method ValidateRule requireIf(mixed $rule, string $msg = '') static 验证某个字段等于某个值的时候必须 - * @method ValidateRule requireCallback(mixed $rule, string $msg = '') static 通过回调方法验证某个字段是否必须 - * @method ValidateRule requireWith(mixed $rule, string $msg = '') static 验证某个字段有值的情况下必须 - * @method ValidateRule must(mixed $rule = null, string $msg = '') static 必须验证 - */ -class ValidateRule -{ - // 验证字段的名称 - protected $title; - - // 当前验证规则 - protected $rule = []; - - // 验证提示信息 - protected $message = []; - - /** - * 添加验证因子 - * @access protected - * @param string $name 验证名称 - * @param mixed $rule 验证规则 - * @param string $msg 提示信息 - * @return $this - */ - protected function addItem(string $name, $rule = null, string $msg = '') - { - if ($rule || 0 === $rule) { - $this->rule[$name] = $rule; - } else { - $this->rule[] = $name; - } - - $this->message[] = $msg; - - return $this; - } - - /** - * 获取验证规则 - * @access public - * @return array - */ - public function getRule(): array - { - return $this->rule; - } - - /** - * 获取验证字段名称 - * @access public - * @return string - */ - public function getTitle(): string - { - return $this->title ?: ''; - } - - /** - * 获取验证提示 - * @access public - * @return array - */ - public function getMsg(): array - { - return $this->message; - } - - /** - * 设置验证字段名称 - * @access public - * @return $this - */ - public function title(string $title) - { - $this->title = $title; - - return $this; - } - - public function __call($method, $args) - { - if ('is' == strtolower(substr($method, 0, 2))) { - $method = substr($method, 2); - } - - array_unshift($args, lcfirst($method)); - - return call_user_func_array([$this, 'addItem'], $args); - } - - public static function __callStatic($method, $args) - { - $rule = new static(); - - if ('is' == strtolower(substr($method, 0, 2))) { - $method = substr($method, 2); - } - - array_unshift($args, lcfirst($method)); - - return call_user_func_array([$rule, 'addItem'], $args); - } -} diff --git a/vendor/topthink/framework/src/think/view/driver/Php.php b/vendor/topthink/framework/src/think/view/driver/Php.php deleted file mode 100644 index a89e58653..000000000 --- a/vendor/topthink/framework/src/think/view/driver/Php.php +++ /dev/null @@ -1,195 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\view\driver; - -use RuntimeException; -use think\App; -use think\contract\TemplateHandlerInterface; -use think\helper\Str; - -/** - * PHP原生模板驱动 - */ -class Php implements TemplateHandlerInterface -{ - protected $template; - protected $content; - protected $app; - - // 模板引擎参数 - protected $config = [ - // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法 - 'auto_rule' => 1, - // 视图目录名 - 'view_dir_name' => 'view', - // 应用模板路径 - 'view_path' => '', - // 模板文件后缀 - 'view_suffix' => 'php', - // 模板文件名分隔符 - 'view_depr' => DIRECTORY_SEPARATOR, - ]; - - public function __construct(App $app, array $config = []) - { - $this->app = $app; - $this->config = array_merge($this->config, (array) $config); - } - - /** - * 检测是否存在模板文件 - * @access public - * @param string $template 模板文件或者模板规则 - * @return bool - */ - public function exists(string $template): bool - { - if ('' == pathinfo($template, PATHINFO_EXTENSION)) { - // 获取模板文件名 - $template = $this->parseTemplate($template); - } - - return is_file($template); - } - - /** - * 渲染模板文件 - * @access public - * @param string $template 模板文件 - * @param array $data 模板变量 - * @return void - */ - public function fetch(string $template, array $data = []): void - { - if ('' == pathinfo($template, PATHINFO_EXTENSION)) { - // 获取模板文件名 - $template = $this->parseTemplate($template); - } - - // 模板不存在 抛出异常 - if (!is_file($template)) { - throw new RuntimeException('template not exists:' . $template); - } - - $this->template = $template; - - // 记录视图信息 - $this->app->log - ->record('[ VIEW ] ' . $template . ' [ ' . var_export(array_keys($data), true) . ' ]'); - - extract($data, EXTR_OVERWRITE); - - include $this->template; - } - - /** - * 渲染模板内容 - * @access public - * @param string $content 模板内容 - * @param array $data 模板变量 - * @return void - */ - public function display(string $content, array $data = []): void - { - $this->content = $content; - - extract($data, EXTR_OVERWRITE); - eval('?>' . $this->content); - } - - /** - * 自动定位模板文件 - * @access private - * @param string $template 模板文件规则 - * @return string - */ - private function parseTemplate(string $template): string - { - $request = $this->app->request; - - // 获取视图根目录 - if (strpos($template, '@')) { - // 跨模块调用 - list($app, $template) = explode('@', $template); - } - - if ($this->config['view_path'] && !isset($app)) { - $path = $this->config['view_path']; - } else { - $appName = isset($app) ? $app : $this->app->http->getName(); - $view = $this->config['view_dir_name']; - - if (is_dir($this->app->getAppPath() . $view)) { - $path = isset($app) ? $this->app->getBasePath() . ($appName ? $appName . DIRECTORY_SEPARATOR : '') . $view . DIRECTORY_SEPARATOR : $this->app->getAppPath() . $view . DIRECTORY_SEPARATOR; - } else { - $path = $this->app->getRootPath() . $view . DIRECTORY_SEPARATOR . ($appName ? $appName . DIRECTORY_SEPARATOR : ''); - } - } - - $depr = $this->config['view_depr']; - - if (0 !== strpos($template, '/')) { - $template = str_replace(['/', ':'], $depr, $template); - $controller = $request->controller(); - if (strpos($controller, '.')) { - $pos = strrpos($controller, '.'); - $controller = substr($controller, 0, $pos) . '.' . Str::snake(substr($controller, $pos + 1)); - } else { - $controller = Str::snake($controller); - } - - if ($controller) { - if ('' == $template) { - // 如果模板文件名为空 按照默认规则定位 - if (2 == $this->config['auto_rule']) { - $template = $request->action(true); - } elseif (3 == $this->config['auto_rule']) { - $template = $request->action(); - } else { - $template = Str::snake($request->action()); - } - - $template = str_replace('.', DIRECTORY_SEPARATOR, $controller) . $depr . $template; - } elseif (false === strpos($template, $depr)) { - $template = str_replace('.', DIRECTORY_SEPARATOR, $controller) . $depr . $template; - } - } - } else { - $template = str_replace(['/', ':'], $depr, substr($template, 1)); - } - - return $path . ltrim($template, '/') . '.' . ltrim($this->config['view_suffix'], '.'); - } - - /** - * 配置模板引擎 - * @access private - * @param array $config 参数 - * @return void - */ - public function config(array $config): void - { - $this->config = array_merge($this->config, $config); - } - - /** - * 获取模板引擎配置 - * @access public - * @param string $name 参数名 - * @return mixed - */ - public function getConfig(string $name) - { - return $this->config[$name] ?? null; - } -} diff --git a/vendor/topthink/framework/src/tpl/think_exception.tpl b/vendor/topthink/framework/src/tpl/think_exception.tpl deleted file mode 100644 index 0c07a1253..000000000 --- a/vendor/topthink/framework/src/tpl/think_exception.tpl +++ /dev/null @@ -1,505 +0,0 @@ -'.end($names).''; - } - } - - if(!function_exists('parse_file')){ - function parse_file($file, $line) - { - return ''.basename($file)." line {$line}".''; - } - } - - if(!function_exists('parse_args')){ - function parse_args($args) - { - $result = []; - - foreach ($args as $key => $item) { - switch (true) { - case is_object($item): - $value = sprintf('object(%s)', parse_class(get_class($item))); - break; - case is_array($item): - if(count($item) > 3){ - $value = sprintf('[%s, ...]', parse_args(array_slice($item, 0, 3))); - } else { - $value = sprintf('[%s]', parse_args($item)); - } - break; - case is_string($item): - if(strlen($item) > 20){ - $value = sprintf( - '\'%s...\'', - htmlentities($item), - htmlentities(substr($item, 0, 20)) - ); - } else { - $value = sprintf("'%s'", htmlentities($item)); - } - break; - case is_int($item): - case is_float($item): - $value = $item; - break; - case is_null($item): - $value = 'null'; - break; - case is_bool($item): - $value = '' . ($item ? 'true' : 'false') . ''; - break; - case is_resource($item): - $value = 'resource'; - break; - default: - $value = htmlentities(str_replace("\n", '', var_export(strval($item), true))); - break; - } - - $result[] = is_int($key) ? $value : "'{$key}' => {$value}"; - } - - return implode(', ', $result); - } - } -?> - - - - - 系统发生错误 - - - - - -
-
- -
-
-

[

-
-

-
- -
- -
-
    $value) { ?>
-
- -
-

Call Stack

-
    -
  1. - -
  2. - -
  3. - -
-
-
- -
- -

- -
- - - -
-

Exception Datas

- $value) { ?> - - - - - - - $val) { ?> - - - - - - - -
empty
- -
- -
- - - -
-

Environment Variables

- $value) { ?> - - - - - - - $val) { ?> - - - - - - - -
empty
- -
- -
- - - - - - - - diff --git a/vendor/topthink/framework/tests/AppTest.php b/vendor/topthink/framework/tests/AppTest.php deleted file mode 100644 index 6b8601521..000000000 --- a/vendor/topthink/framework/tests/AppTest.php +++ /dev/null @@ -1,215 +0,0 @@ - 'class', - ]; - - public function register() - { - - } - - public function boot() - { - - } -} - -/** - * @property array initializers - */ -class AppTest extends TestCase -{ - /** @var App */ - protected $app; - - protected function setUp() - { - $this->app = new App(); - } - - protected function tearDown(): void - { - m::close(); - } - - public function testService() - { - $this->app->register(stdClass::class); - - $this->assertInstanceOf(stdClass::class, $this->app->getService(stdClass::class)); - - $service = m::mock(SomeService::class); - - $service->shouldReceive('register')->once(); - - $this->app->register($service); - - $this->assertEquals($service, $this->app->getService(SomeService::class)); - - $service2 = m::mock(SomeService::class); - - $service2->shouldReceive('register')->once(); - - $this->app->register($service2); - - $this->assertEquals($service, $this->app->getService(SomeService::class)); - - $this->app->register($service2, true); - - $this->assertEquals($service2, $this->app->getService(SomeService::class)); - - $service->shouldReceive('boot')->once(); - $service2->shouldReceive('boot')->once(); - - $this->app->boot(); - } - - public function testDebug() - { - $this->app->debug(false); - - $this->assertFalse($this->app->isDebug()); - - $this->app->debug(true); - - $this->assertTrue($this->app->isDebug()); - } - - public function testNamespace() - { - $namespace = 'test'; - - $this->app->setNamespace($namespace); - - $this->assertEquals($namespace, $this->app->getNamespace()); - } - - public function testVersion() - { - $this->assertEquals(App::VERSION, $this->app->version()); - } - - public function testPath() - { - $rootPath = __DIR__ . DIRECTORY_SEPARATOR; - - $app = new App($rootPath); - - $this->assertEquals($rootPath, $app->getRootPath()); - - $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR, $app->getThinkPath()); - - $this->assertEquals($rootPath . 'app' . DIRECTORY_SEPARATOR, $app->getAppPath()); - - $appPath = $rootPath . 'app' . DIRECTORY_SEPARATOR . 'admin' . DIRECTORY_SEPARATOR; - $app->setAppPath($appPath); - $this->assertEquals($appPath, $app->getAppPath()); - - $this->assertEquals($rootPath . 'app' . DIRECTORY_SEPARATOR, $app->getBasePath()); - - $this->assertEquals($rootPath . 'config' . DIRECTORY_SEPARATOR, $app->getConfigPath()); - - $this->assertEquals($rootPath . 'runtime' . DIRECTORY_SEPARATOR, $app->getRuntimePath()); - - $runtimePath = $rootPath . 'runtime' . DIRECTORY_SEPARATOR . 'admin' . DIRECTORY_SEPARATOR; - $app->setRuntimePath($runtimePath); - $this->assertEquals($runtimePath, $app->getRuntimePath()); - } - - /** - * @param vfsStreamDirectory $root - * @param bool $debug - * @return App - */ - protected function prepareAppForInitialize(vfsStreamDirectory $root, $debug = true) - { - $rootPath = $root->url() . DIRECTORY_SEPARATOR; - - $app = new App($rootPath); - - $initializer = m::mock(); - $initializer->shouldReceive('init')->once()->with($app); - - $app->instance($initializer->mockery_getName(), $initializer); - - (function () use ($initializer) { - $this->initializers = [$initializer->mockery_getName()]; - })->call($app); - - $env = m::mock(Env::class); - $env->shouldReceive('load')->once()->with($rootPath . '.env'); - $env->shouldReceive('get')->once()->with('config_ext', '.php')->andReturn('.php'); - $env->shouldReceive('get')->once()->with('app_debug')->andReturn($debug); - - $event = m::mock(Event::class); - $event->shouldReceive('trigger')->once()->with(AppInit::class); - $event->shouldReceive('bind')->once()->with([]); - $event->shouldReceive('listenEvents')->once()->with([]); - $event->shouldReceive('subscribe')->once()->with([]); - - $app->instance('env', $env); - $app->instance('event', $event); - - return $app; - } - - public function testInitialize() - { - $root = vfsStream::setup('rootDir', null, [ - '.env' => '', - 'app' => [ - 'common.php' => '', - 'event.php' => '[],"listen"=>[],"subscribe"=>[]];', - 'provider.php' => ' [ - 'app.php' => 'prepareAppForInitialize($root, true); - - $app->debug(false); - - $app->initialize(); - - $this->assertIsInt($app->getBeginMem()); - $this->assertIsFloat($app->getBeginTime()); - - $this->assertTrue($app->initialized()); - } - - public function testFactory() - { - $this->assertInstanceOf(stdClass::class, App::factory(stdClass::class)); - - $this->expectException(ClassNotFoundException::class); - - App::factory('SomeClass'); - } - - public function testParseClass() - { - $this->assertEquals('app\\controller\\SomeClass', $this->app->parseClass('controller', 'some_class')); - $this->app->setNamespace('app2'); - $this->assertEquals('app2\\controller\\SomeClass', $this->app->parseClass('controller', 'some_class')); - } - -} diff --git a/vendor/topthink/framework/tests/CacheTest.php b/vendor/topthink/framework/tests/CacheTest.php deleted file mode 100644 index 3b22404d2..000000000 --- a/vendor/topthink/framework/tests/CacheTest.php +++ /dev/null @@ -1,149 +0,0 @@ -app = m::mock(App::class)->makePartial(); - - Container::setInstance($this->app); - $this->app->shouldReceive('make')->with(App::class)->andReturn($this->app); - $this->config = m::mock(Config::class)->makePartial(); - $this->app->shouldReceive('get')->with('config')->andReturn($this->config); - - $this->cache = new Cache($this->app); - } - - public function testGetConfig() - { - $config = [ - 'default' => 'file', - ]; - - $this->config->shouldReceive('get')->with('cache')->andReturn($config); - - $this->assertEquals($config, $this->cache->getConfig()); - - $this->expectException(InvalidArgumentException::class); - $this->cache->getStoreConfig('foo'); - } - - public function testCacheManagerInstances() - { - $this->config->shouldReceive('get')->with("cache.stores.single", null)->andReturn(['type' => 'file']); - - $channel1 = $this->cache->store('single'); - $channel2 = $this->cache->store('single'); - - $this->assertSame($channel1, $channel2); - } - - public function testFileCache() - { - $root = vfsStream::setup(); - - $this->config->shouldReceive('get')->with("cache.default", null)->andReturn('file'); - - $this->config->shouldReceive('get')->with("cache.stores.file", null)->andReturn(['type' => 'file', 'path' => $root->url()]); - - $this->cache->set('foo', 5); - $this->cache->inc('foo'); - $this->assertEquals(6, $this->cache->get('foo')); - $this->cache->dec('foo', 2); - $this->assertEquals(4, $this->cache->get('foo')); - - $this->cache->set('bar', true); - $this->assertTrue($this->cache->get('bar')); - - $this->cache->set('baz', null); - $this->assertNull($this->cache->get('baz')); - - $this->assertTrue($this->cache->has('baz')); - $this->cache->delete('baz'); - $this->assertFalse($this->cache->has('baz')); - $this->assertNull($this->cache->get('baz')); - $this->assertFalse($this->cache->get('baz', false)); - - $this->assertTrue($root->hasChildren()); - $this->cache->clear(); - $this->assertFalse($root->hasChildren()); - - //tags - $this->cache->tag('foo')->set('bar', 'foobar'); - $this->assertEquals('foobar', $this->cache->get('bar')); - $this->cache->tag('foo')->clear(); - $this->assertFalse($this->cache->has('bar')); - - //multiple - $this->cache->setMultiple(['foo' => ['foobar', 'bar'], 'foobar' => ['foo', 'bar']]); - $this->assertEquals(['foo' => ['foobar', 'bar'], 'foobar' => ['foo', 'bar']], $this->cache->getMultiple(['foo', 'foobar'])); - $this->assertTrue($this->cache->deleteMultiple(['foo', 'foobar'])); - } - - public function testRedisCache() - { - if (extension_loaded('redis')) { - return; - } - $this->config->shouldReceive('get')->with("cache.default", null)->andReturn('redis'); - $this->config->shouldReceive('get')->with("cache.stores.redis", null)->andReturn(['type' => 'redis']); - - $redis = m::mock('overload:\Predis\Client'); - - $redis->shouldReceive("set")->once()->with('foo', 5)->andReturnTrue(); - $redis->shouldReceive("incrby")->once()->with('foo', 1)->andReturnTrue(); - $redis->shouldReceive("decrby")->once()->with('foo', 2)->andReturnTrue(); - $redis->shouldReceive("get")->once()->with('foo')->andReturn(6); - $redis->shouldReceive("get")->once()->with('foo')->andReturn(4); - $redis->shouldReceive("set")->once()->with('bar', \Opis\Closure\serialize(true))->andReturnTrue(); - $redis->shouldReceive("set")->once()->with('baz', \Opis\Closure\serialize(null))->andReturnTrue(); - $redis->shouldReceive("del")->once()->with('baz')->andReturnTrue(); - $redis->shouldReceive("flushDB")->once()->andReturnTrue(); - $redis->shouldReceive("set")->once()->with('bar', \Opis\Closure\serialize('foobar'))->andReturnTrue(); - $redis->shouldReceive("sAdd")->once()->with('tag:' . md5('foo'), 'bar')->andReturnTrue(); - $redis->shouldReceive("sMembers")->once()->with('tag:' . md5('foo'))->andReturn(['bar']); - $redis->shouldReceive("del")->once()->with(['bar'])->andReturnTrue(); - $redis->shouldReceive("del")->once()->with('tag:' . md5('foo'))->andReturnTrue(); - - $this->cache->set('foo', 5); - $this->cache->inc('foo'); - $this->assertEquals(6, $this->cache->get('foo')); - $this->cache->dec('foo', 2); - $this->assertEquals(4, $this->cache->get('foo')); - - $this->cache->set('bar', true); - $this->cache->set('baz', null); - $this->cache->delete('baz'); - $this->cache->clear(); - - //tags - $this->cache->tag('foo')->set('bar', 'foobar'); - $this->cache->tag('foo')->clear(); - } -} diff --git a/vendor/topthink/framework/tests/ConfigTest.php b/vendor/topthink/framework/tests/ConfigTest.php deleted file mode 100644 index 271a34fc3..000000000 --- a/vendor/topthink/framework/tests/ConfigTest.php +++ /dev/null @@ -1,46 +0,0 @@ -setContent(" 'value1','key2'=>'value2'];"); - $root->addChild($file); - - $config = new Config(); - - $config->load($file->url(), 'test'); - - $this->assertEquals('value1', $config->get('test.key1')); - $this->assertEquals('value2', $config->get('test.key2')); - - $this->assertSame(['key1' => 'value1', 'key2' => 'value2'], $config->get('test')); - } - - public function testSetAndGet() - { - $config = new Config(); - - $config->set([ - 'key1' => 'value1', - 'key2' => [ - 'key3' => 'value3', - ], - ], 'test'); - - $this->assertTrue($config->has('test.key1')); - $this->assertEquals('value1', $config->get('test.key1')); - $this->assertEquals('value3', $config->get('test.key2.key3')); - - $this->assertEquals(['key3' => 'value3'], $config->get('test.key2')); - $this->assertFalse($config->has('test.key3')); - $this->assertEquals('none', $config->get('test.key3', 'none')); - } -} diff --git a/vendor/topthink/framework/tests/ContainerTest.php b/vendor/topthink/framework/tests/ContainerTest.php deleted file mode 100644 index 72ff1d071..000000000 --- a/vendor/topthink/framework/tests/ContainerTest.php +++ /dev/null @@ -1,313 +0,0 @@ -name = $name; - } - - public function some(Container $container) - { - } - - protected function protectionFun() - { - return true; - } - - public static function test(Container $container) - { - return $container; - } - - public static function __make() - { - return new self('Taylor'); - } -} - -class SomeClass -{ - public $container; - - public $count = 0; - - public function __construct(Container $container) - { - $this->container = $container; - } -} - -class ContainerTest extends TestCase -{ - protected function tearDown(): void - { - Container::setInstance(null); - } - - public function testClosureResolution() - { - $container = new Container; - - Container::setInstance($container); - - $container->bind('name', function () { - return 'Taylor'; - }); - - $this->assertEquals('Taylor', $container->make('name')); - - $this->assertEquals('Taylor', Container::pull('name')); - } - - public function testGet() - { - $container = new Container; - - $this->expectException(ClassNotFoundException::class); - $this->expectExceptionMessage('class not exists: name'); - $container->get('name'); - - $container->bind('name', function () { - return 'Taylor'; - }); - - $this->assertSame('Taylor', $container->get('name')); - } - - public function testExist() - { - $container = new Container; - - $container->bind('name', function () { - return 'Taylor'; - }); - - $this->assertFalse($container->exists("name")); - - $container->make('name'); - - $this->assertTrue($container->exists('name')); - } - - public function testInstance() - { - $container = new Container; - - $container->bind('name', function () { - return 'Taylor'; - }); - - $this->assertEquals('Taylor', $container->get('name')); - - $container->bind('name2', Taylor::class); - - $object = new stdClass(); - - $this->assertFalse($container->exists('name2')); - - $container->instance('name2', $object); - - $this->assertTrue($container->exists('name2')); - - $this->assertTrue($container->exists(Taylor::class)); - - $this->assertEquals($object, $container->make(Taylor::class)); - - unset($container->name1); - - $this->assertFalse($container->exists('name1')); - - $container->delete('name2'); - - $this->assertFalse($container->exists('name2')); - - foreach ($container as $class => $instance) { - - } - } - - public function testBind() - { - $container = new Container; - - $object = new stdClass(); - - $container->bind(['name' => Taylor::class]); - - $container->bind('name2', $object); - - $container->bind('name3', Taylor::class); - - $container->name4 = $object; - - $container['name5'] = $object; - - $this->assertTrue(isset($container->name4)); - - $this->assertTrue(isset($container['name5'])); - - $this->assertInstanceOf(Taylor::class, $container->get('name')); - - $this->assertSame($object, $container->get('name2')); - - $this->assertSame($object, $container->name4); - - $this->assertSame($object, $container['name5']); - - $this->assertInstanceOf(Taylor::class, $container->get('name3')); - - unset($container['name']); - - $this->assertFalse(isset($container['name'])); - - unset($container->name3); - - $this->assertFalse(isset($container->name3)); - } - - public function testAutoConcreteResolution() - { - $container = new Container; - - $taylor = $container->make(Taylor::class); - - $this->assertInstanceOf(Taylor::class, $taylor); - $this->assertAttributeSame('Taylor', 'name', $taylor); - } - - public function testGetAndSetInstance() - { - $this->assertInstanceOf(Container::class, Container::getInstance()); - - $object = new stdClass(); - - Container::setInstance($object); - - $this->assertSame($object, Container::getInstance()); - - Container::setInstance(function () { - return $this; - }); - - $this->assertSame($this, Container::getInstance()); - } - - public function testResolving() - { - $container = new Container(); - $container->bind(Container::class, $container); - - $container->resolving(function (SomeClass $taylor, Container $container) { - $taylor->count++; - }); - $container->resolving(SomeClass::class, function (SomeClass $taylor, Container $container) { - $taylor->count++; - }); - - /** @var SomeClass $someClass */ - $someClass = $container->invokeClass(SomeClass::class); - $this->assertEquals(2, $someClass->count); - } - - public function testInvokeFunctionWithoutMethodThrowsException() - { - $this->expectException(FuncNotFoundException::class); - $this->expectExceptionMessage('function not exists: ContainerTestCallStub()'); - $container = new Container(); - $container->invokeFunction('ContainerTestCallStub', []); - } - - public function testInvokeProtectionMethod() - { - $container = new Container(); - $this->assertTrue($container->invokeMethod([Taylor::class, 'protectionFun'], [], true)); - } - - public function testInvoke() - { - $container = new Container(); - - Container::setInstance($container); - - $container->bind(Container::class, $container); - - $stub = $this->createMock(Taylor::class); - - $stub->expects($this->once())->method('some')->with($container)->will($this->returnSelf()); - - $container->invokeMethod([$stub, 'some']); - - $this->assertEquals('48', $container->invoke('ord', ['0'])); - - $this->assertSame($container, $container->invoke(Taylor::class . '::test', [])); - - $this->assertSame($container, $container->invokeMethod(Taylor::class . '::test')); - - $reflect = new ReflectionMethod($container, 'exists'); - - $this->assertTrue($container->invokeReflectMethod($container, $reflect, [Container::class])); - - $this->assertSame($container, $container->invoke(function (Container $container) { - return $container; - })); - - $this->assertSame($container, $container->invoke(Taylor::class . '::test')); - - $object = $container->invokeClass(SomeClass::class); - $this->assertInstanceOf(SomeClass::class, $object); - $this->assertSame($container, $object->container); - - $stdClass = new stdClass(); - - $container->invoke(function (Container $container, stdClass $stdObject, $key1, $lowKey, $key2 = 'default') use ($stdClass) { - $this->assertEquals('value1', $key1); - $this->assertEquals('default', $key2); - $this->assertEquals('value2', $lowKey); - $this->assertSame($stdClass, $stdObject); - return $container; - }, ['some' => $stdClass, 'key1' => 'value1', 'low_key' => 'value2']); - } - - public function testInvokeMethodNotExists() - { - $container = $this->resolveContainer(); - $this->expectException(FuncNotFoundException::class); - - $container->invokeMethod([SomeClass::class, 'any']); - } - - public function testInvokeClassNotExists() - { - $container = new Container(); - - Container::setInstance($container); - - $container->bind(Container::class, $container); - - $this->expectExceptionObject(new ClassNotFoundException('class not exists: SomeClass')); - - $container->invokeClass('SomeClass'); - } - - protected function resolveContainer() - { - $container = new Container(); - - Container::setInstance($container); - return $container; - } - -} diff --git a/vendor/topthink/framework/tests/DbTest.php b/vendor/topthink/framework/tests/DbTest.php deleted file mode 100644 index cffdc845d..000000000 --- a/vendor/topthink/framework/tests/DbTest.php +++ /dev/null @@ -1,44 +0,0 @@ -shouldReceive('get')->with('database.foo', null)->andReturn('foo'); - $this->assertEquals('foo', $db->getConfig('foo')); - - $config->shouldReceive('get')->with('database', [])->andReturn([]); - $this->assertEquals([], $db->getConfig()); - - $callback = function () { - }; - $event->shouldReceive('listen')->with('db.some', $callback); - $db->event('some', $callback); - - $event->shouldReceive('trigger')->with('db.some', null, false); - $db->trigger('some'); - } - -} diff --git a/vendor/topthink/framework/tests/EnvTest.php b/vendor/topthink/framework/tests/EnvTest.php deleted file mode 100644 index cf2e65f85..000000000 --- a/vendor/topthink/framework/tests/EnvTest.php +++ /dev/null @@ -1,82 +0,0 @@ -setContent("key1=value1\nkey2=value2"); - $root->addChild($envFile); - - $env = new Env(); - - $env->load($envFile->url()); - - $this->assertEquals('value1', $env->get('key1')); - $this->assertEquals('value2', $env->get('key2')); - - $this->assertSame(['KEY1' => 'value1', 'KEY2' => 'value2'], $env->get()); - } - - public function testServerEnv() - { - $env = new Env(); - - $this->assertEquals('value2', $env->get('key2', 'value2')); - - putenv('PHP_KEY7=value7'); - putenv('PHP_KEY8=false'); - putenv('PHP_KEY9=true'); - - $this->assertEquals('value7', $env->get('key7')); - $this->assertFalse($env->get('KEY8')); - $this->assertTrue($env->get('key9')); - } - - public function testSetEnv() - { - $env = new Env(); - - $env->set([ - 'key1' => 'value1', - 'key2' => [ - 'key1' => 'value1-2', - ], - ]); - - $env->set('key3', 'value3'); - - $env->key4 = 'value4'; - - $env['key5'] = 'value5'; - - $this->assertEquals('value1', $env->get('key1')); - $this->assertEquals('value1-2', $env->get('key2.key1')); - - $this->assertEquals('value3', $env->get('key3')); - - $this->assertEquals('value4', $env->key4); - - $this->assertEquals('value5', $env['key5']); - - $this->expectException(Exception::class); - - unset($env['key5']); - } - - public function testHasEnv() - { - $env = new Env(); - $env->set(['foo' => 'bar']); - $this->assertTrue($env->has('foo')); - $this->assertTrue(isset($env->foo)); - $this->assertTrue($env->offsetExists('foo')); - } -} diff --git a/vendor/topthink/framework/tests/EventTest.php b/vendor/topthink/framework/tests/EventTest.php deleted file mode 100644 index 707a35b54..000000000 --- a/vendor/topthink/framework/tests/EventTest.php +++ /dev/null @@ -1,143 +0,0 @@ -app = m::mock(App::class)->makePartial(); - - Container::setInstance($this->app); - $this->app->shouldReceive('make')->with(App::class)->andReturn($this->app); - $this->config = m::mock(Config::class)->makePartial(); - $this->app->shouldReceive('get')->with('config')->andReturn($this->config); - - $this->event = new Event($this->app); - } - - public function testBasic() - { - $this->event->bind(['foo' => 'baz']); - - $this->event->listen('foo', function ($bar) { - $this->assertEquals('bar', $bar); - }); - - $this->assertTrue($this->event->hasListener('foo')); - - $this->event->trigger('baz', 'bar'); - - $this->event->remove('foo'); - - $this->assertFalse($this->event->hasListener('foo')); - } - - public function testOnceEvent() - { - $this->event->listen('AppInit', function ($bar) { - $this->assertEquals('bar', $bar); - return 'foo'; - }); - - $this->assertEquals('foo', $this->event->trigger('AppInit', 'bar', true)); - $this->assertEquals(['foo'], $this->event->trigger('AppInit', 'bar')); - } - - public function testClassListener() - { - $listener = m::mock("overload:SomeListener", TestListener::class); - - $listener->shouldReceive('handle')->andReturnTrue(); - - $this->event->listen('some', "SomeListener"); - - $this->assertTrue($this->event->until('some')); - } - - public function testSubscribe() - { - $listener = m::mock("overload:SomeListener", TestListener::class); - - $listener->shouldReceive('subscribe')->andReturnUsing(function (Event $event) use ($listener) { - - $listener->shouldReceive('onBar')->once()->andReturnFalse(); - - $event->listenEvents(['SomeListener::onBar' => [[$listener, 'onBar']]]); - }); - - $this->event->subscribe('SomeListener'); - - $this->assertTrue($this->event->hasListener('SomeListener::onBar')); - - $this->event->trigger('SomeListener::onBar'); - } - - public function testAutoObserve() - { - $listener = m::mock("overload:SomeListener", TestListener::class); - - $listener->shouldReceive('onBar')->once(); - - $this->app->shouldReceive('make')->with('SomeListener')->andReturn($listener); - - $this->event->observe('SomeListener'); - - $this->event->trigger('bar'); - } - - public function testWithoutEvent() - { - $this->event->withEvent(false); - - $this->event->listen('SomeListener', TestListener::class); - - $this->assertFalse($this->event->hasListener('SomeListener')); - } - -} - -class TestListener -{ - public function handle() - { - - } - - public function onBar() - { - - } - - public function onFoo() - { - - } - - public function subscribe() - { - - } -} diff --git a/vendor/topthink/framework/tests/FilesystemTest.php b/vendor/topthink/framework/tests/FilesystemTest.php deleted file mode 100644 index df5ffe209..000000000 --- a/vendor/topthink/framework/tests/FilesystemTest.php +++ /dev/null @@ -1,131 +0,0 @@ -app = m::mock(App::class)->makePartial(); - Container::setInstance($this->app); - $this->app->shouldReceive('make')->with(App::class)->andReturn($this->app); - $this->config = m::mock(Config::class); - $this->config->shouldReceive('get')->with('filesystem.default', null)->andReturn('local'); - $this->app->shouldReceive('get')->with('config')->andReturn($this->config); - $this->filesystem = new Filesystem($this->app); - - $this->root = vfsStream::setup('rootDir'); - } - - protected function tearDown(): void - { - m::close(); - } - - public function testDisk() - { - $this->config->shouldReceive('get')->with('filesystem.disks.local', null)->andReturn([ - 'type' => 'local', - 'root' => $this->root->url(), - ]); - - $this->config->shouldReceive('get')->with('filesystem.disks.foo', null)->andReturn([ - 'type' => 'local', - 'root' => $this->root->url(), - ]); - - $this->assertInstanceOf(Local::class, $this->filesystem->disk()); - - $this->assertInstanceOf(Local::class, $this->filesystem->disk('foo')); - } - - public function testCache() - { - $this->config->shouldReceive('get')->with('filesystem.disks.local', null)->andReturn([ - 'type' => 'local', - 'root' => $this->root->url(), - 'cache' => true, - ]); - - $this->assertInstanceOf(Local::class, $this->filesystem->disk()); - - $this->config->shouldReceive('get')->with('filesystem.disks.cache', null)->andReturn([ - 'type' => NullDriver::class, - 'root' => $this->root->url(), - 'cache' => [ - 'store' => 'flysystem', - ], - ]); - - $cache = m::mock(Cache::class); - - $cacheDriver = m::mock(File::class); - - $cache->shouldReceive('store')->once()->with('flysystem')->andReturn($cacheDriver); - - $this->app->shouldReceive('make')->with(Cache::class)->andReturn($cache); - - $cacheDriver->shouldReceive('get')->with('flysystem')->once()->andReturn(null); - - $cacheDriver->shouldReceive('set')->withAnyArgs(); - - $this->filesystem->disk('cache')->put('test.txt', 'aa'); - } - - public function testPutFile() - { - $root = vfsStream::setup('rootDir', null, [ - 'foo.jpg' => 'hello', - ]); - - $this->config->shouldReceive('get')->with('filesystem.disks.local', null)->andReturn([ - 'type' => NullDriver::class, - 'root' => $root->url(), - 'cache' => true, - ]); - - $file = m::mock(\think\File::class); - - $file->shouldReceive('hashName')->with(null)->once()->andReturn('foo.jpg'); - - $file->shouldReceive('getRealPath')->once()->andReturn($root->getChild('foo.jpg')->url()); - - $this->filesystem->putFile('test', $file); - } -} - -class NullDriver extends Driver -{ - protected function createAdapter(): AdapterInterface - { - return new NullAdapter(); - } -} diff --git a/vendor/topthink/framework/tests/HttpTest.php b/vendor/topthink/framework/tests/HttpTest.php deleted file mode 100644 index 8b6f28fd6..000000000 --- a/vendor/topthink/framework/tests/HttpTest.php +++ /dev/null @@ -1,154 +0,0 @@ -app = m::mock(App::class)->makePartial(); - - $this->http = m::mock(Http::class, [$this->app])->shouldAllowMockingProtectedMethods()->makePartial(); - } - - protected function prepareApp($request, $response) - { - $this->app->shouldReceive('instance')->once()->with('request', $request); - $this->app->shouldReceive('initialized')->once()->andReturnFalse(); - $this->app->shouldReceive('initialize')->once(); - $this->app->shouldReceive('get')->with('request')->andReturn($request); - - $route = m::mock(Route::class); - - $route->shouldReceive('dispatch')->withArgs(function ($req, $withRoute) use ($request) { - if ($withRoute) { - $withRoute(); - } - return $req === $request; - })->andReturn($response); - - $route->shouldReceive('config')->with('route_annotation')->andReturn(true); - - $this->app->shouldReceive('get')->with('route')->andReturn($route); - - $console = m::mock(Console::class); - - $console->shouldReceive('call'); - - $this->app->shouldReceive('get')->with('console')->andReturn($console); - } - - public function testRun() - { - $root = vfsStream::setup('rootDir', null, [ - 'app' => [ - 'controller' => [], - 'middleware.php' => ' [ - 'route.php' => 'app->shouldReceive('getBasePath')->andReturn($root->getChild('app')->url() . DIRECTORY_SEPARATOR); - $this->app->shouldReceive('getRootPath')->andReturn($root->url() . DIRECTORY_SEPARATOR); - - $request = m::mock(Request::class)->makePartial(); - $response = m::mock(Response::class)->makePartial(); - - $this->prepareApp($request, $response); - - $this->assertEquals($response, $this->http->run($request)); - } - - public function multiAppRunProvider() - { - $request1 = m::mock(Request::class)->makePartial(); - $request1->shouldReceive('subDomain')->andReturn('www'); - $request1->shouldReceive('host')->andReturn('www.domain.com'); - - $request2 = m::mock(Request::class)->makePartial(); - $request2->shouldReceive('subDomain')->andReturn('app2'); - $request2->shouldReceive('host')->andReturn('app2.domain.com'); - - $request3 = m::mock(Request::class)->makePartial(); - $request3->shouldReceive('pathinfo')->andReturn('some1/a/b/c'); - - $request4 = m::mock(Request::class)->makePartial(); - $request4->shouldReceive('pathinfo')->andReturn('app3/a/b/c'); - - $request5 = m::mock(Request::class)->makePartial(); - $request5->shouldReceive('pathinfo')->andReturn('some2/a/b/c'); - - return [ - [$request1, true, 'app1'], - [$request2, true, 'app2'], - [$request3, true, 'app3'], - [$request4, true, null], - [$request5, true, 'some2', 'path'], - [$request1, false, 'some3'], - ]; - } - - public function testRunWithException() - { - $request = m::mock(Request::class); - $response = m::mock(Response::class); - - $this->app->shouldReceive('instance')->once()->with('request', $request); - - $exception = new Exception(); - - $this->http->shouldReceive('runWithRequest')->once()->with($request)->andThrow($exception); - - $handle = m::mock(Handle::class); - - $handle->shouldReceive('report')->once()->with($exception); - $handle->shouldReceive('render')->once()->with($request, $exception)->andReturn($response); - - $this->app->shouldReceive('make')->with(Handle::class)->andReturn($handle); - - $this->assertEquals($response, $this->http->run($request)); - } - - public function testEnd() - { - $response = m::mock(Response::class); - $event = m::mock(Event::class); - $event->shouldReceive('trigger')->once()->with(HttpEnd::class, $response); - $this->app->shouldReceive('get')->once()->with('event')->andReturn($event); - $log = m::mock(Log::class); - $log->shouldReceive('save')->once(); - $this->app->shouldReceive('get')->once()->with('log')->andReturn($log); - - $this->http->end($response); - } - -} diff --git a/vendor/topthink/framework/tests/LogTest.php b/vendor/topthink/framework/tests/LogTest.php deleted file mode 100644 index 269306f4a..000000000 --- a/vendor/topthink/framework/tests/LogTest.php +++ /dev/null @@ -1,143 +0,0 @@ -app = m::mock(App::class)->makePartial(); - Container::setInstance($this->app); - - $this->app->shouldReceive('make')->with(App::class)->andReturn($this->app); - $this->config = m::mock(Config::class)->makePartial(); - $this->app->shouldReceive('get')->with('config')->andReturn($this->config); - $this->app->shouldReceive('runningInConsole')->andReturn(false); - - $this->log = new Log($this->app); - } - - public function testGetConfig() - { - $config = [ - 'default' => 'file', - ]; - - $this->config->shouldReceive('get')->with('log')->andReturn($config); - - $this->assertEquals($config, $this->log->getConfig()); - - $this->expectException(InvalidArgumentException::class); - $this->log->getChannelConfig('foo'); - } - - public function testChannel() - { - $this->assertInstanceOf(ChannelSet::class, $this->log->channel(['file', 'mail'])); - } - - public function testLogManagerInstances() - { - $this->config->shouldReceive('get')->with("log.channels.single", null)->andReturn(['type' => 'file']); - - $channel1 = $this->log->channel('single'); - $channel2 = $this->log->channel('single'); - - $this->assertSame($channel1, $channel2); - } - - public function testFileLog() - { - $root = vfsStream::setup(); - - $this->config->shouldReceive('get')->with("log.default", null)->andReturn('file'); - - $this->config->shouldReceive('get')->with("log.channels.file", null)->andReturn(['type' => 'file', 'path' => $root->url()]); - - $this->log->info('foo'); - - $this->assertEquals($this->log->getLog(), ['info' => ['foo']]); - - $this->log->clear(); - - $this->assertEmpty($this->log->getLog()); - - $this->log->error('foo'); - $this->assertArrayHasKey('error', $this->log->getLog()); - - $this->log->emergency('foo'); - $this->assertArrayHasKey('emergency', $this->log->getLog()); - - $this->log->alert('foo'); - $this->assertArrayHasKey('alert', $this->log->getLog()); - - $this->log->critical('foo'); - $this->assertArrayHasKey('critical', $this->log->getLog()); - - $this->log->warning('foo'); - $this->assertArrayHasKey('warning', $this->log->getLog()); - - $this->log->notice('foo'); - $this->assertArrayHasKey('notice', $this->log->getLog()); - - $this->log->debug('foo'); - $this->assertArrayHasKey('debug', $this->log->getLog()); - - $this->log->sql('foo'); - $this->assertArrayHasKey('sql', $this->log->getLog()); - - $this->log->custom('foo'); - $this->assertArrayHasKey('custom', $this->log->getLog()); - - $this->log->write('foo'); - $this->assertTrue($root->hasChildren()); - $this->assertEmpty($this->log->getLog()); - - $this->log->close(); - - $this->log->info('foo'); - - $this->assertEmpty($this->log->getLog()); - } - - public function testSave() - { - $root = vfsStream::setup(); - - $this->config->shouldReceive('get')->with("log.default", null)->andReturn('file'); - - $this->config->shouldReceive('get')->with("log.channels.file", null)->andReturn(['type' => 'file', 'path' => $root->url()]); - - $this->log->info('foo'); - - $this->log->save(); - - $this->assertTrue($root->hasChildren()); - } - -} diff --git a/vendor/topthink/framework/tests/MiddlewareTest.php b/vendor/topthink/framework/tests/MiddlewareTest.php deleted file mode 100644 index bbd092d42..000000000 --- a/vendor/topthink/framework/tests/MiddlewareTest.php +++ /dev/null @@ -1,121 +0,0 @@ -app = m::mock(App::class)->makePartial(); - Container::setInstance($this->app); - - $this->app->shouldReceive('make')->with(App::class)->andReturn($this->app); - $this->config = m::mock(Config::class)->makePartial(); - $this->app->shouldReceive('get')->with('config')->andReturn($this->config); - $this->app->shouldReceive('runningInConsole')->andReturn(false); - - $this->middleware = new Middleware($this->app); - } - - public function testSetMiddleware() - { - $this->middleware->add('BarMiddleware', 'bar'); - - $this->assertEquals(1, count($this->middleware->all('bar'))); - - $this->middleware->controller('BarMiddleware'); - $this->assertEquals(1, count($this->middleware->all('controller'))); - - $this->middleware->import(['FooMiddleware']); - $this->assertEquals(1, count($this->middleware->all())); - - $this->middleware->unshift(['BazMiddleware', 'baz']); - $this->assertEquals(2, count($this->middleware->all())); - $this->assertEquals([['BazMiddleware', 'handle'], 'baz'], $this->middleware->all()[0]); - - $this->config->shouldReceive('get')->with('middleware.alias', [])->andReturn(['foo' => ['FooMiddleware', 'FarMiddleware']]); - - $this->middleware->add('foo'); - $this->assertEquals(3, count($this->middleware->all())); - $this->middleware->add(function () { - }); - $this->middleware->add(function () { - }); - $this->assertEquals(5, count($this->middleware->all())); - } - - public function testPipelineAndEnd() - { - $bar = m::mock("overload:BarMiddleware"); - $foo = m::mock("overload:FooMiddleware", Foo::class); - - $request = m::mock(Request::class); - $response = m::mock(Response::class); - - $e = new Exception(); - - $handle = m::mock(Handle::class); - $handle->shouldReceive('report')->with($e)->andReturnNull(); - $handle->shouldReceive('render')->with($request, $e)->andReturn($response); - - $foo->shouldReceive('handle')->once()->andReturnUsing(function ($request, $next) { - return $next($request); - }); - $bar->shouldReceive('handle')->once()->andReturnUsing(function ($request, $next) use ($e) { - $next($request); - throw $e; - }); - - $foo->shouldReceive('end')->once()->with($response)->andReturnNull(); - - $this->app->shouldReceive('make')->with(Handle::class)->andReturn($handle); - - $this->config->shouldReceive('get')->once()->with('middleware.priority', [])->andReturn(['FooMiddleware', 'BarMiddleware']); - - $this->middleware->import([function ($request, $next) { - return $next($request); - }, 'BarMiddleware', 'FooMiddleware']); - - $this->assertInstanceOf(Pipeline::class, $pipeline = $this->middleware->pipeline()); - - $pipeline->send($request)->then(function ($request) use ($e, $response) { - throw $e; - }); - - $this->middleware->end($response); - } -} - -class Foo -{ - public function end(Response $response) - { - } -} diff --git a/vendor/topthink/framework/tests/SessionTest.php b/vendor/topthink/framework/tests/SessionTest.php deleted file mode 100644 index b3b48a70d..000000000 --- a/vendor/topthink/framework/tests/SessionTest.php +++ /dev/null @@ -1,225 +0,0 @@ -app = m::mock(App::class)->makePartial(); - Container::setInstance($this->app); - - $this->app->shouldReceive('make')->with(App::class)->andReturn($this->app); - $this->config = m::mock(Config::class)->makePartial(); - - $this->app->shouldReceive('get')->with('config')->andReturn($this->config); - $handlerClass = "\\think\\session\\driver\\Test" . Str::random(10); - $this->config->shouldReceive("get")->with("session.type", "file")->andReturn($handlerClass); - $this->session = new Session($this->app); - - $this->handler = m::mock('overload:' . $handlerClass, SessionHandlerInterface::class); - } - - public function testLoadData() - { - $data = [ - "bar" => 'foo', - ]; - - $id = md5(uniqid()); - - $this->handler->shouldReceive("read")->once()->with($id)->andReturn(serialize($data)); - - $this->session->setId($id); - $this->session->init(); - - $this->assertEquals('foo', $this->session->get('bar')); - $this->assertTrue($this->session->has('bar')); - $this->assertFalse($this->session->has('foo')); - - $this->session->set('foo', 'bar'); - $this->assertTrue($this->session->has('foo')); - - $this->assertEquals('bar', $this->session->pull('foo')); - $this->assertFalse($this->session->has('foo')); - } - - public function testSave() - { - - $id = md5(uniqid()); - - $this->handler->shouldReceive('read')->once()->with($id)->andReturn(""); - - $this->handler->shouldReceive('write')->once()->with($id, serialize([ - "bar" => 'foo', - ]))->andReturnTrue(); - - $this->session->setId($id); - $this->session->init(); - - $this->session->set('bar', 'foo'); - - $this->session->save(); - } - - public function testFlash() - { - $this->session->flash('foo', 'bar'); - $this->session->flash('bar', 0); - $this->session->flash('baz', true); - - $this->assertTrue($this->session->has('foo')); - $this->assertEquals('bar', $this->session->get('foo')); - $this->assertEquals(0, $this->session->get('bar')); - $this->assertTrue($this->session->get('baz')); - - $this->session->clearFlashData(); - - $this->assertTrue($this->session->has('foo')); - $this->assertEquals('bar', $this->session->get('foo')); - $this->assertEquals(0, $this->session->get('bar')); - - $this->session->clearFlashData(); - - $this->assertFalse($this->session->has('foo')); - $this->assertNull($this->session->get('foo')); - - $this->session->flash('foo', 'bar'); - $this->assertTrue($this->session->has('foo')); - $this->session->clearFlashData(); - $this->session->reflash(); - $this->session->clearFlashData(); - - $this->assertTrue($this->session->has('foo')); - } - - public function testClear() - { - $this->session->set('bar', 'foo'); - $this->assertEquals('foo', $this->session->get('bar')); - $this->session->clear(); - $this->assertFalse($this->session->has('foo')); - } - - public function testSetName() - { - $this->session->setName('foo'); - $this->assertEquals('foo', $this->session->getName()); - } - - public function testDestroy() - { - $id = md5(uniqid()); - - $this->handler->shouldReceive('read')->once()->with($id)->andReturn(""); - $this->handler->shouldReceive('delete')->once()->with($id)->andReturnTrue(); - - $this->session->setId($id); - $this->session->init(); - - $this->session->set('bar', 'foo'); - - $this->session->destroy(); - - $this->assertFalse($this->session->has('bar')); - - $this->assertNotEquals($id, $this->session->getId()); - } - - public function testFileHandler() - { - $root = vfsStream::setup(); - - vfsStream::newFile('bar') - ->at($root) - ->lastModified(time()); - - vfsStream::newFile('bar') - ->at(vfsStream::newDirectory("foo")->at($root)) - ->lastModified(100); - - $this->assertTrue($root->hasChild("bar")); - $this->assertTrue($root->hasChild("foo/bar")); - - $handler = new TestFileHandle($this->app, [ - 'path' => $root->url(), - 'gc_probability' => 1, - 'gc_divisor' => 1, - ]); - - $this->assertTrue($root->hasChild("bar")); - $this->assertFalse($root->hasChild("foo/bar")); - - $id = md5(uniqid()); - $handler->write($id, "bar"); - - $this->assertTrue($root->hasChild("sess_{$id}")); - - $this->assertEquals("bar", $handler->read($id)); - - $handler->delete($id); - - $this->assertFalse($root->hasChild("sess_{$id}")); - } - - public function testCacheHandler() - { - $id = md5(uniqid()); - - $cache = m::mock(\think\Cache::class); - - $store = m::mock(Driver::class); - - $cache->shouldReceive('store')->once()->with('redis')->andReturn($store); - - $handler = new Cache($cache, ['store' => 'redis']); - - $store->shouldReceive("set")->with($id, "bar", 1440)->once()->andReturnTrue(); - $handler->write($id, "bar"); - - $store->shouldReceive("get")->with($id)->once()->andReturn("bar"); - $this->assertEquals("bar", $handler->read($id)); - - $store->shouldReceive("delete")->with($id)->once()->andReturnTrue(); - $handler->delete($id); - } -} - -class TestFileHandle extends File -{ - protected function writeFile($path, $content): bool - { - return (bool) file_put_contents($path, $content); - } -} diff --git a/vendor/topthink/framework/tests/ViewTest.php b/vendor/topthink/framework/tests/ViewTest.php deleted file mode 100644 index e4135109a..000000000 --- a/vendor/topthink/framework/tests/ViewTest.php +++ /dev/null @@ -1,127 +0,0 @@ -app = m::mock(App::class)->makePartial(); - Container::setInstance($this->app); - - $this->app->shouldReceive('make')->with(App::class)->andReturn($this->app); - $this->config = m::mock(Config::class)->makePartial(); - $this->app->shouldReceive('get')->with('config')->andReturn($this->config); - - $this->view = new View($this->app); - } - - public function testAssignData() - { - $this->view->assign('foo', 'bar'); - $this->view->assign(['baz' => 'boom']); - $this->view->qux = "corge"; - - $this->assertEquals('bar', $this->view->foo); - $this->assertEquals('boom', $this->view->baz); - $this->assertEquals('corge', $this->view->qux); - $this->assertTrue(isset($this->view->qux)); - } - - public function testRender() - { - $this->config->shouldReceive("get")->with("view.type", 'php')->andReturn(TestTemplate::class); - - $this->view->filter(function ($content) { - return $content; - }); - - $this->assertEquals("fetch", $this->view->fetch('foo')); - $this->assertEquals("display", $this->view->display('foo')); - } - -} - -class TestTemplate implements TemplateHandlerInterface -{ - - /** - * 检测是否存在模板文件 - * @access public - * @param string $template 模板文件或者模板规则 - * @return bool - */ - public function exists(string $template): bool - { - return true; - } - - /** - * 渲染模板文件 - * @access public - * @param string $template 模板文件 - * @param array $data 模板变量 - * @return void - */ - public function fetch(string $template, array $data = []): void - { - echo "fetch"; - } - - /** - * 渲染模板内容 - * @access public - * @param string $content 模板内容 - * @param array $data 模板变量 - * @return void - */ - public function display(string $content, array $data = []): void - { - echo "display"; - } - - /** - * 配置模板引擎 - * @access private - * @param array $config 参数 - * @return void - */ - public function config(array $config): void - { - // TODO: Implement config() method. - } - - /** - * 获取模板引擎配置 - * @access public - * @param string $name 参数名 - * @return void - */ - public function getConfig(string $name) - { - // TODO: Implement getConfig() method. - } -} diff --git a/vendor/topthink/framework/tests/bootstrap.php b/vendor/topthink/framework/tests/bootstrap.php deleted file mode 100644 index 991ea4397..000000000 --- a/vendor/topthink/framework/tests/bootstrap.php +++ /dev/null @@ -1,3 +0,0 @@ - 以下类库都在`\\think\\helper`命名空间下 - -## Str - -> 字符串操作 - -``` -// 检查字符串中是否包含某些字符串 -Str::contains($haystack, $needles) - -// 检查字符串是否以某些字符串结尾 -Str::endsWith($haystack, $needles) - -// 获取指定长度的随机字母数字组合的字符串 -Str::random($length = 16) - -// 字符串转小写 -Str::lower($value) - -// 字符串转大写 -Str::upper($value) - -// 获取字符串的长度 -Str::length($value) - -// 截取字符串 -Str::substr($string, $start, $length = null) - -``` \ No newline at end of file diff --git a/vendor/topthink/think-helper/composer.json b/vendor/topthink/think-helper/composer.json deleted file mode 100644 index b68c43b51..000000000 --- a/vendor/topthink/think-helper/composer.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "topthink/think-helper", - "description": "The ThinkPHP6 Helper Package", - "license": "Apache-2.0", - "authors": [ - { - "name": "yunwuxin", - "email": "448901948@qq.com" - } - ], - "require": { - "php": ">=7.1.0" - }, - "autoload": { - "psr-4": { - "think\\": "src" - }, - "files": [ - "src/helper.php" - ] - } -} diff --git a/vendor/topthink/think-helper/src/Collection.php b/vendor/topthink/think-helper/src/Collection.php deleted file mode 100644 index f3d0a838b..000000000 --- a/vendor/topthink/think-helper/src/Collection.php +++ /dev/null @@ -1,651 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use ArrayAccess; -use ArrayIterator; -use Countable; -use IteratorAggregate; -use JsonSerializable; -use think\contract\Arrayable; -use think\contract\Jsonable; -use think\helper\Arr; - -/** - * 数据集管理类 - */ -class Collection implements ArrayAccess, Countable, IteratorAggregate, JsonSerializable, Arrayable, Jsonable -{ - /** - * 数据集数据 - * @var array - */ - protected $items = []; - - public function __construct($items = []) - { - $this->items = $this->convertToArray($items); - } - - public static function make($items = []) - { - return new static($items); - } - - /** - * 是否为空 - * @access public - * @return bool - */ - public function isEmpty(): bool - { - return empty($this->items); - } - - public function toArray(): array - { - return array_map(function ($value) { - return $value instanceof Arrayable ? $value->toArray() : $value; - }, $this->items); - } - - public function all(): array - { - return $this->items; - } - - /** - * 合并数组 - * - * @access public - * @param mixed $items 数据 - * @return static - */ - public function merge($items) - { - return new static(array_merge($this->items, $this->convertToArray($items))); - } - - /** - * 按指定键整理数据 - * - * @access public - * @param mixed $items 数据 - * @param string $indexKey 键名 - * @return array - */ - public function dictionary($items = null, string &$indexKey = null) - { - if ($items instanceof self) { - $items = $items->all(); - } - - $items = is_null($items) ? $this->items : $items; - - if ($items && empty($indexKey)) { - $indexKey = is_array($items[0]) ? 'id' : $items[0]->getPk(); - } - - if (isset($indexKey) && is_string($indexKey)) { - return array_column($items, null, $indexKey); - } - - return $items; - } - - /** - * 比较数组,返回差集 - * - * @access public - * @param mixed $items 数据 - * @param string $indexKey 指定比较的键名 - * @return static - */ - public function diff($items, string $indexKey = null) - { - if ($this->isEmpty() || is_scalar($this->items[0])) { - return new static(array_diff($this->items, $this->convertToArray($items))); - } - - $diff = []; - $dictionary = $this->dictionary($items, $indexKey); - - if (is_string($indexKey)) { - foreach ($this->items as $item) { - if (!isset($dictionary[$item[$indexKey]])) { - $diff[] = $item; - } - } - } - - return new static($diff); - } - - /** - * 比较数组,返回交集 - * - * @access public - * @param mixed $items 数据 - * @param string $indexKey 指定比较的键名 - * @return static - */ - public function intersect($items, string $indexKey = null) - { - if ($this->isEmpty() || is_scalar($this->items[0])) { - return new static(array_diff($this->items, $this->convertToArray($items))); - } - - $intersect = []; - $dictionary = $this->dictionary($items, $indexKey); - - if (is_string($indexKey)) { - foreach ($this->items as $item) { - if (isset($dictionary[$item[$indexKey]])) { - $intersect[] = $item; - } - } - } - - return new static($intersect); - } - - /** - * 交换数组中的键和值 - * - * @access public - * @return static - */ - public function flip() - { - return new static(array_flip($this->items)); - } - - /** - * 返回数组中所有的键名 - * - * @access public - * @return static - */ - public function keys() - { - return new static(array_keys($this->items)); - } - - /** - * 返回数组中所有的值组成的新 Collection 实例 - * @access public - * @return static - */ - public function values() - { - return new static(array_values($this->items)); - } - - /** - * 删除数组的最后一个元素(出栈) - * - * @access public - * @return mixed - */ - public function pop() - { - return array_pop($this->items); - } - - /** - * 通过使用用户自定义函数,以字符串返回数组 - * - * @access public - * @param callable $callback 调用方法 - * @param mixed $initial - * @return mixed - */ - public function reduce(callable $callback, $initial = null) - { - return array_reduce($this->items, $callback, $initial); - } - - /** - * 以相反的顺序返回数组。 - * - * @access public - * @return static - */ - public function reverse() - { - return new static(array_reverse($this->items)); - } - - /** - * 删除数组中首个元素,并返回被删除元素的值 - * - * @access public - * @return mixed - */ - public function shift() - { - return array_shift($this->items); - } - - /** - * 在数组结尾插入一个元素 - * @access public - * @param mixed $value 元素 - * @param string $key KEY - * @return void - */ - public function push($value, string $key = null): void - { - if (is_null($key)) { - $this->items[] = $value; - } else { - $this->items[$key] = $value; - } - } - - /** - * 把一个数组分割为新的数组块. - * - * @access public - * @param int $size 块大小 - * @param bool $preserveKeys - * @return static - */ - public function chunk(int $size, bool $preserveKeys = false) - { - $chunks = []; - - foreach (array_chunk($this->items, $size, $preserveKeys) as $chunk) { - $chunks[] = new static($chunk); - } - - return new static($chunks); - } - - /** - * 在数组开头插入一个元素 - * @access public - * @param mixed $value 元素 - * @param string $key KEY - * @return void - */ - public function unshift($value, string $key = null): void - { - if (is_null($key)) { - array_unshift($this->items, $value); - } else { - $this->items = [$key => $value] + $this->items; - } - } - - /** - * 给每个元素执行个回调 - * - * @access public - * @param callable $callback 回调 - * @return $this - */ - public function each(callable $callback) - { - foreach ($this->items as $key => $item) { - $result = $callback($item, $key); - - if (false === $result) { - break; - } elseif (!is_object($item)) { - $this->items[$key] = $result; - } - } - - return $this; - } - - /** - * 用回调函数处理数组中的元素 - * @access public - * @param callable|null $callback 回调 - * @return static - */ - public function map(callable $callback) - { - return new static(array_map($callback, $this->items)); - } - - /** - * 用回调函数过滤数组中的元素 - * @access public - * @param callable|null $callback 回调 - * @return static - */ - public function filter(callable $callback = null) - { - if ($callback) { - return new static(array_filter($this->items, $callback)); - } - - return new static(array_filter($this->items)); - } - - /** - * 根据字段条件过滤数组中的元素 - * @access public - * @param string $field 字段名 - * @param mixed $operator 操作符 - * @param mixed $value 数据 - * @return static - */ - public function where(string $field, $operator, $value = null) - { - if (is_null($value)) { - $value = $operator; - $operator = '='; - } - - return $this->filter(function ($data) use ($field, $operator, $value) { - if (strpos($field, '.')) { - list($field, $relation) = explode('.', $field); - - $result = $data[$field][$relation] ?? null; - } else { - $result = $data[$field] ?? null; - } - - switch (strtolower($operator)) { - case '===': - return $result === $value; - case '!==': - return $result !== $value; - case '!=': - case '<>': - return $result != $value; - case '>': - return $result > $value; - case '>=': - return $result >= $value; - case '<': - return $result < $value; - case '<=': - return $result <= $value; - case 'like': - return is_string($result) && false !== strpos($result, $value); - case 'not like': - return is_string($result) && false === strpos($result, $value); - case 'in': - return is_scalar($result) && in_array($result, $value, true); - case 'not in': - return is_scalar($result) && !in_array($result, $value, true); - case 'between': - list($min, $max) = is_string($value) ? explode(',', $value) : $value; - return is_scalar($result) && $result >= $min && $result <= $max; - case 'not between': - list($min, $max) = is_string($value) ? explode(',', $value) : $value; - return is_scalar($result) && $result > $max || $result < $min; - case '==': - case '=': - default: - return $result == $value; - } - }); - } - - /** - * LIKE过滤 - * @access public - * @param string $field 字段名 - * @param string $value 数据 - * @return static - */ - public function whereLike(string $field, string $value) - { - return $this->where($field, 'like', $value); - } - - /** - * NOT LIKE过滤 - * @access public - * @param string $field 字段名 - * @param string $value 数据 - * @return static - */ - public function whereNotLike(string $field, string $value) - { - return $this->where($field, 'not like', $value); - } - - /** - * IN过滤 - * @access public - * @param string $field 字段名 - * @param array $value 数据 - * @return static - */ - public function whereIn(string $field, array $value) - { - return $this->where($field, 'in', $value); - } - - /** - * NOT IN过滤 - * @access public - * @param string $field 字段名 - * @param array $value 数据 - * @return static - */ - public function whereNotIn(string $field, array $value) - { - return $this->where($field, 'not in', $value); - } - - /** - * BETWEEN 过滤 - * @access public - * @param string $field 字段名 - * @param mixed $value 数据 - * @return static - */ - public function whereBetween(string $field, $value) - { - return $this->where($field, 'between', $value); - } - - /** - * NOT BETWEEN 过滤 - * @access public - * @param string $field 字段名 - * @param mixed $value 数据 - * @return static - */ - public function whereNotBetween(string $field, $value) - { - return $this->where($field, 'not between', $value); - } - - /** - * 返回数据中指定的一列 - * @access public - * @param string $columnKey 键名 - * @param string $indexKey 作为索引值的列 - * @return array - */ - public function column(string $columnKey, string $indexKey = null) - { - return array_column($this->items, $columnKey, $indexKey); - } - - /** - * 对数组排序 - * - * @access public - * @param callable|null $callback 回调 - * @return static - */ - public function sort(callable $callback = null) - { - $items = $this->items; - - $callback = $callback ?: function ($a, $b) { - return $a == $b ? 0 : (($a < $b) ? -1 : 1); - }; - - uasort($items, $callback); - - return new static($items); - } - - /** - * 指定字段排序 - * @access public - * @param string $field 排序字段 - * @param string $order 排序 - * @return $this - */ - public function order(string $field, string $order = null) - { - return $this->sort(function ($a, $b) use ($field, $order) { - $fieldA = $a[$field] ?? null; - $fieldB = $b[$field] ?? null; - - return 'desc' == strtolower($order) ? strcmp($fieldB, $fieldA) : strcmp($fieldA, $fieldB); - }); - } - - /** - * 将数组打乱 - * - * @access public - * @return static - */ - public function shuffle() - { - $items = $this->items; - - shuffle($items); - - return new static($items); - } - - /** - * 获取最后一个单元数据 - * - * @access public - * @param callable|null $callback - * @param null $default - * @return mixed - */ - public function first(callable $callback = null, $default = null) - { - return Arr::first($this->items, $callback, $default); - } - - /** - * 获取第一个单元数据 - * - * @access public - * @param callable|null $callback - * @param null $default - * @return mixed - */ - public function last(callable $callback = null, $default = null) - { - return Arr::last($this->items, $callback, $default); - } - - /** - * 截取数组 - * - * @access public - * @param int $offset 起始位置 - * @param int $length 截取长度 - * @param bool $preserveKeys preserveKeys - * @return static - */ - public function slice(int $offset, int $length = null, bool $preserveKeys = false) - { - return new static(array_slice($this->items, $offset, $length, $preserveKeys)); - } - - // ArrayAccess - public function offsetExists($offset) - { - return array_key_exists($offset, $this->items); - } - - public function offsetGet($offset) - { - return $this->items[$offset]; - } - - public function offsetSet($offset, $value) - { - if (is_null($offset)) { - $this->items[] = $value; - } else { - $this->items[$offset] = $value; - } - } - - public function offsetUnset($offset) - { - unset($this->items[$offset]); - } - - //Countable - public function count() - { - return count($this->items); - } - - //IteratorAggregate - public function getIterator() - { - return new ArrayIterator($this->items); - } - - //JsonSerializable - public function jsonSerialize() - { - return $this->toArray(); - } - - /** - * 转换当前数据集为JSON字符串 - * @access public - * @param integer $options json参数 - * @return string - */ - public function toJson(int $options = JSON_UNESCAPED_UNICODE): string - { - return json_encode($this->toArray(), $options); - } - - public function __toString() - { - return $this->toJson(); - } - - /** - * 转换成数组 - * - * @access public - * @param mixed $items 数据 - * @return array - */ - protected function convertToArray($items): array - { - if ($items instanceof self) { - return $items->all(); - } - - return (array) $items; - } -} diff --git a/vendor/topthink/think-helper/src/contract/Arrayable.php b/vendor/topthink/think-helper/src/contract/Arrayable.php deleted file mode 100644 index 7c6b992b0..000000000 --- a/vendor/topthink/think-helper/src/contract/Arrayable.php +++ /dev/null @@ -1,8 +0,0 @@ - -// +---------------------------------------------------------------------- - -use think\Collection; -use think\helper\Arr; - -if (!function_exists('throw_if')) { - /** - * 按条件抛异常 - * - * @param mixed $condition - * @param Throwable|string $exception - * @param array ...$parameters - * @return mixed - * - * @throws Throwable - */ - function throw_if($condition, $exception, ...$parameters) - { - if ($condition) { - throw (is_string($exception) ? new $exception(...$parameters) : $exception); - } - - return $condition; - } -} - -if (!function_exists('throw_unless')) { - /** - * 按条件抛异常 - * - * @param mixed $condition - * @param Throwable|string $exception - * @param array ...$parameters - * @return mixed - * @throws Throwable - */ - function throw_unless($condition, $exception, ...$parameters) - { - if (!$condition) { - throw (is_string($exception) ? new $exception(...$parameters) : $exception); - } - - return $condition; - } -} - -if (!function_exists('tap')) { - /** - * 对一个值调用给定的闭包,然后返回该值 - * - * @param mixed $value - * @param callable|null $callback - * @return mixed - */ - function tap($value, $callback = null) - { - if (is_null($callback)) { - return $value; - } - - $callback($value); - - return $value; - } -} - -if (!function_exists('value')) { - /** - * Return the default value of the given value. - * - * @param mixed $value - * @return mixed - */ - function value($value) - { - return $value instanceof Closure ? $value() : $value; - } -} - -if (!function_exists('collect')) { - /** - * Create a collection from the given value. - * - * @param mixed $value - * @return Collection - */ - function collect($value = null) - { - return new Collection($value); - } -} - -if (!function_exists('data_fill')) { - /** - * Fill in data where it's missing. - * - * @param mixed $target - * @param string|array $key - * @param mixed $value - * @return mixed - */ - function data_fill(&$target, $key, $value) - { - return data_set($target, $key, $value, false); - } -} - -if (!function_exists('data_get')) { - /** - * Get an item from an array or object using "dot" notation. - * - * @param mixed $target - * @param string|array|int $key - * @param mixed $default - * @return mixed - */ - function data_get($target, $key, $default = null) - { - if (is_null($key)) { - return $target; - } - - $key = is_array($key) ? $key : explode('.', $key); - - while (!is_null($segment = array_shift($key))) { - if ('*' === $segment) { - if ($target instanceof Collection) { - $target = $target->all(); - } elseif (!is_array($target)) { - return value($default); - } - - $result = []; - - foreach ($target as $item) { - $result[] = data_get($item, $key); - } - - return in_array('*', $key) ? Arr::collapse($result) : $result; - } - - if (Arr::accessible($target) && Arr::exists($target, $segment)) { - $target = $target[$segment]; - } elseif (is_object($target) && isset($target->{$segment})) { - $target = $target->{$segment}; - } else { - return value($default); - } - } - - return $target; - } -} - -if (!function_exists('data_set')) { - /** - * Set an item on an array or object using dot notation. - * - * @param mixed $target - * @param string|array $key - * @param mixed $value - * @param bool $overwrite - * @return mixed - */ - function data_set(&$target, $key, $value, $overwrite = true) - { - $segments = is_array($key) ? $key : explode('.', $key); - - if (($segment = array_shift($segments)) === '*') { - if (!Arr::accessible($target)) { - $target = []; - } - - if ($segments) { - foreach ($target as &$inner) { - data_set($inner, $segments, $value, $overwrite); - } - } elseif ($overwrite) { - foreach ($target as &$inner) { - $inner = $value; - } - } - } elseif (Arr::accessible($target)) { - if ($segments) { - if (!Arr::exists($target, $segment)) { - $target[$segment] = []; - } - - data_set($target[$segment], $segments, $value, $overwrite); - } elseif ($overwrite || !Arr::exists($target, $segment)) { - $target[$segment] = $value; - } - } elseif (is_object($target)) { - if ($segments) { - if (!isset($target->{$segment})) { - $target->{$segment} = []; - } - - data_set($target->{$segment}, $segments, $value, $overwrite); - } elseif ($overwrite || !isset($target->{$segment})) { - $target->{$segment} = $value; - } - } else { - $target = []; - - if ($segments) { - data_set($target[$segment], $segments, $value, $overwrite); - } elseif ($overwrite) { - $target[$segment] = $value; - } - } - - return $target; - } -} - -if (!function_exists('trait_uses_recursive')) { - /** - * 获取一个trait里所有引用到的trait - * - * @param string $trait Trait - * @return array - */ - function trait_uses_recursive(string $trait): array - { - $traits = class_uses($trait); - foreach ($traits as $trait) { - $traits += trait_uses_recursive($trait); - } - - return $traits; - } -} - -if (!function_exists('class_basename')) { - /** - * 获取类名(不包含命名空间) - * - * @param mixed $class 类名 - * @return string - */ - function class_basename($class): string - { - $class = is_object($class) ? get_class($class) : $class; - return basename(str_replace('\\', '/', $class)); - } -} - -if (!function_exists('class_uses_recursive')) { - /** - *获取一个类里所有用到的trait,包括父类的 - * - * @param mixed $class 类名 - * @return array - */ - function class_uses_recursive($class): array - { - if (is_object($class)) { - $class = get_class($class); - } - - $results = []; - $classes = array_merge([$class => $class], class_parents($class)); - foreach ($classes as $class) { - $results += trait_uses_recursive($class); - } - - return array_unique($results); - } -} diff --git a/vendor/topthink/think-helper/src/helper/Arr.php b/vendor/topthink/think-helper/src/helper/Arr.php deleted file mode 100644 index ed4d6a9ef..000000000 --- a/vendor/topthink/think-helper/src/helper/Arr.php +++ /dev/null @@ -1,634 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\helper; - -use ArrayAccess; -use InvalidArgumentException; -use think\Collection; - -class Arr -{ - - /** - * Determine whether the given value is array accessible. - * - * @param mixed $value - * @return bool - */ - public static function accessible($value) - { - return is_array($value) || $value instanceof ArrayAccess; - } - - /** - * Add an element to an array using "dot" notation if it doesn't exist. - * - * @param array $array - * @param string $key - * @param mixed $value - * @return array - */ - public static function add($array, $key, $value) - { - if (is_null(static::get($array, $key))) { - static::set($array, $key, $value); - } - - return $array; - } - - /** - * Collapse an array of arrays into a single array. - * - * @param array $array - * @return array - */ - public static function collapse($array) - { - $results = []; - - foreach ($array as $values) { - if ($values instanceof Collection) { - $values = $values->all(); - } elseif (!is_array($values)) { - continue; - } - - $results = array_merge($results, $values); - } - - return $results; - } - - /** - * Cross join the given arrays, returning all possible permutations. - * - * @param array ...$arrays - * @return array - */ - public static function crossJoin(...$arrays) - { - $results = [[]]; - - foreach ($arrays as $index => $array) { - $append = []; - - foreach ($results as $product) { - foreach ($array as $item) { - $product[$index] = $item; - - $append[] = $product; - } - } - - $results = $append; - } - - return $results; - } - - /** - * Divide an array into two arrays. One with keys and the other with values. - * - * @param array $array - * @return array - */ - public static function divide($array) - { - return [array_keys($array), array_values($array)]; - } - - /** - * Flatten a multi-dimensional associative array with dots. - * - * @param array $array - * @param string $prepend - * @return array - */ - public static function dot($array, $prepend = '') - { - $results = []; - - foreach ($array as $key => $value) { - if (is_array($value) && !empty($value)) { - $results = array_merge($results, static::dot($value, $prepend . $key . '.')); - } else { - $results[$prepend . $key] = $value; - } - } - - return $results; - } - - /** - * Get all of the given array except for a specified array of keys. - * - * @param array $array - * @param array|string $keys - * @return array - */ - public static function except($array, $keys) - { - static::forget($array, $keys); - - return $array; - } - - /** - * Determine if the given key exists in the provided array. - * - * @param \ArrayAccess|array $array - * @param string|int $key - * @return bool - */ - public static function exists($array, $key) - { - if ($array instanceof ArrayAccess) { - return $array->offsetExists($key); - } - - return array_key_exists($key, $array); - } - - /** - * Return the first element in an array passing a given truth test. - * - * @param array $array - * @param callable|null $callback - * @param mixed $default - * @return mixed - */ - public static function first($array, callable $callback = null, $default = null) - { - if (is_null($callback)) { - if (empty($array)) { - return value($default); - } - - foreach ($array as $item) { - return $item; - } - } - - foreach ($array as $key => $value) { - if (call_user_func($callback, $value, $key)) { - return $value; - } - } - - return value($default); - } - - /** - * Return the last element in an array passing a given truth test. - * - * @param array $array - * @param callable|null $callback - * @param mixed $default - * @return mixed - */ - public static function last($array, callable $callback = null, $default = null) - { - if (is_null($callback)) { - return empty($array) ? value($default) : end($array); - } - - return static::first(array_reverse($array, true), $callback, $default); - } - - /** - * Flatten a multi-dimensional array into a single level. - * - * @param array $array - * @param int $depth - * @return array - */ - public static function flatten($array, $depth = INF) - { - $result = []; - - foreach ($array as $item) { - $item = $item instanceof Collection ? $item->all() : $item; - - if (!is_array($item)) { - $result[] = $item; - } elseif ($depth === 1) { - $result = array_merge($result, array_values($item)); - } else { - $result = array_merge($result, static::flatten($item, $depth - 1)); - } - } - - return $result; - } - - /** - * Remove one or many array items from a given array using "dot" notation. - * - * @param array $array - * @param array|string $keys - * @return void - */ - public static function forget(&$array, $keys) - { - $original = &$array; - - $keys = (array) $keys; - - if (count($keys) === 0) { - return; - } - - foreach ($keys as $key) { - // if the exact key exists in the top-level, remove it - if (static::exists($array, $key)) { - unset($array[$key]); - - continue; - } - - $parts = explode('.', $key); - - // clean up before each pass - $array = &$original; - - while (count($parts) > 1) { - $part = array_shift($parts); - - if (isset($array[$part]) && is_array($array[$part])) { - $array = &$array[$part]; - } else { - continue 2; - } - } - - unset($array[array_shift($parts)]); - } - } - - /** - * Get an item from an array using "dot" notation. - * - * @param \ArrayAccess|array $array - * @param string $key - * @param mixed $default - * @return mixed - */ - public static function get($array, $key, $default = null) - { - if (!static::accessible($array)) { - return value($default); - } - - if (is_null($key)) { - return $array; - } - - if (static::exists($array, $key)) { - return $array[$key]; - } - - if (strpos($key, '.') === false) { - return $array[$key] ?? value($default); - } - - foreach (explode('.', $key) as $segment) { - if (static::accessible($array) && static::exists($array, $segment)) { - $array = $array[$segment]; - } else { - return value($default); - } - } - - return $array; - } - - /** - * Check if an item or items exist in an array using "dot" notation. - * - * @param \ArrayAccess|array $array - * @param string|array $keys - * @return bool - */ - public static function has($array, $keys) - { - $keys = (array) $keys; - - if (!$array || $keys === []) { - return false; - } - - foreach ($keys as $key) { - $subKeyArray = $array; - - if (static::exists($array, $key)) { - continue; - } - - foreach (explode('.', $key) as $segment) { - if (static::accessible($subKeyArray) && static::exists($subKeyArray, $segment)) { - $subKeyArray = $subKeyArray[$segment]; - } else { - return false; - } - } - } - - return true; - } - - /** - * Determines if an array is associative. - * - * An array is "associative" if it doesn't have sequential numerical keys beginning with zero. - * - * @param array $array - * @return bool - */ - public static function isAssoc(array $array) - { - $keys = array_keys($array); - - return array_keys($keys) !== $keys; - } - - /** - * Get a subset of the items from the given array. - * - * @param array $array - * @param array|string $keys - * @return array - */ - public static function only($array, $keys) - { - return array_intersect_key($array, array_flip((array) $keys)); - } - - /** - * Pluck an array of values from an array. - * - * @param array $array - * @param string|array $value - * @param string|array|null $key - * @return array - */ - public static function pluck($array, $value, $key = null) - { - $results = []; - - [$value, $key] = static::explodePluckParameters($value, $key); - - foreach ($array as $item) { - $itemValue = data_get($item, $value); - - // If the key is "null", we will just append the value to the array and keep - // looping. Otherwise we will key the array using the value of the key we - // received from the developer. Then we'll return the final array form. - if (is_null($key)) { - $results[] = $itemValue; - } else { - $itemKey = data_get($item, $key); - - if (is_object($itemKey) && method_exists($itemKey, '__toString')) { - $itemKey = (string) $itemKey; - } - - $results[$itemKey] = $itemValue; - } - } - - return $results; - } - - /** - * Explode the "value" and "key" arguments passed to "pluck". - * - * @param string|array $value - * @param string|array|null $key - * @return array - */ - protected static function explodePluckParameters($value, $key) - { - $value = is_string($value) ? explode('.', $value) : $value; - - $key = is_null($key) || is_array($key) ? $key : explode('.', $key); - - return [$value, $key]; - } - - /** - * Push an item onto the beginning of an array. - * - * @param array $array - * @param mixed $value - * @param mixed $key - * @return array - */ - public static function prepend($array, $value, $key = null) - { - if (is_null($key)) { - array_unshift($array, $value); - } else { - $array = [$key => $value] + $array; - } - - return $array; - } - - /** - * Get a value from the array, and remove it. - * - * @param array $array - * @param string $key - * @param mixed $default - * @return mixed - */ - public static function pull(&$array, $key, $default = null) - { - $value = static::get($array, $key, $default); - - static::forget($array, $key); - - return $value; - } - - /** - * Get one or a specified number of random values from an array. - * - * @param array $array - * @param int|null $number - * @return mixed - * - * @throws \InvalidArgumentException - */ - public static function random($array, $number = null) - { - $requested = is_null($number) ? 1 : $number; - - $count = count($array); - - if ($requested > $count) { - throw new InvalidArgumentException( - "You requested {$requested} items, but there are only {$count} items available." - ); - } - - if (is_null($number)) { - return $array[array_rand($array)]; - } - - if ((int) $number === 0) { - return []; - } - - $keys = array_rand($array, $number); - - $results = []; - - foreach ((array) $keys as $key) { - $results[] = $array[$key]; - } - - return $results; - } - - /** - * Set an array item to a given value using "dot" notation. - * - * If no key is given to the method, the entire array will be replaced. - * - * @param array $array - * @param string $key - * @param mixed $value - * @return array - */ - public static function set(&$array, $key, $value) - { - if (is_null($key)) { - return $array = $value; - } - - $keys = explode('.', $key); - - while (count($keys) > 1) { - $key = array_shift($keys); - - // If the key doesn't exist at this depth, we will just create an empty array - // to hold the next value, allowing us to create the arrays to hold final - // values at the correct depth. Then we'll keep digging into the array. - if (!isset($array[$key]) || !is_array($array[$key])) { - $array[$key] = []; - } - - $array = &$array[$key]; - } - - $array[array_shift($keys)] = $value; - - return $array; - } - - /** - * Shuffle the given array and return the result. - * - * @param array $array - * @param int|null $seed - * @return array - */ - public static function shuffle($array, $seed = null) - { - if (is_null($seed)) { - shuffle($array); - } else { - srand($seed); - - usort($array, function () { - return rand(-1, 1); - }); - } - - return $array; - } - - /** - * Sort the array using the given callback or "dot" notation. - * - * @param array $array - * @param callable|string|null $callback - * @return array - */ - public static function sort($array, $callback = null) - { - return Collection::make($array)->sort($callback)->all(); - } - - /** - * Recursively sort an array by keys and values. - * - * @param array $array - * @return array - */ - public static function sortRecursive($array) - { - foreach ($array as &$value) { - if (is_array($value)) { - $value = static::sortRecursive($value); - } - } - - if (static::isAssoc($array)) { - ksort($array); - } else { - sort($array); - } - - return $array; - } - - /** - * Convert the array into a query string. - * - * @param array $array - * @return string - */ - public static function query($array) - { - return http_build_query($array, null, '&', PHP_QUERY_RFC3986); - } - - /** - * Filter the array using the given callback. - * - * @param array $array - * @param callable $callback - * @return array - */ - public static function where($array, callable $callback) - { - return array_filter($array, $callback, ARRAY_FILTER_USE_BOTH); - } - - /** - * If the given value is not an array and not null, wrap it in one. - * - * @param mixed $value - * @return array - */ - public static function wrap($value) - { - if (is_null($value)) { - return []; - } - - return is_array($value) ? $value : [$value]; - } -} \ No newline at end of file diff --git a/vendor/topthink/think-helper/src/helper/Str.php b/vendor/topthink/think-helper/src/helper/Str.php deleted file mode 100644 index 7391fbd39..000000000 --- a/vendor/topthink/think-helper/src/helper/Str.php +++ /dev/null @@ -1,234 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think\helper; - -class Str -{ - - protected static $snakeCache = []; - - protected static $camelCache = []; - - protected static $studlyCache = []; - - /** - * 检查字符串中是否包含某些字符串 - * @param string $haystack - * @param string|array $needles - * @return bool - */ - public static function contains(string $haystack, $needles): bool - { - foreach ((array) $needles as $needle) { - if ('' != $needle && mb_strpos($haystack, $needle) !== false) { - return true; - } - } - - return false; - } - - /** - * 检查字符串是否以某些字符串结尾 - * - * @param string $haystack - * @param string|array $needles - * @return bool - */ - public static function endsWith(string $haystack, $needles): bool - { - foreach ((array) $needles as $needle) { - if ((string) $needle === static::substr($haystack, -static::length($needle))) { - return true; - } - } - - return false; - } - - /** - * 检查字符串是否以某些字符串开头 - * - * @param string $haystack - * @param string|array $needles - * @return bool - */ - public static function startsWith(string $haystack, $needles): bool - { - foreach ((array) $needles as $needle) { - if ('' != $needle && mb_strpos($haystack, $needle) === 0) { - return true; - } - } - - return false; - } - - /** - * 获取指定长度的随机字母数字组合的字符串 - * - * @param int $length - * @param int $type - * @param string $addChars - * @return string - */ - public static function random(int $length = 6, int $type = null, string $addChars = ''): string - { - $str = ''; - switch ($type) { - case 0: - $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' . $addChars; - break; - case 1: - $chars = str_repeat('0123456789', 3); - break; - case 2: - $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' . $addChars; - break; - case 3: - $chars = 'abcdefghijklmnopqrstuvwxyz' . $addChars; - break; - case 4: - $chars = "们以我到他会作时要动国产的一是工就年阶义发成部民可出能方进在了不和有大这主中人上为来分生对于学下级地个用同行面说种过命度革而多子后自社加小机也经力线本电高量长党得实家定深法表着水理化争现所二起政三好十战无农使性前等反体合斗路图把结第里正新开论之物从当两些还天资事队批点育重其思与间内去因件日利相由压员气业代全组数果期导平各基或月毛然如应形想制心样干都向变关问比展那它最及外没看治提五解系林者米群头意只明四道马认次文通但条较克又公孔领军流入接席位情运器并飞原油放立题质指建区验活众很教决特此常石强极土少已根共直团统式转别造切九你取西持总料连任志观调七么山程百报更见必真保热委手改管处己将修支识病象几先老光专什六型具示复安带每东增则完风回南广劳轮科北打积车计给节做务被整联步类集号列温装即毫知轴研单色坚据速防史拉世设达尔场织历花受求传口断况采精金界品判参层止边清至万确究书" . $addChars; - break; - default: - $chars = 'ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789' . $addChars; - break; - } - if ($length > 10) { - $chars = $type == 1 ? str_repeat($chars, $length) : str_repeat($chars, 5); - } - if ($type != 4) { - $chars = str_shuffle($chars); - $str = substr($chars, 0, $length); - } else { - for ($i = 0; $i < $length; $i++) { - $str .= mb_substr($chars, floor(mt_rand(0, mb_strlen($chars, 'utf-8') - 1)), 1); - } - } - return $str; - } - - /** - * 字符串转小写 - * - * @param string $value - * @return string - */ - public static function lower(string $value): string - { - return mb_strtolower($value, 'UTF-8'); - } - - /** - * 字符串转大写 - * - * @param string $value - * @return string - */ - public static function upper(string $value): string - { - return mb_strtoupper($value, 'UTF-8'); - } - - /** - * 获取字符串的长度 - * - * @param string $value - * @return int - */ - public static function length(string $value): int - { - return mb_strlen($value); - } - - /** - * 截取字符串 - * - * @param string $string - * @param int $start - * @param int|null $length - * @return string - */ - public static function substr(string $string, int $start, int $length = null): string - { - return mb_substr($string, $start, $length, 'UTF-8'); - } - - /** - * 驼峰转下划线 - * - * @param string $value - * @param string $delimiter - * @return string - */ - public static function snake(string $value, string $delimiter = '_'): string - { - $key = $value; - - if (isset(static::$snakeCache[$key][$delimiter])) { - return static::$snakeCache[$key][$delimiter]; - } - - if (!ctype_lower($value)) { - $value = preg_replace('/\s+/u', '', $value); - - $value = static::lower(preg_replace('/(.)(?=[A-Z])/u', '$1' . $delimiter, $value)); - } - - return static::$snakeCache[$key][$delimiter] = $value; - } - - /** - * 下划线转驼峰(首字母小写) - * - * @param string $value - * @return string - */ - public static function camel(string $value): string - { - if (isset(static::$camelCache[$value])) { - return static::$camelCache[$value]; - } - - return static::$camelCache[$value] = lcfirst(static::studly($value)); - } - - /** - * 下划线转驼峰(首字母大写) - * - * @param string $value - * @return string - */ - public static function studly(string $value): string - { - $key = $value; - - if (isset(static::$studlyCache[$key])) { - return static::$studlyCache[$key]; - } - - $value = ucwords(str_replace(['-', '_'], ' ', $value)); - - return static::$studlyCache[$key] = str_replace(' ', '', $value); - } - - /** - * 转为首字母大写的标题格式 - * - * @param string $value - * @return string - */ - public static function title(string $value): string - { - return mb_convert_case($value, MB_CASE_TITLE, 'UTF-8'); - } -} diff --git a/vendor/topthink/think-multi-app/LICENSE b/vendor/topthink/think-multi-app/LICENSE deleted file mode 100644 index 261eeb9e9..000000000 --- a/vendor/topthink/think-multi-app/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/topthink/think-multi-app/README.md b/vendor/topthink/think-multi-app/README.md deleted file mode 100644 index a746fa7a7..000000000 --- a/vendor/topthink/think-multi-app/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# think-multi-app - -用于ThinkPHP6+的多应用支持 - -## 安装 - -~~~ -composer require topthink/think-multi-app -~~~ - -## 使用 - -用法参考ThinkPHP6完全开发手册[多应用模式](https://www.kancloud.cn/manual/thinkphp6_0/1297876)章节。 - diff --git a/vendor/topthink/think-multi-app/composer.json b/vendor/topthink/think-multi-app/composer.json deleted file mode 100644 index 92d620eb1..000000000 --- a/vendor/topthink/think-multi-app/composer.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "topthink/think-multi-app", - "description": "thinkphp6 multi app support", - "license": "Apache-2.0", - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "require": { - "php": ">=7.1.0", - "topthink/framework": "^6.0.0" - }, - "autoload": { - "psr-4": { - "think\\app\\": "src" - } - }, - "extra": { - "think":{ - "services":[ - "think\\app\\Service" - ] - } - }, - "minimum-stability": "dev" -} diff --git a/vendor/topthink/think-multi-app/src/MultiApp.php b/vendor/topthink/think-multi-app/src/MultiApp.php deleted file mode 100644 index f069aeb22..000000000 --- a/vendor/topthink/think-multi-app/src/MultiApp.php +++ /dev/null @@ -1,255 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\app; - -use Closure; -use think\App; -use think\exception\HttpException; -use think\Request; -use think\Response; - -/** - * 多应用模式支持 - */ -class MultiApp -{ - - /** @var App */ - protected $app; - - /** - * 应用名称 - * @var string - */ - protected $name; - - /** - * 应用名称 - * @var string - */ - protected $appName; - - /** - * 应用路径 - * @var string - */ - protected $path; - - public function __construct(App $app) - { - $this->app = $app; - $this->name = $this->app->http->getName(); - $this->path = $this->app->http->getPath(); - } - - /** - * 多应用解析 - * @access public - * @param Request $request - * @param Closure $next - * @return Response - */ - public function handle($request, Closure $next) - { - if (!$this->parseMultiApp()) { - return $next($request); - } - - return $this->app->middleware->pipeline('app') - ->send($request) - ->then(function ($request) use ($next) { - return $next($request); - }); - } - - /** - * 获取路由目录 - * @access protected - * @return string - */ - protected function getRoutePath(): string - { - if (is_dir($this->app->getAppPath() . 'route')) { - return $this->app->getAppPath() . 'route' . DIRECTORY_SEPARATOR; - } - - return $this->app->getRootPath() . 'route' . DIRECTORY_SEPARATOR . $this->appName . DIRECTORY_SEPARATOR; - } - - /** - * 解析多应用 - * @return bool - */ - protected function parseMultiApp(): bool - { - $scriptName = $this->getScriptName(); - $defaultApp = $this->app->config->get('app.default_app') ?: 'index'; - - if ($this->name || ($scriptName && !in_array($scriptName, ['index', 'router', 'think']))) { - $appName = $this->name ?: $scriptName; - $this->app->http->setBind(); - } else { - // 自动多应用识别 - $this->app->http->setBind(false); - $appName = null; - $this->appName = ''; - - $bind = $this->app->config->get('app.domain_bind', []); - - if (!empty($bind)) { - // 获取当前子域名 - $subDomain = $this->app->request->subDomain(); - $domain = $this->app->request->host(true); - - if (isset($bind[$domain])) { - $appName = $bind[$domain]; - $this->app->http->setBind(); - } elseif (isset($bind[$subDomain])) { - $appName = $bind[$subDomain]; - $this->app->http->setBind(); - } elseif (isset($bind['*'])) { - $appName = $bind['*']; - $this->app->http->setBind(); - } - } - - if (!$this->app->http->isBind()) { - $path = $this->app->request->pathinfo(); - $map = $this->app->config->get('app.app_map', []); - $deny = $this->app->config->get('app.deny_app_list', []); - $name = current(explode('/', $path)); - - if (strpos($name, '.')) { - $name = strstr($name, '.', true); - } - - if (isset($map[$name])) { - if ($map[$name] instanceof Closure) { - $result = call_user_func_array($map[$name], [$this->app]); - $appName = $result ?: $name; - } else { - $appName = $map[$name]; - } - } elseif ($name && (false !== array_search($name, $map) || in_array($name, $deny))) { - throw new HttpException(404, 'app not exists:' . $name); - } elseif ($name && isset($map['*'])) { - $appName = $map['*']; - } else { - $appName = $name ?: $defaultApp; - $appPath = $this->path ?: $this->app->getBasePath() . $appName . DIRECTORY_SEPARATOR; - - if (!is_dir($appPath)) { - $express = $this->app->config->get('app.app_express', false); - if ($express) { - $this->setApp($defaultApp); - return true; - } else { - return false; - } - } - } - - if ($name) { - $this->app->request->setRoot('/' . $name); - $this->app->request->setPathinfo(strpos($path, '/') ? ltrim(strstr($path, '/'), '/') : ''); - } - } - } - - $this->setApp($appName ?: $defaultApp); - return true; - } - - /** - * 获取当前运行入口名称 - * @access protected - * @codeCoverageIgnore - * @return string - */ - protected function getScriptName(): string - { - if (isset($_SERVER['SCRIPT_FILENAME'])) { - $file = $_SERVER['SCRIPT_FILENAME']; - } elseif (isset($_SERVER['argv'][0])) { - $file = realpath($_SERVER['argv'][0]); - } - - return isset($file) ? pathinfo($file, PATHINFO_FILENAME) : ''; - } - - /** - * 设置应用 - * @param string $appName - */ - protected function setApp(string $appName): void - { - $this->appName = $appName; - $this->app->http->name($appName); - - $appPath = $this->path ?: $this->app->getBasePath() . $appName . DIRECTORY_SEPARATOR; - - $this->app->setAppPath($appPath); - // 设置应用命名空间 - $this->app->setNamespace($this->app->config->get('app.app_namespace') ?: 'app\\' . $appName); - - if (is_dir($appPath)) { - $this->app->setRuntimePath($this->app->getRootPath() . 'runtime' . DIRECTORY_SEPARATOR . $appName . DIRECTORY_SEPARATOR); - $this->app->http->setRoutePath($this->getRoutePath()); - - //加载应用 - $this->loadApp($appName, $appPath); - } - } - - /** - * 加载应用文件 - * @param string $appName 应用名 - * @return void - */ - protected function loadApp(string $appName, string $appPath): void - { - if (is_file($appPath . 'common.php')) { - include_once $appPath . 'common.php'; - } - - $configPath = $this->app->getConfigPath(); - - $files = []; - - if (is_dir($appPath . 'config')) { - $files = array_merge($files, glob($appPath . 'config' . DIRECTORY_SEPARATOR . '*' . $this->app->getConfigExt())); - } elseif (is_dir($configPath . $appName)) { - $files = array_merge($files, glob($configPath . $appName . DIRECTORY_SEPARATOR . '*' . $this->app->getConfigExt())); - } - - foreach ($files as $file) { - $this->app->config->load($file, pathinfo($file, PATHINFO_FILENAME)); - } - - if (is_file($appPath . 'event.php')) { - $this->app->loadEvent(include $appPath . 'event.php'); - } - - if (is_file($appPath . 'middleware.php')) { - $this->app->middleware->import(include $appPath . 'middleware.php', 'app'); - } - - if (is_file($appPath . 'provider.php')) { - $this->app->bind(include $appPath . 'provider.php'); - } - - // 加载应用默认语言包 - $this->app->loadLangPack($this->app->lang->defaultLangSet()); - } - -} diff --git a/vendor/topthink/think-multi-app/src/Service.php b/vendor/topthink/think-multi-app/src/Service.php deleted file mode 100644 index ad576c391..000000000 --- a/vendor/topthink/think-multi-app/src/Service.php +++ /dev/null @@ -1,29 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace think\app; - -use think\Service as BaseService; - -class Service extends BaseService -{ - public function register() - { - $this->app->middleware->unshift(MultiApp::class); - - $this->commands([ - 'build' => command\Build::class, - ]); - - $this->app->bind([ - 'think\route\Url' => Url::class, - ]); - } -} diff --git a/vendor/topthink/think-multi-app/src/Url.php b/vendor/topthink/think-multi-app/src/Url.php deleted file mode 100644 index 78a880408..000000000 --- a/vendor/topthink/think-multi-app/src/Url.php +++ /dev/null @@ -1,224 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\app; - -use think\App; -use think\Route; -use think\route\Url as UrlBuild; - -/** - * 路由地址生成 - */ -class Url extends UrlBuild -{ - - /** - * 直接解析URL地址 - * @access protected - * @param string $url URL - * @param string|bool $domain Domain - * @return string - */ - protected function parseUrl(string $url, &$domain): string - { - $request = $this->app->request; - - if (0 === strpos($url, '/')) { - // 直接作为路由地址解析 - $url = substr($url, 1); - } elseif (false !== strpos($url, '\\')) { - // 解析到类 - $url = ltrim(str_replace('\\', '/', $url), '/'); - } elseif (0 === strpos($url, '@')) { - // 解析到控制器 - $url = substr($url, 1); - } elseif ('' === $url) { - $url = $this->app->http->getName() . '/' . $request->controller() . '/' . $request->action(); - } else { - // 解析到 应用/控制器/操作 - $controller = $request->controller(); - $app = $this->app->http->getName(); - - $path = explode('/', $url); - $action = array_pop($path); - $controller = empty($path) ? $controller : array_pop($path); - $app = empty($path) ? $app : array_pop($path); - - $url = $controller . '/' . $action; - - $bind = $this->app->config->get('app.domain_bind', []); - - if ($key = array_search($app, $bind)) { - $domain = is_bool($domain) ? $key : $domain; - } else { - $map = $this->app->config->get('app.app_map', []); - - if ($key = array_search($app, $map)) { - $url = $key . '/' . $url; - } else { - $url = $app . '/' . $url; - } - } - - } - - return $url; - } - - public function build() - { - // 解析URL - $url = $this->url; - $suffix = $this->suffix; - $domain = $this->domain; - $request = $this->app->request; - $vars = $this->vars; - - if (0 === strpos($url, '[') && $pos = strpos($url, ']')) { - // [name] 表示使用路由命名标识生成URL - $name = substr($url, 1, $pos - 1); - $url = 'name' . substr($url, $pos + 1); - } - - if (false === strpos($url, '://') && 0 !== strpos($url, '/')) { - $info = parse_url($url); - $url = !empty($info['path']) ? $info['path'] : ''; - - if (isset($info['fragment'])) { - // 解析锚点 - $anchor = $info['fragment']; - - if (false !== strpos($anchor, '?')) { - // 解析参数 - list($anchor, $info['query']) = explode('?', $anchor, 2); - } - - if (false !== strpos($anchor, '@')) { - // 解析域名 - list($anchor, $domain) = explode('@', $anchor, 2); - } - } elseif (strpos($url, '@') && false === strpos($url, '\\')) { - // 解析域名 - list($url, $domain) = explode('@', $url, 2); - } - } - - if ($url) { - $checkName = isset($name) ? $name : $url . (isset($info['query']) ? '?' . $info['query'] : ''); - $checkDomain = $domain && is_string($domain) ? $domain : null; - - $rule = $this->route->getName($checkName, $checkDomain); - - if (empty($rule) && isset($info['query'])) { - $rule = $this->route->getName($url, $checkDomain); - // 解析地址里面参数 合并到vars - parse_str($info['query'], $params); - $vars = array_merge($params, $vars); - unset($info['query']); - } - } - - if (!empty($rule) && $match = $this->getRuleUrl($rule, $vars, $domain)) { - // 匹配路由命名标识 - $url = $match[0]; - - if ($domain && !empty($match[1])) { - $domain = $match[1]; - } - - if (!is_null($match[2])) { - $suffix = $match[2]; - } - - if (!$this->app->http->isBind()) { - $url = $this->app->http->getName() . '/' . $url; - } - } elseif (!empty($rule) && isset($name)) { - throw new \InvalidArgumentException('route name not exists:' . $name); - } else { - // 检测URL绑定 - $bind = $this->route->getDomainBind($domain && is_string($domain) ? $domain : null); - - if ($bind && 0 === strpos($url, $bind)) { - $url = substr($url, strlen($bind) + 1); - } else { - $binds = $this->route->getBind(); - - foreach ($binds as $key => $val) { - if (is_string($val) && 0 === strpos($url, $val) && substr_count($val, '/') > 1) { - $url = substr($url, strlen($val) + 1); - $domain = $key; - break; - } - } - } - - // 路由标识不存在 直接解析 - $url = $this->parseUrl($url, $domain); - - if (isset($info['query'])) { - // 解析地址里面参数 合并到vars - parse_str($info['query'], $params); - $vars = array_merge($params, $vars); - } - } - - // 还原URL分隔符 - $depr = $this->route->config('pathinfo_depr'); - $url = str_replace('/', $depr, $url); - - $file = $request->baseFile(); - if ($file && 0 !== strpos($request->url(), $file)) { - $file = str_replace('\\', '/', dirname($file)); - } - - $url = rtrim($file, '/') . '/' . ltrim($url, '/'); - - // URL后缀 - if ('/' == substr($url, -1) || '' == $url) { - $suffix = ''; - } else { - $suffix = $this->parseSuffix($suffix); - } - - // 锚点 - $anchor = !empty($anchor) ? '#' . $anchor : ''; - - // 参数组装 - if (!empty($vars)) { - // 添加参数 - if ($this->route->config('url_common_param')) { - $vars = http_build_query($vars); - $url .= $suffix . '?' . $vars . $anchor; - } else { - foreach ($vars as $var => $val) { - $val = (string) $val; - if ('' !== $val) { - $url .= $depr . $var . $depr . urlencode($val); - } - } - - $url .= $suffix . $anchor; - } - } else { - $url .= $suffix . $anchor; - } - - // 检测域名 - $domain = $this->parseDomain($url, $domain); - - // URL组装 - return $domain . rtrim($this->root, '/') . '/' . ltrim($url, '/'); - } - -} diff --git a/vendor/topthink/think-multi-app/src/command/Build.php b/vendor/topthink/think-multi-app/src/command/Build.php deleted file mode 100644 index e192167ed..000000000 --- a/vendor/topthink/think-multi-app/src/command/Build.php +++ /dev/null @@ -1,180 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\app\command; - -use think\console\Command; -use think\console\Input; -use think\console\input\Argument; -use think\console\Output; - -class Build extends Command -{ - /** - * 应用基础目录 - * @var string - */ - protected $basePath; - - /** - * {@inheritdoc} - */ - protected function configure() - { - $this->setName('build') - ->addArgument('app', Argument::OPTIONAL, 'app name .') - ->setDescription('Build App Dirs'); - } - - protected function execute(Input $input, Output $output) - { - $this->basePath = $this->app->getBasePath(); - $app = $input->getArgument('app') ?: ''; - - if (is_file($this->basePath . 'build.php')) { - $list = include $this->basePath . 'build.php'; - } else { - $list = [ - '__dir__' => ['controller', 'model', 'view'], - ]; - } - - $this->buildApp($app, $list); - $output->writeln("Successed"); - - } - - /** - * 创建应用 - * @access protected - * @param string $app 应用名 - * @param array $list 目录结构 - * @return void - */ - protected function buildApp(string $app, array $list = []): void - { - if (!is_dir($this->basePath . $app)) { - // 创建应用目录 - mkdir($this->basePath . $app); - } - - $appPath = $this->basePath . ($app ? $app . DIRECTORY_SEPARATOR : ''); - $namespace = 'app' . ($app ? '\\' . $app : ''); - - // 创建配置文件和公共文件 - $this->buildCommon($app); - // 创建模块的默认页面 - $this->buildHello($app, $namespace); - - foreach ($list as $path => $file) { - if ('__dir__' == $path) { - // 生成子目录 - foreach ($file as $dir) { - $this->checkDirBuild($appPath . $dir); - } - } elseif ('__file__' == $path) { - // 生成(空白)文件 - foreach ($file as $name) { - if (!is_file($appPath . $name)) { - file_put_contents($appPath . $name, 'php' == pathinfo($name, PATHINFO_EXTENSION) ? 'app->config->get('route.controller_suffix')) { - $filename = $appPath . $path . DIRECTORY_SEPARATOR . $val . 'Controller.php'; - $class = $val . 'Controller'; - } - $content = "checkDirBuild(dirname($filename)); - $content = ''; - break; - default: - // 其他文件 - $content = "app->config->get('route.controller_suffix') ? 'Controller' : ''; - $filename = $this->basePath . ($app ? $app . DIRECTORY_SEPARATOR : '') . 'controller' . DIRECTORY_SEPARATOR . 'Index' . $suffix . '.php'; - - if (!is_file($filename)) { - $content = file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . 'controller.stub'); - $content = str_replace(['{%name%}', '{%app%}', '{%layer%}', '{%suffix%}'], [$app, $namespace, 'controller', $suffix], $content); - $this->checkDirBuild(dirname($filename)); - - file_put_contents($filename, $content); - } - } - - /** - * 创建应用的公共文件 - * @access protected - * @param string $app 目录 - * @return void - */ - protected function buildCommon(string $app): void - { - $appPath = $this->basePath . ($app ? $app . DIRECTORY_SEPARATOR : ''); - - if (!is_file($appPath . 'common.php')) { - file_put_contents($appPath . 'common.php', "=7.1.0", - "ext-json": "*", - "psr/simple-cache": "^1.0", - "psr/log": "~1.0", - "topthink/think-helper":"^3.1" - }, - "autoload": { - "psr-4": { - "think\\": "src" - }, - "files": [] - } -} diff --git a/vendor/topthink/think-orm/src/DbManager.php b/vendor/topthink/think-orm/src/DbManager.php deleted file mode 100644 index ceb508f1e..000000000 --- a/vendor/topthink/think-orm/src/DbManager.php +++ /dev/null @@ -1,406 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use InvalidArgumentException; -use Psr\Log\LoggerInterface; -use Psr\SimpleCache\CacheInterface; -use think\db\BaseQuery; -use think\db\ConnectionInterface; -use think\db\Query; -use think\db\Raw; - -/** - * Class DbManager - * @package think - * @mixin BaseQuery - * @mixin Query - */ -class DbManager -{ - /** - * 数据库连接实例 - * @var array - */ - protected $instance = []; - - /** - * 数据库配置 - * @var array - */ - protected $config = []; - - /** - * Event对象或者数组 - * @var array|object - */ - protected $event; - - /** - * SQL监听 - * @var array - */ - protected $listen = []; - - /** - * SQL日志 - * @var array - */ - protected $dbLog = []; - - /** - * 查询次数 - * @var int - */ - protected $queryTimes = 0; - - /** - * 查询缓存对象 - * @var CacheInterface - */ - protected $cache; - - /** - * 查询日志对象 - * @var LoggerInterface - */ - protected $log; - - /** - * 架构函数 - * @access public - */ - public function __construct() - { - $this->modelMaker(); - } - - /** - * 注入模型对象 - * @access public - * @return void - */ - protected function modelMaker() - { - $this->triggerSql(); - - Model::setDb($this); - - if (is_object($this->event)) { - Model::setEvent($this->event); - } - - Model::maker(function (Model $model) { - $isAutoWriteTimestamp = $model->getAutoWriteTimestamp(); - - if (is_null($isAutoWriteTimestamp)) { - // 自动写入时间戳 - $model->isAutoWriteTimestamp($this->getConfig('auto_timestamp', true)); - } - - $dateFormat = $model->getDateFormat(); - - if (is_null($dateFormat)) { - // 设置时间戳格式 - $model->setDateFormat($this->getConfig('datetime_format', 'Y-m-d H:i:s')); - } - }); - } - - /** - * 监听SQL - * @access protected - * @return void - */ - protected function triggerSql(): void - { - // 监听SQL - $this->listen(function ($sql, $time, $master) { - if (0 === strpos($sql, 'CONNECT:')) { - $this->log($sql); - return; - } - - // 记录SQL - if (is_bool($master)) { - // 分布式记录当前操作的主从 - $master = $master ? 'master|' : 'slave|'; - } else { - $master = ''; - } - - $this->log($sql . ' [ ' . $master . 'RunTime:' . $time . 's ]'); - }); - } - - /** - * 初始化配置参数 - * @access public - * @param array $config 连接配置 - * @return void - */ - public function setConfig($config): void - { - $this->config = $config; - } - - /** - * 设置缓存对象 - * @access public - * @param CacheInterface $cache 缓存对象 - * @return void - */ - public function setCache(CacheInterface $cache): void - { - $this->cache = $cache; - } - - /** - * 设置日志对象 - * @access public - * @param LoggerInterface $log 日志对象 - * @return void - */ - public function setLog(LoggerInterface $log): void - { - $this->log = $log; - } - - /** - * 记录SQL日志 - * @access protected - * @param string $log SQL日志信息 - * @param string $type 日志类型 - * @return void - */ - public function log(string $log, string $type = 'sql') - { - if ($this->log) { - $this->log->log($type, $log); - } else { - $this->dbLog[$type][] = $log; - } - } - - /** - * 获得查询日志(没有设置日志对象使用) - * @access public - * @param bool $clear 是否清空 - * @return array - */ - public function getDbLog(bool $clear = false): array - { - $logs = $this->dbLog; - if ($clear) { - $this->dbLog = []; - } - - return $logs; - } - - /** - * 获取配置参数 - * @access public - * @param string $name 配置参数 - * @param mixed $default 默认值 - * @return mixed - */ - public function getConfig(string $name = '', $default = null) - { - if ('' === $name) { - return $this->config; - } - - return $this->config[$name] ?? $default; - } - - /** - * 创建/切换数据库连接查询 - * @access public - * @param string|null $name 连接配置标识 - * @param bool $force 强制重新连接 - * @return BaseQuery - */ - public function connect(string $name = null, bool $force = false): BaseQuery - { - $connection = $this->instance($name, $force); - - $class = $connection->getQueryClass(); - $query = new $class($connection); - - $timeRule = $this->getConfig('time_query_rule'); - if (!empty($timeRule)) { - $query->timeRule($timeRule); - } - - return $query; - } - - /** - * 创建数据库连接实例 - * @access protected - * @param string|null $name 连接标识 - * @param bool $force 强制重新连接 - * @return ConnectionInterface - */ - protected function instance(string $name = null, bool $force = false): ConnectionInterface - { - if (empty($name)) { - $name = $this->getConfig('default', 'mysql'); - } - - if ($force || !isset($this->instance[$name])) { - $this->instance[$name] = $this->createConnection($name); - } - - return $this->instance[$name]; - } - - /** - * 获取连接配置 - * @param string $name - * @return array - */ - protected function getConnectionConfig(string $name): array - { - $connections = $this->getConfig('connections'); - if (!isset($connections[$name])) { - throw new InvalidArgumentException('Undefined db config:' . $name); - } - - return $connections[$name]; - } - - /** - * 创建连接 - * @param $name - * @return ConnectionInterface - */ - protected function createConnection(string $name): ConnectionInterface - { - $config = $this->getConnectionConfig($name); - - $type = !empty($config['type']) ? $config['type'] : 'mysql'; - - if (false !== strpos($type, '\\')) { - $class = $type; - } else { - $class = '\\think\\db\\connector\\' . ucfirst($type); - } - - /** @var ConnectionInterface $connection */ - $connection = new $class($config); - $connection->setDb($this); - - if ($this->cache) { - $connection->setCache($this->cache); - } - - return $connection; - } - - /** - * 使用表达式设置数据 - * @access public - * @param string $value 表达式 - * @return Raw - */ - public function raw(string $value): Raw - { - return new Raw($value); - } - - /** - * 更新查询次数 - * @access public - * @return void - */ - public function updateQueryTimes(): void - { - $this->queryTimes++; - } - - /** - * 重置查询次数 - * @access public - * @return void - */ - public function clearQueryTimes(): void - { - $this->queryTimes = 0; - } - - /** - * 获得查询次数 - * @access public - * @return integer - */ - public function getQueryTimes(): int - { - return $this->queryTimes; - } - - /** - * 监听SQL执行 - * @access public - * @param callable $callback 回调方法 - * @return void - */ - public function listen(callable $callback): void - { - $this->listen[] = $callback; - } - - /** - * 获取监听SQL执行 - * @access public - * @return array - */ - public function getListen(): array - { - return $this->listen; - } - - /** - * 注册回调方法 - * @access public - * @param string $event 事件名 - * @param callable $callback 回调方法 - * @return void - */ - public function event(string $event, callable $callback): void - { - $this->event[$event][] = $callback; - } - - /** - * 触发事件 - * @access public - * @param string $event 事件名 - * @param mixed $params 传入参数 - * @return mixed - */ - public function trigger(string $event, $params = null) - { - if (isset($this->event[$event])) { - foreach ($this->event[$event] as $callback) { - call_user_func_array($callback, [$this]); - } - } - } - - public function __call($method, $args) - { - return call_user_func_array([$this->connect(), $method], $args); - } -} diff --git a/vendor/topthink/think-orm/src/Model.php b/vendor/topthink/think-orm/src/Model.php deleted file mode 100644 index d1a971043..000000000 --- a/vendor/topthink/think-orm/src/Model.php +++ /dev/null @@ -1,981 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use ArrayAccess; -use Closure; -use JsonSerializable; -use think\contract\Arrayable; -use think\contract\Jsonable; -use think\db\BaseQuery as Query; - -/** - * Class Model - * @package think - * @mixin Query - * @method void onAfterRead(Model $model) static after_read事件定义 - * @method mixed onBeforeInsert(Model $model) static before_insert事件定义 - * @method void onAfterInsert(Model $model) static after_insert事件定义 - * @method mixed onBeforeUpdate(Model $model) static before_update事件定义 - * @method void onAfterUpdate(Model $model) static after_update事件定义 - * @method mixed onBeforeWrite(Model $model) static before_write事件定义 - * @method void onAfterWrite(Model $model) static after_write事件定义 - * @method mixed onBeforeDelete(Model $model) static before_write事件定义 - * @method void onAfterDelete(Model $model) static after_delete事件定义 - * @method void onBeforeRestore(Model $model) static before_restore事件定义 - * @method void onAfterRestore(Model $model) static after_restore事件定义 - */ -abstract class Model implements JsonSerializable, ArrayAccess, Arrayable, Jsonable -{ - use model\concern\Attribute; - use model\concern\RelationShip; - use model\concern\ModelEvent; - use model\concern\TimeStamp; - use model\concern\Conversion; - - /** - * 数据是否存在 - * @var bool - */ - private $exists = false; - - /** - * 是否强制更新所有数据 - * @var bool - */ - private $force = false; - - /** - * 是否Replace - * @var bool - */ - private $replace = false; - - /** - * 数据表后缀 - * @var string - */ - protected $suffix; - - /** - * 更新条件 - * @var array - */ - private $updateWhere; - - /** - * 数据库配置 - * @var string - */ - protected $connection; - - /** - * 模型名称 - * @var string - */ - protected $name; - - /** - * 数据表名称 - * @var string - */ - protected $table; - - /** - * 初始化过的模型. - * @var array - */ - protected static $initialized = []; - - /** - * 软删除字段默认值 - * @var mixed - */ - protected $defaultSoftDelete; - - /** - * 全局查询范围 - * @var array - */ - protected $globalScope = []; - - /** - * 延迟保存信息 - * @var bool - */ - private $lazySave = false; - - /** - * Db对象 - * @var DbManager - */ - protected static $db; - - /** - * 容器对象的依赖注入方法 - * @var callable - */ - protected static $invoker; - - /** - * 服务注入 - * @var Closure[] - */ - protected static $maker = []; - - /** - * 设置服务注入 - * @access public - * @param Closure $maker - * @return void - */ - public static function maker(Closure $maker) - { - static::$maker[] = $maker; - } - - /** - * 设置Db对象 - * @access public - * @param DbManager $db Db对象 - * @return void - */ - public static function setDb(DbManager $db) - { - self::$db = $db; - } - - /** - * 设置容器对象的依赖注入方法 - * @access public - * @param callable $callable 依赖注入方法 - * @return void - */ - public static function setInvoker(callable $callable): void - { - self::$invoker = $callable; - } - - /** - * 调用反射执行模型方法 支持参数绑定 - * @access public - * @param mixed $method - * @param array $vars 参数 - * @return mixed - */ - public function invoke($method, array $vars = []) - { - if (self::$invoker) { - $call = self::$invoker; - return $call($method instanceof Closure ? $method : Closure::fromCallable([$this, $method]), $vars); - } - - return call_user_func_array($method instanceof Closure ? $method : [$this, $method], $vars); - } - - /** - * 架构函数 - * @access public - * @param array $data 数据 - */ - public function __construct(array $data = []) - { - $this->data = $data; - - if (!empty($this->data)) { - // 废弃字段 - foreach ((array) $this->disuse as $key) { - if (array_key_exists($key, $this->data)) { - unset($this->data[$key]); - } - } - } - - // 记录原始数据 - $this->origin = $this->data; - - if (empty($this->name)) { - // 当前模型名 - $name = str_replace('\\', '/', static::class); - $this->name = basename($name); - } - - if (!empty(static::$maker)) { - foreach (static::$maker as $maker) { - call_user_func($maker, $this); - } - } - - // 执行初始化操作 - $this->initialize(); - } - - /** - * 获取当前模型名称 - * @access public - * @return string - */ - public function getName(): string - { - return $this->name; - } - - /** - * 创建新的模型实例 - * @access public - * @param array $data 数据 - * @param mixed $where 更新条件 - * @return Model - */ - public function newInstance(array $data = [], $where = null): Model - { - if (empty($data)) { - return new static(); - } - - $model = (new static($data))->exists(true); - $model->setUpdateWhere($where); - - $model->trigger('AfterRead'); - - return $model; - } - - /** - * 设置模型的更新条件 - * @access protected - * @param mixed $where 更新条件 - * @return void - */ - protected function setUpdateWhere($where): void - { - $this->updateWhere = $where; - } - - /** - * 设置当前模型数据表的后缀 - * @access public - * @param string $suffix 数据表后缀 - * @return $this - */ - public function setSuffix(string $suffix) - { - $this->suffix = $suffix; - return $this; - } - - /** - * 获取当前模型的数据表后缀 - * @access public - * @return string - */ - public function getSuffix(): string - { - return $this->suffix ?: ''; - } - - /** - * 获取当前模型的数据库查询对象 - * @access public - * @param array $scope 设置不使用的全局查询范围 - * @return Query - */ - public function db($scope = []): Query - { - /** @var Query $query */ - $query = self::$db->connect($this->connection) - ->name($this->name . $this->suffix) - ->pk($this->pk); - - if (!empty($this->table)) { - $query->table($this->table . $this->suffix); - } - - $query->model($this) - ->json($this->json, $this->jsonAssoc) - ->setFieldType(array_merge($this->schema, $this->jsonType)); - - // 软删除 - if (property_exists($this, 'withTrashed') && !$this->withTrashed) { - $this->withNoTrashed($query); - } - - // 全局作用域 - if (is_array($scope)) { - $globalScope = array_diff($this->globalScope, $scope); - $query->scope($globalScope); - } - - // 返回当前模型的数据库查询对象 - return $query; - } - - /** - * 初始化模型 - * @access private - * @return void - */ - private function initialize(): void - { - if (!isset(static::$initialized[static::class])) { - static::$initialized[static::class] = true; - static::init(); - } - } - - /** - * 初始化处理 - * @access protected - * @return void - */ - protected static function init() - { - } - - protected function checkData(): void - { - } - - protected function checkResult($result): void - { - } - - /** - * 更新是否强制写入数据 而不做比较(亦可用于软删除的强制删除) - * @access public - * @param bool $force - * @return $this - */ - public function force(bool $force = true) - { - $this->force = $force; - return $this; - } - - /** - * 判断force - * @access public - * @return bool - */ - public function isForce(): bool - { - return $this->force; - } - - /** - * 新增数据是否使用Replace - * @access public - * @param bool $replace - * @return $this - */ - public function replace(bool $replace = true) - { - $this->replace = $replace; - return $this; - } - - /** - * 刷新模型数据 - * @access public - * @param bool $relation 是否刷新关联数据 - * @return $this - */ - public function refresh(bool $relation = false) - { - if ($this->exists) { - $this->data = $this->db()->find($this->getKey())->getData(); - $this->origin = $this->data; - - if ($relation) { - $this->relation = []; - } - } - - return $this; - } - - /** - * 设置数据是否存在 - * @access public - * @param bool $exists - * @return $this - */ - public function exists(bool $exists = true) - { - $this->exists = $exists; - return $this; - } - - /** - * 判断数据是否存在数据库 - * @access public - * @return bool - */ - public function isExists(): bool - { - return $this->exists; - } - - /** - * 判断模型是否为空 - * @access public - * @return bool - */ - public function isEmpty(): bool - { - return empty($this->data); - } - - /** - * 延迟保存当前数据对象 - * @access public - * @param array|bool $data 数据 - * @return void - */ - public function lazySave($data = []): void - { - if (false === $data) { - $this->lazySave = false; - } else { - if (is_array($data)) { - $this->setAttrs($data); - } - - $this->lazySave = true; - } - } - - /** - * 保存当前数据对象 - * @access public - * @param array $data 数据 - * @param string $sequence 自增序列名 - * @return bool - */ - public function save(array $data = [], string $sequence = null): bool - { - // 数据对象赋值 - $this->setAttrs($data); - - if ($this->isEmpty() || false === $this->trigger('BeforeWrite')) { - return false; - } - - $result = $this->exists ? $this->updateData() : $this->insertData($sequence); - - if (false === $result) { - return false; - } - - // 写入回调 - $this->trigger('AfterWrite'); - - // 重新记录原始数据 - $this->origin = $this->data; - $this->set = []; - $this->lazySave = false; - - return true; - } - - /** - * 检查数据是否允许写入 - * @access protected - * @return array - */ - protected function checkAllowFields(): array - { - // 检测字段 - if (empty($this->field)) { - if (!empty($this->schema)) { - $this->field = array_keys(array_merge($this->schema, $this->jsonType)); - } else { - $query = $this->db(); - $table = $this->table ? $this->table . $this->suffix : $query->getTable(); - - $this->field = $query->getConnection()->getTableFields($table); - } - - return $this->field; - } - - $field = $this->field; - - if ($this->autoWriteTimestamp) { - array_push($field, $this->createTime, $this->updateTime); - } - - if (!empty($this->disuse)) { - // 废弃字段 - $field = array_diff($field, $this->disuse); - } - - return $field; - } - - /** - * 保存写入数据 - * @access protected - * @return bool - */ - protected function updateData(): bool - { - // 事件回调 - if (false === $this->trigger('BeforeUpdate')) { - return false; - } - - $this->checkData(); - - // 获取有更新的数据 - $data = $this->getChangedData(); - - if (empty($data)) { - // 关联更新 - if (!empty($this->relationWrite)) { - $this->autoRelationUpdate(); - } - - return true; - } - - if ($this->autoWriteTimestamp && $this->updateTime && !isset($data[$this->updateTime])) { - // 自动写入更新时间 - $data[$this->updateTime] = $this->autoWriteTimestamp($this->updateTime); - $this->data[$this->updateTime] = $data[$this->updateTime]; - } - - // 检查允许字段 - $allowFields = $this->checkAllowFields(); - - foreach ($this->relationWrite as $name => $val) { - if (!is_array($val)) { - continue; - } - - foreach ($val as $key) { - if (isset($data[$key])) { - unset($data[$key]); - } - } - } - - // 模型更新 - $db = $this->db(); - $db->startTrans(); - - try { - $where = $this->getWhere(); - $result = $db->where($where) - ->strict(false) - ->field($allowFields) - ->update($data); - - $this->checkResult($result); - - // 关联更新 - if (!empty($this->relationWrite)) { - $this->autoRelationUpdate(); - } - - $db->commit(); - - // 更新回调 - $this->trigger('AfterUpdate'); - - return true; - } catch (\Exception $e) { - $db->rollback(); - throw $e; - } - } - - /** - * 新增写入数据 - * @access protected - * @param string $sequence 自增名 - * @return bool - */ - protected function insertData(string $sequence = null): bool - { - // 时间戳自动写入 - if ($this->autoWriteTimestamp) { - if ($this->createTime && !isset($this->data[$this->createTime])) { - $this->data[$this->createTime] = $this->autoWriteTimestamp($this->createTime); - } - - if ($this->updateTime && !isset($this->data[$this->updateTime])) { - $this->data[$this->updateTime] = $this->autoWriteTimestamp($this->updateTime); - } - } - - if (false === $this->trigger('BeforeInsert')) { - return false; - } - - $this->checkData(); - - // 检查允许字段 - $allowFields = $this->checkAllowFields(); - - $db = $this->db(); - $db->startTrans(); - - try { - $result = $db->strict(false) - ->field($allowFields) - ->replace($this->replace) - ->insert($this->data, false, $sequence); - - // 获取自动增长主键 - if ($result && $insertId = $db->getLastInsID($sequence)) { - $pk = $this->getPk(); - - if (is_string($pk) && (!isset($this->data[$pk]) || '' == $this->data[$pk])) { - $this->data[$pk] = $insertId; - } - } - - // 关联写入 - if (!empty($this->relationWrite)) { - $this->autoRelationInsert(); - } - - $db->commit(); - - // 标记数据已经存在 - $this->exists = true; - - // 新增回调 - $this->trigger('AfterInsert'); - - return true; - } catch (\Exception $e) { - $db->rollback(); - throw $e; - } - } - - /** - * 获取当前的更新条件 - * @access public - * @return mixed - */ - public function getWhere() - { - $pk = $this->getPk(); - - if (is_string($pk) && isset($this->data[$pk])) { - $where = [[$pk, '=', $this->data[$pk]]]; - } elseif (is_array($pk)) { - foreach ($pk as $field) { - if (isset($this->data[$field])) { - $where[] = [$field, '=', $this->data[$field]]; - } - } - } - - if (empty($where)) { - $where = empty($this->updateWhere) ? null : $this->updateWhere; - } - - return $where; - } - - /** - * 保存多个数据到当前数据对象 - * @access public - * @param iterable $dataSet 数据 - * @param boolean $replace 是否自动识别更新和写入 - * @return Collection - * @throws \Exception - */ - public function saveAll(iterable $dataSet, bool $replace = true): Collection - { - $db = $this->db(); - $db->startTrans(); - - try { - $pk = $this->getPk(); - - if (is_string($pk) && $replace) { - $auto = true; - } - - $result = []; - - foreach ($dataSet as $key => $data) { - if ($this->exists || (!empty($auto) && isset($data[$pk]))) { - $result[$key] = self::update($data); - } else { - $result[$key] = self::create($data, $this->field, $this->replace); - } - } - - $db->commit(); - - return $this->toCollection($result); - } catch (\Exception $e) { - $db->rollback(); - throw $e; - } - } - - /** - * 删除当前的记录 - * @access public - * @return bool - */ - public function delete(): bool - { - if (!$this->exists || $this->isEmpty() || false === $this->trigger('BeforeDelete')) { - return false; - } - - // 读取更新条件 - $where = $this->getWhere(); - - $db = $this->db(); - $db->startTrans(); - - try { - // 删除当前模型数据 - $db->where($where)->delete(); - - // 关联删除 - if (!empty($this->relationWrite)) { - $this->autoRelationDelete(); - } - - $db->commit(); - - $this->trigger('AfterDelete'); - - $this->exists = false; - $this->lazySave = false; - - return true; - } catch (\Exception $e) { - $db->rollback(); - throw $e; - } - } - - /** - * 写入数据 - * @access public - * @param array $data 数据数组 - * @param array $allowField 允许字段 - * @param bool $replace 使用Replace - * @return static - */ - public static function create(array $data, array $allowField = [], bool $replace = false): Model - { - $model = new static(); - - if (!empty($allowField)) { - $model->allowField($allowField); - } - - $model->replace($replace)->save($data); - - return $model; - } - - /** - * 更新数据 - * @access public - * @param array $data 数据数组 - * @param mixed $where 更新条件 - * @param array $allowField 允许字段 - * @return static - */ - public static function update(array $data, $where = [], array $allowField = []) - { - $model = new static(); - - if (!empty($allowField)) { - $model->allowField($allowField); - } - - if (!empty($where)) { - $model->setUpdateWhere($where); - } - - $model->exists(true)->save($data); - - return $model; - } - - /** - * 删除记录 - * @access public - * @param mixed $data 主键列表 支持闭包查询条件 - * @param bool $force 是否强制删除 - * @return bool - */ - public static function destroy($data, bool $force = false): bool - { - if (empty($data) && 0 !== $data) { - return false; - } - - $model = new static(); - - $query = $model->db(); - - if (is_array($data) && key($data) !== 0) { - $query->where($data); - $data = null; - } elseif ($data instanceof \Closure) { - $data($query); - $data = null; - } - - $resultSet = $query->select($data); - - foreach ($resultSet as $result) { - $result->force($force)->delete(); - } - - return true; - } - - /** - * 解序列化后处理 - */ - public function __wakeup() - { - $this->initialize(); - } - - /** - * 修改器 设置数据对象的值 - * @access public - * @param string $name 名称 - * @param mixed $value 值 - * @return void - */ - public function __set(string $name, $value): void - { - $this->setAttr($name, $value); - } - - /** - * 获取器 获取数据对象的值 - * @access public - * @param string $name 名称 - * @return mixed - */ - public function __get(string $name) - { - return $this->getAttr($name); - } - - /** - * 检测数据对象的值 - * @access public - * @param string $name 名称 - * @return bool - */ - public function __isset(string $name): bool - { - return !is_null($this->getAttr($name)); - } - - /** - * 销毁数据对象的值 - * @access public - * @param string $name 名称 - * @return void - */ - public function __unset(string $name): void - { - unset($this->data[$name], $this->relation[$name]); - } - - // ArrayAccess - public function offsetSet($name, $value) - { - $this->setAttr($name, $value); - } - - public function offsetExists($name): bool - { - return $this->__isset($name); - } - - public function offsetUnset($name) - { - $this->__unset($name); - } - - public function offsetGet($name) - { - return $this->getAttr($name); - } - - /** - * 设置不使用的全局查询范围 - * @access public - * @param array $scope 不启用的全局查询范围 - * @return Query - */ - public static function withoutGlobalScope(array $scope = null) - { - $model = new static(); - - return $model->db($scope); - } - - /** - * 切换后缀进行查询 - * @access public - * @param string $suffix 切换的表后缀 - * @return Model - */ - public static function suffix(string $suffix) - { - $model = new static(); - $model->setSuffix($suffix); - - return $model; - } - - public function __call($method, $args) - { - if ('withattr' == strtolower($method)) { - return call_user_func_array([$this, 'withAttribute'], $args); - } - - return call_user_func_array([$this->db(), $method], $args); - } - - public static function __callStatic($method, $args) - { - $model = new static(); - - return call_user_func_array([$model->db(), $method], $args); - } - - /** - * 析构方法 - * @access public - */ - public function __destruct() - { - if ($this->lazySave) { - $this->save(); - } - } -} diff --git a/vendor/topthink/think-orm/src/Paginator.php b/vendor/topthink/think-orm/src/Paginator.php deleted file mode 100644 index 06999a1e1..000000000 --- a/vendor/topthink/think-orm/src/Paginator.php +++ /dev/null @@ -1,497 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use ArrayAccess; -use ArrayIterator; -use Closure; -use Countable; -use DomainException; -use IteratorAggregate; -use JsonSerializable; -use think\paginator\driver\Bootstrap; -use Traversable; - -/** - * 分页基础类 - * @mixin Collection - */ -abstract class Paginator implements ArrayAccess, Countable, IteratorAggregate, JsonSerializable -{ - /** - * 是否简洁模式 - * @var bool - */ - protected $simple = false; - - /** - * 数据集 - * @var Collection - */ - protected $items; - - /** - * 当前页 - * @var int - */ - protected $currentPage; - - /** - * 最后一页 - * @var int - */ - protected $lastPage; - - /** - * 数据总数 - * @var integer|null - */ - protected $total; - - /** - * 每页数量 - * @var int - */ - protected $listRows; - - /** - * 是否有下一页 - * @var bool - */ - protected $hasMore; - - /** - * 分页配置 - * @var array - */ - protected $options = [ - 'var_page' => 'page', - 'path' => '/', - 'query' => [], - 'fragment' => '', - ]; - - /** - * 获取当前页码 - * @var Closure - */ - protected static $currentPageResolver; - - /** - * 获取当前路径 - * @var Closure - */ - protected static $currentPathResolver; - - /** - * @var Closure - */ - protected static $maker; - - public function __construct($items, int $listRows, int $currentPage = 1, int $total = null, bool $simple = false, array $options = []) - { - $this->options = array_merge($this->options, $options); - - $this->options['path'] = '/' != $this->options['path'] ? rtrim($this->options['path'], '/') : $this->options['path']; - - $this->simple = $simple; - $this->listRows = $listRows; - - if (!$items instanceof Collection) { - $items = Collection::make($items); - } - - if ($simple) { - $this->currentPage = $this->setCurrentPage($currentPage); - $this->hasMore = count($items) > ($this->listRows); - $items = $items->slice(0, $this->listRows); - } else { - $this->total = $total; - $this->lastPage = (int) ceil($total / $listRows); - $this->currentPage = $this->setCurrentPage($currentPage); - $this->hasMore = $this->currentPage < $this->lastPage; - } - $this->items = $items; - } - - /** - * @access public - * @param mixed $items - * @param int $listRows - * @param int $currentPage - * @param int $total - * @param bool $simple - * @param array $options - * @return Paginator - */ - public static function make($items, int $listRows, int $currentPage = 1, int $total = null, bool $simple = false, array $options = []) - { - if (isset(static::$maker)) { - return call_user_func(static::$maker, $items, $listRows, $currentPage, $total, $simple, $options); - } - - return new Bootstrap($items, $listRows, $currentPage, $total, $simple, $options); - } - - public static function maker(Closure $resolver) - { - static::$maker = $resolver; - } - - protected function setCurrentPage(int $currentPage): int - { - if (!$this->simple && $currentPage > $this->lastPage) { - return $this->lastPage > 0 ? $this->lastPage : 1; - } - - return $currentPage; - } - - /** - * 获取页码对应的链接 - * - * @access protected - * @param int $page - * @return string - */ - protected function url(int $page): string - { - if ($page <= 0) { - $page = 1; - } - - if (strpos($this->options['path'], '[PAGE]') === false) { - $parameters = [$this->options['var_page'] => $page]; - $path = $this->options['path']; - } else { - $parameters = []; - $path = str_replace('[PAGE]', $page, $this->options['path']); - } - - if (count($this->options['query']) > 0) { - $parameters = array_merge($this->options['query'], $parameters); - } - - $url = $path; - if (!empty($parameters)) { - $url .= '?' . http_build_query($parameters, '', '&'); - } - - return $url . $this->buildFragment(); - } - - /** - * 自动获取当前页码 - * @access public - * @param string $varPage - * @param int $default - * @return int - */ - public static function getCurrentPage(string $varPage = 'page', int $default = 1): int - { - if (isset(static::$currentPageResolver)) { - return call_user_func(static::$currentPageResolver, $varPage); - } - - return $default; - } - - /** - * 设置获取当前页码闭包 - * @param Closure $resolver - */ - public static function currentPageResolver(Closure $resolver) - { - static::$currentPageResolver = $resolver; - } - - /** - * 自动获取当前的path - * @access public - * @param string $default - * @return string - */ - public static function getCurrentPath($default = '/'): string - { - if (isset(static::$currentPathResolver)) { - return call_user_func(static::$currentPathResolver); - } - - return $default; - } - - /** - * 设置获取当前路径闭包 - * @param Closure $resolver - */ - public static function currentPathResolver(Closure $resolver) - { - static::$currentPathResolver = $resolver; - } - - public function total(): int - { - if ($this->simple) { - throw new DomainException('not support total'); - } - - return $this->total; - } - - public function listRows(): int - { - return $this->listRows; - } - - public function currentPage(): int - { - return $this->currentPage; - } - - public function lastPage(): int - { - if ($this->simple) { - throw new DomainException('not support last'); - } - - return $this->lastPage; - } - - /** - * 数据是否足够分页 - * @access public - * @return bool - */ - public function hasPages(): bool - { - return !(1 == $this->currentPage && !$this->hasMore); - } - - /** - * 创建一组分页链接 - * - * @access public - * @param int $start - * @param int $end - * @return array - */ - public function getUrlRange(int $start, int $end): array - { - $urls = []; - - for ($page = $start; $page <= $end; $page++) { - $urls[$page] = $this->url($page); - } - - return $urls; - } - - /** - * 设置URL锚点 - * - * @access public - * @param string|null $fragment - * @return $this - */ - public function fragment(string $fragment = null) - { - $this->options['fragment'] = $fragment; - - return $this; - } - - /** - * 添加URL参数 - * - * @access public - * @param array $append - * @return $this - */ - public function appends(array $append) - { - foreach ($append as $k => $v) { - if ($k !== $this->options['var_page']) { - $this->options['query'][$k] = $v; - } - } - - return $this; - } - - /** - * 构造锚点字符串 - * - * @access public - * @return string - */ - protected function buildFragment(): string - { - return $this->options['fragment'] ? '#' . $this->options['fragment'] : ''; - } - - /** - * 渲染分页html - * @access public - * @return mixed - */ - abstract public function render(); - - public function items() - { - return $this->items->all(); - } - - /** - * 获取数据集 - * - * @return Collection|\think\model\Collection - */ - public function getCollection() - { - return $this->items; - } - - public function isEmpty(): bool - { - return $this->items->isEmpty(); - } - - /** - * 给每个元素执行个回调 - * - * @access public - * @param callable $callback - * @return $this - */ - public function each(callable $callback) - { - foreach ($this->items as $key => $item) { - $result = $callback($item, $key); - - if (false === $result) { - break; - } elseif (!is_object($item)) { - $this->items[$key] = $result; - } - } - - return $this; - } - - /** - * Retrieve an external iterator - * @access public - * @return Traversable An instance of an object implementing Iterator or - * Traversable - */ - public function getIterator() - { - return new ArrayIterator($this->items->all()); - } - - /** - * Whether a offset exists - * @access public - * @param mixed $offset - * @return bool - */ - public function offsetExists($offset) - { - return $this->items->offsetExists($offset); - } - - /** - * Offset to retrieve - * @access public - * @param mixed $offset - * @return mixed - */ - public function offsetGet($offset) - { - return $this->items->offsetGet($offset); - } - - /** - * Offset to set - * @access public - * @param mixed $offset - * @param mixed $value - */ - public function offsetSet($offset, $value) - { - $this->items->offsetSet($offset, $value); - } - - /** - * Offset to unset - * @access public - * @param mixed $offset - * @return void - * @since 5.0.0 - */ - public function offsetUnset($offset) - { - $this->items->offsetUnset($offset); - } - - /** - * Count elements of an object - */ - public function count(): int - { - return $this->items->count(); - } - - public function __toString() - { - return (string) $this->render(); - } - - public function toArray(): array - { - try { - $total = $this->total(); - } catch (DomainException $e) { - $total = null; - } - - return [ - 'total' => $total, - 'per_page' => $this->listRows(), - 'current_page' => $this->currentPage(), - 'last_page' => $this->lastPage, - 'data' => $this->items->toArray(), - ]; - } - - /** - * Specify data which should be serialized to JSON - */ - public function jsonSerialize() - { - return $this->toArray(); - } - - public function __call($name, $arguments) - { - $result = call_user_func_array([$this->items, $name], $arguments); - - if ($result instanceof Collection) { - $this->items = $result; - return $this; - } - - return $result; - } - -} diff --git a/vendor/topthink/think-orm/src/db/BaseQuery.php b/vendor/topthink/think-orm/src/db/BaseQuery.php deleted file mode 100644 index 83362a28e..000000000 --- a/vendor/topthink/think-orm/src/db/BaseQuery.php +++ /dev/null @@ -1,1270 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db; - -use think\Collection; -use think\db\exception\DataNotFoundException; -use think\db\exception\DbException as Exception; -use think\db\exception\ModelNotFoundException; -use think\helper\Str; -use think\Model; -use think\Paginator; - -/** - * 数据查询基础类 - */ -abstract class BaseQuery -{ - use concern\TimeFieldQuery; - use concern\AggregateQuery; - use concern\ModelRelationQuery; - use concern\ResultOperation; - use concern\Transaction; - use concern\WhereQuery; - - /** - * 当前数据库连接对象 - * @var Connection - */ - protected $connection; - - /** - * 当前数据表名称(不含前缀) - * @var string - */ - protected $name = ''; - - /** - * 当前数据表主键 - * @var string|array - */ - protected $pk; - - /** - * 当前数据表自增主键 - * @var string - */ - protected $autoinc; - - /** - * 当前数据表前缀 - * @var string - */ - protected $prefix = ''; - - /** - * 当前查询参数 - * @var array - */ - protected $options = []; - - /** - * 架构函数 - * @access public - * @param ConnectionInterface $connection 数据库连接对象 - */ - public function __construct(ConnectionInterface $connection) - { - $this->connection = $connection; - - $this->prefix = $this->connection->getConfig('prefix'); - } - - /** - * 利用__call方法实现一些特殊的Model方法 - * @access public - * @param string $method 方法名称 - * @param array $args 调用参数 - * @return mixed - * @throws Exception - */ - public function __call(string $method, array $args) - { - if (strtolower(substr($method, 0, 5)) == 'getby') { - // 根据某个字段获取记录 - $field = Str::snake(substr($method, 5)); - return $this->where($field, '=', $args[0])->find(); - } elseif (strtolower(substr($method, 0, 10)) == 'getfieldby') { - // 根据某个字段获取记录的某个值 - $name = Str::snake(substr($method, 10)); - return $this->where($name, '=', $args[0])->value($args[1]); - } elseif (strtolower(substr($method, 0, 7)) == 'whereor') { - $name = Str::snake(substr($method, 7)); - array_unshift($args, $name); - return call_user_func_array([$this, 'whereOr'], $args); - } elseif (strtolower(substr($method, 0, 5)) == 'where') { - $name = Str::snake(substr($method, 5)); - array_unshift($args, $name); - return call_user_func_array([$this, 'where'], $args); - } elseif ($this->model && method_exists($this->model, 'scope' . $method)) { - // 动态调用命名范围 - $method = 'scope' . $method; - array_unshift($args, $this); - - call_user_func_array([$this->model, $method], $args); - return $this; - } else { - throw new Exception('method not exist:' . static::class . '->' . $method); - } - } - - /** - * 创建一个新的查询对象 - * @access public - * @return BaseQuery - */ - public function newQuery(): BaseQuery - { - $query = new static($this->connection); - - if ($this->model) { - $query->model($this->model); - } - - if (isset($this->options['table'])) { - $query->table($this->options['table']); - } else { - $query->name($this->name); - } - - if (isset($this->options['json'])) { - $query->json($this->options['json'], $this->options['json_assoc']); - } - - if (isset($this->options['field_type'])) { - $query->setFieldType($this->options['field_type']); - } - - return $query; - } - - /** - * 获取当前的数据库Connection对象 - * @access public - * @return ConnectionInterface - */ - public function getConnection() - { - return $this->connection; - } - - /** - * 指定当前数据表名(不含前缀) - * @access public - * @param string $name 不含前缀的数据表名字 - * @return $this - */ - public function name(string $name) - { - $this->name = $name; - return $this; - } - - /** - * 获取当前的数据表名称 - * @access public - * @return string - */ - public function getName(): string - { - return $this->name ?: $this->model->getName(); - } - - /** - * 获取数据库的配置参数 - * @access public - * @param string $name 参数名称 - * @return mixed - */ - public function getConfig(string $name = '') - { - return $this->connection->getConfig($name); - } - - /** - * 得到当前或者指定名称的数据表 - * @access public - * @param string $name 不含前缀的数据表名字 - * @return mixed - */ - public function getTable(string $name = '') - { - if (empty($name) && isset($this->options['table'])) { - return $this->options['table']; - } - - $name = $name ?: $this->name; - - return $this->prefix . Str::snake($name); - } - - /** - * 设置字段类型信息 - * @access public - * @param array $type 字段类型信息 - * @return $this - */ - public function setFieldType(array $type) - { - $this->options['field_type'] = $type; - return $this; - } - - /** - * 获取最近一次查询的sql语句 - * @access public - * @return string - */ - public function getLastSql(): string - { - return $this->connection->getLastSql(); - } - - /** - * 获取返回或者影响的记录数 - * @access public - * @return integer - */ - public function getNumRows(): int - { - return $this->connection->getNumRows(); - } - - /** - * 获取最近插入的ID - * @access public - * @param string $sequence 自增序列名 - * @return mixed - */ - public function getLastInsID(string $sequence = null) - { - return $this->connection->getLastInsID($this, $sequence); - } - - /** - * 得到某个字段的值 - * @access public - * @param string $field 字段名 - * @param mixed $default 默认值 - * @return mixed - */ - public function value(string $field, $default = null) - { - return $this->connection->value($this, $field, $default); - } - - /** - * 得到某个列的数组 - * @access public - * @param string $field 字段名 多个字段用逗号分隔 - * @param string $key 索引 - * @return array - */ - public function column(string $field, string $key = ''): array - { - return $this->connection->column($this, $field, $key); - } - - /** - * 查询SQL组装 union - * @access public - * @param mixed $union UNION - * @param boolean $all 是否适用UNION ALL - * @return $this - */ - public function union($union, bool $all = false) - { - $this->options['union']['type'] = $all ? 'UNION ALL' : 'UNION'; - - if (is_array($union)) { - $this->options['union'] = array_merge($this->options['union'], $union); - } else { - $this->options['union'][] = $union; - } - - return $this; - } - - /** - * 查询SQL组装 union all - * @access public - * @param mixed $union UNION数据 - * @return $this - */ - public function unionAll($union) - { - return $this->union($union, true); - } - - /** - * 指定查询字段 - * @access public - * @param mixed $field 字段信息 - * @return $this - */ - public function field($field) - { - if (empty($field)) { - return $this; - } elseif ($field instanceof Raw) { - $this->options['field'][] = $field; - return $this; - } - - if (is_string($field)) { - if (preg_match('/[\<\'\"\(]/', $field)) { - return $this->fieldRaw($field); - } - - $field = array_map('trim', explode(',', $field)); - } - - if (true === $field) { - // 获取全部字段 - $fields = $this->getTableFields(); - $field = $fields ?: ['*']; - } - - if (isset($this->options['field'])) { - $field = array_merge((array) $this->options['field'], $field); - } - - $this->options['field'] = array_unique($field); - - return $this; - } - - /** - * 指定要排除的查询字段 - * @access public - * @param array|string $field 要排除的字段 - * @return $this - */ - public function withoutField($field) - { - if (empty($field)) { - return $this; - } - - if (is_string($field)) { - $field = array_map('trim', explode(',', $field)); - } - - // 字段排除 - $fields = $this->getTableFields(); - $field = $fields ? array_diff($fields, $field) : $field; - - if (isset($this->options['field'])) { - $field = array_merge((array) $this->options['field'], $field); - } - - $this->options['field'] = array_unique($field); - - return $this; - } - - /** - * 指定其它数据表的查询字段 - * @access public - * @param mixed $field 字段信息 - * @param string $tableName 数据表名 - * @param string $prefix 字段前缀 - * @param string $alias 别名前缀 - * @return $this - */ - public function tableField($field, string $tableName, string $prefix = '', string $alias = '') - { - if (empty($field)) { - return $this; - } - - if (is_string($field)) { - $field = array_map('trim', explode(',', $field)); - } - - if (true === $field) { - // 获取全部字段 - $fields = $this->getTableFields($tableName); - $field = $fields ?: ['*']; - } - - // 添加统一的前缀 - $prefix = $prefix ?: $tableName; - foreach ($field as $key => &$val) { - if (is_numeric($key) && $alias) { - $field[$prefix . '.' . $val] = $alias . $val; - unset($field[$key]); - } elseif (is_numeric($key)) { - $val = $prefix . '.' . $val; - } - } - - if (isset($this->options['field'])) { - $field = array_merge((array) $this->options['field'], $field); - } - - $this->options['field'] = array_unique($field); - - return $this; - } - - /** - * 设置数据 - * @access public - * @param array $data 数据 - * @return $this - */ - public function data(array $data) - { - $this->options['data'] = $data; - - return $this; - } - - /** - * 去除查询参数 - * @access public - * @param string $option 参数名 留空去除所有参数 - * @return $this - */ - public function removeOption(string $option = '') - { - if ('' === $option) { - $this->options = []; - $this->bind = []; - } elseif (isset($this->options[$option])) { - unset($this->options[$option]); - } - - return $this; - } - - /** - * 指定查询数量 - * @access public - * @param int $offset 起始位置 - * @param int $length 查询数量 - * @return $this - */ - public function limit(int $offset, int $length = null) - { - $this->options['limit'] = $offset . ($length ? ',' . $length : ''); - - return $this; - } - - /** - * 指定分页 - * @access public - * @param int $page 页数 - * @param int $listRows 每页数量 - * @return $this - */ - public function page(int $page, int $listRows = null) - { - $this->options['page'] = [$page, $listRows]; - - return $this; - } - - /** - * 指定当前操作的数据表 - * @access public - * @param mixed $table 表名 - * @return $this - */ - public function table($table) - { - if (is_string($table)) { - if (strpos($table, ')')) { - // 子查询 - } elseif (false === strpos($table, ',')) { - if (strpos($table, ' ')) { - list($item, $alias) = explode(' ', $table); - $table = []; - $this->alias([$item => $alias]); - $table[$item] = $alias; - } - } else { - $tables = explode(',', $table); - $table = []; - - foreach ($tables as $item) { - $item = trim($item); - if (strpos($item, ' ')) { - list($item, $alias) = explode(' ', $item); - $this->alias([$item => $alias]); - $table[$item] = $alias; - } else { - $table[] = $item; - } - } - } - } elseif (is_array($table)) { - $tables = $table; - $table = []; - - foreach ($tables as $key => $val) { - if (is_numeric($key)) { - $table[] = $val; - } else { - $this->alias([$key => $val]); - $table[$key] = $val; - } - } - } - - $this->options['table'] = $table; - - return $this; - } - - /** - * 指定排序 order('id','desc') 或者 order(['id'=>'desc','create_time'=>'desc']) - * @access public - * @param string|array|Raw $field 排序字段 - * @param string $order 排序 - * @return $this - */ - public function order($field, string $order = '') - { - if (empty($field)) { - return $this; - } elseif ($field instanceof Raw) { - $this->options['order'][] = $field; - return $this; - } - - if (is_string($field)) { - if (!empty($this->options['via'])) { - $field = $this->options['via'] . '.' . $field; - } - if (strpos($field, ',')) { - $field = array_map('trim', explode(',', $field)); - } else { - $field = empty($order) ? $field : [$field => $order]; - } - } elseif (!empty($this->options['via'])) { - foreach ($field as $key => $val) { - if (is_numeric($key)) { - $field[$key] = $this->options['via'] . '.' . $val; - } else { - $field[$this->options['via'] . '.' . $key] = $val; - unset($field[$key]); - } - } - } - - if (!isset($this->options['order'])) { - $this->options['order'] = []; - } - - if (is_array($field)) { - $this->options['order'] = array_merge($this->options['order'], $field); - } else { - $this->options['order'][] = $field; - } - - return $this; - } - - /** - * 分页查询 - * @access public - * @param int|array $listRows 每页数量 数组表示配置参数 - * @param int|bool $simple 是否简洁模式或者总记录数 - * @return Paginator - * @throws Exception - */ - public function paginate($listRows = null, $simple = false): Paginator - { - if (is_int($simple)) { - $total = $simple; - $simple = false; - } - - $defaultConfig = [ - 'query' => [], //url额外参数 - 'fragment' => '', //url锚点 - 'var_page' => 'page', //分页变量 - 'list_rows' => 15, //每页数量 - ]; - - if (is_array($listRows)) { - $config = array_merge($defaultConfig, $listRows); - $listRows = intval($config['list_rows']); - } else { - $config = $defaultConfig; - $listRows = intval($listRows ?: $config['list_rows']); - } - - $page = isset($config['page']) ? (int) $config['page'] : Paginator::getCurrentPage($config['var_page']); - - $page = $page < 1 ? 1 : $page; - - $config['path'] = $config['path'] ?? Paginator::getCurrentPath(); - - if (!isset($total) && !$simple) { - $options = $this->getOptions(); - - unset($this->options['order'], $this->options['limit'], $this->options['page'], $this->options['field']); - - $bind = $this->bind; - $total = $this->count(); - $results = $this->options($options)->bind($bind)->page($page, $listRows)->select(); - } elseif ($simple) { - $results = $this->limit(($page - 1) * $listRows, $listRows + 1)->select(); - $total = null; - } else { - $results = $this->page($page, $listRows)->select(); - } - - $this->removeOption('limit'); - $this->removeOption('page'); - - return Paginator::make($results, $listRows, $page, $total, $simple, $config); - } - - /** - * 根据数字类型字段进行分页查询(大数据) - * @access public - * @param int|array $listRows 每页数量或者分页配置 - * @param string $key 分页索引键 - * @param string $sort 索引键排序 asc|desc - * @return Paginator - * @throws Exception - */ - public function paginateX($listRows = null, string $key = null, string $sort = null): Paginator - { - $defaultConfig = [ - 'query' => [], //url额外参数 - 'fragment' => '', //url锚点 - 'var_page' => 'page', //分页变量 - 'list_rows' => 15, //每页数量 - ]; - - $config = is_array($listRows) ? array_merge($defaultConfig, $listRows) : $defaultConfig; - $listRows = is_int($listRows) ? $listRows : (int) $config['list_rows']; - $page = isset($config['page']) ? (int) $config['page'] : Paginator::getCurrentPage($config['var_page']); - $page = $page < 1 ? 1 : $page; - - $config['path'] = $config['path'] ?? Paginator::getCurrentPath(); - - $key = $key ?: $this->getPk(); - $options = $this->getOptions(); - - if (is_null($sort)) { - $order = $options['order'] ?? ''; - if (!empty($order)) { - $sort = $order[$key] ?? 'desc'; - } else { - $this->order($key, 'desc'); - $sort = 'desc'; - } - } else { - $this->order($key, $sort); - } - - $newOption = $options; - unset($newOption['field'], $newOption['page']); - - $data = $this->newQuery() - ->options($newOption) - ->field($key) - ->where(true) - ->order($key, $sort) - ->limit(1) - ->find(); - - $result = $data[$key]; - - if (is_numeric($result)) { - $lastId = 'asc' == $sort ? ($result - 1) + ($page - 1) * $listRows : ($result + 1) - ($page - 1) * $listRows; - } else { - throw new Exception('not support type'); - } - - $results = $this->when($lastId, function ($query) use ($key, $sort, $lastId) { - $query->where($key, 'asc' == $sort ? '>' : '<', $lastId); - }) - ->limit($listRows) - ->select(); - - $this->options($options); - - return Paginator::make($results, $listRows, $page, null, true, $config); - } - - /** - * 根据最后ID查询更多N个数据 - * @access public - * @param int $limit LIMIT - * @param int|string $lastId LastId - * @param string $key 分页索引键 默认为主键 - * @param string $sort 索引键排序 asc|desc - * @return array - * @throws Exception - */ - public function more(int $limit, $lastId = null, string $key = null, string $sort = null): array - { - $key = $key ?: $this->getPk(); - - if (is_null($sort)) { - $order = $this->getOptions('order'); - if (!empty($order)) { - $sort = $order[$key] ?? 'desc'; - } else { - $this->order($key, 'desc'); - $sort = 'desc'; - } - } else { - $this->order($key, $sort); - } - - $result = $this->when($lastId, function ($query) use ($key, $sort, $lastId) { - $query->where($key, 'asc' == $sort ? '>' : '<', $lastId); - })->limit($limit)->select(); - - $last = $result->last(); - - $result->first(); - - return [ - 'data' => $result, - 'lastId' => $last[$key], - ]; - } - - /** - * 查询缓存 - * @access public - * @param mixed $key 缓存key - * @param integer|\DateTime $expire 缓存有效期 - * @param string $tag 缓存标签 - * @return $this - */ - public function cache($key = true, $expire = null, string $tag = null) - { - if (false === $key || !$this->getConnection()->getCache()) { - return $this; - } - - if ($key instanceof \DateTimeInterface || $key instanceof \DateInterval || (is_int($key) && is_null($expire))) { - $expire = $key; - $key = true; - } - - $this->options['cache'] = [$key, $expire, $tag]; - - return $this; - } - - /** - * 指定查询lock - * @access public - * @param bool|string $lock 是否lock - * @return $this - */ - public function lock($lock = false) - { - $this->options['lock'] = $lock; - - if ($lock) { - $this->options['master'] = true; - } - - return $this; - } - - /** - * 指定数据表别名 - * @access public - * @param array|string $alias 数据表别名 - * @return $this - */ - public function alias($alias) - { - if (is_array($alias)) { - $this->options['alias'] = $alias; - } else { - $table = $this->getTable(); - - $this->options['alias'][$table] = $alias; - } - - return $this; - } - - /** - * 设置从主服务器读取数据 - * @access public - * @param bool $readMaster 是否从主服务器读取 - * @return $this - */ - public function master(bool $readMaster = true) - { - $this->options['master'] = $readMaster; - return $this; - } - - /** - * 设置是否严格检查字段名 - * @access public - * @param bool $strict 是否严格检查字段 - * @return $this - */ - public function strict(bool $strict = true) - { - $this->options['strict'] = $strict; - return $this; - } - - /** - * 设置JSON字段信息 - * @access public - * @param array $json JSON字段 - * @param bool $assoc 是否取出数组 - * @return $this - */ - public function json(array $json = [], bool $assoc = false) - { - $this->options['json'] = $json; - $this->options['json_assoc'] = $assoc; - return $this; - } - - /** - * 指定数据表主键 - * @access public - * @param string|array $pk 主键 - * @return $this - */ - public function pk($pk) - { - $this->pk = $pk; - return $this; - } - - /** - * 查询参数批量赋值 - * @access protected - * @param array $options 表达式参数 - * @return $this - */ - protected function options(array $options) - { - $this->options = $options; - return $this; - } - - /** - * 获取当前的查询参数 - * @access public - * @param string $name 参数名 - * @return mixed - */ - public function getOptions(string $name = '') - { - if ('' === $name) { - return $this->options; - } - - return $this->options[$name] ?? null; - } - - /** - * 设置当前的查询参数 - * @access public - * @param string $option 参数名 - * @param mixed $value 参数值 - * @return $this - */ - public function setOption(string $option, $value) - { - $this->options[$option] = $value; - return $this; - } - - /** - * 设置当前字段添加的表别名 - * @access public - * @param string $via 临时表别名 - * @return $this - */ - public function via(string $via = '') - { - $this->options['via'] = $via; - - return $this; - } - - /** - * 保存记录 自动判断insert或者update - * @access public - * @param array $data 数据 - * @param bool $forceInsert 是否强制insert - * @return integer - */ - public function save(array $data = [], bool $forceInsert = false) - { - if ($forceInsert) { - return $this->insert($data); - } - - $this->options['data'] = array_merge($this->options['data'] ?? [], $data); - - if (!empty($this->options['where'])) { - $isUpdate = true; - } else { - $isUpdate = $this->parseUpdateData($this->options['data']); - } - - return $isUpdate ? $this->update() : $this->insert(); - } - - /** - * 插入记录 - * @access public - * @param array $data 数据 - * @param boolean $getLastInsID 返回自增主键 - * @return integer|string - */ - public function insert(array $data = [], bool $getLastInsID = false) - { - if (!empty($data)) { - $this->options['data'] = $data; - } - - return $this->connection->insert($this, $getLastInsID); - } - - /** - * 插入记录并获取自增ID - * @access public - * @param array $data 数据 - * @return integer|string - */ - public function insertGetId(array $data) - { - return $this->insert($data, true); - } - - /** - * 批量插入记录 - * @access public - * @param array $dataSet 数据集 - * @param integer $limit 每次写入数据限制 - * @return integer - */ - public function insertAll(array $dataSet = [], int $limit = 0): int - { - if (empty($dataSet)) { - $dataSet = $this->options['data'] ?? []; - } - - if (empty($limit) && !empty($this->options['limit']) && is_numeric($this->options['limit'])) { - $limit = (int) $this->options['limit']; - } - - return $this->connection->insertAll($this, $dataSet, $limit); - } - - /** - * 通过Select方式插入记录 - * @access public - * @param array $fields 要插入的数据表字段名 - * @param string $table 要插入的数据表名 - * @return integer - */ - public function selectInsert(array $fields, string $table): int - { - return $this->connection->selectInsert($this, $fields, $table); - } - - /** - * 更新记录 - * @access public - * @param mixed $data 数据 - * @return integer - * @throws Exception - */ - public function update(array $data = []): int - { - if (!empty($data)) { - $this->options['data'] = array_merge($this->options['data'] ?? [], $data); - } - - if (empty($this->options['where'])) { - $this->parseUpdateData($this->options['data']); - } - - if (empty($this->options['where']) && $this->model) { - $this->where($this->model->getWhere()); - } - - if (empty($this->options['where'])) { - // 如果没有任何更新条件则不执行 - throw new Exception('miss update condition'); - } - - return $this->connection->update($this); - } - - /** - * 删除记录 - * @access public - * @param mixed $data 表达式 true 表示强制删除 - * @return int - * @throws Exception - */ - public function delete($data = null): int - { - if (!is_null($data) && true !== $data) { - // AR模式分析主键条件 - $this->parsePkWhere($data); - } - - if (empty($this->options['where']) && $this->model) { - $this->where($this->model->getWhere()); - } - - if (true !== $data && empty($this->options['where'])) { - // 如果条件为空 不进行删除操作 除非设置 1=1 - throw new Exception('delete without condition'); - } - - if (!empty($this->options['soft_delete'])) { - // 软删除 - list($field, $condition) = $this->options['soft_delete']; - if ($condition) { - unset($this->options['soft_delete']); - $this->options['data'] = [$field => $condition]; - - return $this->connection->update($this); - } - } - - $this->options['data'] = $data; - - return $this->connection->delete($this); - } - - /** - * 查找记录 - * @access public - * @param mixed $data 数据 - * @return Collection - * @throws Exception - * @throws ModelNotFoundException - * @throws DataNotFoundException - */ - public function select($data = null): Collection - { - if (!is_null($data)) { - // 主键条件分析 - $this->parsePkWhere($data); - } - - $resultSet = $this->connection->select($this); - - // 返回结果处理 - if (!empty($this->options['fail']) && count($resultSet) == 0) { - $this->throwNotFound(); - } - - // 数据列表读取后的处理 - if (!empty($this->model)) { - // 生成模型对象 - $resultSet = $this->resultSetToModelCollection($resultSet); - } else { - $this->resultSet($resultSet); - } - - return $resultSet; - } - - /** - * 查找单条记录 - * @access public - * @param mixed $data 查询数据 - * @return array|Model|null - * @throws Exception - * @throws ModelNotFoundException - * @throws DataNotFoundException - */ - public function find($data = null) - { - if (!is_null($data)) { - // AR模式分析主键条件 - $this->parsePkWhere($data); - } - - if (empty($this->options['where']) && empty($this->options['order'])) { - $result = []; - } else { - $result = $this->connection->find($this); - } - - // 数据处理 - if (empty($result)) { - return $this->resultToEmpty(); - } - - if (!empty($this->model)) { - // 返回模型对象 - $this->resultToModel($result, $this->options); - } else { - $this->result($result); - } - - return $result; - } - - /** - * 分析表达式(可用于查询或者写入操作) - * @access public - * @return array - */ - public function parseOptions(): array - { - $options = $this->getOptions(); - - // 获取数据表 - if (empty($options['table'])) { - $options['table'] = $this->getTable(); - } - - if (!isset($options['where'])) { - $options['where'] = []; - } elseif (isset($options['view'])) { - // 视图查询条件处理 - $this->parseView($options); - } - - if (!isset($options['field'])) { - $options['field'] = '*'; - } - - foreach (['data', 'order', 'join', 'union'] as $name) { - if (!isset($options[$name])) { - $options[$name] = []; - } - } - - if (!isset($options['strict'])) { - $options['strict'] = $this->connection->getConfig('fields_strict'); - } - - foreach (['master', 'lock', 'fetch_sql', 'array', 'distinct', 'procedure'] as $name) { - if (!isset($options[$name])) { - $options[$name] = false; - } - } - - foreach (['group', 'having', 'limit', 'force', 'comment', 'partition', 'duplicate', 'extra'] as $name) { - if (!isset($options[$name])) { - $options[$name] = ''; - } - } - - if (isset($options['page'])) { - // 根据页数计算limit - list($page, $listRows) = $options['page']; - $page = $page > 0 ? $page : 1; - $listRows = $listRows ?: (is_numeric($options['limit']) ? $options['limit'] : 20); - $offset = $listRows * ($page - 1); - $options['limit'] = $offset . ',' . $listRows; - } - - $this->options = $options; - - return $options; - } - - /** - * 分析数据是否存在更新条件 - * @access public - * @param array $data 数据 - * @return bool - * @throws Exception - */ - public function parseUpdateData(&$data): bool - { - $pk = $this->getPk(); - $isUpdate = false; - // 如果存在主键数据 则自动作为更新条件 - if (is_string($pk) && isset($data[$pk])) { - $this->where($pk, '=', $data[$pk]); - $this->options['key'] = $data[$pk]; - unset($data[$pk]); - $isUpdate = true; - } elseif (is_array($pk)) { - foreach ($pk as $field) { - if (isset($data[$field])) { - $this->where($field, '=', $data[$field]); - $isUpdate = true; - } else { - // 如果缺少复合主键数据则不执行 - throw new Exception('miss complex primary data'); - } - unset($data[$field]); - } - } - - return $isUpdate; - } - - /** - * 把主键值转换为查询条件 支持复合主键 - * @access public - * @param array|string $data 主键数据 - * @return void - * @throws Exception - */ - public function parsePkWhere($data): void - { - $pk = $this->getPk(); - - if (is_string($pk)) { - // 获取数据表 - if (empty($this->options['table'])) { - $this->options['table'] = $this->getTable(); - } - - $table = is_array($this->options['table']) ? key($this->options['table']) : $this->options['table']; - - if (!empty($this->options['alias'][$table])) { - $alias = $this->options['alias'][$table]; - } - - $key = isset($alias) ? $alias . '.' . $pk : $pk; - // 根据主键查询 - if (is_array($data)) { - $this->where($key, 'in', $data); - } else { - $this->where($key, '=', $data); - $this->options['key'] = $data; - } - } - } - - /** - * 获取模型的更新条件 - * @access protected - * @param array $options 查询参数 - */ - protected function getModelUpdateCondition(array $options) - { - return $options['where']['AND'] ?? null; - } -} diff --git a/vendor/topthink/think-orm/src/db/Builder.php b/vendor/topthink/think-orm/src/db/Builder.php deleted file mode 100644 index c2a86d30a..000000000 --- a/vendor/topthink/think-orm/src/db/Builder.php +++ /dev/null @@ -1,1281 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db; - -use Closure; -use PDO; -use think\db\exception\DbException as Exception; - -/** - * Db Builder - */ -abstract class Builder -{ - /** - * Connection对象 - * @var ConnectionInterface - */ - protected $connection; - - /** - * 查询表达式映射 - * @var array - */ - protected $exp = ['NOTLIKE' => 'NOT LIKE', 'NOTIN' => 'NOT IN', 'NOTBETWEEN' => 'NOT BETWEEN', 'NOTEXISTS' => 'NOT EXISTS', 'NOTNULL' => 'NOT NULL', 'NOTBETWEEN TIME' => 'NOT BETWEEN TIME']; - - /** - * 查询表达式解析 - * @var array - */ - protected $parser = [ - 'parseCompare' => ['=', '<>', '>', '>=', '<', '<='], - 'parseLike' => ['LIKE', 'NOT LIKE'], - 'parseBetween' => ['NOT BETWEEN', 'BETWEEN'], - 'parseIn' => ['NOT IN', 'IN'], - 'parseExp' => ['EXP'], - 'parseNull' => ['NOT NULL', 'NULL'], - 'parseBetweenTime' => ['BETWEEN TIME', 'NOT BETWEEN TIME'], - 'parseTime' => ['< TIME', '> TIME', '<= TIME', '>= TIME'], - 'parseExists' => ['NOT EXISTS', 'EXISTS'], - 'parseColumn' => ['COLUMN'], - ]; - - /** - * SELECT SQL表达式 - * @var string - */ - protected $selectSql = 'SELECT%DISTINCT%%EXTRA% %FIELD% FROM %TABLE%%FORCE%%JOIN%%WHERE%%GROUP%%HAVING%%UNION%%ORDER%%LIMIT% %LOCK%%COMMENT%'; - - /** - * INSERT SQL表达式 - * @var string - */ - protected $insertSql = '%INSERT%%EXTRA% INTO %TABLE% (%FIELD%) VALUES (%DATA%) %COMMENT%'; - - /** - * INSERT ALL SQL表达式 - * @var string - */ - protected $insertAllSql = '%INSERT%%EXTRA% INTO %TABLE% (%FIELD%) %DATA% %COMMENT%'; - - /** - * UPDATE SQL表达式 - * @var string - */ - protected $updateSql = 'UPDATE%EXTRA% %TABLE% SET %SET%%JOIN%%WHERE%%ORDER%%LIMIT% %LOCK%%COMMENT%'; - - /** - * DELETE SQL表达式 - * @var string - */ - protected $deleteSql = 'DELETE%EXTRA% FROM %TABLE%%USING%%JOIN%%WHERE%%ORDER%%LIMIT% %LOCK%%COMMENT%'; - - /** - * 架构函数 - * @access public - * @param ConnectionInterface $connection 数据库连接对象实例 - */ - public function __construct(ConnectionInterface $connection) - { - $this->connection = $connection; - } - - /** - * 获取当前的连接对象实例 - * @access public - * @return ConnectionInterface - */ - public function getConnection(): ConnectionInterface - { - return $this->connection; - } - - /** - * 注册查询表达式解析 - * @access public - * @param string $name 解析方法 - * @param array $parser 匹配表达式数据 - * @return $this - */ - public function bindParser(string $name, array $parser) - { - $this->parser[$name] = $parser; - return $this; - } - - /** - * 数据分析 - * @access protected - * @param Query $query 查询对象 - * @param array $data 数据 - * @param array $fields 字段信息 - * @param array $bind 参数绑定 - * @return array - */ - protected function parseData(Query $query, array $data = [], array $fields = [], array $bind = []): array - { - if (empty($data)) { - return []; - } - - $options = $query->getOptions(); - - // 获取绑定信息 - if (empty($bind)) { - $bind = $query->getFieldsBindType(); - } - - if (empty($fields)) { - if ('*' == $options['field']) { - $fields = array_keys($bind); - } else { - $fields = $options['field']; - } - } - - $result = []; - - foreach ($data as $key => $val) { - $item = $this->parseKey($query, $key, true); - - if ($val instanceof Raw) { - $result[$item] = $val->getValue(); - continue; - } elseif (!is_scalar($val) && (in_array($key, (array) $query->getOptions('json')) || 'json' == $query->getFieldType($key))) { - $val = json_encode($val); - } - - if (false !== strpos($key, '->')) { - list($key, $name) = explode('->', $key, 2); - $item = $this->parseKey($query, $key); - $result[$item] = 'json_set(' . $item . ', \'$.' . $name . '\', ' . $this->parseDataBind($query, $key . '->' . $name, $val, $bind) . ')'; - } elseif (false === strpos($key, '.') && !in_array($key, $fields, true)) { - if ($options['strict']) { - throw new Exception('fields not exists:[' . $key . ']'); - } - } elseif (is_null($val)) { - $result[$item] = 'NULL'; - } elseif (is_array($val) && !empty($val)) { - switch (strtoupper($val[0])) { - case 'INC': - $result[$item] = $item . ' + ' . floatval($val[1]); - break; - case 'DEC': - $result[$item] = $item . ' - ' . floatval($val[1]); - break; - } - } elseif (is_scalar($val)) { - // 过滤非标量数据 - $result[$item] = $this->parseDataBind($query, $key, $val, $bind); - } - } - - return $result; - } - - /** - * 数据绑定处理 - * @access protected - * @param Query $query 查询对象 - * @param string $key 字段名 - * @param mixed $data 数据 - * @param array $bind 绑定数据 - * @return string - */ - protected function parseDataBind(Query $query, string $key, $data, array $bind = []): string - { - if ($data instanceof Raw) { - return $data->getValue(); - } - - $name = $query->bindValue($data, $bind[$key] ?? PDO::PARAM_STR); - - return ':' . $name; - } - - /** - * 字段名分析 - * @access public - * @param Query $query 查询对象 - * @param mixed $key 字段名 - * @param bool $strict 严格检测 - * @return string - */ - public function parseKey(Query $query, $key, bool $strict = false): string - { - return $key; - } - - /** - * 查询额外参数分析 - * @access protected - * @param Query $query 查询对象 - * @param string $extra 额外参数 - * @return string - */ - protected function parseExtra(Query $query, string $extra): string - { - return preg_match('/^[\w]+$/i', $extra) ? ' ' . strtoupper($extra) : ''; - } - - /** - * field分析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $fields 字段名 - * @return string - */ - protected function parseField(Query $query, $fields): string - { - if (is_array($fields)) { - // 支持 'field1'=>'field2' 这样的字段别名定义 - $array = []; - - foreach ($fields as $key => $field) { - if ($field instanceof Raw) { - $array[] = $field->getValue(); - } elseif (!is_numeric($key)) { - $array[] = $this->parseKey($query, $key) . ' AS ' . $this->parseKey($query, $field, true); - } else { - $array[] = $this->parseKey($query, $field); - } - } - - $fieldsStr = implode(',', $array); - } else { - $fieldsStr = '*'; - } - - return $fieldsStr; - } - - /** - * table分析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $tables 表名 - * @return string - */ - protected function parseTable(Query $query, $tables): string - { - $item = []; - $options = $query->getOptions(); - - foreach ((array) $tables as $key => $table) { - if ($table instanceof Raw) { - $item[] = $table->getValue(); - } elseif (!is_numeric($key)) { - $item[] = $this->parseKey($query, $key) . ' ' . $this->parseKey($query, $table); - } elseif (isset($options['alias'][$table])) { - $item[] = $this->parseKey($query, $table) . ' ' . $this->parseKey($query, $options['alias'][$table]); - } else { - $item[] = $this->parseKey($query, $table); - } - } - - return implode(',', $item); - } - - /** - * where分析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $where 查询条件 - * @return string - */ - protected function parseWhere(Query $query, array $where): string - { - $options = $query->getOptions(); - $whereStr = $this->buildWhere($query, $where); - - if (!empty($options['soft_delete'])) { - // 附加软删除条件 - list($field, $condition) = $options['soft_delete']; - - $binds = $query->getFieldsBindType(); - $whereStr = $whereStr ? '( ' . $whereStr . ' ) AND ' : ''; - $whereStr = $whereStr . $this->parseWhereItem($query, $field, $condition, $binds); - } - - return empty($whereStr) ? '' : ' WHERE ' . $whereStr; - } - - /** - * 生成查询条件SQL - * @access public - * @param Query $query 查询对象 - * @param mixed $where 查询条件 - * @return string - */ - public function buildWhere(Query $query, array $where): string - { - if (empty($where)) { - $where = []; - } - - $whereStr = ''; - - $binds = $query->getFieldsBindType(); - - foreach ($where as $logic => $val) { - $str = $this->parseWhereLogic($query, $logic, $val, $binds); - - $whereStr .= empty($whereStr) ? substr(implode(' ', $str), strlen($logic) + 1) : implode(' ', $str); - } - - return $whereStr; - } - - /** - * 不同字段使用相同查询条件(AND) - * @access protected - * @param Query $query 查询对象 - * @param string $logic Logic - * @param array $val 查询条件 - * @param array $binds 参数绑定 - * @return array - */ - protected function parseWhereLogic(Query $query, string $logic, array $val, array $binds = []): array - { - $where = []; - foreach ($val as $value) { - if ($value instanceof Raw) { - $where[] = ' ' . $logic . ' ( ' . $value->getValue() . ' )'; - continue; - } - - if (is_array($value)) { - if (key($value) !== 0) { - throw new Exception('where express error:' . var_export($value, true)); - } - $field = array_shift($value); - } elseif (true === $value) { - $where[] = ' ' . $logic . ' 1 '; - continue; - } elseif (!($value instanceof Closure)) { - throw new Exception('where express error:' . var_export($value, true)); - } - - if ($value instanceof Closure) { - // 使用闭包查询 - $where[] = $this->parseClosureWhere($query, $value, $logic); - } elseif (is_array($field)) { - $where[] = $this->parseMultiWhereField($query, $value, $field, $logic, $binds); - } elseif ($field instanceof Raw) { - $where[] = ' ' . $logic . ' ' . $this->parseWhereItem($query, $field, $value, $binds); - } elseif (strpos($field, '|')) { - $where[] = $this->parseFieldsOr($query, $value, $field, $logic, $binds); - } elseif (strpos($field, '&')) { - $where[] = $this->parseFieldsAnd($query, $value, $field, $logic, $binds); - } else { - // 对字段使用表达式查询 - $field = is_string($field) ? $field : ''; - $where[] = ' ' . $logic . ' ' . $this->parseWhereItem($query, $field, $value, $binds); - } - } - - return $where; - } - - /** - * 不同字段使用相同查询条件(AND) - * @access protected - * @param Query $query 查询对象 - * @param mixed $value 查询条件 - * @param string $field 查询字段 - * @param string $logic Logic - * @param array $binds 参数绑定 - * @return string - */ - protected function parseFieldsAnd(Query $query, $value, string $field, string $logic, array $binds): string - { - $item = []; - - foreach (explode('&', $field) as $k) { - $item[] = $this->parseWhereItem($query, $k, $value, $binds); - } - - return ' ' . $logic . ' ( ' . implode(' AND ', $item) . ' )'; - } - - /** - * 不同字段使用相同查询条件(OR) - * @access protected - * @param Query $query 查询对象 - * @param mixed $value 查询条件 - * @param string $field 查询字段 - * @param string $logic Logic - * @param array $binds 参数绑定 - * @return string - */ - protected function parseFieldsOr(Query $query, $value, string $field, string $logic, array $binds): string - { - $item = []; - - foreach (explode('|', $field) as $k) { - $item[] = $this->parseWhereItem($query, $k, $value, $binds); - } - - return ' ' . $logic . ' ( ' . implode(' OR ', $item) . ' )'; - } - - /** - * 闭包查询 - * @access protected - * @param Query $query 查询对象 - * @param Closure $value 查询条件 - * @param string $logic Logic - * @return string - */ - protected function parseClosureWhere(Query $query, Closure $value, string $logic): string - { - $newQuery = $query->newQuery(); - $value($newQuery); - $whereClosure = $this->buildWhere($newQuery, $newQuery->getOptions('where') ?: []); - - if (!empty($whereClosure)) { - $query->bind($newQuery->getBind(false)); - $where = ' ' . $logic . ' ( ' . $whereClosure . ' )'; - } - - return $where ?? ''; - } - - /** - * 复合条件查询 - * @access protected - * @param Query $query 查询对象 - * @param mixed $value 查询条件 - * @param mixed $field 查询字段 - * @param string $logic Logic - * @param array $binds 参数绑定 - * @return string - */ - protected function parseMultiWhereField(Query $query, $value, $field, string $logic, array $binds): string - { - array_unshift($value, $field); - - $where = []; - foreach ($value as $item) { - $where[] = $this->parseWhereItem($query, array_shift($item), $item, $binds); - } - - return ' ' . $logic . ' ( ' . implode(' AND ', $where) . ' )'; - } - - /** - * where子单元分析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $field 查询字段 - * @param array $val 查询条件 - * @param array $binds 参数绑定 - * @return string - */ - protected function parseWhereItem(Query $query, $field, array $val, array $binds = []): string - { - // 字段分析 - $key = $field ? $this->parseKey($query, $field, true) : ''; - - list($exp, $value) = $val; - - // 检测操作符 - if (!is_string($exp)) { - throw new Exception('where express error:' . var_export($exp, true)); - } - - $exp = strtoupper($exp); - if (isset($this->exp[$exp])) { - $exp = $this->exp[$exp]; - } - - if (is_string($field) && 'LIKE' != $exp) { - $bindType = $binds[$field] ?? PDO::PARAM_STR; - } else { - $bindType = PDO::PARAM_STR; - } - - if ($value instanceof Raw) { - - } elseif (is_object($value) && method_exists($value, '__toString')) { - // 对象数据写入 - $value = $value->__toString(); - } - - if (is_scalar($value) && !in_array($exp, ['EXP', 'NOT NULL', 'NULL', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN']) && strpos($exp, 'TIME') === false) { - if (is_string($value) && 0 === strpos($value, ':') && $query->isBind(substr($value, 1))) { - } else { - $name = $query->bindValue($value, $bindType); - $value = ':' . $name; - } - } - - // 解析查询表达式 - foreach ($this->parser as $fun => $parse) { - if (in_array($exp, $parse)) { - return $this->$fun($query, $key, $exp, $value, $field, $bindType, $val[2] ?? 'AND'); - } - } - - throw new Exception('where express error:' . $exp); - } - - /** - * 模糊查询 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param string $exp - * @param array $value - * @param string $field - * @param integer $bindType - * @param string $logic - * @return string - */ - protected function parseLike(Query $query, string $key, string $exp, $value, $field, int $bindType, string $logic): string - { - // 模糊匹配 - if (is_array($value)) { - $array = []; - foreach ($value as $item) { - $name = $query->bindValue($item, PDO::PARAM_STR); - $array[] = $key . ' ' . $exp . ' :' . $name; - } - - $whereStr = '(' . implode(' ' . strtoupper($logic) . ' ', $array) . ')'; - } else { - $whereStr = $key . ' ' . $exp . ' ' . $value; - } - - return $whereStr; - } - - /** - * 表达式查询 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param string $exp - * @param array $value - * @param string $field - * @param integer $bindType - * @return string - */ - protected function parseExp(Query $query, string $key, string $exp, Raw $value, string $field, int $bindType): string - { - // 表达式查询 - return '( ' . $key . ' ' . $value->getValue() . ' )'; - } - - /** - * 表达式查询 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param string $exp - * @param array $value - * @param string $field - * @param integer $bindType - * @return string - */ - protected function parseColumn(Query $query, string $key, $exp, array $value, string $field, int $bindType): string - { - // 字段比较查询 - list($op, $field) = $value; - - if (!in_array(trim($op), ['=', '<>', '>', '>=', '<', '<='])) { - throw new Exception('where express error:' . var_export($value, true)); - } - - return '( ' . $key . ' ' . $op . ' ' . $this->parseKey($query, $field, true) . ' )'; - } - - /** - * Null查询 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param string $exp - * @param mixed $value - * @param string $field - * @param integer $bindType - * @return string - */ - protected function parseNull(Query $query, string $key, string $exp, $value, $field, int $bindType): string - { - // NULL 查询 - return $key . ' IS ' . $exp; - } - - /** - * 范围查询 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param string $exp - * @param mixed $value - * @param string $field - * @param integer $bindType - * @return string - */ - protected function parseBetween(Query $query, string $key, string $exp, $value, $field, int $bindType): string - { - // BETWEEN 查询 - $data = is_array($value) ? $value : explode(',', $value); - - $min = $query->bindValue($data[0], $bindType); - $max = $query->bindValue($data[1], $bindType); - - return $key . ' ' . $exp . ' :' . $min . ' AND :' . $max . ' '; - } - - /** - * Exists查询 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param string $exp - * @param mixed $value - * @param string $field - * @param integer $bindType - * @return string - */ - protected function parseExists(Query $query, string $key, string $exp, $value, string $field, int $bindType): string - { - // EXISTS 查询 - if ($value instanceof Closure) { - $value = $this->parseClosure($query, $value, false); - } elseif ($value instanceof Raw) { - $value = $value->getValue(); - } else { - throw new Exception('where express error:' . $value); - } - - return $exp . ' ( ' . $value . ' )'; - } - - /** - * 时间比较查询 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param string $exp - * @param mixed $value - * @param string $field - * @param integer $bindType - * @return string - */ - protected function parseTime(Query $query, string $key, string $exp, $value, $field, int $bindType): string - { - return $key . ' ' . substr($exp, 0, 2) . ' ' . $this->parseDateTime($query, $value, $field, $bindType); - } - - /** - * 大小比较查询 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param string $exp - * @param mixed $value - * @param string $field - * @param integer $bindType - * @return string - */ - protected function parseCompare(Query $query, string $key, string $exp, $value, $field, int $bindType): string - { - if (is_array($value)) { - throw new Exception('where express error:' . $exp . var_export($value, true)); - } - - // 比较运算 - if ($value instanceof Closure) { - $value = $this->parseClosure($query, $value); - } - - if ('=' == $exp && is_null($value)) { - return $key . ' IS NULL'; - } - - return $key . ' ' . $exp . ' ' . $value; - } - - /** - * 时间范围查询 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param string $exp - * @param mixed $value - * @param string $field - * @param integer $bindType - * @return string - */ - protected function parseBetweenTime(Query $query, string $key, string $exp, $value, $field, int $bindType): string - { - if (is_string($value)) { - $value = explode(',', $value); - } - - return $key . ' ' . substr($exp, 0, -4) - . $this->parseDateTime($query, $value[0], $field, $bindType) - . ' AND ' - . $this->parseDateTime($query, $value[1], $field, $bindType); - - } - - /** - * IN查询 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param string $exp - * @param mixed $value - * @param string $field - * @param integer $bindType - * @return string - */ - protected function parseIn(Query $query, string $key, string $exp, $value, $field, int $bindType): string - { - // IN 查询 - if ($value instanceof Closure) { - $value = $this->parseClosure($query, $value, false); - } elseif ($value instanceof Raw) { - $value = $value->getValue(); - } else { - $value = array_unique(is_array($value) ? $value : explode(',', $value)); - $array = []; - - foreach ($value as $v) { - $name = $query->bindValue($v, $bindType); - $array[] = ':' . $name; - } - - if (count($array) == 1) { - return $key . ('IN' == $exp ? ' = ' : ' <> ') . $array[0]; - } else { - $zone = implode(',', $array); - $value = empty($zone) ? "''" : $zone; - } - } - - return $key . ' ' . $exp . ' (' . $value . ')'; - } - - /** - * 闭包子查询 - * @access protected - * @param Query $query 查询对象 - * @param \Closure $call - * @param bool $show - * @return string - */ - protected function parseClosure(Query $query, Closure $call, bool $show = true): string - { - $newQuery = $query->newQuery()->removeOption(); - $call($newQuery); - - return $newQuery->buildSql($show); - } - - /** - * 日期时间条件解析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $value - * @param string $key - * @param integer $bindType - * @return string - */ - protected function parseDateTime(Query $query, $value, string $key, int $bindType): string - { - $options = $query->getOptions(); - - // 获取时间字段类型 - if (strpos($key, '.')) { - list($table, $key) = explode('.', $key); - - if (isset($options['alias']) && $pos = array_search($table, $options['alias'])) { - $table = $pos; - } - } else { - $table = $options['table']; - } - - $type = $query->getFieldType($key); - - if ($type) { - if (is_string($value)) { - $value = strtotime($value) ?: $value; - } - - if (is_int($value)) { - if (preg_match('/(datetime|timestamp)/is', $type)) { - // 日期及时间戳类型 - $value = date('Y-m-d H:i:s', $value); - } elseif (preg_match('/(date)/is', $type)) { - // 日期及时间戳类型 - $value = date('Y-m-d', $value); - } - } - } - - $name = $query->bindValue($value, $bindType); - - return ':' . $name; - } - - /** - * limit分析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $limit - * @return string - */ - protected function parseLimit(Query $query, string $limit): string - { - return (!empty($limit) && false === strpos($limit, '(')) ? ' LIMIT ' . $limit . ' ' : ''; - } - - /** - * join分析 - * @access protected - * @param Query $query 查询对象 - * @param array $join - * @return string - */ - protected function parseJoin(Query $query, array $join): string - { - $joinStr = ''; - - foreach ($join as $item) { - list($table, $type, $on) = $item; - - if (strpos($on, '=')) { - list($val1, $val2) = explode('=', $on, 2); - - $condition = $this->parseKey($query, $val1) . '=' . $this->parseKey($query, $val2); - } else { - $condition = $on; - } - - $table = $this->parseTable($query, $table); - - $joinStr .= ' ' . $type . ' JOIN ' . $table . ' ON ' . $condition; - } - - return $joinStr; - } - - /** - * order分析 - * @access protected - * @param Query $query 查询对象 - * @param array $order - * @return string - */ - protected function parseOrder(Query $query, array $order): string - { - $array = []; - foreach ($order as $key => $val) { - if ($val instanceof Raw) { - $array[] = $val->getValue(); - } elseif (is_array($val) && preg_match('/^[\w\.]+$/', $key)) { - $array[] = $this->parseOrderField($query, $key, $val); - } elseif ('[rand]' == $val) { - $array[] = $this->parseRand($query); - } elseif (is_string($val)) { - if (is_numeric($key)) { - list($key, $sort) = explode(' ', strpos($val, ' ') ? $val : $val . ' '); - } else { - $sort = $val; - } - - if (preg_match('/^[\w\.]+$/', $key)) { - $sort = strtoupper($sort); - $sort = in_array($sort, ['ASC', 'DESC'], true) ? ' ' . $sort : ''; - $array[] = $this->parseKey($query, $key, true) . $sort; - } else { - throw new Exception('order express error:' . $key); - } - } - } - - return empty($array) ? '' : ' ORDER BY ' . implode(',', $array); - } - - /** - * 随机排序 - * @access protected - * @param Query $query 查询对象 - * @return string - */ - protected function parseRand(Query $query): string - { - return ''; - } - - /** - * orderField分析 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param array $val - * @return string - */ - protected function parseOrderField(Query $query, string $key, array $val): string - { - if (isset($val['sort'])) { - $sort = $val['sort']; - unset($val['sort']); - } else { - $sort = ''; - } - - $sort = strtoupper($sort); - $sort = in_array($sort, ['ASC', 'DESC'], true) ? ' ' . $sort : ''; - $bind = $query->getFieldsBindType(); - - foreach ($val as $item) { - $val[] = $this->parseDataBind($query, $key, $item, $bind); - } - - return 'field(' . $this->parseKey($query, $key, true) . ',' . implode(',', $val) . ')' . $sort; - } - - /** - * group分析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $group - * @return string - */ - protected function parseGroup(Query $query, $group): string - { - if (empty($group)) { - return ''; - } - - if (is_string($group)) { - $group = explode(',', $group); - } - - $val = []; - foreach ($group as $key) { - $val[] = $this->parseKey($query, $key); - } - - return ' GROUP BY ' . implode(',', $val); - } - - /** - * having分析 - * @access protected - * @param Query $query 查询对象 - * @param string $having - * @return string - */ - protected function parseHaving(Query $query, string $having): string - { - return !empty($having) ? ' HAVING ' . $having : ''; - } - - /** - * comment分析 - * @access protected - * @param Query $query 查询对象 - * @param string $comment - * @return string - */ - protected function parseComment(Query $query, string $comment): string - { - if (false !== strpos($comment, '*/')) { - $comment = strstr($comment, '*/', true); - } - - return !empty($comment) ? ' /* ' . $comment . ' */' : ''; - } - - /** - * distinct分析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $distinct - * @return string - */ - protected function parseDistinct(Query $query, bool $distinct): string - { - return !empty($distinct) ? ' DISTINCT ' : ''; - } - - /** - * union分析 - * @access protected - * @param Query $query 查询对象 - * @param array $union - * @return string - */ - protected function parseUnion(Query $query, array $union): string - { - if (empty($union)) { - return ''; - } - - $type = $union['type']; - unset($union['type']); - - foreach ($union as $u) { - if ($u instanceof Closure) { - $sql[] = $type . ' ' . $this->parseClosure($query, $u); - } elseif (is_string($u)) { - $sql[] = $type . ' ( ' . $u . ' )'; - } - } - - return ' ' . implode(' ', $sql); - } - - /** - * index分析,可在操作链中指定需要强制使用的索引 - * @access protected - * @param Query $query 查询对象 - * @param mixed $index - * @return string - */ - protected function parseForce(Query $query, $index): string - { - if (empty($index)) { - return ''; - } - - if (is_array($index)) { - $index = join(',', $index); - } - - return sprintf(" FORCE INDEX ( %s ) ", $index); - } - - /** - * 设置锁机制 - * @access protected - * @param Query $query 查询对象 - * @param bool|string $lock - * @return string - */ - protected function parseLock(Query $query, $lock = false): string - { - if (is_bool($lock)) { - return $lock ? ' FOR UPDATE ' : ''; - } - - if (is_string($lock) && !empty($lock)) { - return ' ' . trim($lock) . ' '; - } else { - return ''; - } - } - - /** - * 生成查询SQL - * @access public - * @param Query $query 查询对象 - * @param bool $one 是否仅获取一个记录 - * @return string - */ - public function select(Query $query, bool $one = false): string - { - $options = $query->getOptions(); - - return str_replace( - ['%TABLE%', '%DISTINCT%', '%EXTRA%', '%FIELD%', '%JOIN%', '%WHERE%', '%GROUP%', '%HAVING%', '%ORDER%', '%LIMIT%', '%UNION%', '%LOCK%', '%COMMENT%', '%FORCE%'], - [ - $this->parseTable($query, $options['table']), - $this->parseDistinct($query, $options['distinct']), - $this->parseExtra($query, $options['extra']), - $this->parseField($query, $options['field']), - $this->parseJoin($query, $options['join']), - $this->parseWhere($query, $options['where']), - $this->parseGroup($query, $options['group']), - $this->parseHaving($query, $options['having']), - $this->parseOrder($query, $options['order']), - $this->parseLimit($query, $one ? '1' : $options['limit']), - $this->parseUnion($query, $options['union']), - $this->parseLock($query, $options['lock']), - $this->parseComment($query, $options['comment']), - $this->parseForce($query, $options['force']), - ], - $this->selectSql); - } - - /** - * 生成Insert SQL - * @access public - * @param Query $query 查询对象 - * @return string - */ - public function insert(Query $query): string - { - $options = $query->getOptions(); - - // 分析并处理数据 - $data = $this->parseData($query, $options['data']); - if (empty($data)) { - return ''; - } - - $fields = array_keys($data); - $values = array_values($data); - - return str_replace( - ['%INSERT%', '%TABLE%', '%EXTRA%', '%FIELD%', '%DATA%', '%COMMENT%'], - [ - !empty($options['replace']) ? 'REPLACE' : 'INSERT', - $this->parseTable($query, $options['table']), - $this->parseExtra($query, $options['extra']), - implode(' , ', $fields), - implode(' , ', $values), - $this->parseComment($query, $options['comment']), - ], - $this->insertSql); - } - - /** - * 生成insertall SQL - * @access public - * @param Query $query 查询对象 - * @param array $dataSet 数据集 - * @return string - */ - public function insertAll(Query $query, array $dataSet): string - { - $options = $query->getOptions(); - - // 获取绑定信息 - $bind = $query->getFieldsBindType(); - - // 获取合法的字段 - if ('*' == $options['field']) { - $allowFields = array_keys($bind); - } else { - $allowFields = $options['field']; - } - - $fields = []; - $values = []; - - foreach ($dataSet as $k => $data) { - $data = $this->parseData($query, $data, $allowFields, $bind); - - $values[] = 'SELECT ' . implode(',', array_values($data)); - - if (!isset($insertFields)) { - $insertFields = array_keys($data); - } - } - - foreach ($insertFields as $field) { - $fields[] = $this->parseKey($query, $field); - } - - return str_replace( - ['%INSERT%', '%TABLE%', '%EXTRA%', '%FIELD%', '%DATA%', '%COMMENT%'], - [ - !empty($options['replace']) ? 'REPLACE' : 'INSERT', - $this->parseTable($query, $options['table']), - $this->parseExtra($query, $options['extra']), - implode(' , ', $fields), - implode(' UNION ALL ', $values), - $this->parseComment($query, $options['comment']), - ], - $this->insertAllSql); - } - - /** - * 生成slect insert SQL - * @access public - * @param Query $query 查询对象 - * @param array $fields 数据 - * @param string $table 数据表 - * @return string - */ - public function selectInsert(Query $query, array $fields, string $table): string - { - foreach ($fields as &$field) { - $field = $this->parseKey($query, $field, true); - } - - return 'INSERT INTO ' . $this->parseTable($query, $table) . ' (' . implode(',', $fields) . ') ' . $this->select($query); - } - - /** - * 生成update SQL - * @access public - * @param Query $query 查询对象 - * @return string - */ - public function update(Query $query): string - { - $options = $query->getOptions(); - - $data = $this->parseData($query, $options['data']); - - if (empty($data)) { - return ''; - } - - $set = []; - foreach ($data as $key => $val) { - $set[] = $key . ' = ' . $val; - } - - return str_replace( - ['%TABLE%', '%EXTRA%', '%SET%', '%JOIN%', '%WHERE%', '%ORDER%', '%LIMIT%', '%LOCK%', '%COMMENT%'], - [ - $this->parseTable($query, $options['table']), - $this->parseExtra($query, $options['extra']), - implode(' , ', $set), - $this->parseJoin($query, $options['join']), - $this->parseWhere($query, $options['where']), - $this->parseOrder($query, $options['order']), - $this->parseLimit($query, $options['limit']), - $this->parseLock($query, $options['lock']), - $this->parseComment($query, $options['comment']), - ], - $this->updateSql); - } - - /** - * 生成delete SQL - * @access public - * @param Query $query 查询对象 - * @return string - */ - public function delete(Query $query): string - { - $options = $query->getOptions(); - - return str_replace( - ['%TABLE%', '%EXTRA%', '%USING%', '%JOIN%', '%WHERE%', '%ORDER%', '%LIMIT%', '%LOCK%', '%COMMENT%'], - [ - $this->parseTable($query, $options['table']), - $this->parseExtra($query, $options['extra']), - !empty($options['using']) ? ' USING ' . $this->parseTable($query, $options['using']) . ' ' : '', - $this->parseJoin($query, $options['join']), - $this->parseWhere($query, $options['where']), - $this->parseOrder($query, $options['order']), - $this->parseLimit($query, $options['limit']), - $this->parseLock($query, $options['lock']), - $this->parseComment($query, $options['comment']), - ], - $this->deleteSql); - } -} diff --git a/vendor/topthink/think-orm/src/db/CacheItem.php b/vendor/topthink/think-orm/src/db/CacheItem.php deleted file mode 100644 index 6e82523b7..000000000 --- a/vendor/topthink/think-orm/src/db/CacheItem.php +++ /dev/null @@ -1,209 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db; - -use DateInterval; -use DateTime; -use DateTimeInterface; -use think\db\exception\InvalidArgumentException; - -/** - * CacheItem实现类 - */ -class CacheItem -{ - /** - * 缓存Key - * @var string - */ - protected $key; - - /** - * 缓存内容 - * @var mixed - */ - protected $value; - - /** - * 过期时间 - * @var int|DateTimeInterface - */ - protected $expire; - - /** - * 缓存tag - * @var string - */ - protected $tag; - - /** - * 缓存是否命中 - * @var bool - */ - protected $isHit = false; - - public function __construct(string $key = null) - { - $this->key = $key; - } - - /** - * 为此缓存项设置「键」 - * @access public - * @param string $key - * @return $this - */ - public function setKey(string $key) - { - $this->key = $key; - return $this; - } - - /** - * 返回当前缓存项的「键」 - * @access public - * @return string - */ - public function getKey() - { - return $this->key; - } - - /** - * 返回当前缓存项的有效期 - * @access public - * @return DateTimeInterface|int|null - */ - public function getExpire() - { - if ($this->expire instanceof DateTimeInterface) { - return $this->expire; - } - - return $this->expire ? $this->expire - time() : null; - } - - /** - * 获取缓存Tag - * @access public - * @return string - */ - public function getTag() - { - return $this->tag; - } - - /** - * 凭借此缓存项的「键」从缓存系统里面取出缓存项 - * @access public - * @return mixed - */ - public function get() - { - return $this->value; - } - - /** - * 确认缓存项的检查是否命中 - * @access public - * @return bool - */ - public function isHit(): bool - { - return $this->isHit; - } - - /** - * 为此缓存项设置「值」 - * @access public - * @param mixed $value - * @return $this - */ - public function set($value) - { - $this->value = $value; - $this->isHit = true; - return $this; - } - - /** - * 为此缓存项设置所属标签 - * @access public - * @param string $tag - * @return $this - */ - public function tag(string $tag = null) - { - $this->tag = $tag; - return $this; - } - - /** - * 设置缓存项的有效期 - * @access public - * @param mixed $expire - * @return $this - */ - public function expire($expire) - { - if (is_null($expire)) { - $this->expire = null; - } elseif (is_numeric($expire) || $expire instanceof DateInterval) { - $this->expiresAfter($expire); - } elseif ($expire instanceof DateTimeInterface) { - $this->expire = $expire; - } else { - throw new InvalidArgumentException('not support datetime'); - } - - return $this; - } - - /** - * 设置缓存项的准确过期时间点 - * @access public - * @param DateTimeInterface $expiration - * @return $this - */ - public function expiresAt($expiration) - { - if ($expiration instanceof DateTimeInterface) { - $this->expire = $expiration; - } else { - throw new InvalidArgumentException('not support datetime'); - } - - return $this; - } - - /** - * 设置缓存项的过期时间 - * @access public - * @param int|DateInterval $timeInterval - * @return $this - * @throws InvalidArgumentException - */ - public function expiresAfter($timeInterval) - { - if ($timeInterval instanceof DateInterval) { - $this->expire = (int) DateTime::createFromFormat('U', (string) time())->add($timeInterval)->format('U'); - } elseif (is_numeric($timeInterval)) { - $this->expire = $timeInterval + time(); - } else { - throw new InvalidArgumentException('not support datetime'); - } - - return $this; - } - -} diff --git a/vendor/topthink/think-orm/src/db/Connection.php b/vendor/topthink/think-orm/src/db/Connection.php deleted file mode 100644 index ba51920d4..000000000 --- a/vendor/topthink/think-orm/src/db/Connection.php +++ /dev/null @@ -1,275 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db; - -use Psr\SimpleCache\CacheInterface; -use think\DbManager; -use think\db\CacheItem; - -/** - * 数据库连接基础类 - */ -abstract class Connection -{ - - /** - * 当前SQL指令 - * @var string - */ - protected $queryStr = ''; - - /** - * 返回或者影响记录数 - * @var int - */ - protected $numRows = 0; - - /** - * 事务指令数 - * @var int - */ - protected $transTimes = 0; - - /** - * 错误信息 - * @var string - */ - protected $error = ''; - - /** - * 数据库连接ID 支持多个连接 - * @var array - */ - protected $links = []; - - /** - * 当前连接ID - * @var object - */ - protected $linkID; - - /** - * 当前读连接ID - * @var object - */ - protected $linkRead; - - /** - * 当前写连接ID - * @var object - */ - protected $linkWrite; - - /** - * 数据表信息 - * @var array - */ - protected $info = []; - - /** - * 查询开始时间 - * @var float - */ - protected $queryStartTime; - - /** - * Builder对象 - * @var Builder - */ - protected $builder; - - /** - * Db对象 - * @var Db - */ - protected $db; - - /** - * 是否读取主库 - * @var bool - */ - protected $readMaster = false; - - /** - * 数据库连接参数配置 - * @var array - */ - protected $config = []; - - /** - * 缓存对象 - * @var Cache - */ - protected $cache; - - /** - * 获取当前的builder实例对象 - * @access public - * @return Builder - */ - public function getBuilder() - { - return $this->builder; - } - - /** - * 设置当前的数据库Db对象 - * @access public - * @param DbManager $db - * @return void - */ - public function setDb(DbManager $db) - { - $this->db = $db; - } - - /** - * 设置当前的缓存对象 - * @access public - * @param CacheInterface $cache - * @return void - */ - public function setCache(CacheInterface $cache) - { - $this->cache = $cache; - } - - /** - * 获取当前的缓存对象 - * @access public - * @return CacheInterface|null - */ - public function getCache() - { - return $this->cache; - } - - /** - * 获取数据库的配置参数 - * @access public - * @param string $config 配置名称 - * @return mixed - */ - public function getConfig(string $config = '') - { - if ('' === $config) { - return $this->config; - } - - return $this->config[$config] ?? null; - } - - /** - * 数据库SQL监控 - * @access protected - * @param string $sql 执行的SQL语句 留空自动获取 - * @param bool $master 主从标记 - * @return void - */ - protected function trigger(string $sql = '', bool $master = false): void - { - $listen = $this->db->getListen(); - - if (!empty($listen)) { - $runtime = number_format((microtime(true) - $this->queryStartTime), 6); - $sql = $sql ?: $this->getLastsql(); - - if (empty($this->config['deploy'])) { - $master = null; - } - - foreach ($listen as $callback) { - if (is_callable($callback)) { - $callback($sql, $runtime, $master); - } - } - } - } - - /** - * 缓存数据 - * @access protected - * @param CacheItem $cacheItem 缓存Item - */ - protected function cacheData(CacheItem $cacheItem) - { - if ($cacheItem->getTag() && method_exists($this->cache, 'tag')) { - $this->cache->tag($cacheItem->getTag())->set($cacheItem->getKey(), $cacheItem->get(), $cacheItem->getExpire()); - } else { - $this->cache->set($cacheItem->getKey(), $cacheItem->get(), $cacheItem->getExpire()); - } - } - - /** - * 分析缓存Key - * @access protected - * @param BaseQuery $query 查询对象 - * @return string - */ - protected function getCacheKey(BaseQuery $query): string - { - if (!empty($query->getOptions('key'))) { - $key = 'think:' . $this->getConfig('database') . '.' . $query->getTable() . '|' . $query->getOptions('key'); - } else { - $key = $query->getQueryGuid(); - } - - return $key; - } - - /** - * 分析缓存 - * @access protected - * @param BaseQuery $query 查询对象 - * @param array $cache 缓存信息 - * @return CacheItem - */ - protected function parseCache(BaseQuery $query, array $cache): CacheItem - { - list($key, $expire, $tag) = $cache; - - if ($key instanceof CacheItem) { - $cacheItem = $key; - } else { - if (true === $key) { - $key = $this->getCacheKey($query); - } - - $cacheItem = new CacheItem($key); - $cacheItem->expire($expire); - $cacheItem->tag($tag); - } - - return $cacheItem; - } - - /** - * 获取返回或者影响的记录数 - * @access public - * @return integer - */ - public function getNumRows(): int - { - return $this->numRows; - } - - /** - * 析构方法 - * @access public - */ - public function __destruct() - { - // 关闭连接 - $this->close(); - } -} diff --git a/vendor/topthink/think-orm/src/db/ConnectionInterface.php b/vendor/topthink/think-orm/src/db/ConnectionInterface.php deleted file mode 100644 index f6b1e0882..000000000 --- a/vendor/topthink/think-orm/src/db/ConnectionInterface.php +++ /dev/null @@ -1,196 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db; - -use Psr\SimpleCache\CacheInterface; -use think\DbManager; - -/** - * Connection interface - */ -interface ConnectionInterface -{ - /** - * 获取当前连接器类对应的Query类 - * @access public - * @return string - */ - public function getQueryClass(): string; - - /** - * 连接数据库方法 - * @access public - * @param array $config 接参数 - * @param integer $linkNum 连接序号 - * @return mixed - */ - public function connect(array $config = [], $linkNum = 0); - - /** - * 设置当前的数据库Db对象 - * @access public - * @param DbManager $db - * @return void - */ - public function setDb(DbManager $db); - - /** - * 设置当前的缓存对象 - * @access public - * @param CacheInterface $cache - * @return void - */ - public function setCache(CacheInterface $cache); - - /** - * 获取数据库的配置参数 - * @access public - * @param string $config 配置名称 - * @return mixed - */ - public function getConfig(string $config = ''); - - /** - * 关闭数据库(或者重新连接) - * @access public - * @return $this - */ - public function close(); - - /** - * 查找单条记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return array - * @throws DbException - * @throws ModelNotFoundException - * @throws DataNotFoundException - */ - public function find(BaseQuery $query): array; - - /** - * 查找记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return array - * @throws DbException - * @throws ModelNotFoundException - * @throws DataNotFoundException - */ - public function select(BaseQuery $query): array; - - /** - * 插入记录 - * @access public - * @param BaseQuery $query 查询对象 - * @param boolean $getLastInsID 返回自增主键 - * @return mixed - */ - public function insert(BaseQuery $query, bool $getLastInsID = false); - - /** - * 批量插入记录 - * @access public - * @param BaseQuery $query 查询对象 - * @param mixed $dataSet 数据集 - * @return integer - * @throws \Exception - * @throws \Throwable - */ - public function insertAll(BaseQuery $query, array $dataSet = []): int; - - /** - * 更新记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return integer - * @throws Exception - * @throws PDOException - */ - public function update(BaseQuery $query): int; - - /** - * 删除记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return int - * @throws Exception - * @throws PDOException - */ - public function delete(BaseQuery $query): int; - - /** - * 得到某个字段的值 - * @access public - * @param BaseQuery $query 查询对象 - * @param string $field 字段名 - * @param mixed $default 默认值 - * @param bool $one 返回一个值 - * @return mixed - */ - public function value(BaseQuery $query, string $field, $default = null); - - /** - * 得到某个列的数组 - * @access public - * @param BaseQuery $query 查询对象 - * @param string $column 字段名 多个字段用逗号分隔 - * @param string $key 索引 - * @return array - */ - public function column(BaseQuery $query, string $column, string $key = ''): array; - - /** - * 执行数据库事务 - * @access public - * @param callable $callback 数据操作方法回调 - * @return mixed - * @throws PDOException - * @throws \Exception - * @throws \Throwable - */ - public function transaction(callable $callback); - - /** - * 启动事务 - * @access public - * @return void - * @throws \PDOException - * @throws \Exception - */ - public function startTrans(); - - /** - * 用于非自动提交状态下面的查询提交 - * @access public - * @return void - * @throws PDOException - */ - public function commit(); - - /** - * 事务回滚 - * @access public - * @return void - * @throws PDOException - */ - public function rollback(); - - /** - * 获取最近一次查询的sql语句 - * @access public - * @return string - */ - public function getLastSql(): string; - -} diff --git a/vendor/topthink/think-orm/src/db/Fetch.php b/vendor/topthink/think-orm/src/db/Fetch.php deleted file mode 100644 index 38f797c27..000000000 --- a/vendor/topthink/think-orm/src/db/Fetch.php +++ /dev/null @@ -1,493 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db; - -use think\db\exception\DbException as Exception; -use think\helper\Str; - -/** - * SQL获取类 - */ -class Fetch -{ - /** - * 查询对象 - * @var Query - */ - protected $query; - - /** - * Connection对象 - * @var Connection - */ - protected $connection; - - /** - * Builder对象 - * @var Builder - */ - protected $builder; - - /** - * 创建一个查询SQL获取对象 - * - * @param Query $query 查询对象 - */ - public function __construct(Query $query) - { - $this->query = $query; - $this->connection = $query->getConnection(); - $this->builder = $this->connection->getBuilder(); - } - - /** - * 聚合查询 - * @access protected - * @param string $aggregate 聚合方法 - * @param string $field 字段名 - * @return string - */ - protected function aggregate(string $aggregate, string $field): string - { - $this->query->parseOptions(); - - $field = $aggregate . '(' . $this->builder->parseKey($this->query, $field) . ') AS think_' . strtolower($aggregate); - - return $this->value($field, 0, false); - } - - /** - * 得到某个字段的值 - * @access public - * @param string $field 字段名 - * @param mixed $default 默认值 - * @return string - */ - public function value(string $field, $default = null, bool $one = true): string - { - $options = $this->query->parseOptions(); - - if (isset($options['field'])) { - $this->query->removeOption('field'); - } - - $this->query->setOption('field', (array) $field); - - // 生成查询SQL - $sql = $this->builder->select($this->query, $one); - - if (isset($options['field'])) { - $this->query->setOption('field', $options['field']); - } else { - $this->query->removeOption('field'); - } - - return $this->fetch($sql); - } - - /** - * 得到某个列的数组 - * @access public - * @param string $field 字段名 多个字段用逗号分隔 - * @param string $key 索引 - * @return string - */ - public function column(string $field, string $key = ''): string - { - $options = $this->query->parseOptions(); - - if (isset($options['field'])) { - $this->query->removeOption('field'); - } - - if ($key && '*' != $field) { - $field = $key . ',' . $field; - } - - $field = array_map('trim', explode(',', $field)); - - $this->query->setOption('field', $field); - - // 生成查询SQL - $sql = $this->builder->select($this->query); - - if (isset($options['field'])) { - $this->query->setOption('field', $options['field']); - } else { - $this->query->removeOption('field'); - } - - return $this->fetch($sql); - } - - /** - * 插入记录 - * @access public - * @param array $data 数据 - * @return string - */ - public function insert(array $data = []): string - { - $options = $this->query->parseOptions(); - - if (!empty($data)) { - $this->query->setOption('data', $data); - } - - $sql = $this->builder->insert($this->query); - - return $this->fetch($sql); - } - - /** - * 插入记录并获取自增ID - * @access public - * @param array $data 数据 - * @return string - */ - public function insertGetId(array $data = []): string - { - return $this->insert($data); - } - - /** - * 保存数据 自动判断insert或者update - * @access public - * @param array $data 数据 - * @param bool $forceInsert 是否强制insert - * @return string - */ - public function save(array $data = [], bool $forceInsert = false): string - { - if ($forceInsert) { - return $this->insert($data); - } - - $data = array_merge($this->query->getOptions('data') ?: [], $data); - - $this->query->setOption('data', $data); - - if ($this->query->getOptions('where')) { - $isUpdate = true; - } else { - $isUpdate = $this->query->parseUpdateData($data); - } - - return $isUpdate ? $this->update() : $this->insert(); - } - - /** - * 批量插入记录 - * @access public - * @param array $dataSet 数据集 - * @param integer $limit 每次写入数据限制 - * @return string - */ - public function insertAll(array $dataSet = [], int $limit = null): string - { - $options = $this->query->parseOptions(); - - if (empty($dataSet)) { - $dataSet = $options['data']; - } - - if (empty($limit) && !empty($options['limit'])) { - $limit = $options['limit']; - } - - if ($limit) { - $array = array_chunk($dataSet, $limit, true); - $fetchSql = []; - foreach ($array as $item) { - $sql = $this->builder->insertAll($this->query, $item); - $bind = $this->query->getBind(); - - $fetchSql[] = $this->connection->getRealSql($sql, $bind); - } - - return implode(';', $fetchSql); - } - - $sql = $this->builder->insertAll($this->query, $dataSet); - - return $this->fetch($sql); - } - - /** - * 通过Select方式插入记录 - * @access public - * @param array $fields 要插入的数据表字段名 - * @param string $table 要插入的数据表名 - * @return string - */ - public function selectInsert(array $fields, string $table): string - { - $this->query->parseOptions(); - - $sql = $this->builder->selectInsert($this->query, $fields, $table); - - return $this->fetch($sql); - } - - /** - * 更新记录 - * @access public - * @param mixed $data 数据 - * @return string - */ - public function update(array $data = []): string - { - $options = $this->query->parseOptions(); - - $data = !empty($data) ? $data : $options['data']; - - $pk = $this->query->getPk(); - - if (empty($options['where'])) { - // 如果存在主键数据 则自动作为更新条件 - if (is_string($pk) && isset($data[$pk])) { - $this->query->where($pk, '=', $data[$pk]); - unset($data[$pk]); - } elseif (is_array($pk)) { - // 增加复合主键支持 - foreach ($pk as $field) { - if (isset($data[$field])) { - $this->query->where($field, '=', $data[$field]); - } else { - // 如果缺少复合主键数据则不执行 - throw new Exception('miss complex primary data'); - } - unset($data[$field]); - } - } - - if (empty($this->query->getOptions('where'))) { - // 如果没有任何更新条件则不执行 - throw new Exception('miss update condition'); - } - } - - // 更新数据 - $this->query->setOption('data', $data); - - // 生成UPDATE SQL语句 - $sql = $this->builder->update($this->query); - - return $this->fetch($sql); - } - - /** - * 删除记录 - * @access public - * @param mixed $data 表达式 true 表示强制删除 - * @return string - */ - public function delete($data = null): string - { - $options = $this->query->parseOptions(); - - if (!is_null($data) && true !== $data) { - // AR模式分析主键条件 - $this->query->parsePkWhere($data); - } - - if (!empty($options['soft_delete'])) { - // 软删除 - list($field, $condition) = $options['soft_delete']; - if ($condition) { - $this->query->setOption('soft_delete', null); - $this->query->setOption('data', [$field => $condition]); - // 生成删除SQL语句 - $sql = $this->builder->delete($this->query); - return $this->fetch($sql); - } - } - - // 生成删除SQL语句 - $sql = $this->builder->delete($this->query); - - return $this->fetch($sql); - } - - /** - * 查找记录 返回SQL - * @access public - * @param mixed $data - * @return string - */ - public function select($data = null): string - { - $this->query->parseOptions(); - - if (!is_null($data)) { - // 主键条件分析 - $this->query->parsePkWhere($data); - } - - // 生成查询SQL - $sql = $this->builder->select($this->query); - - return $this->fetch($sql); - } - - /** - * 查找单条记录 返回SQL语句 - * @access public - * @param mixed $data - * @return string - */ - public function find($data = null): string - { - $this->query->parseOptions(); - - if (!is_null($data)) { - // AR模式分析主键条件 - $this->query->parsePkWhere($data); - } - - // 生成查询SQL - $sql = $this->builder->select($this->query, true); - - // 获取实际执行的SQL语句 - return $this->fetch($sql); - } - - /** - * 查找多条记录 如果不存在则抛出异常 - * @access public - * @param mixed $data - * @return string - */ - public function selectOrFail($data = null): string - { - return $this->select($data); - } - - /** - * 查找单条记录 如果不存在则抛出异常 - * @access public - * @param mixed $data - * @return string - */ - public function findOrFail($data = null): string - { - return $this->find($data); - } - - /** - * 查找单条记录 不存在返回空数据(或者空模型) - * @access public - * @param mixed $data 数据 - * @return string - */ - public function findOrEmpty($data = null) - { - return $this->find($data); - } - - /** - * 获取实际的SQL语句 - * @access public - * @param string $sql - * @return string - */ - public function fetch(string $sql): string - { - $bind = $this->query->getBind(); - - return $this->connection->getRealSql($sql, $bind); - } - - /** - * COUNT查询 - * @access public - * @param string $field 字段名 - * @return string - */ - public function count(string $field = '*'): string - { - $options = $this->query->parseOptions(); - - if (!empty($options['group'])) { - // 支持GROUP - $bind = $this->query->getBind(); - $subSql = $this->query->options($options)->field('count(' . $field . ') AS think_count')->bind($bind)->buildSql(); - - $query = $this->query->newQuery()->table([$subSql => '_group_count_']); - - return $query->fetchsql()->aggregate('COUNT', '*'); - } else { - return $this->aggregate('COUNT', $field); - } - } - - /** - * SUM查询 - * @access public - * @param string $field 字段名 - * @return string - */ - public function sum(string $field): string - { - return $this->aggregate('SUM', $field); - } - - /** - * MIN查询 - * @access public - * @param string $field 字段名 - * @return string - */ - public function min(string $field): string - { - return $this->aggregate('MIN', $field); - } - - /** - * MAX查询 - * @access public - * @param string $field 字段名 - * @return string - */ - public function max(string $field): string - { - return $this->aggregate('MAX', $field); - } - - /** - * AVG查询 - * @access public - * @param string $field 字段名 - * @return string - */ - public function avg(string $field): string - { - return $this->aggregate('AVG', $field); - } - - public function __call($method, $args) - { - if (strtolower(substr($method, 0, 5)) == 'getby') { - // 根据某个字段获取记录 - $field = Str::snake(substr($method, 5)); - return $this->where($field, '=', $args[0])->find(); - } elseif (strtolower(substr($method, 0, 10)) == 'getfieldby') { - // 根据某个字段获取记录的某个值 - $name = Str::snake(substr($method, 10)); - return $this->where($name, '=', $args[0])->value($args[1]); - } - - $result = call_user_func_array([$this->query, $method], $args); - return $result === $this->query ? $this : $result; - } -} diff --git a/vendor/topthink/think-orm/src/db/Mongo.php b/vendor/topthink/think-orm/src/db/Mongo.php deleted file mode 100644 index 6f94f3c6a..000000000 --- a/vendor/topthink/think-orm/src/db/Mongo.php +++ /dev/null @@ -1,715 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); -namespace think\db; - -use MongoDB\Driver\BulkWrite; -use MongoDB\Driver\Command; -use MongoDB\Driver\Cursor; -use MongoDB\Driver\Exception\AuthenticationException; -use MongoDB\Driver\Exception\BulkWriteException; -use MongoDB\Driver\Exception\ConnectionException; -use MongoDB\Driver\Exception\InvalidArgumentException; -use MongoDB\Driver\Exception\RuntimeException; -use MongoDB\Driver\Query as MongoQuery; -use MongoDB\Driver\ReadPreference; -use MongoDB\Driver\WriteConcern; -use think\Collection; -use think\db\connector\Mongo as Connection; -use think\db\exception\DbException as Exception; -use think\Paginator; - -class Mongo extends BaseQuery -{ - /** - * 执行查询 返回数据集 - * @access public - * @param MongoQuery $query 查询对象 - * @return mixed - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - */ - public function query(MongoQuery $query) - { - return $this->connection->query($this, $query); - } - - /** - * 执行指令 返回数据集 - * @access public - * @param Command $command 指令 - * @param string $dbName - * @param ReadPreference $readPreference readPreference - * @param string|array $typeMap 指定返回的typeMap - * @return mixed - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - */ - public function command(Command $command, string $dbName = '', ReadPreference $readPreference = null, $typeMap = null) - { - return $this->connection->command($command, $dbName, $readPreference, $typeMap); - } - - /** - * 执行语句 - * @access public - * @param BulkWrite $bulk - * @return int - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - * @throws BulkWriteException - */ - public function execute(BulkWrite $bulk) - { - return $this->connection->execute($this, $bulk); - } - - /** - * 执行command - * @access public - * @param string|array|object $command 指令 - * @param mixed $extra 额外参数 - * @param string $db 数据库名 - * @return array - */ - public function cmd($command, $extra = null, string $db = ''): array - { - $this->parseOptions(); - return $this->connection->cmd($this, $command, $extra, $db); - } - - /** - * 指定distinct查询 - * @access public - * @param string $field 字段名 - * @return array - */ - public function getDistinct(string $field) - { - $result = $this->cmd('distinct', $field); - return $result[0]['values']; - } - - /** - * 获取数据库的所有collection - * @access public - * @param string $db 数据库名称 留空为当前数据库 - * @throws Exception - */ - public function listCollections(string $db = '') - { - $cursor = $this->cmd('listCollections', null, $db); - $result = []; - foreach ($cursor as $collection) { - $result[] = $collection['name']; - } - - return $result; - } - - /** - * COUNT查询 - * @access public - * @param string $field 字段名 - * @return integer - */ - public function count(string $field = null): int - { - $result = $this->cmd('count'); - - return $result[0]['n']; - } - - /** - * 聚合查询 - * @access public - * @param string $aggregate 聚合指令 - * @param string $field 字段名 - * @param bool $force 强制转为数字类型 - * @return mixed - */ - public function aggregate(string $aggregate, $field, bool $force = false) - { - $result = $this->cmd('aggregate', [strtolower($aggregate), $field]); - $value = $result[0]['aggregate'] ?? 0; - - if ($force) { - $value += 0; - } - - return $value; - } - - /** - * 多聚合操作 - * - * @param array $aggregate 聚合指令, 可以聚合多个参数, 如 ['sum' => 'field1', 'avg' => 'field2'] - * @param array $groupBy 类似mysql里面的group字段, 可以传入多个字段, 如 ['field_a', 'field_b', 'field_c'] - * @return array 查询结果 - */ - public function multiAggregate(array $aggregate, array $groupBy): array - { - $result = $this->cmd('multiAggregate', [$aggregate, $groupBy]); - - foreach ($result as &$row) { - if (isset($row['_id']) && !empty($row['_id'])) { - foreach ($row['_id'] as $k => $v) { - $row[$k] = $v; - } - unset($row['_id']); - } - } - - return $result; - } - - /** - * 字段值增长 - * @access public - * @param string $field 字段名 - * @param float $step 增长值 - * @return $this - */ - public function inc(string $field, float $step = 1) - { - $this->options['data'][$field] = ['$inc', $step]; - - return $this; - } - - /** - * 字段值减少 - * @access public - * @param string $field 字段名 - * @param float $step 减少值 - * @return $this - */ - public function dec(string $field, float $step = 1) - { - return $this->inc($field, -1 * $step); - } - - /** - * 指定当前操作的Collection - * @access public - * @param string $table 表名 - * @return $this - */ - public function table($table) - { - $this->options['table'] = $table; - - return $this; - } - - /** - * table方法的别名 - * @access public - * @param string $collection - * @return $this - */ - public function collection(string $collection) - { - return $this->table($collection); - } - - /** - * 设置typeMap - * @access public - * @param string|array $typeMap - * @return $this - */ - public function typeMap($typeMap) - { - $this->options['typeMap'] = $typeMap; - return $this; - } - - /** - * awaitData - * @access public - * @param bool $awaitData - * @return $this - */ - public function awaitData(bool $awaitData) - { - $this->options['awaitData'] = $awaitData; - return $this; - } - - /** - * batchSize - * @access public - * @param integer $batchSize - * @return $this - */ - public function batchSize(int $batchSize) - { - $this->options['batchSize'] = $batchSize; - return $this; - } - - /** - * exhaust - * @access public - * @param bool $exhaust - * @return $this - */ - public function exhaust(bool $exhaust) - { - $this->options['exhaust'] = $exhaust; - return $this; - } - - /** - * 设置modifiers - * @access public - * @param array $modifiers - * @return $this - */ - public function modifiers(array $modifiers) - { - $this->options['modifiers'] = $modifiers; - return $this; - } - - /** - * 设置noCursorTimeout - * @access public - * @param bool $noCursorTimeout - * @return $this - */ - public function noCursorTimeout(bool $noCursorTimeout) - { - $this->options['noCursorTimeout'] = $noCursorTimeout; - return $this; - } - - /** - * 设置oplogReplay - * @access public - * @param bool $oplogReplay - * @return $this - */ - public function oplogReplay(bool $oplogReplay) - { - $this->options['oplogReplay'] = $oplogReplay; - return $this; - } - - /** - * 设置partial - * @access public - * @param bool $partial - * @return $this - */ - public function partial(bool $partial) - { - $this->options['partial'] = $partial; - return $this; - } - - /** - * maxTimeMS - * @access public - * @param string $maxTimeMS - * @return $this - */ - public function maxTimeMS(string $maxTimeMS) - { - $this->options['maxTimeMS'] = $maxTimeMS; - return $this; - } - - /** - * collation - * @access public - * @param array $collation - * @return $this - */ - public function collation(array $collation) - { - $this->options['collation'] = $collation; - return $this; - } - - /** - * 设置是否REPLACE - * @access public - * @param bool $replace 是否使用REPLACE写入数据 - * @return $this - */ - public function replace(bool $replace = true) - { - return $this; - } - - /** - * 设置返回字段 - * @access public - * @param mixed $field 字段信息 - * @return $this - */ - public function field($field) - { - if (empty($field) || '*' == $field) { - return $this; - } - - if (is_string($field)) { - $field = array_map('trim', explode(',', $field)); - } - - $projection = []; - foreach ($field as $key => $val) { - if (is_numeric($key)) { - $projection[$val] = 1; - } else { - $projection[$key] = $val; - } - } - - $this->options['projection'] = $projection; - - return $this; - } - - /** - * 指定要排除的查询字段 - * @access public - * @param array|string $field 要排除的字段 - * @return $this - */ - public function withoutField($field) - { - if (empty($field) || '*' == $field) { - return $this; - } - - if (is_string($field)) { - $field = array_map('trim', explode(',', $field)); - } - - $projection = []; - foreach ($field as $key => $val) { - if (is_numeric($key)) { - $projection[$val] = 0; - } else { - $projection[$key] = $val; - } - } - - $this->options['projection'] = $projection; - return $this; - } - - /** - * 设置skip - * @access public - * @param integer $skip - * @return $this - */ - public function skip(int $skip) - { - $this->options['skip'] = $skip; - return $this; - } - - /** - * 设置slaveOk - * @access public - * @param bool $slaveOk - * @return $this - */ - public function slaveOk(bool $slaveOk) - { - $this->options['slaveOk'] = $slaveOk; - return $this; - } - - /** - * 指定查询数量 - * @access public - * @param int $offset 起始位置 - * @param int $length 查询数量 - * @return $this - */ - public function limit(int $offset, int $length = null) - { - if (is_null($length)) { - $length = $offset; - $offset = 0; - } - - $this->options['skip'] = $offset; - $this->options['limit'] = $length; - - return $this; - } - - /** - * 设置sort - * @access public - * @param array|string $field - * @param string $order - * @return $this - */ - public function order($field, string $order = '') - { - if (is_array($field)) { - $this->options['sort'] = $field; - } else { - $this->options['sort'][$field] = 'asc' == strtolower($order) ? 1 : -1; - } - return $this; - } - - /** - * 设置tailable - * @access public - * @param bool $tailable - * @return $this - */ - public function tailable(bool $tailable) - { - $this->options['tailable'] = $tailable; - return $this; - } - - /** - * 设置writeConcern对象 - * @access public - * @param WriteConcern $writeConcern - * @return $this - */ - public function writeConcern(WriteConcern $writeConcern) - { - $this->options['writeConcern'] = $writeConcern; - return $this; - } - - /** - * 获取当前数据表的主键 - * @access public - * @return string|array - */ - public function getPk() - { - return $this->pk ?: $this->connection->getConfig('pk'); - } - - /** - * 执行查询但只返回Cursor对象 - * @access public - * @return Cursor - */ - public function getCursor(): Cursor - { - $this->parseOptions(); - - return $this->connection->getCursor($this); - } - - /** - * 获取当前的查询标识 - * @access public - * @param mixed $data 要序列化的数据 - * @return string - */ - public function getQueryGuid($data = null): string - { - return md5($this->getConfig('database') . serialize(var_export($data ?: $this->options, true))); - } - - /** - * 分页查询 - * @access public - * @param int|array $listRows 每页数量 数组表示配置参数 - * @param int|bool $simple 是否简洁模式或者总记录数 - * @return Paginator - * @throws Exception - */ - public function paginate($listRows = null, $simple = false): Paginator - { - if (is_int($simple)) { - $total = $simple; - $simple = false; - } - - $defaultConfig = [ - 'query' => [], //url额外参数 - 'fragment' => '', //url锚点 - 'var_page' => 'page', //分页变量 - 'list_rows' => 15, //每页数量 - ]; - - if (is_array($listRows)) { - $config = array_merge($defaultConfig, $listRows); - $listRows = intval($config['list_rows']); - } else { - $config = $defaultConfig; - $listRows = intval($listRows ?: $config['list_rows']); - } - - $page = isset($config['page']) ? (int) $config['page'] : Paginator::getCurrentPage($config['var_page']); - - $page = $page < 1 ? 1 : $page; - - $config['path'] = $config['path'] ?? Paginator::getCurrentPath(); - - if (!isset($total) && !$simple) { - $options = $this->getOptions(); - - unset($this->options['order'], $this->options['limit'], $this->options['page'], $this->options['field']); - - $total = $this->count(); - $results = $this->options($options)->page($page, $listRows)->select(); - } elseif ($simple) { - $results = $this->limit(($page - 1) * $listRows, $listRows + 1)->select(); - $total = null; - } else { - $results = $this->page($page, $listRows)->select(); - } - - $this->removeOption('limit'); - $this->removeOption('page'); - - return Paginator::make($results, $listRows, $page, $total, $simple, $config); - } - - /** - * 分批数据返回处理 - * @access public - * @param integer $count 每次处理的数据数量 - * @param callable $callback 处理回调方法 - * @param string|array $column 分批处理的字段名 - * @param string $order 字段排序 - * @return bool - * @throws Exception - */ - public function chunk(int $count, callable $callback, $column = null, string $order = 'asc'): bool - { - $options = $this->getOptions(); - $column = $column ?: $this->getPk(); - - if (isset($options['order'])) { - unset($options['order']); - } - - if (is_array($column)) { - $times = 1; - $query = $this->options($options)->page($times, $count); - } else { - $query = $this->options($options)->limit($count); - - if (strpos($column, '.')) { - list($alias, $key) = explode('.', $column); - } else { - $key = $column; - } - } - - $resultSet = $query->order($column, $order)->select(); - - while (count($resultSet) > 0) { - if (false === call_user_func($callback, $resultSet)) { - return false; - } - - if (isset($times)) { - $times++; - $query = $this->options($options)->page($times, $count); - } else { - $end = $resultSet->pop(); - $lastId = is_array($end) ? $end[$key] : $end->getData($key); - - $query = $this->options($options) - ->limit($count) - ->where($column, 'asc' == strtolower($order) ? '>' : '<', $lastId); - } - - $resultSet = $query->order($column, $order)->select(); - } - - return true; - } - - /** - * 分析表达式(可用于查询或者写入操作) - * @access public - * @return array - */ - public function parseOptions(): array - { - $options = $this->options; - - // 获取数据表 - if (empty($options['table'])) { - $options['table'] = $this->getTable(); - } - - foreach (['where', 'data'] as $name) { - if (!isset($options[$name])) { - $options[$name] = []; - } - } - - $modifiers = empty($options['modifiers']) ? [] : $options['modifiers']; - if (isset($options['comment'])) { - $modifiers['$comment'] = $options['comment']; - } - - if (isset($options['maxTimeMS'])) { - $modifiers['$maxTimeMS'] = $options['maxTimeMS']; - } - - if (!empty($modifiers)) { - $options['modifiers'] = $modifiers; - } - - if (!isset($options['projection'])) { - $options['projection'] = []; - } - - if (!isset($options['typeMap'])) { - $options['typeMap'] = $this->getConfig('type_map'); - } - - if (!isset($options['limit'])) { - $options['limit'] = 0; - } - - foreach (['master', 'fetch_sql', 'fetch_cursor'] as $name) { - if (!isset($options[$name])) { - $options[$name] = false; - } - } - - if (isset($options['page'])) { - // 根据页数计算limit - list($page, $listRows) = $options['page']; - $page = $page > 0 ? $page : 1; - $listRows = $listRows > 0 ? $listRows : (is_numeric($options['limit']) ? $options['limit'] : 20); - $offset = $listRows * ($page - 1); - $options['skip'] = intval($offset); - $options['limit'] = intval($listRows); - } - - $this->options = $options; - - return $options; - } - -} diff --git a/vendor/topthink/think-orm/src/db/PDOConnection.php b/vendor/topthink/think-orm/src/db/PDOConnection.php deleted file mode 100644 index b15d42bef..000000000 --- a/vendor/topthink/think-orm/src/db/PDOConnection.php +++ /dev/null @@ -1,1686 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db; - -use Closure; -use PDO; -use PDOStatement; -use think\db\exception\BindParamException; -use think\db\exception\DataNotFoundException; -use think\db\exception\ModelNotFoundException; -use think\db\exception\PDOException; - -/** - * 数据库连接基础类 - */ -abstract class PDOConnection extends Connection implements ConnectionInterface -{ - const PARAM_FLOAT = 21; - - /** - * 数据库连接参数配置 - * @var array - */ - protected $config = [ - // 数据库类型 - 'type' => '', - // 服务器地址 - 'hostname' => '', - // 数据库名 - 'database' => '', - // 用户名 - 'username' => '', - // 密码 - 'password' => '', - // 端口 - 'hostport' => '', - // 连接dsn - 'dsn' => '', - // 数据库连接参数 - 'params' => [], - // 数据库编码默认采用utf8 - 'charset' => 'utf8', - // 数据库表前缀 - 'prefix' => '', - // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) - 'deploy' => 0, - // 数据库读写是否分离 主从式有效 - 'rw_separate' => false, - // 读写分离后 主服务器数量 - 'master_num' => 1, - // 指定从服务器序号 - 'slave_no' => '', - // 模型写入后自动读取主服务器 - 'read_master' => false, - // 是否严格检查字段是否存在 - 'fields_strict' => true, - // 开启字段缓存 - 'fields_cache' => false, - // 监听SQL - 'trigger_sql' => true, - // Builder类 - 'builder' => '', - // Query类 - 'query' => '', - // 是否需要断线重连 - 'break_reconnect' => false, - // 断线标识字符串 - 'break_match_str' => [], - // 字段缓存路径 - 'schema_cache_path' => '', - ]; - - /** - * PDO操作实例 - * @var PDOStatement - */ - protected $PDOStatement; - - /** - * 当前SQL指令 - * @var string - */ - protected $queryStr = ''; - - /** - * 事务指令数 - * @var int - */ - protected $transTimes = 0; - - /** - * 查询结果类型 - * @var int - */ - protected $fetchType = PDO::FETCH_ASSOC; - - /** - * 字段属性大小写 - * @var int - */ - protected $attrCase = PDO::CASE_LOWER; - - /** - * 数据表信息 - * @var array - */ - protected $info = []; - - /** - * 查询开始时间 - * @var float - */ - protected $queryStartTime; - - /** - * PDO连接参数 - * @var array - */ - protected $params = [ - PDO::ATTR_CASE => PDO::CASE_NATURAL, - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL, - PDO::ATTR_STRINGIFY_FETCHES => false, - PDO::ATTR_EMULATE_PREPARES => false, - ]; - - /** - * 参数绑定类型映射 - * @var array - */ - protected $bindType = [ - 'string' => PDO::PARAM_STR, - 'str' => PDO::PARAM_STR, - 'integer' => PDO::PARAM_INT, - 'int' => PDO::PARAM_INT, - 'boolean' => PDO::PARAM_BOOL, - 'bool' => PDO::PARAM_BOOL, - 'float' => self::PARAM_FLOAT, - 'datetime' => PDO::PARAM_STR, - 'timestamp' => PDO::PARAM_STR, - ]; - - /** - * 服务器断线标识字符 - * @var array - */ - protected $breakMatchStr = [ - 'server has gone away', - 'no connection to the server', - 'Lost connection', - 'is dead or not enabled', - 'Error while sending', - 'decryption failed or bad record mac', - 'server closed the connection unexpectedly', - 'SSL connection has been closed unexpectedly', - 'Error writing data to the connection', - 'Resource deadlock avoided', - 'failed with errno', - ]; - - /** - * 绑定参数 - * @var array - */ - protected $bind = []; - - /** - * 架构函数 读取数据库配置信息 - * @access public - * @param array $config 数据库配置数组 - */ - public function __construct(array $config = []) - { - if (!empty($config)) { - $this->config = array_merge($this->config, $config); - } - - // 创建Builder对象 - $class = $this->getBuilderClass(); - - $this->builder = new $class($this); - } - - /** - * 获取当前连接器类对应的Query类 - * @access public - * @return string - */ - public function getQueryClass(): string - { - return $this->getConfig('query') ?: Query::class; - } - - /** - * 获取当前连接器类对应的Builder类 - * @access public - * @return string - */ - public function getBuilderClass(): string - { - return $this->getConfig('builder') ?: '\\think\\db\\builder\\' . ucfirst($this->getConfig('type')); - } - - /** - * 解析pdo连接的dsn信息 - * @access protected - * @param array $config 连接信息 - * @return string - */ - abstract protected function parseDsn(array $config); - - /** - * 取得数据表的字段信息 - * @access public - * @param string $tableName 数据表名称 - * @return array - */ - abstract public function getFields(string $tableName); - - /** - * 取得数据库的表信息 - * @access public - * @param string $dbName 数据库名称 - * @return array - */ - abstract public function getTables(string $dbName); - - /** - * 对返数据表字段信息进行大小写转换出来 - * @access public - * @param array $info 字段信息 - * @return array - */ - public function fieldCase(array $info): array - { - // 字段大小写转换 - switch ($this->attrCase) { - case PDO::CASE_LOWER: - $info = array_change_key_case($info); - break; - case PDO::CASE_UPPER: - $info = array_change_key_case($info, CASE_UPPER); - break; - case PDO::CASE_NATURAL: - default: - // 不做转换 - } - - return $info; - } - - /** - * 获取字段类型 - * @access protected - * @param string $type 字段类型 - * @return string - */ - protected function getFieldType(string $type): string - { - if (0 === strpos($type, 'set') || 0 === strpos($type, 'enum')) { - $result = 'string'; - } elseif (preg_match('/(double|float|decimal|real|numeric)/is', $type)) { - $result = 'float'; - } elseif (preg_match('/(int|serial|bit)/is', $type)) { - $result = 'int'; - } elseif (preg_match('/bool/is', $type)) { - $result = 'bool'; - } elseif (0 === strpos($type, 'timestamp')) { - $result = 'timestamp'; - } elseif (0 === strpos($type, 'datetime')) { - $result = 'datetime'; - } else { - $result = 'string'; - } - - return $result; - } - - /** - * 获取字段绑定类型 - * @access public - * @param string $type 字段类型 - * @return integer - */ - public function getFieldBindType(string $type): int - { - if (in_array($type, ['integer', 'string', 'float', 'boolean', 'bool', 'int', 'str'])) { - $bind = $this->bindType[$type]; - } elseif (0 === strpos($type, 'set') || 0 === strpos($type, 'enum')) { - $bind = PDO::PARAM_STR; - } elseif (preg_match('/(double|float|decimal|real|numeric)/is', $type)) { - $bind = self::PARAM_FLOAT; - } elseif (preg_match('/(int|serial|bit)/is', $type)) { - $bind = PDO::PARAM_INT; - } elseif (preg_match('/bool/is', $type)) { - $bind = PDO::PARAM_BOOL; - } else { - $bind = PDO::PARAM_STR; - } - - return $bind; - } - - /** - * 获取数据表信息 - * @access public - * @param mixed $tableName 数据表名 留空自动获取 - * @param string $fetch 获取信息类型 包括 fields type bind pk - * @return mixed - */ - public function getTableInfo($tableName, string $fetch = '') - { - if (is_array($tableName)) { - $tableName = key($tableName) ?: current($tableName); - } - - if (strpos($tableName, ',') || strpos($tableName, ')')) { - // 多表不获取字段信息 - return []; - } - - list($tableName) = explode(' ', $tableName); - - if (!strpos($tableName, '.')) { - $schema = $this->getConfig('database') . '.' . $tableName; - } else { - $schema = $tableName; - } - - if (!isset($this->info[$schema])) { - // 读取字段缓存 - $cacheFile = $this->config['schema_cache_path'] . $schema . '.php'; - - if ($this->config['fields_cache'] && is_file($cacheFile)) { - $info = include $cacheFile; - } else { - $info = $this->getTableFieldsInfo($tableName); - if ($this->config['fields_cache']) { - if (!is_dir($this->config['schema_cache_path'])) { - mkdir($this->config['schema_cache_path'], 0755, true); - } - - $content = ' $val) { - $bind[$name] = $this->getFieldBindType($val); - } - - $this->info[$schema] = [ - 'fields' => array_keys($info), - 'type' => $info, - 'bind' => $bind, - 'pk' => $pk, - 'autoinc' => $autoinc, - ]; - } - - return $fetch ? $this->info[$schema][$fetch] : $this->info[$schema]; - } - - /** - * 获取数据表的字段信息 - * @access public - * @param string $tableName 数据表名 - * @return array - */ - public function getTableFieldsInfo(string $tableName): array - { - $fields = $this->getFields($tableName); - $info = []; - - foreach ($fields as $key => $val) { - // 记录字段类型 - $info[$key] = $this->getFieldType($val['type']); - - if (!empty($val['primary'])) { - $pk[] = $key; - } - - if (!empty($val['autoinc'])) { - $autoinc = $key; - } - } - - if (isset($pk)) { - // 设置主键 - $pk = count($pk) > 1 ? $pk : $pk[0]; - $info['_pk'] = $pk; - } - - if (isset($autoinc)) { - $info['_autoinc'] = $autoinc; - } - - return $info; - } - - /** - * 获取数据表的主键 - * @access public - * @param mixed $tableName 数据表名 - * @return string|array - */ - public function getPk($tableName) - { - return $this->getTableInfo($tableName, 'pk'); - } - - /** - * 获取数据表的自增主键 - * @access public - * @param mixed $tableName 数据表名 - * @return string - */ - public function getAutoInc($tableName) - { - return $this->getTableInfo($tableName, 'autoinc'); - } - - /** - * 获取数据表字段信息 - * @access public - * @param mixed $tableName 数据表名 - * @return array - */ - public function getTableFields($tableName): array - { - return $this->getTableInfo($tableName, 'fields'); - } - - /** - * 获取数据表字段类型 - * @access public - * @param mixed $tableName 数据表名 - * @param string $field 字段名 - * @return array|string - */ - public function getFieldsType($tableName, string $field = null) - { - $result = $this->getTableInfo($tableName, 'type'); - - if ($field && isset($result[$field])) { - return $result[$field]; - } - - return $result; - } - - /** - * 获取数据表绑定信息 - * @access public - * @param mixed $tableName 数据表名 - * @return array - */ - public function getFieldsBind($tableName): array - { - return $this->getTableInfo($tableName, 'bind'); - } - - /** - * 连接数据库方法 - * @access public - * @param array $config 连接参数 - * @param integer $linkNum 连接序号 - * @param array|bool $autoConnection 是否自动连接主数据库(用于分布式) - * @return PDO - * @throws PDOException - */ - public function connect(array $config = [], $linkNum = 0, $autoConnection = false): PDO - { - if (isset($this->links[$linkNum])) { - return $this->links[$linkNum]; - } - - if (empty($config)) { - $config = $this->config; - } else { - $config = array_merge($this->config, $config); - } - - // 连接参数 - if (isset($config['params']) && is_array($config['params'])) { - $params = $config['params'] + $this->params; - } else { - $params = $this->params; - } - - // 记录当前字段属性大小写设置 - $this->attrCase = $params[PDO::ATTR_CASE]; - - if (!empty($config['break_match_str'])) { - $this->breakMatchStr = array_merge($this->breakMatchStr, (array) $config['break_match_str']); - } - - try { - if (empty($config['dsn'])) { - $config['dsn'] = $this->parseDsn($config); - } - - $startTime = microtime(true); - - $this->links[$linkNum] = $this->createPdo($config['dsn'], $config['username'], $config['password'], $params); - - // SQL监控 - if (!empty($config['trigger_sql'])) { - $this->trigger('CONNECT:[ UseTime:' . number_format(microtime(true) - $startTime, 6) . 's ] ' . $config['dsn']); - } - - return $this->links[$linkNum]; - } catch (\PDOException $e) { - if ($autoConnection) { - $this->db->log($e->getMessage(), 'error'); - return $this->connect($autoConnection, $linkNum); - } else { - throw $e; - } - } - } - - /** - * 创建PDO实例 - * @param $dsn - * @param $username - * @param $password - * @param $params - * @return PDO - */ - protected function createPdo($dsn, $username, $password, $params) - { - return new PDO($dsn, $username, $password, $params); - } - - /** - * 释放查询结果 - * @access public - */ - public function free(): void - { - $this->PDOStatement = null; - } - - /** - * 获取PDO对象 - * @access public - * @return \PDO|false - */ - public function getPdo() - { - if (!$this->linkID) { - return false; - } - - return $this->linkID; - } - - /** - * 执行查询 使用生成器返回数据 - * @access public - * @param BaseQuery $query 查询对象 - * @param string $sql sql指令 - * @param array $bind 参数绑定 - * @param \think\Model $model 模型对象实例 - * @param array $condition 查询条件 - * @return \Generator - */ - public function getCursor(BaseQuery $query, string $sql, array $bind = [], $model = null, $condition = null) - { - $this->queryPDOStatement($query, $sql, $bind); - - // 返回结果集 - while ($result = $this->PDOStatement->fetch($this->fetchType)) { - if ($model) { - yield $model->newInstance($result, $condition); - } else { - yield $result; - } - } - } - - /** - * 执行查询 返回数据集 - * @access public - * @param BaseQuery $query 查询对象 - * @param mixed $sql sql指令 - * @param array $bind 参数绑定 - * @return array - * @throws BindParamException - * @throws \PDOException - * @throws \Exception - * @throws \Throwable - */ - public function query(BaseQuery $query, $sql, array $bind = []): array - { - // 分析查询表达式 - $query->parseOptions(); - - if ($query->getOptions('cache')) { - // 检查查询缓存 - $cacheItem = $this->parseCache($query, $query->getOptions('cache')); - $key = $cacheItem->getKey(); - - if ($this->cache->has($key)) { - return $this->cache->get($key); - } - } - - if ($sql instanceof Closure) { - $sql = $sql($query); - $bind = $query->getBind(); - } - - $master = $query->getOptions('master') ? true : false; - $procedure = $query->getOptions('procedure') ? true : in_array(strtolower(substr(trim($sql), 0, 4)), ['call', 'exec']); - - $this->getPDOStatement($sql, $bind, $master, $procedure); - - $resultSet = $this->getResult($procedure); - - if (isset($cacheItem) && $resultSet) { - // 缓存数据集 - $cacheItem->set($resultSet); - $this->cacheData($cacheItem); - } - - return $resultSet; - } - - /** - * 执行查询但只返回PDOStatement对象 - * @access public - * @param BaseQuery $query 查询对象 - * @return \PDOStatement - */ - public function pdo(BaseQuery $query): PDOStatement - { - $bind = $query->getBind(); - // 生成查询SQL - $sql = $this->builder->select($query); - - return $this->queryPDOStatement($query, $sql, $bind); - } - - /** - * 执行查询但只返回PDOStatement对象 - * @access public - * @param string $sql sql指令 - * @param array $bind 参数绑定 - * @param bool $master 是否在主服务器读操作 - * @param bool $procedure 是否为存储过程调用 - * @return PDOStatement - * @throws BindParamException - * @throws \PDOException - * @throws \Exception - * @throws \Throwable - */ - public function getPDOStatement(string $sql, array $bind = [], bool $master = false, bool $procedure = false): PDOStatement - { - $this->initConnect($this->readMaster ?: $master); - - // 记录SQL语句 - $this->queryStr = $sql; - - $this->bind = $bind; - - $this->db->updateQueryTimes(); - - try { - $this->queryStartTime = microtime(true); - - // 预处理 - $this->PDOStatement = $this->linkID->prepare($sql); - - // 参数绑定 - if ($procedure) { - $this->bindParam($bind); - } else { - $this->bindValue($bind); - } - - // 执行查询 - $this->PDOStatement->execute(); - - // SQL监控 - if (!empty($this->config['trigger_sql'])) { - $this->trigger('', $master); - } - - return $this->PDOStatement; - } catch (\Throwable | \Exception $e) { - if ($this->isBreak($e)) { - return $this->close()->getPDOStatement($sql, $bind, $master, $procedure); - } - - if ($e instanceof \PDOException) { - throw new PDOException($e, $this->config, $this->getLastsql()); - } else { - throw $e; - } - } - } - - /** - * 执行语句 - * @access public - * @param BaseQuery $query 查询对象 - * @param string $sql sql指令 - * @param array $bind 参数绑定 - * @param bool $origin 是否原生查询 - * @return int - * @throws BindParamException - * @throws \PDOException - * @throws \Exception - * @throws \Throwable - */ - public function execute(BaseQuery $query, string $sql, array $bind = [], bool $origin = false): int - { - if ($origin) { - $query->parseOptions(); - } - - $this->queryPDOStatement($query->master(true), $sql, $bind); - - if (!$origin && !empty($this->config['deploy']) && !empty($this->config['read_master'])) { - $this->readMaster = true; - } - - $this->numRows = $this->PDOStatement->rowCount(); - - if ($query->getOptions('cache')) { - // 清理缓存数据 - $cacheItem = $this->parseCache($query, $query->getOptions('cache')); - $key = $cacheItem->getKey(); - $tag = $cacheItem->getTag(); - - if (isset($key) && $this->cache->has($key)) { - $this->cache->delete($key); - } elseif (!empty($tag) && method_exists($this->cache, 'tag')) { - $this->cache->tag($tag)->clear(); - } - } - - return $this->numRows; - } - - protected function queryPDOStatement(BaseQuery $query, string $sql, array $bind = []): PDOStatement - { - $options = $query->getOptions(); - $master = !empty($options['master']) ? true : false; - $procedure = !empty($options['procedure']) ? true : in_array(strtolower(substr(trim($sql), 0, 4)), ['call', 'exec']); - - return $this->getPDOStatement($sql, $bind, $master, $procedure); - } - - /** - * 查找单条记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return array - * @throws DbException - * @throws ModelNotFoundException - * @throws DataNotFoundException - */ - public function find(BaseQuery $query): array - { - // 事件回调 - $result = $this->db->trigger('before_find', $query); - - if (!$result) { - // 执行查询 - $resultSet = $this->query($query, function ($query) { - return $this->builder->select($query, true); - }); - - $result = $resultSet[0] ?? []; - } - - return $result; - } - - /** - * 使用游标查询记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return \Generator - */ - public function cursor(BaseQuery $query) - { - // 分析查询表达式 - $options = $query->parseOptions(); - - // 生成查询SQL - $sql = $this->builder->select($query); - - $condition = $options['where']['AND'] ?? null; - - // 执行查询操作 - return $this->getCursor($query, $sql, $query->getBind(), $query->getModel(), $condition); - } - - /** - * 查找记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return array - * @throws DbException - * @throws ModelNotFoundException - * @throws DataNotFoundException - */ - public function select(BaseQuery $query): array - { - $resultSet = $this->db->trigger('before_select', $query); - - if (!$resultSet) { - // 执行查询操作 - $resultSet = $this->query($query, function ($query) { - return $this->builder->select($query); - }); - } - - return $resultSet; - } - - /** - * 插入记录 - * @access public - * @param BaseQuery $query 查询对象 - * @param boolean $getLastInsID 返回自增主键 - * @return mixed - */ - public function insert(BaseQuery $query, bool $getLastInsID = false) - { - // 分析查询表达式 - $options = $query->parseOptions(); - - // 生成SQL语句 - $sql = $this->builder->insert($query); - - // 执行操作 - $result = '' == $sql ? 0 : $this->execute($query, $sql, $query->getBind()); - - if ($result) { - $sequence = $options['sequence'] ?? null; - $lastInsId = $this->getLastInsID($query, $sequence); - - $data = $options['data']; - - if ($lastInsId) { - $pk = $query->getAutoInc(); - if ($pk) { - $data[$pk] = $lastInsId; - } - } - - $query->setOption('data', $data); - - $this->db->trigger('after_insert', $query); - - if ($getLastInsID && $lastInsId) { - return $lastInsId; - } - } - - return $result; - } - - /** - * 批量插入记录 - * @access public - * @param BaseQuery $query 查询对象 - * @param mixed $dataSet 数据集 - * @param integer $limit 每次写入数据限制 - * @return integer - * @throws \Exception - * @throws \Throwable - */ - public function insertAll(BaseQuery $query, array $dataSet = [], int $limit = 0): int - { - if (!is_array(reset($dataSet))) { - return 0; - } - - $query->parseOptions(); - - if (0 === $limit && count($dataSet) >= 5000) { - $limit = 1000; - } - - if ($limit) { - // 分批写入 自动启动事务支持 - $this->startTrans(); - - try { - $array = array_chunk($dataSet, $limit, true); - $count = 0; - - foreach ($array as $item) { - $sql = $this->builder->insertAll($query, $item); - $count += $this->execute($query, $sql, $query->getBind()); - } - - // 提交事务 - $this->commit(); - } catch (\Exception | \Throwable $e) { - $this->rollback(); - throw $e; - } - - return $count; - } - - $sql = $this->builder->insertAll($query, $dataSet); - - return $this->execute($query, $sql, $query->getBind()); - } - - /** - * 通过Select方式插入记录 - * @access public - * @param BaseQuery $query 查询对象 - * @param array $fields 要插入的数据表字段名 - * @param string $table 要插入的数据表名 - * @return integer - * @throws PDOException - */ - public function selectInsert(BaseQuery $query, array $fields, string $table): int - { - // 分析查询表达式 - $query->parseOptions(); - - $sql = $this->builder->selectInsert($query, $fields, $table); - - return $this->execute($query, $sql, $query->getBind()); - } - - /** - * 更新记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return integer - * @throws PDOException - */ - public function update(BaseQuery $query): int - { - $query->parseOptions(); - - // 生成UPDATE SQL语句 - $sql = $this->builder->update($query); - - // 执行操作 - $result = '' == $sql ? 0 : $this->execute($query, $sql, $query->getBind()); - - if ($result) { - $this->db->trigger('after_update', $query); - } - - return $result; - } - - /** - * 删除记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return int - * @throws PDOException - */ - public function delete(BaseQuery $query): int - { - // 分析查询表达式 - $query->parseOptions(); - - // 生成删除SQL语句 - $sql = $this->builder->delete($query); - - // 执行操作 - $result = $this->execute($query, $sql, $query->getBind()); - - if ($result) { - $this->db->trigger('after_delete', $query); - } - - return $result; - } - - /** - * 得到某个字段的值 - * @access public - * @param BaseQuery $query 查询对象 - * @param string $field 字段名 - * @param mixed $default 默认值 - * @param bool $one 返回一个值 - * @return mixed - */ - public function value(BaseQuery $query, string $field, $default = null, bool $one = true) - { - $options = $query->parseOptions(); - - if (isset($options['field'])) { - $query->removeOption('field'); - } - - if (isset($options['group'])) { - $query->group(''); - } - - $query->setOption('field', (array) $field); - - if (!empty($options['cache'])) { - $cacheItem = $this->parseCache($query, $options['cache']); - $key = $cacheItem->getKey(); - - if ($this->cache->has($key)) { - return $this->cache->get($key); - } - } - - // 生成查询SQL - $sql = $this->builder->select($query, $one); - - if (isset($options['field'])) { - $query->setOption('field', $options['field']); - } else { - $query->removeOption('field'); - } - - if (isset($options['group'])) { - $query->setOption('group', $options['group']); - } - - // 执行查询操作 - $pdo = $this->getPDOStatement($sql, $query->getBind(), $options['master']); - - $result = $pdo->fetchColumn(); - - if (isset($cacheItem)) { - // 缓存数据 - $cacheItem->set($result); - $this->cacheData($cacheItem); - } - - return false !== $result ? $result : $default; - } - - /** - * 得到某个字段的值 - * @access public - * @param BaseQuery $query 查询对象 - * @param string $aggregate 聚合方法 - * @param mixed $field 字段名 - * @param bool $force 强制转为数字类型 - * @return mixed - */ - public function aggregate(BaseQuery $query, string $aggregate, $field, bool $force = false) - { - if (is_string($field) && 0 === stripos($field, 'DISTINCT ')) { - list($distinct, $field) = explode(' ', $field); - } - - $field = $aggregate . '(' . (!empty($distinct) ? 'DISTINCT ' : '') . $this->builder->parseKey($query, $field, true) . ') AS think_' . strtolower($aggregate); - - $result = $this->value($query, $field, 0, false); - - return $force ? (float) $result : $result; - } - - /** - * 得到某个列的数组 - * @access public - * @param BaseQuery $query 查询对象 - * @param string $column 字段名 多个字段用逗号分隔 - * @param string $key 索引 - * @return array - */ - public function column(BaseQuery $query, string $column, string $key = ''): array - { - $options = $query->parseOptions(); - - if (isset($options['field'])) { - $query->removeOption('field'); - } - - if ($key && '*' != $column) { - $field = $key . ',' . $column; - } else { - $field = $column; - } - - $field = array_map('trim', explode(',', $field)); - - $query->setOption('field', $field); - - if (!empty($options['cache'])) { - // 判断查询缓存 - $cacheItem = $this->parseCache($query, $options['cache']); - $key = $cacheItem->getKey(); - - if ($this->cache->has($key)) { - return $this->cache->get($key); - } - } - - // 生成查询SQL - $sql = $this->builder->select($query); - - if (isset($options['field'])) { - $query->setOption('field', $options['field']); - } else { - $query->removeOption('field'); - } - - // 执行查询操作 - $pdo = $this->getPDOStatement($sql, $query->getBind(), $options['master']); - - $resultSet = $pdo->fetchAll(PDO::FETCH_ASSOC); - - if (empty($resultSet)) { - $result = []; - } elseif (('*' == $column || strpos($column, ',')) && $key) { - $result = array_column($resultSet, null, $key); - } else { - $fields = array_keys($resultSet[0]); - $key = $key ?: array_shift($fields); - - if (strpos($column, ',')) { - $column = null; - } elseif (strpos($column, '.')) { - list($alias, $column) = explode('.', $column); - } - - if (strpos($key, '.')) { - list($alias, $key) = explode('.', $key); - } - - $result = array_column($resultSet, $column, $key); - } - - if (isset($cacheItem)) { - // 缓存数据 - $cacheItem->set($result); - $this->cacheData($cacheItem); - } - - return $result; - } - - /** - * 根据参数绑定组装最终的SQL语句 便于调试 - * @access public - * @param string $sql 带参数绑定的sql语句 - * @param array $bind 参数绑定列表 - * @return string - */ - public function getRealSql(string $sql, array $bind = []): string - { - foreach ($bind as $key => $val) { - $value = is_array($val) ? $val[0] : $val; - $type = is_array($val) ? $val[1] : PDO::PARAM_STR; - - if ((self::PARAM_FLOAT == $type || PDO::PARAM_STR == $type) && is_string($value)) { - $value = '\'' . addslashes($value) . '\''; - } elseif (PDO::PARAM_INT == $type && '' === $value) { - $value = 0; - } - - // 判断占位符 - $sql = is_numeric($key) ? - substr_replace($sql, $value, strpos($sql, '?'), 1) : - substr_replace($sql, $value, strpos($sql, ':' . $key), strlen(':' . $key)); - } - - return rtrim($sql); - } - - /** - * 参数绑定 - * 支持 ['name'=>'value','id'=>123] 对应命名占位符 - * 或者 ['value',123] 对应问号占位符 - * @access public - * @param array $bind 要绑定的参数列表 - * @return void - * @throws BindParamException - */ - protected function bindValue(array $bind = []): void - { - foreach ($bind as $key => $val) { - // 占位符 - $param = is_numeric($key) ? $key + 1 : ':' . $key; - - if (is_array($val)) { - if (PDO::PARAM_INT == $val[1] && '' === $val[0]) { - $val[0] = 0; - } elseif (self::PARAM_FLOAT == $val[1]) { - $val[0] = is_string($val[0]) ? (float) $val[0] : $val[0]; - $val[1] = PDO::PARAM_STR; - } - - $result = $this->PDOStatement->bindValue($param, $val[0], $val[1]); - } else { - $result = $this->PDOStatement->bindValue($param, $val); - } - - if (!$result) { - throw new BindParamException( - "Error occurred when binding parameters '{$param}'", - $this->config, - $this->getLastsql(), - $bind - ); - } - } - } - - /** - * 存储过程的输入输出参数绑定 - * @access public - * @param array $bind 要绑定的参数列表 - * @return void - * @throws BindParamException - */ - protected function bindParam(array $bind): void - { - foreach ($bind as $key => $val) { - $param = is_numeric($key) ? $key + 1 : ':' . $key; - - if (is_array($val)) { - array_unshift($val, $param); - $result = call_user_func_array([$this->PDOStatement, 'bindParam'], $val); - } else { - $result = $this->PDOStatement->bindValue($param, $val); - } - - if (!$result) { - $param = array_shift($val); - - throw new BindParamException( - "Error occurred when binding parameters '{$param}'", - $this->config, - $this->getLastsql(), - $bind - ); - } - } - } - - /** - * 获得数据集数组 - * @access protected - * @param bool $procedure 是否存储过程 - * @return array - */ - protected function getResult(bool $procedure = false): array - { - if ($procedure) { - // 存储过程返回结果 - return $this->procedure(); - } - - $result = $this->PDOStatement->fetchAll($this->fetchType); - - $this->numRows = count($result); - - return $result; - } - - /** - * 获得存储过程数据集 - * @access protected - * @return array - */ - protected function procedure(): array - { - $item = []; - - do { - $result = $this->getResult(); - if (!empty($result)) { - $item[] = $result; - } - } while ($this->PDOStatement->nextRowset()); - - $this->numRows = count($item); - - return $item; - } - - /** - * 执行数据库事务 - * @access public - * @param callable $callback 数据操作方法回调 - * @return mixed - * @throws PDOException - * @throws \Exception - * @throws \Throwable - */ - public function transaction(callable $callback) - { - $this->startTrans(); - - try { - $result = null; - if (is_callable($callback)) { - $result = $callback($this); - } - - $this->commit(); - return $result; - } catch (\Exception | \Throwable $e) { - $this->rollback(); - throw $e; - } - } - - /** - * 启动事务 - * @access public - * @return void - * @throws \PDOException - * @throws \Exception - */ - public function startTrans(): void - { - $this->initConnect(true); - - ++$this->transTimes; - - try { - if (1 == $this->transTimes) { - $this->linkID->beginTransaction(); - } elseif ($this->transTimes > 1 && $this->supportSavepoint()) { - $this->linkID->exec( - $this->parseSavepoint('trans' . $this->transTimes) - ); - } - } catch (\Exception $e) { - if ($this->isBreak($e)) { - --$this->transTimes; - $this->close()->startTrans(); - } - throw $e; - } - } - - /** - * 用于非自动提交状态下面的查询提交 - * @access public - * @return void - * @throws PDOException - */ - public function commit(): void - { - $this->initConnect(true); - - if (1 == $this->transTimes) { - $this->linkID->commit(); - } - - --$this->transTimes; - } - - /** - * 事务回滚 - * @access public - * @return void - * @throws PDOException - */ - public function rollback(): void - { - $this->initConnect(true); - - if (1 == $this->transTimes) { - $this->linkID->rollBack(); - } elseif ($this->transTimes > 1 && $this->supportSavepoint()) { - $this->linkID->exec( - $this->parseSavepointRollBack('trans' . $this->transTimes) - ); - } - - $this->transTimes = max(0, $this->transTimes - 1); - } - - /** - * 是否支持事务嵌套 - * @return bool - */ - protected function supportSavepoint(): bool - { - return false; - } - - /** - * 生成定义保存点的SQL - * @access protected - * @param string $name 标识 - * @return string - */ - protected function parseSavepoint(string $name): string - { - return 'SAVEPOINT ' . $name; - } - - /** - * 生成回滚到保存点的SQL - * @access protected - * @param string $name 标识 - * @return string - */ - protected function parseSavepointRollBack(string $name): string - { - return 'ROLLBACK TO SAVEPOINT ' . $name; - } - - /** - * 批处理执行SQL语句 - * 批处理的指令都认为是execute操作 - * @access public - * @param BaseQuery $query 查询对象 - * @param array $sqlArray SQL批处理指令 - * @param array $bind 参数绑定 - * @return bool - */ - public function batchQuery(BaseQuery $query, array $sqlArray = [], array $bind = []): bool - { - // 自动启动事务支持 - $this->startTrans(); - - try { - foreach ($sqlArray as $sql) { - $this->execute($query, $sql, $bind); - } - // 提交事务 - $this->commit(); - } catch (\Exception $e) { - $this->rollback(); - throw $e; - } - - return true; - } - - /** - * 关闭数据库(或者重新连接) - * @access public - * @return $this - */ - public function close() - { - $this->linkID = null; - $this->linkWrite = null; - $this->linkRead = null; - $this->links = []; - - $this->free(); - - return $this; - } - - /** - * 是否断线 - * @access protected - * @param \PDOException|\Exception $e 异常对象 - * @return bool - */ - protected function isBreak($e): bool - { - if (!$this->config['break_reconnect']) { - return false; - } - - $error = $e->getMessage(); - - foreach ($this->breakMatchStr as $msg) { - if (false !== stripos($error, $msg)) { - return true; - } - } - - return false; - } - - /** - * 获取最近一次查询的sql语句 - * @access public - * @return string - */ - public function getLastSql(): string - { - return $this->getRealSql($this->queryStr, $this->bind); - } - - /** - * 获取最近插入的ID - * @access public - * @param BaseQuery $query 查询对象 - * @param string $sequence 自增序列名 - * @return mixed - */ - public function getLastInsID(BaseQuery $query, string $sequence = null) - { - try { - $insertId = $this->linkID->lastInsertId($sequence); - } catch (\Exception $e) { - $insertId = ''; - } - - return $this->autoInsIDType($query, $insertId); - } - - /** - * 获取最近插入的ID - * @access public - * @param BaseQuery $query 查询对象 - * @param string $insertId 自增ID - * @return mixed - */ - protected function autoInsIDType(BaseQuery $query, string $insertId) - { - $pk = $query->getAutoInc(); - - if ($pk) { - $type = $this->getFieldBindType($pk); - - if (PDO::PARAM_INT == $type) { - $insertId = (int) $insertId; - } elseif (self::PARAM_FLOAT == $type) { - $insertId = (float) $insertId; - } - } - - return $insertId; - } - - /** - * 获取最近的错误信息 - * @access public - * @return string - */ - public function getError(): string - { - if ($this->PDOStatement) { - $error = $this->PDOStatement->errorInfo(); - $error = $error[1] . ':' . $error[2]; - } else { - $error = ''; - } - - if ('' != $this->queryStr) { - $error .= "\n [ SQL语句 ] : " . $this->getLastsql(); - } - - return $error; - } - - /** - * 初始化数据库连接 - * @access protected - * @param boolean $master 是否主服务器 - * @return void - */ - protected function initConnect(bool $master = true): void - { - if (!empty($this->config['deploy'])) { - // 采用分布式数据库 - if ($master || $this->transTimes) { - if (!$this->linkWrite) { - $this->linkWrite = $this->multiConnect(true); - } - - $this->linkID = $this->linkWrite; - } else { - if (!$this->linkRead) { - $this->linkRead = $this->multiConnect(false); - } - - $this->linkID = $this->linkRead; - } - } elseif (!$this->linkID) { - // 默认单数据库 - $this->linkID = $this->connect(); - } - } - - /** - * 连接分布式服务器 - * @access protected - * @param boolean $master 主服务器 - * @return PDO - */ - protected function multiConnect(bool $master = false): PDO - { - $config = []; - - // 分布式数据库配置解析 - foreach (['username', 'password', 'hostname', 'hostport', 'database', 'dsn', 'charset'] as $name) { - $config[$name] = is_string($this->config[$name]) ? explode(',', $this->config[$name]) : $this->config[$name]; - } - - // 主服务器序号 - $m = floor(mt_rand(0, $this->config['master_num'] - 1)); - - if ($this->config['rw_separate']) { - // 主从式采用读写分离 - if ($master) // 主服务器写入 - { - $r = $m; - } elseif (is_numeric($this->config['slave_no'])) { - // 指定服务器读 - $r = $this->config['slave_no']; - } else { - // 读操作连接从服务器 每次随机连接的数据库 - $r = floor(mt_rand($this->config['master_num'], count($config['hostname']) - 1)); - } - } else { - // 读写操作不区分服务器 每次随机连接的数据库 - $r = floor(mt_rand(0, count($config['hostname']) - 1)); - } - $dbMaster = false; - - if ($m != $r) { - $dbMaster = []; - foreach (['username', 'password', 'hostname', 'hostport', 'database', 'dsn', 'charset'] as $name) { - $dbMaster[$name] = $config[$name][$m] ?? $config[$name][0]; - } - } - - $dbConfig = []; - - foreach (['username', 'password', 'hostname', 'hostport', 'database', 'dsn', 'charset'] as $name) { - $dbConfig[$name] = $config[$name][$r] ?? $config[$name][0]; - } - - return $this->connect($dbConfig, $r, $r == $m ? false : $dbMaster); - } - - /** - * 启动XA事务 - * @access public - * @param string $xid XA事务id - * @return void - */ - public function startTransXa(string $xid) - {} - - /** - * 预编译XA事务 - * @access public - * @param string $xid XA事务id - * @return void - */ - public function prepareXa(string $xid) - {} - - /** - * 提交XA事务 - * @access public - * @param string $xid XA事务id - * @return void - */ - public function commitXa(string $xid) - {} - - /** - * 回滚XA事务 - * @access public - * @param string $xid XA事务id - * @return void - */ - public function rollbackXa(string $xid) - {} -} diff --git a/vendor/topthink/think-orm/src/db/Query.php b/vendor/topthink/think-orm/src/db/Query.php deleted file mode 100644 index ba0e5e565..000000000 --- a/vendor/topthink/think-orm/src/db/Query.php +++ /dev/null @@ -1,493 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db; - -use PDOStatement; -use think\helper\Str; - -/** - * PDO数据查询类 - */ -class Query extends BaseQuery -{ - use concern\JoinAndViewQuery; - use concern\ParamsBind; - use concern\TableFieldInfo; - - /** - * 表达式方式指定Field排序 - * @access public - * @param string $field 排序字段 - * @param array $bind 参数绑定 - * @return $this - */ - public function orderRaw(string $field, array $bind = []) - { - if (!empty($bind)) { - $this->bindParams($field, $bind); - } - - $this->options['order'][] = new Raw($field); - - return $this; - } - - /** - * 表达式方式指定查询字段 - * @access public - * @param string $field 字段名 - * @return $this - */ - public function fieldRaw(string $field) - { - $this->options['field'][] = new Raw($field); - - return $this; - } - - /** - * 指定Field排序 orderField('id',[1,2,3],'desc') - * @access public - * @param string $field 排序字段 - * @param array $values 排序值 - * @param string $order 排序 desc/asc - * @return $this - */ - public function orderField(string $field, array $values, string $order = '') - { - if (!empty($values)) { - $values['sort'] = $order; - - $this->options['order'][$field] = $values; - } - - return $this; - } - - /** - * 随机排序 - * @access public - * @return $this - */ - public function orderRand() - { - $this->options['order'][] = '[rand]'; - return $this; - } - - /** - * 使用表达式设置数据 - * @access public - * @param string $field 字段名 - * @param string $value 字段值 - * @return $this - */ - public function exp(string $field, string $value) - { - $this->options['data'][$field] = new Raw($value); - return $this; - } - - /** - * 表达式方式指定当前操作的数据表 - * @access public - * @param mixed $table 表名 - * @return $this - */ - public function tableRaw(string $table) - { - $this->options['table'] = new Raw($table); - - return $this; - } - - /** - * 执行查询 返回数据集 - * @access public - * @param string $sql sql指令 - * @param array $bind 参数绑定 - * @return array - * @throws BindParamException - * @throws PDOException - */ - public function query(string $sql, array $bind = []): array - { - return $this->connection->query($this, $sql, $bind); - } - - /** - * 执行语句 - * @access public - * @param string $sql sql指令 - * @param array $bind 参数绑定 - * @return int - * @throws BindParamException - * @throws PDOException - */ - public function execute(string $sql, array $bind = []): int - { - return $this->connection->execute($this, $sql, $bind, true); - } - - /** - * 获取执行的SQL语句而不进行实际的查询 - * @access public - * @param bool $fetch 是否返回sql - * @return $this|Fetch - */ - public function fetchSql(bool $fetch = true) - { - $this->options['fetch_sql'] = $fetch; - - if ($fetch) { - return new Fetch($this); - } - - return $this; - } - - /** - * 批处理执行SQL语句 - * 批处理的指令都认为是execute操作 - * @access public - * @param array $sql SQL批处理指令 - * @return bool - */ - public function batchQuery(array $sql = []): bool - { - return $this->connection->batchQuery($this, $sql); - } - - /** - * USING支持 用于多表删除 - * @access public - * @param mixed $using USING - * @return $this - */ - public function using($using) - { - $this->options['using'] = $using; - return $this; - } - - /** - * 存储过程调用 - * @access public - * @param bool $procedure 是否为存储过程查询 - * @return $this - */ - public function procedure(bool $procedure = true) - { - $this->options['procedure'] = $procedure; - return $this; - } - - /** - * 指定group查询 - * @access public - * @param string|array $group GROUP - * @return $this - */ - public function group($group) - { - $this->options['group'] = $group; - return $this; - } - - /** - * 指定having查询 - * @access public - * @param string $having having - * @return $this - */ - public function having(string $having) - { - $this->options['having'] = $having; - return $this; - } - - /** - * 指定distinct查询 - * @access public - * @param bool $distinct 是否唯一 - * @return $this - */ - public function distinct(bool $distinct = true) - { - $this->options['distinct'] = $distinct; - return $this; - } - - /** - * 设置自增序列名 - * @access public - * @param string $sequence 自增序列名 - * @return $this - */ - public function sequence(string $sequence = null) - { - $this->options['sequence'] = $sequence; - return $this; - } - - /** - * 指定强制索引 - * @access public - * @param string $force 索引名称 - * @return $this - */ - public function force(string $force) - { - $this->options['force'] = $force; - return $this; - } - - /** - * 查询注释 - * @access public - * @param string $comment 注释 - * @return $this - */ - public function comment(string $comment) - { - $this->options['comment'] = $comment; - return $this; - } - - /** - * 设置是否REPLACE - * @access public - * @param bool $replace 是否使用REPLACE写入数据 - * @return $this - */ - public function replace(bool $replace = true) - { - $this->options['replace'] = $replace; - return $this; - } - - /** - * 设置当前查询所在的分区 - * @access public - * @param string|array $partition 分区名称 - * @return $this - */ - public function partition($partition) - { - $this->options['partition'] = $partition; - return $this; - } - - /** - * 设置DUPLICATE - * @access public - * @param array|string|Raw $duplicate DUPLICATE信息 - * @return $this - */ - public function duplicate($duplicate) - { - $this->options['duplicate'] = $duplicate; - return $this; - } - - /** - * 设置查询的额外参数 - * @access public - * @param string $extra 额外信息 - * @return $this - */ - public function extra(string $extra) - { - $this->options['extra'] = $extra; - return $this; - } - - /** - * 创建子查询SQL - * @access public - * @param bool $sub 是否添加括号 - * @return string - * @throws Exception - */ - public function buildSql(bool $sub = true): string - { - return $sub ? '( ' . $this->fetchSql()->select() . ' )' : $this->fetchSql()->select(); - } - - /** - * 获取当前数据表的主键 - * @access public - * @return string|array - */ - public function getPk() - { - if (empty($this->pk)) { - $this->pk = $this->connection->getPk($this->getTable()); - } - - return $this->pk; - } - - /** - * 指定数据表自增主键 - * @access public - * @param string $autoinc 自增键 - * @return $this - */ - public function autoinc(string $autoinc) - { - $this->autoinc = $autoinc; - return $this; - } - - /** - * 获取当前数据表的自增主键 - * @access public - * @return string - */ - public function getAutoInc() - { - if (empty($this->autoinc)) { - $this->autoinc = $this->connection->getAutoInc($this->getTable()); - } - - return $this->autoinc; - } - - /** - * 字段值增长 - * @access public - * @param string $field 字段名 - * @param float $step 增长值 - * @return $this - */ - public function inc(string $field, float $step = 1) - { - $this->options['data'][$field] = ['INC', $step]; - - return $this; - } - - /** - * 字段值减少 - * @access public - * @param string $field 字段名 - * @param float $step 增长值 - * @return $this - */ - public function dec(string $field, float $step = 1) - { - $this->options['data'][$field] = ['DEC', $step]; - return $this; - } - - /** - * 获取当前的查询标识 - * @access public - * @param mixed $data 要序列化的数据 - * @return string - */ - public function getQueryGuid($data = null): string - { - return md5($this->getConfig('database') . serialize(var_export($data ?: $this->options, true)) . serialize($this->getBind(false))); - } - - /** - * 执行查询但只返回PDOStatement对象 - * @access public - * @return PDOStatement - */ - public function getPdo(): PDOStatement - { - return $this->connection->pdo($this); - } - - /** - * 使用游标查找记录 - * @access public - * @param mixed $data 数据 - * @return \Generator - */ - public function cursor($data = null) - { - if (!is_null($data)) { - // 主键条件分析 - $this->parsePkWhere($data); - } - - $this->options['data'] = $data; - - $connection = clone $this->connection; - - return $connection->cursor($this); - } - - /** - * 分批数据返回处理 - * @access public - * @param integer $count 每次处理的数据数量 - * @param callable $callback 处理回调方法 - * @param string|array $column 分批处理的字段名 - * @param string $order 字段排序 - * @return bool - * @throws Exception - */ - public function chunk(int $count, callable $callback, $column = null, string $order = 'asc'): bool - { - $options = $this->getOptions(); - $column = $column ?: $this->getPk(); - - if (isset($options['order'])) { - unset($options['order']); - } - - $bind = $this->bind; - - if (is_array($column)) { - $times = 1; - $query = $this->options($options)->page($times, $count); - } else { - $query = $this->options($options)->limit($count); - - if (strpos($column, '.')) { - list($alias, $key) = explode('.', $column); - } else { - $key = $column; - } - } - - $resultSet = $query->order($column, $order)->select(); - - while (count($resultSet) > 0) { - if (false === call_user_func($callback, $resultSet)) { - return false; - } - - if (isset($times)) { - $times++; - $query = $this->options($options)->page($times, $count); - } else { - $end = $resultSet->pop(); - $lastId = is_array($end) ? $end[$key] : $end->getData($key); - - $query = $this->options($options) - ->limit($count) - ->where($column, 'asc' == strtolower($order) ? '>' : '<', $lastId); - } - - $resultSet = $query->bind($bind)->order($column, $order)->select(); - } - - return true; - } -} diff --git a/vendor/topthink/think-orm/src/db/Raw.php b/vendor/topthink/think-orm/src/db/Raw.php deleted file mode 100644 index 0091a5d6c..000000000 --- a/vendor/topthink/think-orm/src/db/Raw.php +++ /dev/null @@ -1,52 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db; - -/** - * SQL Raw - */ -class Raw -{ - /** - * 查询表达式 - * - * @var string - */ - protected $value; - - /** - * 创建一个查询表达式 - * - * @param string $value - * @return void - */ - public function __construct(string $value) - { - $this->value = $value; - } - - /** - * 获取表达式 - * - * @return string - */ - public function getValue(): string - { - return $this->value; - } - - public function __toString() - { - return (string) $this->value; - } -} diff --git a/vendor/topthink/think-orm/src/db/Where.php b/vendor/topthink/think-orm/src/db/Where.php deleted file mode 100644 index 088046089..000000000 --- a/vendor/topthink/think-orm/src/db/Where.php +++ /dev/null @@ -1,182 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db; - -use ArrayAccess; - -/** - * 数组查询对象 - */ -class Where implements ArrayAccess -{ - /** - * 查询表达式 - * @var array - */ - protected $where = []; - - /** - * 是否需要把查询条件两边增加括号 - * @var bool - */ - protected $enclose = false; - - /** - * 创建一个查询表达式 - * - * @param array $where 查询条件数组 - * @param bool $enclose 是否增加括号 - */ - public function __construct(array $where = [], bool $enclose = false) - { - $this->where = $where; - $this->enclose = $enclose; - } - - /** - * 设置是否添加括号 - * @access public - * @param bool $enclose - * @return $this - */ - public function enclose(bool $enclose = true) - { - $this->enclose = $enclose; - return $this; - } - - /** - * 解析为Query对象可识别的查询条件数组 - * @access public - * @return array - */ - public function parse(): array - { - $where = []; - - foreach ($this->where as $key => $val) { - if ($val instanceof Raw) { - $where[] = [$key, 'exp', $val]; - } elseif (is_null($val)) { - $where[] = [$key, 'NULL', '']; - } elseif (is_array($val)) { - $where[] = $this->parseItem($key, $val); - } else { - $where[] = [$key, '=', $val]; - } - } - - return $this->enclose ? [$where] : $where; - } - - /** - * 分析查询表达式 - * @access protected - * @param string $field 查询字段 - * @param array $where 查询条件 - * @return array - */ - protected function parseItem(string $field, array $where = []): array - { - $op = $where[0]; - $condition = $where[1] ?? null; - - if (is_array($op)) { - // 同一字段多条件查询 - array_unshift($where, $field); - } elseif (is_null($condition)) { - if (is_string($op) && in_array(strtoupper($op), ['NULL', 'NOTNULL', 'NOT NULL'], true)) { - // null查询 - $where = [$field, $op, '']; - } elseif (is_null($op) || '=' == $op) { - $where = [$field, 'NULL', '']; - } elseif ('<>' == $op) { - $where = [$field, 'NOTNULL', '']; - } else { - // 字段相等查询 - $where = [$field, '=', $op]; - } - } else { - $where = [$field, $op, $condition]; - } - - return $where; - } - - /** - * 修改器 设置数据对象的值 - * @access public - * @param string $name 名称 - * @param mixed $value 值 - * @return void - */ - public function __set($name, $value) - { - $this->where[$name] = $value; - } - - /** - * 获取器 获取数据对象的值 - * @access public - * @param string $name 名称 - * @return mixed - */ - public function __get($name) - { - return $this->where[$name] ?? null; - } - - /** - * 检测数据对象的值 - * @access public - * @param string $name 名称 - * @return bool - */ - public function __isset($name) - { - return isset($this->where[$name]); - } - - /** - * 销毁数据对象的值 - * @access public - * @param string $name 名称 - * @return void - */ - public function __unset($name) - { - unset($this->where[$name]); - } - - // ArrayAccess - public function offsetSet($name, $value) - { - $this->__set($name, $value); - } - - public function offsetExists($name) - { - return $this->__isset($name); - } - - public function offsetUnset($name) - { - $this->__unset($name); - } - - public function offsetGet($name) - { - return $this->__get($name); - } - -} diff --git a/vendor/topthink/think-orm/src/db/builder/Mongo.php b/vendor/topthink/think-orm/src/db/builder/Mongo.php deleted file mode 100644 index 85b060034..000000000 --- a/vendor/topthink/think-orm/src/db/builder/Mongo.php +++ /dev/null @@ -1,675 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); -namespace think\db\builder; - -use MongoDB\BSON\Javascript; -use MongoDB\BSON\ObjectID; -use MongoDB\BSON\Regex; -use MongoDB\Driver\BulkWrite; -use MongoDB\Driver\Command; -use MongoDB\Driver\Exception\InvalidArgumentException; -use MongoDB\Driver\Query as MongoQuery; -use think\db\connector\Mongo as Connection; -use think\db\exception\DbException as Exception; -use think\db\Mongo as Query; - -class Mongo -{ - // connection对象实例 - protected $connection; - // 最后插入ID - protected $insertId = []; - // 查询表达式 - protected $exp = ['<>' => 'ne', '=' => 'eq', '>' => 'gt', '>=' => 'gte', '<' => 'lt', '<=' => 'lte', 'in' => 'in', 'not in' => 'nin', 'nin' => 'nin', 'mod' => 'mod', 'exists' => 'exists', 'null' => 'null', 'notnull' => 'not null', 'not null' => 'not null', 'regex' => 'regex', 'type' => 'type', 'all' => 'all', '> time' => '> time', '< time' => '< time', 'between' => 'between', 'not between' => 'not between', 'between time' => 'between time', 'not between time' => 'not between time', 'notbetween time' => 'not between time', 'like' => 'like', 'near' => 'near', 'size' => 'size']; - - /** - * 架构函数 - * @access public - * @param Connection $connection 数据库连接对象实例 - */ - public function __construct(Connection $connection) - { - $this->connection = $connection; - } - - /** - * 获取当前的连接对象实例 - * @access public - * @return Connection - */ - public function getConnection(): Connection - { - return $this->connection; - } - - /** - * key分析 - * @access protected - * @param string $key - * @return string - */ - protected function parseKey(Query $query, string $key): string - { - if (0 === strpos($key, '__TABLE__.')) { - list($collection, $key) = explode('.', $key, 2); - } - - if ('id' == $key && $this->connection->getConfig('pk_convert_id')) { - $key = '_id'; - } - - return trim($key); - } - - /** - * value分析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $value - * @param string $field - * @return string - */ - protected function parseValue(Query $query, $value, $field = '') - { - if ('_id' == $field && 'ObjectID' == $this->connection->getConfig('pk_type') && is_string($value)) { - try { - return new ObjectID($value); - } catch (InvalidArgumentException $e) { - return new ObjectID(); - } - } - - return $value; - } - - /** - * insert数据分析 - * @access protected - * @param Query $query 查询对象 - * @param array $data 数据 - * @return array - */ - protected function parseData(Query $query, array $data): array - { - if (empty($data)) { - return []; - } - - $result = []; - - foreach ($data as $key => $val) { - $item = $this->parseKey($query, $key); - - if (is_object($val)) { - $result[$item] = $val; - } elseif (isset($val[0]) && 'exp' == $val[0]) { - $result[$item] = $val[1]; - } elseif (is_null($val)) { - $result[$item] = 'NULL'; - } else { - $result[$item] = $this->parseValue($query, $val, $key); - } - } - - return $result; - } - - /** - * Set数据分析 - * @access protected - * @param Query $query 查询对象 - * @param array $data 数据 - * @return array - */ - protected function parseSet(Query $query, array $data): array - { - if (empty($data)) { - return []; - } - - $result = []; - - foreach ($data as $key => $val) { - $item = $this->parseKey($query, $key); - - if (is_array($val) && isset($val[0]) && is_string($val[0]) && 0 === strpos($val[0], '$')) { - $result[$val[0]][$item] = $this->parseValue($query, $val[1], $key); - } else { - $result['$set'][$item] = $this->parseValue($query, $val, $key); - } - } - - return $result; - } - - /** - * 生成查询过滤条件 - * @access public - * @param Query $query 查询对象 - * @param mixed $where - * @return array - */ - public function parseWhere(Query $query, array $where): array - { - if (empty($where)) { - $where = []; - } - - $filter = []; - foreach ($where as $logic => $val) { - $logic = '$' . strtolower($logic); - foreach ($val as $field => $value) { - if (is_array($value)) { - if (key($value) !== 0) { - throw new Exception('where express error:' . var_export($value, true)); - } - $field = array_shift($value); - } elseif (!($value instanceof \Closure)) { - throw new Exception('where express error:' . var_export($value, true)); - } - - if ($value instanceof \Closure) { - // 使用闭包查询 - $query = new Query($this->connection); - call_user_func_array($value, [ & $query]); - $filter[$logic][] = $this->parseWhere($query, $query->getOptions('where')); - } else { - if (strpos($field, '|')) { - // 不同字段使用相同查询条件(OR) - $array = explode('|', $field); - foreach ($array as $k) { - $filter['$or'][] = $this->parseWhereItem($query, $k, $value); - } - } elseif (strpos($field, '&')) { - // 不同字段使用相同查询条件(AND) - $array = explode('&', $field); - foreach ($array as $k) { - $filter['$and'][] = $this->parseWhereItem($query, $k, $value); - } - } else { - // 对字段使用表达式查询 - $field = is_string($field) ? $field : ''; - $filter[$logic][] = $this->parseWhereItem($query, $field, $value); - } - } - } - } - - $options = $query->getOptions(); - if (!empty($options['soft_delete'])) { - // 附加软删除条件 - list($field, $condition) = $options['soft_delete']; - $filter['$and'][] = $this->parseWhereItem($query, $field, $condition); - } - - return $filter; - } - - // where子单元分析 - protected function parseWhereItem(Query $query, $field, $val): array - { - $key = $field ? $this->parseKey($query, $field) : ''; - // 查询规则和条件 - if (!is_array($val)) { - $val = ['=', $val]; - } - list($exp, $value) = $val; - - // 对一个字段使用多个查询条件 - if (is_array($exp)) { - $data = []; - foreach ($val as $value) { - $exp = $value[0]; - $value = $value[1]; - if (!in_array($exp, $this->exp)) { - $exp = strtolower($exp); - if (isset($this->exp[$exp])) { - $exp = $this->exp[$exp]; - } - } - $k = '$' . $exp; - $data[$k] = $value; - } - $result[$key] = $data; - return $result; - } elseif (!in_array($exp, $this->exp)) { - $exp = strtolower($exp); - if (isset($this->exp[$exp])) { - $exp = $this->exp[$exp]; - } else { - throw new Exception('where express error:' . $exp); - } - } - - $result = []; - if ('=' == $exp) { - // 普通查询 - $result[$key] = $this->parseValue($query, $value, $key); - } elseif (in_array($exp, ['neq', 'ne', 'gt', 'egt', 'gte', 'lt', 'lte', 'elt', 'mod'])) { - // 比较运算 - $k = '$' . $exp; - $result[$key] = [$k => $this->parseValue($query, $value, $key)]; - } elseif ('null' == $exp) { - // NULL 查询 - $result[$key] = null; - } elseif ('not null' == $exp) { - $result[$key] = ['$ne' => null]; - } elseif ('all' == $exp) { - // 满足所有指定条件 - $result[$key] = ['$all', $this->parseValue($query, $value, $key)]; - } elseif ('between' == $exp) { - // 区间查询 - $value = is_array($value) ? $value : explode(',', $value); - $result[$key] = ['$gte' => $this->parseValue($query, $value[0], $key), '$lte' => $this->parseValue($query, $value[1], $key)]; - } elseif ('not between' == $exp) { - // 范围查询 - $value = is_array($value) ? $value : explode(',', $value); - $result[$key] = ['$lt' => $this->parseValue($query, $value[0], $key), '$gt' => $this->parseValue($query, $value[1], $key)]; - } elseif ('exists' == $exp) { - // 字段是否存在 - $result[$key] = ['$exists' => (bool) $value]; - } elseif ('type' == $exp) { - // 类型查询 - $result[$key] = ['$type' => intval($value)]; - } elseif ('exp' == $exp) { - // 表达式查询 - $result['$where'] = $value instanceof Javascript ? $value : new Javascript($value); - } elseif ('like' == $exp) { - // 模糊查询 采用正则方式 - $result[$key] = $value instanceof Regex ? $value : new Regex($value, 'i'); - } elseif (in_array($exp, ['nin', 'in'])) { - // IN 查询 - $value = is_array($value) ? $value : explode(',', $value); - foreach ($value as $k => $val) { - $value[$k] = $this->parseValue($query, $val, $key); - } - $result[$key] = ['$' . $exp => $value]; - } elseif ('regex' == $exp) { - $result[$key] = $value instanceof Regex ? $value : new Regex($value, 'i'); - } elseif ('< time' == $exp) { - $result[$key] = ['$lt' => $this->parseDateTime($query, $value, $field)]; - } elseif ('> time' == $exp) { - $result[$key] = ['$gt' => $this->parseDateTime($query, $value, $field)]; - } elseif ('between time' == $exp) { - // 区间查询 - $value = is_array($value) ? $value : explode(',', $value); - $result[$key] = ['$gte' => $this->parseDateTime($query, $value[0], $field), '$lte' => $this->parseDateTime($query, $value[1], $field)]; - } elseif ('not between time' == $exp) { - // 范围查询 - $value = is_array($value) ? $value : explode(',', $value); - $result[$key] = ['$lt' => $this->parseDateTime($query, $value[0], $field), '$gt' => $this->parseDateTime($query, $value[1], $field)]; - } elseif ('near' == $exp) { - // 经纬度查询 - $result[$key] = ['$near' => $this->parseValue($query, $value, $key)]; - } elseif ('size' == $exp) { - // 元素长度查询 - $result[$key] = ['$size' => intval($value)]; - } else { - // 普通查询 - $result[$key] = $this->parseValue($query, $value, $key); - } - - return $result; - } - - /** - * 日期时间条件解析 - * @access protected - * @param Query $query 查询对象 - * @param string $value - * @param string $key - * @return string - */ - protected function parseDateTime(Query $query, $value, $key) - { - // 获取时间字段类型 - $type = $query->getFieldType($key); - - if ($type) { - if (is_string($value)) { - $value = strtotime($value) ?: $value; - } - - if (is_int($value)) { - if (preg_match('/(datetime|timestamp)/is', $type)) { - // 日期及时间戳类型 - $value = date('Y-m-d H:i:s', $value); - } elseif (preg_match('/(date)/is', $type)) { - // 日期及时间戳类型 - $value = date('Y-m-d', $value); - } - } - } - - return $value; - } - - /** - * 获取最后写入的ID 如果是insertAll方法的话 返回所有写入的ID - * @access public - * @return mixed - */ - public function getLastInsID() - { - return $this->insertId; - } - - /** - * 生成insert BulkWrite对象 - * @access public - * @param Query $query 查询对象 - * @return BulkWrite - */ - public function insert(Query $query): BulkWrite - { - // 分析并处理数据 - $options = $query->getOptions(); - - $data = $this->parseData($query, $options['data']); - - $bulk = new BulkWrite; - - if ($insertId = $bulk->insert($data)) { - $this->insertId = $insertId; - } - - $this->log('insert', $data, $options); - - return $bulk; - } - - /** - * 生成insertall BulkWrite对象 - * @access public - * @param Query $query 查询对象 - * @param array $dataSet 数据集 - * @return BulkWrite - */ - public function insertAll(Query $query, array $dataSet): BulkWrite - { - $bulk = new BulkWrite; - $options = $query->getOptions(); - - $this->insertId = []; - foreach ($dataSet as $data) { - // 分析并处理数据 - $data = $this->parseData($query, $data); - if ($insertId = $bulk->insert($data)) { - $this->insertId[] = $insertId; - } - } - - $this->log('insert', $dataSet, $options); - - return $bulk; - } - - /** - * 生成update BulkWrite对象 - * @access public - * @param Query $query 查询对象 - * @return BulkWrite - */ - public function update(Query $query): BulkWrite - { - $options = $query->getOptions(); - - $data = $this->parseSet($query, $options['data']); - $where = $this->parseWhere($query, $options['where']); - - if (1 == $options['limit']) { - $updateOptions = ['multi' => false]; - } else { - $updateOptions = ['multi' => true]; - } - - $bulk = new BulkWrite; - - $bulk->update($where, $data, $updateOptions); - - $this->log('update', $data, $where); - - return $bulk; - } - - /** - * 生成delete BulkWrite对象 - * @access public - * @param Query $query 查询对象 - * @return BulkWrite - */ - public function delete(Query $query): BulkWrite - { - $options = $query->getOptions(); - $where = $this->parseWhere($query, $options['where']); - - $bulk = new BulkWrite; - - if (1 == $options['limit']) { - $deleteOptions = ['limit' => 1]; - } else { - $deleteOptions = ['limit' => 0]; - } - - $bulk->delete($where, $deleteOptions); - - $this->log('remove', $where, $deleteOptions); - - return $bulk; - } - - /** - * 生成Mongo查询对象 - * @access public - * @param Query $query 查询对象 - * @param bool $one 是否仅获取一个记录 - * @return MongoQuery - */ - public function select(Query $query, bool $one = false): MongoQuery - { - $options = $query->getOptions(); - - $where = $this->parseWhere($query, $options['where']); - - if ($one) { - $options['limit'] = 1; - } - - $query = new MongoQuery($where, $options); - - $this->log('find', $where, $options); - - return $query; - } - - /** - * 生成Count命令 - * @access public - * @param Query $query 查询对象 - * @return Command - */ - public function count(Query $query): Command - { - $options = $query->getOptions(); - - $cmd['count'] = $options['table']; - $cmd['query'] = (object) $this->parseWhere($query, $options['where']); - - foreach (['hint', 'limit', 'maxTimeMS', 'skip'] as $option) { - if (isset($options[$option])) { - $cmd[$option] = $options[$option]; - } - } - - $command = new Command($cmd); - $this->log('cmd', 'count', $cmd); - - return $command; - } - - /** - * 聚合查询命令 - * @access public - * @param Query $query 查询对象 - * @param array $extra 指令和字段 - * @return Command - */ - public function aggregate(Query $query, array $extra): Command - { - $options = $query->getOptions(); - list($fun, $field) = $extra; - - if ('id' == $field && $this->connection->getConfig('pk_convert_id')) { - $field = '_id'; - } - - $group = isset($options['group']) ? '$' . $options['group'] : null; - - $pipeline = [ - ['$match' => (object) $this->parseWhere($query, $options['where'])], - ['$group' => ['_id' => $group, 'aggregate' => ['$' . $fun => '$' . $field]]], - ]; - - $cmd = [ - 'aggregate' => $options['table'], - 'allowDiskUse' => true, - 'pipeline' => $pipeline, - 'cursor' => new \stdClass, - ]; - - foreach (['explain', 'collation', 'bypassDocumentValidation', 'readConcern'] as $option) { - if (isset($options[$option])) { - $cmd[$option] = $options[$option]; - } - } - - $command = new Command($cmd); - - $this->log('aggregate', $cmd); - - return $command; - } - - /** - * 多聚合查询命令, 可以对多个字段进行 group by 操作 - * - * @param Query $query 查询对象 - * @param array $extra 指令和字段 - * @return Command - */ - public function multiAggregate(Query $query, $extra): Command - { - $options = $query->getOptions(); - - list($aggregate, $groupBy) = $extra; - - $groups = ['_id' => []]; - - foreach ($groupBy as $field) { - $groups['_id'][$field] = '$' . $field; - } - - foreach ($aggregate as $fun => $field) { - $groups[$field . '_' . $fun] = ['$' . $fun => '$' . $field]; - } - - $pipeline = [ - ['$match' => (object) $this->parseWhere($query, $options['where'])], - ['$group' => $groups], - ]; - - $cmd = [ - 'aggregate' => $options['table'], - 'allowDiskUse' => true, - 'pipeline' => $pipeline, - 'cursor' => new \stdClass, - ]; - - foreach (['explain', 'collation', 'bypassDocumentValidation', 'readConcern'] as $option) { - if (isset($options[$option])) { - $cmd[$option] = $options[$option]; - } - } - - $command = new Command($cmd); - $this->log('group', $cmd); - - return $command; - } - - /** - * 生成distinct命令 - * @access public - * @param Query $query 查询对象 - * @param string $field 字段名 - * @return Command - */ - public function distinct(Query $query, $field): Command - { - $options = $query->getOptions(); - - $cmd = [ - 'distinct' => $options['table'], - 'key' => $field, - ]; - - if (!empty($options['where'])) { - $cmd['query'] = (object) $this->parseWhere($query, $options['where']); - } - - if (isset($options['maxTimeMS'])) { - $cmd['maxTimeMS'] = $options['maxTimeMS']; - } - - $command = new Command($cmd); - - $this->log('cmd', 'distinct', $cmd); - - return $command; - } - - /** - * 查询所有的collection - * @access public - * @return Command - */ - public function listcollections(): Command - { - $cmd = ['listCollections' => 1]; - $command = new Command($cmd); - - $this->log('cmd', 'listCollections', $cmd); - - return $command; - } - - /** - * 查询数据表的状态信息 - * @access public - * @param Query $query 查询对象 - * @return Command - */ - public function collStats(Query $query): Command - { - $options = $query->getOptions(); - - $cmd = ['collStats' => $options['table']]; - $command = new Command($cmd); - - $this->log('cmd', 'collStats', $cmd); - - return $command; - } - - protected function log($type, $data, $options = []) - { - $this->connection->mongoLog($type, $data, $options); - } -} diff --git a/vendor/topthink/think-orm/src/db/builder/Mysql.php b/vendor/topthink/think-orm/src/db/builder/Mysql.php deleted file mode 100644 index 33aec85a1..000000000 --- a/vendor/topthink/think-orm/src/db/builder/Mysql.php +++ /dev/null @@ -1,421 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\builder; - -use think\db\Builder; -use think\db\exception\DbException as Exception; -use think\db\Query; -use think\db\Raw; - -/** - * mysql数据库驱动 - */ -class Mysql extends Builder -{ - /** - * 查询表达式解析 - * @var array - */ - protected $parser = [ - 'parseCompare' => ['=', '<>', '>', '>=', '<', '<='], - 'parseLike' => ['LIKE', 'NOT LIKE'], - 'parseBetween' => ['NOT BETWEEN', 'BETWEEN'], - 'parseIn' => ['NOT IN', 'IN'], - 'parseExp' => ['EXP'], - 'parseRegexp' => ['REGEXP', 'NOT REGEXP'], - 'parseNull' => ['NOT NULL', 'NULL'], - 'parseBetweenTime' => ['BETWEEN TIME', 'NOT BETWEEN TIME'], - 'parseTime' => ['< TIME', '> TIME', '<= TIME', '>= TIME'], - 'parseExists' => ['NOT EXISTS', 'EXISTS'], - 'parseColumn' => ['COLUMN'], - 'parseFindInSet' => ['FIND IN SET'], - ]; - - /** - * SELECT SQL表达式 - * @var string - */ - protected $selectSql = 'SELECT%DISTINCT%%EXTRA% %FIELD% FROM %TABLE%%PARTITION%%FORCE%%JOIN%%WHERE%%GROUP%%HAVING%%UNION%%ORDER%%LIMIT% %LOCK%%COMMENT%'; - - /** - * INSERT SQL表达式 - * @var string - */ - protected $insertSql = '%INSERT%%EXTRA% INTO %TABLE%%PARTITION% SET %SET% %DUPLICATE%%COMMENT%'; - - /** - * INSERT ALL SQL表达式 - * @var string - */ - protected $insertAllSql = '%INSERT%%EXTRA% INTO %TABLE%%PARTITION% (%FIELD%) VALUES %DATA% %DUPLICATE%%COMMENT%'; - - /** - * UPDATE SQL表达式 - * @var string - */ - protected $updateSql = 'UPDATE%EXTRA% %TABLE%%PARTITION% %JOIN% SET %SET% %WHERE% %ORDER%%LIMIT% %LOCK%%COMMENT%'; - - /** - * DELETE SQL表达式 - * @var string - */ - protected $deleteSql = 'DELETE%EXTRA% FROM %TABLE%%PARTITION%%USING%%JOIN%%WHERE%%ORDER%%LIMIT% %LOCK%%COMMENT%'; - - /** - * 生成查询SQL - * @access public - * @param Query $query 查询对象 - * @param bool $one 是否仅获取一个记录 - * @return string - */ - public function select(Query $query, bool $one = false): string - { - $options = $query->getOptions(); - - return str_replace( - ['%TABLE%', '%PARTITION%', '%DISTINCT%', '%EXTRA%', '%FIELD%', '%JOIN%', '%WHERE%', '%GROUP%', '%HAVING%', '%ORDER%', '%LIMIT%', '%UNION%', '%LOCK%', '%COMMENT%', '%FORCE%'], - [ - $this->parseTable($query, $options['table']), - $this->parsePartition($query, $options['partition']), - $this->parseDistinct($query, $options['distinct']), - $this->parseExtra($query, $options['extra']), - $this->parseField($query, $options['field']), - $this->parseJoin($query, $options['join']), - $this->parseWhere($query, $options['where']), - $this->parseGroup($query, $options['group']), - $this->parseHaving($query, $options['having']), - $this->parseOrder($query, $options['order']), - $this->parseLimit($query, $one ? '1' : $options['limit']), - $this->parseUnion($query, $options['union']), - $this->parseLock($query, $options['lock']), - $this->parseComment($query, $options['comment']), - $this->parseForce($query, $options['force']), - ], - $this->selectSql); - } - - /** - * 生成Insert SQL - * @access public - * @param Query $query 查询对象 - * @return string - */ - public function insert(Query $query): string - { - $options = $query->getOptions(); - - // 分析并处理数据 - $data = $this->parseData($query, $options['data']); - if (empty($data)) { - return ''; - } - - $set = []; - foreach ($data as $key => $val) { - $set[] = $key . ' = ' . $val; - } - - return str_replace( - ['%INSERT%', '%EXTRA%', '%TABLE%', '%PARTITION%', '%SET%', '%DUPLICATE%', '%COMMENT%'], - [ - !empty($options['replace']) ? 'REPLACE' : 'INSERT', - $this->parseExtra($query, $options['extra']), - $this->parseTable($query, $options['table']), - $this->parsePartition($query, $options['partition']), - implode(' , ', $set), - $this->parseDuplicate($query, $options['duplicate']), - $this->parseComment($query, $options['comment']), - ], - $this->insertSql); - } - - /** - * 生成insertall SQL - * @access public - * @param Query $query 查询对象 - * @param array $dataSet 数据集 - * @param bool $replace 是否replace - * @return string - */ - public function insertAll(Query $query, array $dataSet, bool $replace = false): string - { - $options = $query->getOptions(); - - // 获取绑定信息 - $bind = $query->getFieldsBindType(); - - // 获取合法的字段 - if ('*' == $options['field']) { - $allowFields = array_keys($bind); - } else { - $allowFields = $options['field']; - } - - $fields = []; - $values = []; - - foreach ($dataSet as $data) { - $data = $this->parseData($query, $data, $allowFields, $bind); - - $values[] = '( ' . implode(',', array_values($data)) . ' )'; - - if (!isset($insertFields)) { - $insertFields = array_keys($data); - } - } - - foreach ($insertFields as $field) { - $fields[] = $this->parseKey($query, $field); - } - - return str_replace( - ['%INSERT%', '%EXTRA%', '%TABLE%', '%PARTITION%', '%FIELD%', '%DATA%', '%DUPLICATE%', '%COMMENT%'], - [ - $replace ? 'REPLACE' : 'INSERT', - $this->parseExtra($query, $options['extra']), - $this->parseTable($query, $options['table']), - $this->parsePartition($query, $options['partition']), - implode(' , ', $fields), - implode(' , ', $values), - $this->parseDuplicate($query, $options['duplicate']), - $this->parseComment($query, $options['comment']), - ], - $this->insertAllSql); - } - - /** - * 生成update SQL - * @access public - * @param Query $query 查询对象 - * @return string - */ - public function update(Query $query): string - { - $options = $query->getOptions(); - - $data = $this->parseData($query, $options['data']); - - if (empty($data)) { - return ''; - } - $set = []; - foreach ($data as $key => $val) { - $set[] = $key . ' = ' . $val; - } - - return str_replace( - ['%TABLE%', '%PARTITION%', '%EXTRA%', '%SET%', '%JOIN%', '%WHERE%', '%ORDER%', '%LIMIT%', '%LOCK%', '%COMMENT%'], - [ - $this->parseTable($query, $options['table']), - $this->parsePartition($query, $options['partition']), - $this->parseExtra($query, $options['extra']), - implode(' , ', $set), - $this->parseJoin($query, $options['join']), - $this->parseWhere($query, $options['where']), - $this->parseOrder($query, $options['order']), - $this->parseLimit($query, $options['limit']), - $this->parseLock($query, $options['lock']), - $this->parseComment($query, $options['comment']), - ], - $this->updateSql); - } - - /** - * 生成delete SQL - * @access public - * @param Query $query 查询对象 - * @return string - */ - public function delete(Query $query): string - { - $options = $query->getOptions(); - - return str_replace( - ['%TABLE%', '%PARTITION%', '%EXTRA%', '%USING%', '%JOIN%', '%WHERE%', '%ORDER%', '%LIMIT%', '%LOCK%', '%COMMENT%'], - [ - $this->parseTable($query, $options['table']), - $this->parsePartition($query, $options['partition']), - $this->parseExtra($query, $options['extra']), - !empty($options['using']) ? ' USING ' . $this->parseTable($query, $options['using']) . ' ' : '', - $this->parseJoin($query, $options['join']), - $this->parseWhere($query, $options['where']), - $this->parseOrder($query, $options['order']), - $this->parseLimit($query, $options['limit']), - $this->parseLock($query, $options['lock']), - $this->parseComment($query, $options['comment']), - ], - $this->deleteSql); - } - - /** - * 正则查询 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param string $exp - * @param mixed $value - * @param string $field - * @return string - */ - protected function parseRegexp(Query $query, string $key, string $exp, $value, string $field): string - { - if ($value instanceof Raw) { - $value = $value->getValue(); - } - - return $key . ' ' . $exp . ' ' . $value; - } - - /** - * FIND_IN_SET 查询 - * @access protected - * @param Query $query 查询对象 - * @param string $key - * @param string $exp - * @param mixed $value - * @param string $field - * @return string - */ - protected function parseFindInSet(Query $query, string $key, string $exp, $value, string $field): string - { - if ($value instanceof Raw) { - $value = $value->getValue(); - } - - return 'FIND_IN_SET(' . $value . ', ' . $key . ')'; - } - - /** - * 字段和表名处理 - * @access public - * @param Query $query 查询对象 - * @param mixed $key 字段名 - * @param bool $strict 严格检测 - * @return string - */ - public function parseKey(Query $query, $key, bool $strict = false): string - { - if (is_int($key)) { - return (string) $key; - } elseif ($key instanceof Raw) { - return $key->getValue(); - } - - $key = trim($key); - - if (strpos($key, '->') && false === strpos($key, '(')) { - // JSON字段支持 - list($field, $name) = explode('->', $key, 2); - return 'json_extract(' . $this->parseKey($query, $field) . ', \'$' . (strpos($name, '[') === 0 ? '' : '.') . str_replace('->', '.', $name) . '\')'; - } elseif (strpos($key, '.') && !preg_match('/[,\'\"\(\)`\s]/', $key)) { - list($table, $key) = explode('.', $key, 2); - - $alias = $query->getOptions('alias'); - - if ('__TABLE__' == $table) { - $table = $query->getOptions('table'); - $table = is_array($table) ? array_shift($table) : $table; - } - - if (isset($alias[$table])) { - $table = $alias[$table]; - } - } - - if ($strict && !preg_match('/^[\w\.\*]+$/', $key)) { - throw new Exception('not support data:' . $key); - } - - if ('*' != $key && !preg_match('/[,\'\"\*\(\)`.\s]/', $key)) { - $key = '`' . $key . '`'; - } - - if (isset($table)) { - if (strpos($table, '.')) { - $table = str_replace('.', '`.`', $table); - } - - $key = '`' . $table . '`.' . $key; - } - - return $key; - } - - /** - * 随机排序 - * @access protected - * @param Query $query 查询对象 - * @return string - */ - protected function parseRand(Query $query): string - { - return 'rand()'; - } - - /** - * Partition 分析 - * @access protected - * @param Query $query 查询对象 - * @param string|array $partition 分区 - * @return string - */ - protected function parsePartition(Query $query, $partition): string - { - if ('' == $partition) { - return ''; - } - - if (is_string($partition)) { - $partition = explode(',', $partition); - } - - return ' PARTITION (' . implode(' , ', $partition) . ') '; - } - - /** - * ON DUPLICATE KEY UPDATE 分析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $duplicate - * @return string - */ - protected function parseDuplicate(Query $query, $duplicate): string - { - if ('' == $duplicate) { - return ''; - } - - if ($duplicate instanceof Raw) { - return ' ON DUPLICATE KEY UPDATE ' . $duplicate->getValue() . ' '; - } - - if (is_string($duplicate)) { - $duplicate = explode(',', $duplicate); - } - - $updates = []; - foreach ($duplicate as $key => $val) { - if (is_numeric($key)) { - $val = $this->parseKey($query, $val); - $updates[] = $val . ' = VALUES(' . $val . ')'; - } elseif ($val instanceof Raw) { - $updates[] = $this->parseKey($query, $key) . " = " . $val->getValue(); - } else { - $name = $query->bindValue($val, $query->getConnection()->getFieldBindType($key)); - $updates[] = $this->parseKey($query, $key) . " = :" . $name; - } - } - - return ' ON DUPLICATE KEY UPDATE ' . implode(' , ', $updates) . ' '; - } -} diff --git a/vendor/topthink/think-orm/src/db/builder/Oracle.php b/vendor/topthink/think-orm/src/db/builder/Oracle.php deleted file mode 100644 index 8b6e225d6..000000000 --- a/vendor/topthink/think-orm/src/db/builder/Oracle.php +++ /dev/null @@ -1,95 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\builder; - -use think\db\Builder; -use think\db\Query; - -/** - * Oracle数据库驱动 - */ -class Oracle extends Builder -{ - protected $selectSql = 'SELECT * FROM (SELECT thinkphp.*, rownum AS numrow FROM (SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%) thinkphp ) %LIMIT%%COMMENT%'; - - /** - * limit分析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $limit - * @return string - */ - protected function parseLimit(Query $query, string $limit): string - { - $limitStr = ''; - - if (!empty($limit)) { - $limit = explode(',', $limit); - - if (count($limit) > 1) { - $limitStr = "(numrow>" . $limit[0] . ") AND (numrow<=" . ($limit[0] + $limit[1]) . ")"; - } else { - $limitStr = "(numrow>0 AND numrow<=" . $limit[0] . ")"; - } - - } - - return $limitStr ? ' WHERE ' . $limitStr : ''; - } - - /** - * 设置锁机制 - * @access protected - * @param Query $query 查询对象 - * @param bool|false $lock - * @return string - */ - protected function parseLock(Query $query, $lock = false): string - { - if (!$lock) { - return ''; - } - - return ' FOR UPDATE NOWAIT '; - } - - /** - * 字段和表名处理 - * @access public - * @param Query $query 查询对象 - * @param string $key - * @param string $strict - * @return string - */ - public function parseKey(Query $query, $key, bool $strict = false): string - { - $key = trim($key); - - if (strpos($key, '->') && false === strpos($key, '(')) { - // JSON字段支持 - list($field, $name) = explode($key, '->'); - $key = $field . '."' . $name . '"'; - } - - return $key; - } - - /** - * 随机排序 - * @access protected - * @param Query $query 查询对象 - * @return string - */ - protected function parseRand(Query $query): string - { - return 'DBMS_RANDOM.value'; - } -} diff --git a/vendor/topthink/think-orm/src/db/builder/Pgsql.php b/vendor/topthink/think-orm/src/db/builder/Pgsql.php deleted file mode 100644 index e1c2856b6..000000000 --- a/vendor/topthink/think-orm/src/db/builder/Pgsql.php +++ /dev/null @@ -1,118 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\builder; - -use think\db\Builder; -use think\db\Query; -use think\db\Raw; - -/** - * Pgsql数据库驱动 - */ -class Pgsql extends Builder -{ - /** - * INSERT SQL表达式 - * @var string - */ - protected $insertSql = 'INSERT INTO %TABLE% (%FIELD%) VALUES (%DATA%) %COMMENT%'; - - /** - * INSERT ALL SQL表达式 - * @var string - */ - protected $insertAllSql = 'INSERT INTO %TABLE% (%FIELD%) %DATA% %COMMENT%'; - - /** - * limit分析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $limit - * @return string - */ - public function parseLimit(Query $query, string $limit): string - { - $limitStr = ''; - - if (!empty($limit)) { - $limit = explode(',', $limit); - if (count($limit) > 1) { - $limitStr .= ' LIMIT ' . $limit[1] . ' OFFSET ' . $limit[0] . ' '; - } else { - $limitStr .= ' LIMIT ' . $limit[0] . ' '; - } - } - - return $limitStr; - } - - /** - * 字段和表名处理 - * @access public - * @param Query $query 查询对象 - * @param mixed $key 字段名 - * @param bool $strict 严格检测 - * @return string - */ - public function parseKey(Query $query, $key, bool $strict = false): string - { - if (is_int($key)) { - return (string) $key; - } elseif ($key instanceof Raw) { - return $key->getValue(); - } - - $key = trim($key); - - if (strpos($key, '->') && false === strpos($key, '(')) { - // JSON字段支持 - list($field, $name) = explode('->', $key); - $key = '"' . $field . '"' . '->>\'' . $name . '\''; - } elseif (strpos($key, '.')) { - list($table, $key) = explode('.', $key, 2); - - $alias = $query->getOptions('alias'); - - if ('__TABLE__' == $table) { - $table = $query->getOptions('table'); - $table = is_array($table) ? array_shift($table) : $table; - } - - if (isset($alias[$table])) { - $table = $alias[$table]; - } - - if ('*' != $key && !preg_match('/[,\"\*\(\).\s]/', $key)) { - $key = '"' . $key . '"'; - } - } - - if (isset($table)) { - $key = $table . '.' . $key; - } - - return $key; - } - - /** - * 随机排序 - * @access protected - * @param Query $query 查询对象 - * @return string - */ - protected function parseRand(Query $query): string - { - return 'RANDOM()'; - } - -} diff --git a/vendor/topthink/think-orm/src/db/builder/Sqlite.php b/vendor/topthink/think-orm/src/db/builder/Sqlite.php deleted file mode 100644 index bf8f129b4..000000000 --- a/vendor/topthink/think-orm/src/db/builder/Sqlite.php +++ /dev/null @@ -1,97 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\builder; - -use think\db\Builder; -use think\db\Query; -use think\db\Raw; - -/** - * Sqlite数据库驱动 - */ -class Sqlite extends Builder -{ - /** - * limit - * @access public - * @param Query $query 查询对象 - * @param mixed $limit - * @return string - */ - public function parseLimit(Query $query, string $limit): string - { - $limitStr = ''; - - if (!empty($limit)) { - $limit = explode(',', $limit); - if (count($limit) > 1) { - $limitStr .= ' LIMIT ' . $limit[1] . ' OFFSET ' . $limit[0] . ' '; - } else { - $limitStr .= ' LIMIT ' . $limit[0] . ' '; - } - } - - return $limitStr; - } - - /** - * 随机排序 - * @access protected - * @param Query $query 查询对象 - * @return string - */ - protected function parseRand(Query $query): string - { - return 'RANDOM()'; - } - - /** - * 字段和表名处理 - * @access public - * @param Query $query 查询对象 - * @param mixed $key 字段名 - * @param bool $strict 严格检测 - * @return string - */ - public function parseKey(Query $query, $key, bool $strict = false): string - { - if (is_int($key)) { - return (string) $key; - } elseif ($key instanceof Raw) { - return $key->getValue(); - } - - $key = trim($key); - - if (strpos($key, '.')) { - list($table, $key) = explode('.', $key, 2); - - $alias = $query->getOptions('alias'); - - if ('__TABLE__' == $table) { - $table = $query->getOptions('table'); - $table = is_array($table) ? array_shift($table) : $table; - } - - if (isset($alias[$table])) { - $table = $alias[$table]; - } - } - - if (isset($table)) { - $key = $table . '.' . $key; - } - - return $key; - } -} diff --git a/vendor/topthink/think-orm/src/db/builder/Sqlsrv.php b/vendor/topthink/think-orm/src/db/builder/Sqlsrv.php deleted file mode 100644 index cd06c3427..000000000 --- a/vendor/topthink/think-orm/src/db/builder/Sqlsrv.php +++ /dev/null @@ -1,184 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\db\builder; - -use think\db\Builder; -use think\db\exception\DbException as Exception; -use think\db\Query; -use think\db\Raw; - -/** - * Sqlsrv数据库驱动 - */ -class Sqlsrv extends Builder -{ - /** - * SELECT SQL表达式 - * @var string - */ - protected $selectSql = 'SELECT T1.* FROM (SELECT thinkphp.*, ROW_NUMBER() OVER (%ORDER%) AS ROW_NUMBER FROM (SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%) AS thinkphp) AS T1 %LIMIT%%COMMENT%'; - /** - * SELECT INSERT SQL表达式 - * @var string - */ - protected $selectInsertSql = 'SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%'; - - /** - * UPDATE SQL表达式 - * @var string - */ - protected $updateSql = 'UPDATE %TABLE% SET %SET% FROM %TABLE% %JOIN% %WHERE% %LIMIT% %LOCK%%COMMENT%'; - - /** - * DELETE SQL表达式 - * @var string - */ - protected $deleteSql = 'DELETE FROM %TABLE% %USING% FROM %TABLE% %JOIN% %WHERE% %LIMIT% %LOCK%%COMMENT%'; - - /** - * INSERT SQL表达式 - * @var string - */ - protected $insertSql = 'INSERT INTO %TABLE% (%FIELD%) VALUES (%DATA%) %COMMENT%'; - - /** - * INSERT ALL SQL表达式 - * @var string - */ - protected $insertAllSql = 'INSERT INTO %TABLE% (%FIELD%) %DATA% %COMMENT%'; - - /** - * order分析 - * @access protected - * @param Query $query 查询对象 - * @param mixed $order - * @return string - */ - protected function parseOrder(Query $query, array $order): string - { - if (empty($order)) { - return ' ORDER BY rand()'; - } - - $array = []; - - foreach ($order as $key => $val) { - if ($val instanceof Raw) { - $array[] = $val->getValue(); - } elseif ('[rand]' == $val) { - $array[] = $this->parseRand($query); - } else { - if (is_numeric($key)) { - list($key, $sort) = explode(' ', strpos($val, ' ') ? $val : $val . ' '); - } else { - $sort = $val; - } - - $sort = in_array(strtolower($sort), ['asc', 'desc'], true) ? ' ' . $sort : ''; - $array[] = $this->parseKey($query, $key, true) . $sort; - } - } - - return ' ORDER BY ' . implode(',', $array); - } - - /** - * 随机排序 - * @access protected - * @param Query $query 查询对象 - * @return string - */ - protected function parseRand(Query $query): string - { - return 'rand()'; - } - - /** - * 字段和表名处理 - * @access public - * @param Query $query 查询对象 - * @param mixed $key 字段名 - * @param bool $strict 严格检测 - * @return string - */ - public function parseKey(Query $query, $key, bool $strict = false): string - { - if (is_int($key)) { - return (string) $key; - } elseif ($key instanceof Raw) { - return $key->getValue(); - } - - $key = trim($key); - - if (strpos($key, '.') && !preg_match('/[,\'\"\(\)\[\s]/', $key)) { - list($table, $key) = explode('.', $key, 2); - - $alias = $query->getOptions('alias'); - - if ('__TABLE__' == $table) { - $table = $query->getOptions('table'); - $table = is_array($table) ? array_shift($table) : $table; - } - - if (isset($alias[$table])) { - $table = $alias[$table]; - } - } - - if ($strict && !preg_match('/^[\w\.\*]+$/', $key)) { - throw new Exception('not support data:' . $key); - } - - if ('*' != $key && !preg_match('/[,\'\"\*\(\)\[.\s]/', $key)) { - $key = '[' . $key . ']'; - } - - if (isset($table)) { - $key = '[' . $table . '].' . $key; - } - - return $key; - } - - /** - * limit - * @access protected - * @param Query $query 查询对象 - * @param mixed $limit - * @return string - */ - protected function parseLimit(Query $query, string $limit): string - { - if (empty($limit)) { - return ''; - } - - $limit = explode(',', $limit); - - if (count($limit) > 1) { - $limitStr = '(T1.ROW_NUMBER BETWEEN ' . $limit[0] . ' + 1 AND ' . $limit[0] . ' + ' . $limit[1] . ')'; - } else { - $limitStr = '(T1.ROW_NUMBER BETWEEN 1 AND ' . $limit[0] . ")"; - } - - return 'WHERE ' . $limitStr; - } - - public function selectInsert(Query $query, array $fields, string $table): string - { - $this->selectSql = $this->selectInsertSql; - - return parent::selectInsert($query, $fields, $table); - } - -} diff --git a/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php b/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php deleted file mode 100644 index dabfb921a..000000000 --- a/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php +++ /dev/null @@ -1,107 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\concern; - -use think\db\Raw; - -/** - * 聚合查询 - */ -trait AggregateQuery -{ - /** - * 聚合查询 - * @access protected - * @param string $aggregate 聚合方法 - * @param string|Raw $field 字段名 - * @param bool $force 强制转为数字类型 - * @return mixed - */ - protected function aggregate(string $aggregate, $field, bool $force = false) - { - return $this->connection->aggregate($this, $aggregate, $field, $force); - } - - /** - * COUNT查询 - * @access public - * @param string|Raw $field 字段名 - * @return int - */ - public function count(string $field = '*'): int - { - if (!empty($this->options['group'])) { - // 支持GROUP - $options = $this->getOptions(); - $subSql = $this->options($options) - ->field('count(' . $field . ') AS think_count') - ->bind($this->bind) - ->buildSql(); - - $query = $this->newQuery()->table([$subSql => '_group_count_']); - - $count = $query->aggregate('COUNT', '*'); - } else { - $count = $this->aggregate('COUNT', $field); - } - - return (int) $count; - } - - /** - * SUM查询 - * @access public - * @param string|Raw $field 字段名 - * @return float - */ - public function sum($field): float - { - return $this->aggregate('SUM', $field, true); - } - - /** - * MIN查询 - * @access public - * @param string|Raw $field 字段名 - * @param bool $force 强制转为数字类型 - * @return mixed - */ - public function min($field, bool $force = true) - { - return $this->aggregate('MIN', $field, $force); - } - - /** - * MAX查询 - * @access public - * @param string|Raw $field 字段名 - * @param bool $force 强制转为数字类型 - * @return mixed - */ - public function max($field, bool $force = true) - { - return $this->aggregate('MAX', $field, $force); - } - - /** - * AVG查询 - * @access public - * @param string|Raw $field 字段名 - * @return float - */ - public function avg($field): float - { - return $this->aggregate('AVG', $field, true); - } - -} diff --git a/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php b/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php deleted file mode 100644 index cd48ab282..000000000 --- a/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php +++ /dev/null @@ -1,229 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\concern; - -use think\db\Raw; -use think\helper\Str; - -/** - * JOIN和VIEW查询 - */ -trait JoinAndViewQuery -{ - - /** - * 查询SQL组装 join - * @access public - * @param mixed $join 关联的表名 - * @param mixed $condition 条件 - * @param string $type JOIN类型 - * @param array $bind 参数绑定 - * @return $this - */ - public function join($join, string $condition = null, string $type = 'INNER', array $bind = []) - { - $table = $this->getJoinTable($join); - - if (!empty($bind) && $condition) { - $this->bindParams($condition, $bind); - } - - $this->options['join'][] = [$table, strtoupper($type), $condition]; - - return $this; - } - - /** - * LEFT JOIN - * @access public - * @param mixed $join 关联的表名 - * @param mixed $condition 条件 - * @param array $bind 参数绑定 - * @return $this - */ - public function leftJoin($join, string $condition = null, array $bind = []) - { - return $this->join($join, $condition, 'LEFT', $bind); - } - - /** - * RIGHT JOIN - * @access public - * @param mixed $join 关联的表名 - * @param mixed $condition 条件 - * @param array $bind 参数绑定 - * @return $this - */ - public function rightJoin($join, string $condition = null, array $bind = []) - { - return $this->join($join, $condition, 'RIGHT', $bind); - } - - /** - * FULL JOIN - * @access public - * @param mixed $join 关联的表名 - * @param mixed $condition 条件 - * @param array $bind 参数绑定 - * @return $this - */ - public function fullJoin($join, string $condition = null, array $bind = []) - { - return $this->join($join, $condition, 'FULL'); - } - - /** - * 获取Join表名及别名 支持 - * ['prefix_table或者子查询'=>'alias'] 'table alias' - * @access protected - * @param array|string|Raw $join JION表名 - * @param string $alias 别名 - * @return string|array - */ - protected function getJoinTable($join, &$alias = null) - { - if (is_array($join)) { - $table = $join; - $alias = array_shift($join); - return $table; - } elseif ($join instanceof Raw) { - return $join; - } - - $join = trim($join); - - if (false !== strpos($join, '(')) { - // 使用子查询 - $table = $join; - } else { - // 使用别名 - if (strpos($join, ' ')) { - // 使用别名 - list($table, $alias) = explode(' ', $join); - } else { - $table = $join; - if (false === strpos($join, '.')) { - $alias = $join; - } - } - - if ($this->prefix && false === strpos($table, '.') && 0 !== strpos($table, $this->prefix)) { - $table = $this->getTable($table); - } - } - - if (!empty($alias) && $table != $alias) { - $table = [$table => $alias]; - } - - return $table; - } - - /** - * 指定JOIN查询字段 - * @access public - * @param string|array $join 数据表 - * @param string|array $field 查询字段 - * @param string $on JOIN条件 - * @param string $type JOIN类型 - * @param array $bind 参数绑定 - * @return $this - */ - public function view($join, $field = true, $on = null, string $type = 'INNER', array $bind = []) - { - $this->options['view'] = true; - - $fields = []; - $table = $this->getJoinTable($join, $alias); - - if (true === $field) { - $fields = $alias . '.*'; - } else { - if (is_string($field)) { - $field = explode(',', $field); - } - - foreach ($field as $key => $val) { - if (is_numeric($key)) { - $fields[] = $alias . '.' . $val; - - $this->options['map'][$val] = $alias . '.' . $val; - } else { - if (preg_match('/[,=\.\'\"\(\s]/', $key)) { - $name = $key; - } else { - $name = $alias . '.' . $key; - } - - $fields[] = $name . ' AS ' . $val; - - $this->options['map'][$val] = $name; - } - } - } - - $this->field($fields); - - if ($on) { - $this->join($table, $on, $type, $bind); - } else { - $this->table($table); - } - - return $this; - } - - /** - * 视图查询处理 - * @access protected - * @param array $options 查询参数 - * @return void - */ - protected function parseView(array &$options): void - { - foreach (['AND', 'OR'] as $logic) { - if (isset($options['where'][$logic])) { - foreach ($options['where'][$logic] as $key => $val) { - if (array_key_exists($key, $options['map'])) { - array_shift($val); - array_unshift($val, $options['map'][$key]); - $options['where'][$logic][$options['map'][$key]] = $val; - unset($options['where'][$logic][$key]); - } - } - } - } - - if (isset($options['order'])) { - // 视图查询排序处理 - foreach ($options['order'] as $key => $val) { - if (is_numeric($key) && is_string($val)) { - if (strpos($val, ' ')) { - list($field, $sort) = explode(' ', $val); - if (array_key_exists($field, $options['map'])) { - $options['order'][$options['map'][$field]] = $sort; - unset($options['order'][$key]); - } - } elseif (array_key_exists($val, $options['map'])) { - $options['order'][$options['map'][$val]] = 'asc'; - unset($options['order'][$key]); - } - } elseif (array_key_exists($key, $options['map'])) { - $options['order'][$options['map'][$key]] = $val; - unset($options['order'][$key]); - } - } - } - } - -} diff --git a/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php b/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php deleted file mode 100644 index 9a2113795..000000000 --- a/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php +++ /dev/null @@ -1,516 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\concern; - -use Closure; -use think\helper\Str; -use think\Model; -use think\model\Collection as ModelCollection; - -/** - * 模型及关联查询 - */ -trait ModelRelationQuery -{ - - /** - * 当前模型对象 - * @var Model - */ - protected $model; - - /** - * 指定模型 - * @access public - * @param Model $model 模型对象实例 - * @return $this - */ - public function model(Model $model) - { - $this->model = $model; - return $this; - } - - /** - * 获取当前的模型对象 - * @access public - * @return Model|null - */ - public function getModel() - { - return $this->model; - } - - /** - * 设置需要隐藏的输出属性 - * @access public - * @param array $hidden 需要隐藏的字段名 - * @return $this - */ - public function hidden(array $hidden) - { - $this->options['hidden'] = $hidden; - return $this; - } - - /** - * 设置需要输出的属性 - * @access public - * @param array $visible 需要输出的属性 - * @return $this - */ - public function visible(array $visible) - { - $this->options['visible'] = $visible; - return $this; - } - - /** - * 设置需要追加输出的属性 - * @access public - * @param array $append 需要追加的属性 - * @return $this - */ - public function append(array $append) - { - $this->options['append'] = $append; - return $this; - } - - /** - * 添加查询范围 - * @access public - * @param array|string|Closure $scope 查询范围定义 - * @param array $args 参数 - * @return $this - */ - public function scope($scope, ...$args) - { - // 查询范围的第一个参数始终是当前查询对象 - array_unshift($args, $this); - - if ($scope instanceof Closure) { - call_user_func_array($scope, $args); - return $this; - } - - if (is_string($scope)) { - $scope = explode(',', $scope); - } - - if ($this->model) { - // 检查模型类的查询范围方法 - foreach ($scope as $name) { - $method = 'scope' . trim($name); - - if (method_exists($this->model, $method)) { - call_user_func_array([$this->model, $method], $args); - } - } - } - - return $this; - } - - /** - * 设置关联查询 - * @access public - * @param array $relation 关联名称 - * @return $this - */ - public function relation(array $relation) - { - if (!empty($relation)) { - $this->options['relation'] = $relation; - } - - return $this; - } - - /** - * 使用搜索器条件搜索字段 - * @access public - * @param array $fields 搜索字段 - * @param array $data 搜索数据 - * @param string $prefix 字段前缀标识 - * @return $this - */ - public function withSearch(array $fields, array $data = [], string $prefix = '') - { - foreach ($fields as $key => $field) { - if ($field instanceof Closure) { - $field($this, $data[$key] ?? null, $data, $prefix); - } elseif ($this->model) { - // 检测搜索器 - $fieldName = is_numeric($key) ? $field : $key; - $method = 'search' . Str::studly($fieldName) . 'Attr'; - - if (method_exists($this->model, $method)) { - $this->model->$method($this, $data[$field] ?? null, $data, $prefix); - } - } - } - - return $this; - } - - /** - * 设置数据字段获取器 - * @access public - * @param string|array $name 字段名 - * @param callable $callback 闭包获取器 - * @return $this - */ - public function withAttr($name, callable $callback = null) - { - if (is_array($name)) { - $this->options['with_attr'] = $name; - } else { - $this->options['with_attr'][$name] = $callback; - } - - return $this; - } - - /** - * 关联预载入 In方式 - * @access public - * @param array|string $with 关联方法名称 - * @return $this - */ - public function with($with) - { - if (!empty($with)) { - $this->options['with'] = (array) $with; - } - - return $this; - } - - /** - * 关联预载入 JOIN方式 - * @access protected - * @param array|string $with 关联方法名 - * @param string $joinType JOIN方式 - * @return $this - */ - public function withJoin($with, string $joinType = '') - { - if (empty($with)) { - return $this; - } - - $with = (array) $with; - $first = true; - - foreach ($with as $key => $relation) { - $closure = null; - $field = true; - - if ($relation instanceof Closure) { - // 支持闭包查询过滤关联条件 - $closure = $relation; - $relation = $key; - } elseif (is_array($relation)) { - $field = $relation; - $relation = $key; - } elseif (is_string($relation) && strpos($relation, '.')) { - $relation = strstr($relation, '.', true); - } - - $result = $this->model->eagerly($this, $relation, $field, $joinType, $closure, $first); - - if (!$result) { - unset($with[$key]); - } else { - $first = false; - } - } - - $this->via(); - - $this->options['with_join'] = $with; - - return $this; - } - - /** - * 关联统计 - * @access protected - * @param array|string $relations 关联方法名 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param bool $subQuery 是否使用子查询 - * @return $this - */ - protected function withAggregate($relations, string $aggregate = 'count', $field = '*', bool $subQuery = true) - { - if (!$subQuery) { - $this->options['with_count'][] = [$relations, $aggregate, $field]; - } else { - if (!isset($this->options['field'])) { - $this->field('*'); - } - - $this->model->relationCount($this, (array) $relations, $aggregate, $field, true); - } - - return $this; - } - - /** - * 关联缓存 - * @access public - * @param string|array|bool $relation 关联方法名 - * @param mixed $key 缓存key - * @param integer|\DateTime $expire 缓存有效期 - * @param string $tag 缓存标签 - * @return $this - */ - public function withCache($relation = true, $key = true, $expire = null, string $tag = null) - { - if (false === $relation || false === $key || !$this->getConnection()->getCache()) { - return $this; - } - - if ($key instanceof \DateTimeInterface || $key instanceof \DateInterval || (is_int($key) && is_null($expire))) { - $expire = $key; - $key = true; - } - - if (true === $relation || is_numeric($relation)) { - $this->options['with_cache'] = $relation; - return $this; - } - - $relations = (array) $relation; - foreach ($relations as $name => $relation) { - if (!is_numeric($name)) { - $this->options['with_cache'][$name] = is_array($relation) ? $relation : [$key, $relation, $tag]; - } else { - $this->options['with_cache'][$relation] = [$key, $expire, $tag]; - } - } - - return $this; - } - - /** - * 关联统计 - * @access public - * @param string|array $relation 关联方法名 - * @param bool $subQuery 是否使用子查询 - * @return $this - */ - public function withCount($relation, bool $subQuery = true) - { - return $this->withAggregate($relation, 'count', '*', $subQuery); - } - - /** - * 关联统计Sum - * @access public - * @param string|array $relation 关联方法名 - * @param string $field 字段 - * @param bool $subQuery 是否使用子查询 - * @return $this - */ - public function withSum($relation, string $field, bool $subQuery = true) - { - return $this->withAggregate($relation, 'sum', $field, $subQuery); - } - - /** - * 关联统计Max - * @access public - * @param string|array $relation 关联方法名 - * @param string $field 字段 - * @param bool $subQuery 是否使用子查询 - * @return $this - */ - public function withMax($relation, string $field, bool $subQuery = true) - { - return $this->withAggregate($relation, 'max', $field, $subQuery); - } - - /** - * 关联统计Min - * @access public - * @param string|array $relation 关联方法名 - * @param string $field 字段 - * @param bool $subQuery 是否使用子查询 - * @return $this - */ - public function withMin($relation, string $field, bool $subQuery = true) - { - return $this->withAggregate($relation, 'min', $field, $subQuery); - } - - /** - * 关联统计Avg - * @access public - * @param string|array $relation 关联方法名 - * @param string $field 字段 - * @param bool $subQuery 是否使用子查询 - * @return $this - */ - public function withAvg($relation, string $field, bool $subQuery = true) - { - return $this->withAggregate($relation, 'avg', $field, $subQuery); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $relation 关联方法名 - * @param mixed $operator 比较操作符 - * @param integer $count 个数 - * @param string $id 关联表的统计字段 - * @param string $joinType JOIN类型 - * @return $this - */ - public function has(string $relation, string $operator = '>=', int $count = 1, string $id = '*', string $joinType = '') - { - return $this->model->has($relation, $operator, $count, $id, $joinType, $this); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $relation 关联方法名 - * @param mixed $where 查询条件(数组或者闭包) - * @param mixed $fields 字段 - * @param string $joinType JOIN类型 - * @return $this - */ - public function hasWhere(string $relation, $where = [], string $fields = '*', string $joinType = '') - { - return $this->model->hasWhere($relation, $where, $fields, $joinType, $this); - } - - /** - * 查询数据转换为模型数据集对象 - * @access protected - * @param array $resultSet 数据集 - * @return ModelCollection - */ - protected function resultSetToModelCollection(array $resultSet): ModelCollection - { - if (empty($resultSet)) { - return $this->model->toCollection(); - } - - // 检查动态获取器 - if (!empty($this->options['with_attr'])) { - foreach ($this->options['with_attr'] as $name => $val) { - if (strpos($name, '.')) { - list($relation, $field) = explode('.', $name); - - $withRelationAttr[$relation][$field] = $val; - unset($this->options['with_attr'][$name]); - } - } - } - - $withRelationAttr = $withRelationAttr ?? []; - - foreach ($resultSet as $key => &$result) { - // 数据转换为模型对象 - $this->resultToModel($result, $this->options, true, $withRelationAttr); - } - - if (!empty($this->options['with'])) { - // 预载入 - $result->eagerlyResultSet($resultSet, $this->options['with'], $withRelationAttr, false, $this->options['with_cache'] ?? false); - } - - if (!empty($this->options['with_join'])) { - // 预载入 - $result->eagerlyResultSet($resultSet, $this->options['with_join'], $withRelationAttr, true, $this->options['with_cache'] ?? false); - } - - // 模型数据集转换 - return $this->model->toCollection($resultSet); - } - - /** - * 查询数据转换为模型对象 - * @access protected - * @param array $result 查询数据 - * @param array $options 查询参数 - * @param bool $resultSet 是否为数据集查询 - * @param array $withRelationAttr 关联字段获取器 - * @return void - */ - protected function resultToModel(array &$result, array $options = [], bool $resultSet = false, array $withRelationAttr = []): void - { - // 动态获取器 - if (!empty($options['with_attr']) && empty($withRelationAttr)) { - foreach ($options['with_attr'] as $name => $val) { - if (strpos($name, '.')) { - list($relation, $field) = explode('.', $name); - - $withRelationAttr[$relation][$field] = $val; - unset($options['with_attr'][$name]); - } - } - } - - // JSON 数据处理 - if (!empty($options['json'])) { - $this->jsonResult($result, $options['json'], $options['json_assoc'], $withRelationAttr); - } - - $result = $this->model - ->newInstance($result, $resultSet ? null : $this->getModelUpdateCondition($options)); - - // 动态获取器 - if (!empty($options['with_attr'])) { - $result->withAttribute($options['with_attr']); - } - - // 输出属性控制 - if (!empty($options['visible'])) { - $result->visible($options['visible']); - } elseif (!empty($options['hidden'])) { - $result->hidden($options['hidden']); - } - - if (!empty($options['append'])) { - $result->append($options['append']); - } - - // 关联查询 - if (!empty($options['relation'])) { - $result->relationQuery($options['relation'], $withRelationAttr); - } - - // 预载入查询 - if (!$resultSet && !empty($options['with'])) { - $result->eagerlyResult($result, $options['with'], $withRelationAttr, false, $options['with_cache'] ?? false); - } - - // JOIN预载入查询 - if (!$resultSet && !empty($options['with_join'])) { - $result->eagerlyResult($result, $options['with_join'], $withRelationAttr, true, $options['with_cache'] ?? false); - } - - // 关联统计 - if (!empty($options['with_count'])) { - foreach ($options['with_count'] as $val) { - $result->relationCount($this, (array) $val[0], $val[1], $val[2], false); - } - } - } - -} diff --git a/vendor/topthink/think-orm/src/db/concern/ParamsBind.php b/vendor/topthink/think-orm/src/db/concern/ParamsBind.php deleted file mode 100644 index 2ae858c26..000000000 --- a/vendor/topthink/think-orm/src/db/concern/ParamsBind.php +++ /dev/null @@ -1,106 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\concern; - -use PDO; - -/** - * 参数绑定支持 - */ -trait ParamsBind -{ - /** - * 当前参数绑定 - * @var array - */ - protected $bind = []; - - /** - * 批量参数绑定 - * @access public - * @param array $value 绑定变量值 - * @return $this - */ - public function bind(array $value) - { - $this->bind = array_merge($this->bind, $value); - return $this; - } - - /** - * 单个参数绑定 - * @access public - * @param mixed $value 绑定变量值 - * @param integer $type 绑定类型 - * @param string $name 绑定标识 - * @return string - */ - public function bindValue($value, int $type = null, string $name = null) - { - $name = $name ?: 'ThinkBind_' . (count($this->bind) + 1) . '_' . mt_rand() . '_'; - - $this->bind[$name] = [$value, $type ?: PDO::PARAM_STR]; - return $name; - } - - /** - * 检测参数是否已经绑定 - * @access public - * @param string $key 参数名 - * @return bool - */ - public function isBind($key) - { - return isset($this->bind[$key]); - } - - /** - * 参数绑定 - * @access public - * @param string $sql 绑定的sql表达式 - * @param array $bind 参数绑定 - * @return void - */ - protected function bindParams(string &$sql, array $bind = []): void - { - foreach ($bind as $key => $value) { - if (is_array($value)) { - $name = $this->bindValue($value[0], $value[1], $value[2] ?? null); - } else { - $name = $this->bindValue($value); - } - - if (is_numeric($key)) { - $sql = substr_replace($sql, ':' . $name, strpos($sql, '?'), 1); - } else { - $sql = str_replace(':' . $key, ':' . $name, $sql); - } - } - } - - /** - * 获取绑定的参数 并清空 - * @access public - * @param bool $clear 是否清空绑定数据 - * @return array - */ - public function getBind(bool $clear = true): array - { - $bind = $this->bind; - if ($clear) { - $this->bind = []; - } - - return $bind; - } -} diff --git a/vendor/topthink/think-orm/src/db/concern/ResultOperation.php b/vendor/topthink/think-orm/src/db/concern/ResultOperation.php deleted file mode 100644 index 563f98938..000000000 --- a/vendor/topthink/think-orm/src/db/concern/ResultOperation.php +++ /dev/null @@ -1,248 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\concern; - -use think\Collection; -use think\db\exception\DataNotFoundException; -use think\db\exception\ModelNotFoundException; -use think\helper\Str; - -/** - * 查询数据处理 - */ -trait ResultOperation -{ - /** - * 是否允许返回空数据(或空模型) - * @access public - * @param bool $allowEmpty 是否允许为空 - * @return $this - */ - public function allowEmpty(bool $allowEmpty = true) - { - $this->options['allow_empty'] = $allowEmpty; - return $this; - } - - /** - * 设置查询数据不存在是否抛出异常 - * @access public - * @param bool $fail 数据不存在是否抛出异常 - * @return $this - */ - public function failException(bool $fail = true) - { - $this->options['fail'] = $fail; - return $this; - } - - /** - * 处理数据 - * @access protected - * @param array $result 查询数据 - * @return void - */ - protected function result(array &$result): void - { - if (!empty($this->options['json'])) { - $this->jsonResult($result, $this->options['json'], true); - } - - if (!empty($this->options['with_attr'])) { - $this->getResultAttr($result, $this->options['with_attr']); - } - - $this->filterResult($result); - } - - /** - * 处理数据集 - * @access public - * @param array $resultSet 数据集 - * @return void - */ - protected function resultSet(array &$resultSet): void - { - if (!empty($this->options['json'])) { - foreach ($resultSet as &$result) { - $this->jsonResult($result, $this->options['json'], true); - } - } - - if (!empty($this->options['with_attr'])) { - foreach ($resultSet as &$result) { - $this->getResultAttr($result, $this->options['with_attr']); - } - } - - if (!empty($this->options['visible']) || !empty($this->options['hidden'])) { - foreach ($resultSet as &$result) { - $this->filterResult($result); - } - } - - // 返回Collection对象 - $resultSet = new Collection($resultSet); - } - - /** - * 处理数据的可见和隐藏 - * @access protected - * @param array $result 查询数据 - * @return void - */ - protected function filterResult(&$result): void - { - if (!empty($this->options['visible'])) { - foreach ($this->options['visible'] as $key) { - $array[] = $key; - } - $result = array_intersect_key($result, array_flip($array)); - } elseif (!empty($this->options['hidden'])) { - foreach ($this->options['hidden'] as $key) { - $array[] = $key; - } - $result = array_diff_key($result, array_flip($array)); - } - } - - /** - * 使用获取器处理数据 - * @access protected - * @param array $result 查询数据 - * @param array $withAttr 字段获取器 - * @return void - */ - protected function getResultAttr(array &$result, array $withAttr = []): void - { - foreach ($withAttr as $name => $closure) { - $name = Str::snake($name); - - if (strpos($name, '.')) { - // 支持JSON字段 获取器定义 - list($key, $field) = explode('.', $name); - - if (isset($result[$key])) { - $result[$key][$field] = $closure($result[$key][$field] ?? null, $result[$key]); - } - } else { - $result[$name] = $closure($result[$name] ?? null, $result); - } - } - } - - /** - * 处理空数据 - * @access protected - * @return array|Model|null - * @throws DbException - * @throws ModelNotFoundException - * @throws DataNotFoundException - */ - protected function resultToEmpty() - { - if (!empty($this->options['fail'])) { - $this->throwNotFound(); - } elseif (!empty($this->options['allow_empty'])) { - return !empty($this->model) ? $this->model->newInstance() : []; - } - } - - /** - * 查找单条记录 不存在返回空数据(或者空模型) - * @access public - * @param mixed $data 数据 - * @return array|Model - */ - public function findOrEmpty($data = null) - { - return $this->allowEmpty(true)->find($data); - } - - /** - * JSON字段数据转换 - * @access protected - * @param array $result 查询数据 - * @param array $json JSON字段 - * @param bool $assoc 是否转换为数组 - * @param array $withRelationAttr 关联获取器 - * @return void - */ - protected function jsonResult(array &$result, array $json = [], bool $assoc = false, array $withRelationAttr = []): void - { - foreach ($json as $name) { - if (!isset($result[$name])) { - continue; - } - - $result[$name] = json_decode($result[$name], true); - - if (isset($withRelationAttr[$name])) { - foreach ($withRelationAttr[$name] as $key => $closure) { - $result[$name][$key] = $closure($result[$name][$key] ?? null, $result[$name]); - } - } - - if (!$assoc) { - $result[$name] = (object) $result[$name]; - } - } - } - - /** - * 查询失败 抛出异常 - * @access protected - * @return void - * @throws ModelNotFoundException - * @throws DataNotFoundException - */ - protected function throwNotFound(): void - { - if (!empty($this->model)) { - $class = get_class($this->model); - throw new ModelNotFoundException('model data Not Found:' . $class, $class, $this->options); - } - - $table = $this->getTable(); - throw new DataNotFoundException('table data not Found:' . $table, $table, $this->options); - } - - /** - * 查找多条记录 如果不存在则抛出异常 - * @access public - * @param array|string|Query|Closure $data 数据 - * @return array|Model - * @throws DbException - * @throws ModelNotFoundException - * @throws DataNotFoundException - */ - public function selectOrFail($data = null) - { - return $this->failException(true)->select($data); - } - - /** - * 查找单条记录 如果不存在则抛出异常 - * @access public - * @param array|string|Query|Closure $data 数据 - * @return array|Model - * @throws DbException - * @throws ModelNotFoundException - * @throws DataNotFoundException - */ - public function findOrFail($data = null) - { - return $this->failException(true)->find($data); - } - -} diff --git a/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php b/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php deleted file mode 100644 index 9070befea..000000000 --- a/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php +++ /dev/null @@ -1,99 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\concern; - -/** - * 数据字段信息 - */ -trait TableFieldInfo -{ - - /** - * 获取数据表字段信息 - * @access public - * @param string $tableName 数据表名 - * @return array - */ - public function getTableFields($tableName = ''): array - { - if ('' == $tableName) { - $tableName = $this->getTable(); - } - - return $this->connection->getTableFields($tableName); - } - - /** - * 获取详细字段类型信息 - * @access public - * @param string $tableName 数据表名称 - * @return array - */ - public function getFields(string $tableName = ''): array - { - return $this->connection->getFields($tableName ?: $this->getTable()); - } - - /** - * 获取字段类型信息 - * @access public - * @return array - */ - public function getFieldsType(): array - { - if (!empty($this->options['field_type'])) { - return $this->options['field_type']; - } - - return $this->connection->getFieldsType($this->getTable()); - } - - /** - * 获取字段类型信息 - * @access public - * @param string $field 字段名 - * @return string|null - */ - public function getFieldType(string $field) - { - $fieldType = $this->getFieldsType(); - - return $fieldType[$field] ?? null; - } - - /** - * 获取字段类型信息 - * @access public - * @return array - */ - public function getFieldsBindType(): array - { - $fieldType = $this->getFieldsType(); - - return array_map([$this->connection, 'getFieldBindType'], $fieldType); - } - - /** - * 获取字段类型信息 - * @access public - * @param string $field 字段名 - * @return int - */ - public function getFieldBindType(string $field): int - { - $fieldType = $this->getFieldType($field); - - return $this->connection->getFieldBindType($fieldType ?: ''); - } - -} diff --git a/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php b/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php deleted file mode 100644 index 1267e5401..000000000 --- a/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php +++ /dev/null @@ -1,214 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\concern; - -/** - * 时间查询支持 - */ -trait TimeFieldQuery -{ - /** - * 日期查询表达式 - * @var array - */ - protected $timeRule = [ - 'today' => ['today', 'tomorrow -1second'], - 'yesterday' => ['yesterday', 'today -1second'], - 'week' => ['this week 00:00:00', 'next week 00:00:00 -1second'], - 'last week' => ['last week 00:00:00', 'this week 00:00:00 -1second'], - 'month' => ['first Day of this month 00:00:00', 'first Day of next month 00:00:00 -1second'], - 'last month' => ['first Day of last month 00:00:00', 'first Day of this month 00:00:00 -1second'], - 'year' => ['this year 1/1', 'next year 1/1 -1second'], - 'last year' => ['last year 1/1', 'this year 1/1 -1second'], - ]; - - /** - * 添加日期或者时间查询规则 - * @access public - * @param array $rule 时间表达式 - * @return $this - */ - public function timeRule(array $rule) - { - $this->timeRule = array_merge($this->timeRule, $rule); - return $this; - } - - /** - * 查询日期或者时间 - * @access public - * @param string $field 日期字段名 - * @param string $op 比较运算符或者表达式 - * @param string|array $range 比较范围 - * @param string $logic AND OR - * @return $this - */ - public function whereTime(string $field, string $op, $range = null, string $logic = 'AND') - { - if (is_null($range)) { - if (isset($this->timeRule[$op])) { - $range = $this->timeRule[$op]; - } else { - $range = $op; - } - $op = is_array($range) ? 'between' : '>='; - } - - return $this->parseWhereExp($logic, $field, strtolower($op) . ' time', $range, [], true); - } - - /** - * 查询某个时间间隔数据 - * @access public - * @param string $field 日期字段名 - * @param string $start 开始时间 - * @param string $interval 时间间隔单位 day/month/year/week/hour/minute/second - * @param int $step 间隔 - * @param string $logic AND OR - * @return $this - */ - public function whereTimeInterval(string $field, string $start, string $interval = 'day', int $step = 1, string $logic = 'AND') - { - $startTime = strtotime($start); - $endTime = strtotime(($step > 0 ? '+' : '-') . abs($step) . ' ' . $interval . (abs($step) > 1 ? 's' : ''), $startTime); - - return $this->whereTime($field, 'between', $step > 0 ? [$startTime, $endTime - 1] : [$endTime, $startTime - 1], $logic); - } - - /** - * 查询月数据 whereMonth('time_field', '2018-1') - * @access public - * @param string $field 日期字段名 - * @param string $month 月份信息 - * @param int $step 间隔 - * @param string $logic AND OR - * @return $this - */ - public function whereMonth(string $field, string $month = 'this month', int $step = 1, string $logic = 'AND') - { - if (in_array($month, ['this month', 'last month'])) { - $month = date('Y-m', strtotime($month)); - } - - return $this->whereTimeInterval($field, $month, 'month', $step, $logic); - } - - /** - * 查询周数据 whereWeek('time_field', '2018-1-1') 从2018-1-1开始的一周数据 - * @access public - * @param string $field 日期字段名 - * @param string $week 周信息 - * @param int $step 间隔 - * @param string $logic AND OR - * @return $this - */ - public function whereWeek(string $field, string $week = 'this week', int $step = 1, string $logic = 'AND') - { - if (in_array($week, ['this week', 'last week'])) { - $week = date('Y-m-d', strtotime($week)); - } - - return $this->whereTimeInterval($field, $week, 'week', $step, $logic); - } - - /** - * 查询年数据 whereYear('time_field', '2018') - * @access public - * @param string $field 日期字段名 - * @param string $year 年份信息 - * @param int $step 间隔 - * @param string $logic AND OR - * @return $this - */ - public function whereYear(string $field, string $year = 'this year', int $step = 1, string $logic = 'AND') - { - if (in_array($year, ['this year', 'last year'])) { - $year = date('Y', strtotime($year)); - } - - return $this->whereTimeInterval($field, $year . '-1-1', 'year', $step, $logic); - } - - /** - * 查询日数据 whereDay('time_field', '2018-1-1') - * @access public - * @param string $field 日期字段名 - * @param string $day 日期信息 - * @param int $step 间隔 - * @param string $logic AND OR - * @return $this - */ - public function whereDay(string $field, string $day = 'today', int $step = 1, string $logic = 'AND') - { - if (in_array($day, ['today', 'yesterday'])) { - $day = date('Y-m-d', strtotime($day)); - } - - return $this->whereTimeInterval($field, $day, 'day', $step, $logic); - } - - /** - * 查询日期或者时间范围 whereBetweenTime('time_field', '2018-1-1','2018-1-15') - * @access public - * @param string $field 日期字段名 - * @param string|int $startTime 开始时间 - * @param string|int $endTime 结束时间 - * @param string $logic AND OR - * @return $this - */ - public function whereBetweenTime(string $field, $startTime, $endTime, string $logic = 'AND') - { - return $this->whereTime($field, 'between', [$startTime, $endTime], $logic); - } - - /** - * 查询日期或者时间范围 whereNotBetweenTime('time_field', '2018-1-1','2018-1-15') - * @access public - * @param string $field 日期字段名 - * @param string|int $startTime 开始时间 - * @param string|int $endTime 结束时间 - * @return $this - */ - public function whereNotBetweenTime(string $field, $startTime, $endTime) - { - return $this->whereTime($field, '<', $startTime) - ->whereTime($field, '>', $endTime); - } - - /** - * 查询当前时间在两个时间字段范围 whereBetweenTimeField('start_time', 'end_time') - * @access public - * @param string $startField 开始时间字段 - * @param string $endField 结束时间字段 - * @return $this - */ - public function whereBetweenTimeField(string $startField, string $endField) - { - return $this->whereTime($startField, '<=', time()) - ->whereTime($endField, '>=', time()); - } - - /** - * 查询当前时间不在两个时间字段范围 whereNotBetweenTimeField('start_time', 'end_time') - * @access public - * @param string $startField 开始时间字段 - * @param string $endField 结束时间字段 - * @return $this - */ - public function whereNotBetweenTimeField(string $startField, string $endField) - { - return $this->whereTime($startField, '>', time()) - ->whereTime($endField, '<', time(), 'OR'); - } - -} diff --git a/vendor/topthink/think-orm/src/db/concern/Transaction.php b/vendor/topthink/think-orm/src/db/concern/Transaction.php deleted file mode 100644 index f804ae2d3..000000000 --- a/vendor/topthink/think-orm/src/db/concern/Transaction.php +++ /dev/null @@ -1,117 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\concern; - -use think\db\BaseQuery; - -/** - * 事务支持 - */ -trait Transaction -{ - - /** - * 执行数据库Xa事务 - * @access public - * @param callable $callback 数据操作方法回调 - * @param array $dbs 多个查询对象或者连接对象 - * @return mixed - * @throws PDOException - * @throws \Exception - * @throws \Throwable - */ - public function transactionXa($callback, array $dbs = []) - { - $xid = uniqid('xa'); - - if (empty($dbs)) { - $dbs[] = $this->getConnection(); - } - - foreach ($dbs as $key => $db) { - if ($db instanceof BaseQuery) { - $db = $db->getConnection(); - - $dbs[$key] = $db; - } - - $db->startTransXa($xid); - } - - try { - $result = null; - if (is_callable($callback)) { - $result = call_user_func_array($callback, [$this]); - } - - foreach ($dbs as $db) { - $db->prepareXa($xid); - } - - foreach ($dbs as $db) { - $db->commitXa($xid); - } - - return $result; - } catch (\Exception | \Throwable $e) { - foreach ($dbs as $db) { - $db->rollbackXa($xid); - } - throw $e; - } - } - - /** - * 执行数据库事务 - * @access public - * @param callable $callback 数据操作方法回调 - * @return mixed - */ - public function transaction(callable $callback) - { - return $this->connection->transaction($callback); - } - - /** - * 启动事务 - * @access public - * @return void - */ - public function startTrans(): void - { - $this->connection->startTrans(); - } - - /** - * 用于非自动提交状态下面的查询提交 - * @access public - * @return void - * @throws PDOException - */ - public function commit(): void - { - $this->connection->commit(); - } - - /** - * 事务回滚 - * @access public - * @return void - * @throws PDOException - */ - public function rollback(): void - { - $this->connection->rollback(); - } - -} diff --git a/vendor/topthink/think-orm/src/db/concern/WhereQuery.php b/vendor/topthink/think-orm/src/db/concern/WhereQuery.php deleted file mode 100644 index 33b07637a..000000000 --- a/vendor/topthink/think-orm/src/db/concern/WhereQuery.php +++ /dev/null @@ -1,540 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\concern; - -use Closure; -use think\db\BaseQuery; -use think\db\Raw; - -trait WhereQuery -{ - /** - * 指定AND查询条件 - * @access public - * @param mixed $field 查询字段 - * @param mixed $op 查询表达式 - * @param mixed $condition 查询条件 - * @return $this - */ - public function where($field, $op = null, $condition = null) - { - if ($field instanceof $this) { - $this->parseQueryWhere($field); - return $this; - } elseif (true === $field || 1 === $field) { - $this->options['where']['AND'][] = true; - return $this; - } - - $param = func_get_args(); - array_shift($param); - return $this->parseWhereExp('AND', $field, $op, $condition, $param); - } - - /** - * 解析Query对象查询条件 - * @access public - * @param BaseQuery $query 查询对象 - * @return void - */ - protected function parseQueryWhere(BaseQuery $query): void - { - $this->options['where'] = $query->getOptions('where'); - - if ($query->getOptions('via')) { - $via = $query->getOptions('via'); - foreach ($this->options['where'] as $logic => &$where) { - foreach ($where as $key => &$val) { - if (is_array($val) && !strpos($val[0], '.')) { - $val[0] = $via . '.' . $val[0]; - } - } - } - } - - $this->bind($query->getBind(false)); - } - - /** - * 指定OR查询条件 - * @access public - * @param mixed $field 查询字段 - * @param mixed $op 查询表达式 - * @param mixed $condition 查询条件 - * @return $this - */ - public function whereOr($field, $op = null, $condition = null) - { - $param = func_get_args(); - array_shift($param); - return $this->parseWhereExp('OR', $field, $op, $condition, $param); - } - - /** - * 指定XOR查询条件 - * @access public - * @param mixed $field 查询字段 - * @param mixed $op 查询表达式 - * @param mixed $condition 查询条件 - * @return $this - */ - public function whereXor($field, $op = null, $condition = null) - { - $param = func_get_args(); - array_shift($param); - return $this->parseWhereExp('XOR', $field, $op, $condition, $param); - } - - /** - * 指定Null查询条件 - * @access public - * @param mixed $field 查询字段 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereNull(string $field, string $logic = 'AND') - { - return $this->parseWhereExp($logic, $field, 'NULL', null, [], true); - } - - /** - * 指定NotNull查询条件 - * @access public - * @param mixed $field 查询字段 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereNotNull(string $field, string $logic = 'AND') - { - return $this->parseWhereExp($logic, $field, 'NOTNULL', null, [], true); - } - - /** - * 指定Exists查询条件 - * @access public - * @param mixed $condition 查询条件 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereExists($condition, string $logic = 'AND') - { - if (is_string($condition)) { - $condition = new Raw($condition); - } - - $this->options['where'][strtoupper($logic)][] = ['', 'EXISTS', $condition]; - return $this; - } - - /** - * 指定NotExists查询条件 - * @access public - * @param mixed $condition 查询条件 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereNotExists($condition, string $logic = 'AND') - { - if (is_string($condition)) { - $condition = new Raw($condition); - } - - $this->options['where'][strtoupper($logic)][] = ['', 'NOT EXISTS', $condition]; - return $this; - } - - /** - * 指定In查询条件 - * @access public - * @param mixed $field 查询字段 - * @param mixed $condition 查询条件 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereIn(string $field, $condition, string $logic = 'AND') - { - return $this->parseWhereExp($logic, $field, 'IN', $condition, [], true); - } - - /** - * 指定NotIn查询条件 - * @access public - * @param mixed $field 查询字段 - * @param mixed $condition 查询条件 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereNotIn(string $field, $condition, string $logic = 'AND') - { - return $this->parseWhereExp($logic, $field, 'NOT IN', $condition, [], true); - } - - /** - * 指定Like查询条件 - * @access public - * @param mixed $field 查询字段 - * @param mixed $condition 查询条件 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereLike(string $field, $condition, string $logic = 'AND') - { - return $this->parseWhereExp($logic, $field, 'LIKE', $condition, [], true); - } - - /** - * 指定NotLike查询条件 - * @access public - * @param mixed $field 查询字段 - * @param mixed $condition 查询条件 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereNotLike(string $field, $condition, string $logic = 'AND') - { - return $this->parseWhereExp($logic, $field, 'NOT LIKE', $condition, [], true); - } - - /** - * 指定Between查询条件 - * @access public - * @param mixed $field 查询字段 - * @param mixed $condition 查询条件 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereBetween(string $field, $condition, string $logic = 'AND') - { - return $this->parseWhereExp($logic, $field, 'BETWEEN', $condition, [], true); - } - - /** - * 指定NotBetween查询条件 - * @access public - * @param mixed $field 查询字段 - * @param mixed $condition 查询条件 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereNotBetween(string $field, $condition, string $logic = 'AND') - { - return $this->parseWhereExp($logic, $field, 'NOT BETWEEN', $condition, [], true); - } - - /** - * 指定FIND_IN_SET查询条件 - * @access public - * @param mixed $field 查询字段 - * @param mixed $condition 查询条件 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereFindInSet(string $field, $condition, string $logic = 'AND') - { - return $this->parseWhereExp($logic, $field, 'FIND IN SET', $condition, [], true); - } - - /** - * 比较两个字段 - * @access public - * @param string $field1 查询字段 - * @param string $operator 比较操作符 - * @param string $field2 比较字段 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereColumn(string $field1, string $operator, string $field2 = null, string $logic = 'AND') - { - if (is_null($field2)) { - $field2 = $operator; - $operator = '='; - } - - return $this->parseWhereExp($logic, $field1, 'COLUMN', [$operator, $field2], [], true); - } - - /** - * 设置软删除字段及条件 - * @access public - * @param string $field 查询字段 - * @param mixed $condition 查询条件 - * @return $this - */ - public function useSoftDelete(string $field, $condition = null) - { - if ($field) { - $this->options['soft_delete'] = [$field, $condition]; - } - - return $this; - } - - /** - * 指定Exp查询条件 - * @access public - * @param mixed $field 查询字段 - * @param string $where 查询条件 - * @param array $bind 参数绑定 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereExp(string $field, string $where, array $bind = [], string $logic = 'AND') - { - if (!empty($bind)) { - $this->bindParams($where, $bind); - } - - $this->options['where'][$logic][] = [$field, 'EXP', new Raw($where)]; - - return $this; - } - - /** - * 指定字段Raw查询 - * @access public - * @param string $field 查询字段表达式 - * @param mixed $op 查询表达式 - * @param string $condition 查询条件 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereFieldRaw(string $field, $op, $condition = null, string $logic = 'AND') - { - if (is_null($condition)) { - $condition = $op; - $op = '='; - } - - $this->options['where'][$logic][] = [new Raw($field), $op, $condition]; - return $this; - } - - /** - * 指定表达式查询条件 - * @access public - * @param string $where 查询条件 - * @param array $bind 参数绑定 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function whereRaw(string $where, array $bind = [], string $logic = 'AND') - { - if (!empty($bind)) { - $this->bindParams($where, $bind); - } - - $this->options['where'][$logic][] = new Raw($where); - - return $this; - } - - /** - * 指定表达式查询条件 OR - * @access public - * @param string $where 查询条件 - * @param array $bind 参数绑定 - * @return $this - */ - public function whereOrRaw(string $where, array $bind = []) - { - return $this->whereRaw($where, $bind, 'OR'); - } - - /** - * 分析查询表达式 - * @access protected - * @param string $logic 查询逻辑 and or xor - * @param mixed $field 查询字段 - * @param mixed $op 查询表达式 - * @param mixed $condition 查询条件 - * @param array $param 查询参数 - * @param bool $strict 严格模式 - * @return $this - */ - protected function parseWhereExp(string $logic, $field, $op, $condition, array $param = [], bool $strict = false) - { - $logic = strtoupper($logic); - - if (is_string($field) && !empty($this->options['via']) && false === strpos($field, '.')) { - $field = $this->options['via'] . '.' . $field; - } - - if ($field instanceof Raw) { - return $this->whereRaw($field, is_array($op) ? $op : [], $logic); - } elseif ($strict) { - // 使用严格模式查询 - if ('=' == $op) { - $where = $this->whereEq($field, $condition); - } else { - $where = [$field, $op, $condition, $logic]; - } - } elseif (is_array($field)) { - // 解析数组批量查询 - return $this->parseArrayWhereItems($field, $logic); - } elseif ($field instanceof Closure) { - $where = $field; - } elseif (is_string($field)) { - if (preg_match('/[,=\<\'\"\(\s]/', $field)) { - return $this->whereRaw($field, is_array($op) ? $op : [], $logic); - } elseif (is_string($op) && strtolower($op) == 'exp') { - $bind = isset($param[2]) && is_array($param[2]) ? $param[2] : []; - return $this->whereExp($field, $condition, $bind, $logic); - } - - $where = $this->parseWhereItem($logic, $field, $op, $condition, $param); - } - - if (!empty($where)) { - $this->options['where'][$logic][] = $where; - } - - return $this; - } - - /** - * 分析查询表达式 - * @access protected - * @param string $logic 查询逻辑 and or xor - * @param mixed $field 查询字段 - * @param mixed $op 查询表达式 - * @param mixed $condition 查询条件 - * @param array $param 查询参数 - * @return array - */ - protected function parseWhereItem(string $logic, $field, $op, $condition, array $param = []): array - { - if (is_array($op)) { - // 同一字段多条件查询 - array_unshift($param, $field); - $where = $param; - } elseif ($field && is_null($condition)) { - if (is_string($op) && in_array(strtoupper($op), ['NULL', 'NOTNULL', 'NOT NULL'], true)) { - // null查询 - $where = [$field, $op, '']; - } elseif ('=' === $op || is_null($op)) { - $where = [$field, 'NULL', '']; - } elseif ('<>' === $op) { - $where = [$field, 'NOTNULL', '']; - } else { - // 字段相等查询 - $where = $this->whereEq($field, $op); - } - } elseif (is_string($op) && in_array(strtoupper($op), ['EXISTS', 'NOT EXISTS', 'NOTEXISTS'], true)) { - $where = [$field, $op, is_string($condition) ? new Raw($condition) : $condition]; - } else { - $where = $field ? [$field, $op, $condition, $param[2] ?? null] : []; - } - - return $where; - } - - /** - * 相等查询的主键处理 - * @access protected - * @param string $field 字段名 - * @param mixed $value 字段值 - * @return array - */ - protected function whereEq(string $field, $value): array - { - if ($this->getPk() == $field) { - $this->options['key'] = $value; - } - - return [$field, '=', $value]; - } - - /** - * 数组批量查询 - * @access protected - * @param array $field 批量查询 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - protected function parseArrayWhereItems(array $field, string $logic) - { - if (key($field) !== 0) { - $where = []; - foreach ($field as $key => $val) { - if ($val instanceof Raw) { - $where[] = [$key, 'exp', $val]; - } else { - $where[] = is_null($val) ? [$key, 'NULL', ''] : [$key, is_array($val) ? 'IN' : '=', $val]; - } - } - } else { - // 数组批量查询 - $where = $field; - } - - if (!empty($where)) { - $this->options['where'][$logic] = isset($this->options['where'][$logic]) ? - array_merge($this->options['where'][$logic], $where) : $where; - } - - return $this; - } - - /** - * 去除某个查询条件 - * @access public - * @param string $field 查询字段 - * @param string $logic 查询逻辑 and or xor - * @return $this - */ - public function removeWhereField(string $field, string $logic = 'AND') - { - $logic = strtoupper($logic); - - if (isset($this->options['where'][$logic])) { - foreach ($this->options['where'][$logic] as $key => $val) { - if (is_array($val) && $val[0] == $field) { - unset($this->options['where'][$logic][$key]); - } - } - } - - return $this; - } - - /** - * 条件查询 - * @access public - * @param mixed $condition 满足条件(支持闭包) - * @param Closure|array $query 满足条件后执行的查询表达式(闭包或数组) - * @param Closure|array $otherwise 不满足条件后执行 - * @return $this - */ - public function when($condition, $query, $otherwise = null) - { - if ($condition instanceof Closure) { - $condition = $condition($this); - } - - if ($condition) { - if ($query instanceof Closure) { - $query($this, $condition); - } elseif (is_array($query)) { - $this->where($query); - } - } elseif ($otherwise) { - if ($otherwise instanceof Closure) { - $otherwise($this, $condition); - } elseif (is_array($otherwise)) { - $this->where($otherwise); - } - } - - return $this; - } -} diff --git a/vendor/topthink/think-orm/src/db/connector/Mongo.php b/vendor/topthink/think-orm/src/db/connector/Mongo.php deleted file mode 100644 index 647c286e1..000000000 --- a/vendor/topthink/think-orm/src/db/connector/Mongo.php +++ /dev/null @@ -1,1055 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\connector; - -use Closure; -use MongoDB\BSON\ObjectID; -use MongoDB\Driver\BulkWrite; -use MongoDB\Driver\Command; -use MongoDB\Driver\Cursor; -use MongoDB\Driver\Exception\AuthenticationException; -use MongoDB\Driver\Exception\BulkWriteException; -use MongoDB\Driver\Exception\ConnectionException; -use MongoDB\Driver\Exception\InvalidArgumentException; -use MongoDB\Driver\Exception\RuntimeException; -use MongoDB\Driver\Manager; -use MongoDB\Driver\Query as MongoQuery; -use MongoDB\Driver\ReadPreference; -use think\db\BaseQuery; -use think\db\builder\Mongo as Builder; -use think\db\Connection; -use think\db\ConnectionInterface; -use think\db\exception\DbException as Exception; -use think\db\Mongo as Query; - -/** - * Mongo数据库驱动 - */ -class Mongo extends Connection implements ConnectionInterface -{ - - // 查询数据类型 - protected $dbName = ''; - protected $typeMap = 'array'; - protected $mongo; // MongoDb Object - protected $cursor; // MongoCursor Object - - // 数据库连接参数配置 - protected $config = [ - // 数据库类型 - 'type' => '', - // 服务器地址 - 'hostname' => '', - // 数据库名 - 'database' => '', - // 是否是复制集 - 'is_replica_set' => false, - // 用户名 - 'username' => '', - // 密码 - 'password' => '', - // 端口 - 'hostport' => '', - // 连接dsn - 'dsn' => '', - // 数据库连接参数 - 'params' => [], - // 数据库编码默认采用utf8 - 'charset' => 'utf8', - // 主键名 - 'pk' => '_id', - // 主键类型 - 'pk_type' => 'ObjectID', - // 数据库表前缀 - 'prefix' => '', - // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) - 'deploy' => 0, - // 数据库读写是否分离 主从式有效 - 'rw_separate' => false, - // 读写分离后 主服务器数量 - 'master_num' => 1, - // 指定从服务器序号 - 'slave_no' => '', - // 是否严格检查字段是否存在 - 'fields_strict' => true, - // 开启字段缓存 - 'fields_cache' => false, - // 监听SQL - 'trigger_sql' => true, - // 自动写入时间戳字段 - 'auto_timestamp' => false, - // 时间字段取出后的默认时间格式 - 'datetime_format' => 'Y-m-d H:i:s', - // 是否_id转换为id - 'pk_convert_id' => false, - // typeMap - 'type_map' => ['root' => 'array', 'document' => 'array'], - ]; - - /** - * 架构函数 读取数据库配置信息 - * @access public - * @param array $config 数据库配置数组 - */ - public function __construct(array $config = []) - { - if (!empty($config)) { - $this->config = array_merge($this->config, $config); - } - - // 创建Builder对象 - $class = $this->getBuilderClass(); - - $this->builder = new $class($this); - } - - /** - * 获取当前连接器类对应的Query类 - * @access public - * @return string - */ - public function getQueryClass(): string - { - return Query::class; - } - - /** - * 获取当前的builder实例对象 - * @access public - * @return Builder - */ - public function getBuilder(): Builder - { - return $this->builder; - } - - /** - * 获取当前连接器类对应的Builder类 - * @access public - * @return string - */ - public function getBuilderClass(): string - { - return Builder::class; - } - - /** - * 连接数据库方法 - * @access public - * @param array $config 连接参数 - * @param integer $linkNum 连接序号 - * @return Manager - * @throws InvalidArgumentException - * @throws RuntimeException - */ - public function connect(array $config = [], $linkNum = 0) - { - if (!isset($this->links[$linkNum])) { - if (empty($config)) { - $config = $this->config; - } else { - $config = array_merge($this->config, $config); - } - - $this->dbName = $config['database']; - $this->typeMap = $config['type_map']; - - if ($config['pk_convert_id'] && '_id' == $config['pk']) { - $this->config['pk'] = 'id'; - } - - if (empty($config['dsn'])) { - $config['dsn'] = 'mongodb://' . ($config['username'] ? "{$config['username']}" : '') . ($config['password'] ? ":{$config['password']}@" : '') . $config['hostname'] . ($config['hostport'] ? ":{$config['hostport']}" : ''); - } - - $startTime = microtime(true); - - $this->links[$linkNum] = new Manager($config['dsn'], $config['params']); - - if (!empty($config['trigger_sql'])) { - // 记录数据库连接信息 - $this->trigger('CONNECT:[ UseTime:' . number_format(microtime(true) - $startTime, 6) . 's ] ' . $config['dsn']); - } - - } - - return $this->links[$linkNum]; - } - - /** - * 获取Mongo Manager对象 - * @access public - * @return Manager|null - */ - public function getMongo() - { - return $this->mongo ?: null; - } - - /** - * 设置/获取当前操作的database - * @access public - * @param string $db db - * @throws Exception - */ - public function db(string $db = null) - { - if (is_null($db)) { - return $this->dbName; - } else { - $this->dbName = $db; - } - } - - /** - * 执行查询但只返回Cursor对象 - * @access public - * @param BaseQuery $query 查询对象 - * @return Cursor - */ - public function cursor(BaseQuery $query) - { - // 分析查询表达式 - $options = $query->parseOptions(); - - // 生成MongoQuery对象 - $mongoQuery = $this->builder->select($query); - - $master = $query->getOptions('master') ? true : false; - - // 执行查询操作 - return $this->getCursor($query, $mongoQuery, $master); - } - - /** - * 执行查询并返回Cursor对象 - * @access public - * @param BaseQuery $query 查询对象 - * @param MongoQuery|Closure $mongoQuery Mongo查询对象 - * @param bool $master 是否主库操作 - * @return Cursor - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - */ - public function getCursor(BaseQuery $query, $mongoQuery, bool $master = false): Cursor - { - $this->initConnect($master); - $this->db->updateQueryTimes(); - - $options = $query->getOptions(); - $namespace = $options['table']; - - if (false === strpos($namespace, '.')) { - $namespace = $this->dbName . '.' . $namespace; - } - - if (!empty($this->queryStr)) { - // 记录执行指令 - $this->queryStr = 'db' . strstr($namespace, '.') . '.' . $this->queryStr; - } - - if ($mongoQuery instanceof Closure) { - $mongoQuery = $mongoQuery($query); - } - - $readPreference = $options['readPreference'] ?? null; - $this->queryStartTime = microtime(true); - - $this->cursor = $this->mongo->executeQuery($namespace, $mongoQuery, $readPreference); - - // SQL监控 - if (!empty($this->config['trigger_sql'])) { - $this->trigger('', $master); - } - - return $this->cursor; - } - - /** - * 执行查询 - * @access public - * @param BaseQuery $query 查询对象 - * @param MongoQuery|Closure $mongoQuery Mongo查询对象 - * @return array - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - */ - public function query(BaseQuery $query, $mongoQuery): array - { - $options = $query->parseOptions(); - - if ($query->getOptions('cache')) { - // 检查查询缓存 - $cacheItem = $this->parseCache($query, $query->getOptions('cache')); - $key = $cacheItem->getKey(); - - if ($this->cache->has($key)) { - return $this->cache->get($key); - } - } - - if ($mongoQuery instanceof Closure) { - $mongoQuery = $mongoQuery($query); - } - - $master = $query->getOptions('master') ? true : false; - $this->getCursor($query, $mongoQuery, $master); - - $resultSet = $this->getResult($options['typeMap']); - - if (isset($cacheItem) && $resultSet) { - // 缓存数据集 - $cacheItem->set($resultSet); - $this->cacheData($cacheItem); - } - - return $resultSet; - } - - /** - * 执行写操作 - * @access public - * @param BaseQuery $query - * @param BulkWrite $bulk - * - * @return WriteResult - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - * @throws BulkWriteException - */ - public function execute(BaseQuery $query, BulkWrite $bulk) - { - $this->initConnect(true); - $this->db->updateQueryTimes(); - - $options = $query->getOptions(); - - $namespace = $options['table']; - if (false === strpos($namespace, '.')) { - $namespace = $this->dbName . '.' . $namespace; - } - - if (!empty($this->queryStr)) { - // 记录执行指令 - $this->queryStr = 'db' . strstr($namespace, '.') . '.' . $this->queryStr; - } - - $writeConcern = $options['writeConcern'] ?? null; - $this->queryStartTime = microtime(true); - - $writeResult = $this->mongo->executeBulkWrite($namespace, $bulk, $writeConcern); - - // SQL监控 - if (!empty($this->config['trigger_sql'])) { - $this->trigger(); - } - - $this->numRows = $writeResult->getMatchedCount(); - - if ($query->getOptions('cache')) { - // 清理缓存数据 - $cacheItem = $this->parseCache($query, $query->getOptions('cache')); - $key = $cacheItem->getKey(); - $tag = $cacheItem->getTag(); - - if (isset($key) && $this->cache->has($key)) { - $this->cache->delete($key); - } elseif (!empty($tag) && method_exists($this->cache, 'tag')) { - $this->cache->tag($tag)->clear(); - } - } - - return $writeResult; - } - - /** - * 执行指令 - * @access public - * @param Command $command 指令 - * @param string $dbName 当前数据库名 - * @param ReadPreference $readPreference readPreference - * @param string|array $typeMap 指定返回的typeMap - * @param bool $master 是否主库操作 - * @return array - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - */ - public function command(Command $command, string $dbName = '', ReadPreference $readPreference = null, $typeMap = null, bool $master = false): array - { - $this->initConnect($master); - $this->db->updateQueryTimes(); - - $this->queryStartTime = microtime(true); - - $dbName = $dbName ?: $this->dbName; - - if (!empty($this->queryStr)) { - $this->queryStr = 'db.' . $this->queryStr; - } - - $this->cursor = $this->mongo->executeCommand($dbName, $command, $readPreference); - - // SQL监控 - if (!empty($this->config['trigger_sql'])) { - $this->trigger('', $master); - } - - return $this->getResult($typeMap); - } - - /** - * 获得数据集 - * @access protected - * @param string|array $typeMap 指定返回的typeMap - * @return mixed - */ - protected function getResult($typeMap = null): array - { - // 设置结果数据类型 - if (is_null($typeMap)) { - $typeMap = $this->typeMap; - } - - $typeMap = is_string($typeMap) ? ['root' => $typeMap] : $typeMap; - - $this->cursor->setTypeMap($typeMap); - - // 获取数据集 - $result = $this->cursor->toArray(); - - if ($this->getConfig('pk_convert_id')) { - // 转换ObjectID 字段 - foreach ($result as &$data) { - $this->convertObjectID($data); - } - } - - $this->numRows = count($result); - - return $result; - } - - /** - * ObjectID处理 - * @access protected - * @param array $data 数据 - * @return void - */ - protected function convertObjectID(array &$data): void - { - if (isset($data['_id']) && is_object($data['_id'])) { - $data['id'] = $data['_id']->__toString(); - unset($data['_id']); - } - } - - /** - * 数据库日志记录(仅供参考) - * @access public - * @param string $type 类型 - * @param mixed $data 数据 - * @param array $options 参数 - * @return void - */ - public function mongoLog(string $type, $data, array $options = []) - { - if (!$this->config['trigger_sql']) { - return; - } - - if (is_array($data)) { - array_walk_recursive($data, function (&$value) { - if ($value instanceof ObjectID) { - $value = $value->__toString(); - } - }); - } - - switch (strtolower($type)) { - case 'aggregate': - $this->queryStr = 'runCommand(' . ($data ? json_encode($data) : '') . ');'; - break; - case 'find': - $this->queryStr = $type . '(' . ($data ? json_encode($data) : '') . ')'; - - if (isset($options['sort'])) { - $this->queryStr .= '.sort(' . json_encode($options['sort']) . ')'; - } - - if (isset($options['skip'])) { - $this->queryStr .= '.skip(' . $options['skip'] . ')'; - } - - if (isset($options['limit'])) { - $this->queryStr .= '.limit(' . $options['limit'] . ')'; - } - - $this->queryStr .= ';'; - break; - case 'insert': - case 'remove': - $this->queryStr = $type . '(' . ($data ? json_encode($data) : '') . ');'; - break; - case 'update': - $this->queryStr = $type . '(' . json_encode($options) . ',' . json_encode($data) . ');'; - break; - case 'cmd': - $this->queryStr = $data . '(' . json_encode($options) . ');'; - break; - } - - $this->options = $options; - } - - /** - * 获取最近执行的指令 - * @access public - * @return string - */ - public function getLastSql(): string - { - return $this->queryStr; - } - - /** - * 关闭数据库 - * @access public - */ - public function close() - { - $this->mongo = null; - $this->cursor = null; - $this->linkRead = null; - $this->linkWrite = null; - $this->links = []; - } - - /** - * 初始化数据库连接 - * @access protected - * @param boolean $master 是否主服务器 - * @return void - */ - protected function initConnect(bool $master = true): void - { - if (!empty($this->config['deploy'])) { - // 采用分布式数据库 - if ($master) { - if (!$this->linkWrite) { - $this->linkWrite = $this->multiConnect(true); - } - - $this->mongo = $this->linkWrite; - } else { - if (!$this->linkRead) { - $this->linkRead = $this->multiConnect(false); - } - - $this->mongo = $this->linkRead; - } - } elseif (!$this->mongo) { - // 默认单数据库 - $this->mongo = $this->connect(); - } - } - - /** - * 连接分布式服务器 - * @access protected - * @param boolean $master 主服务器 - * @return Manager - */ - protected function multiConnect(bool $master = false): Manager - { - $config = []; - // 分布式数据库配置解析 - foreach (['username', 'password', 'hostname', 'hostport', 'database', 'dsn'] as $name) { - $config[$name] = is_string($this->config[$name]) ? explode(',', $this->config[$name]) : $this->config[$name]; - } - - // 主服务器序号 - $m = floor(mt_rand(0, $this->config['master_num'] - 1)); - - if ($this->config['rw_separate']) { - // 主从式采用读写分离 - if ($master) // 主服务器写入 - { - if ($this->config['is_replica_set']) { - return $this->replicaSetConnect(); - } else { - $r = $m; - } - } elseif (is_numeric($this->config['slave_no'])) { - // 指定服务器读 - $r = $this->config['slave_no']; - } else { - // 读操作连接从服务器 每次随机连接的数据库 - $r = floor(mt_rand($this->config['master_num'], count($config['hostname']) - 1)); - } - } else { - // 读写操作不区分服务器 每次随机连接的数据库 - $r = floor(mt_rand(0, count($config['hostname']) - 1)); - } - - $dbConfig = []; - - foreach (['username', 'password', 'hostname', 'hostport', 'database', 'dsn'] as $name) { - $dbConfig[$name] = $config[$name][$r] ?? $config[$name][0]; - } - - return $this->connect($dbConfig, $r); - } - - /** - * 创建基于复制集的连接 - * @return Manager - */ - public function replicaSetConnect(): Manager - { - $this->dbName = $this->config['database']; - $this->typeMap = $this->config['type_map']; - - $startTime = microtime(true); - - $this->config['params']['replicaSet'] = $this->config['database']; - - $manager = new Manager($this->buildUrl(), $this->config['params']); - - // 记录数据库连接信息 - if (!empty($config['trigger_sql'])) { - $this->trigger('CONNECT:ReplicaSet[ UseTime:' . number_format(microtime(true) - $startTime, 6) . 's ] ' . $this->config['dsn']); - } - - return $manager; - } - - /** - * 根据配置信息 生成适用于连接复制集的 URL - * @return string - */ - private function buildUrl(): string - { - $url = 'mongodb://' . ($this->config['username'] ? "{$this->config['username']}" : '') . ($this->config['password'] ? ":{$this->config['password']}@" : ''); - - $hostList = is_string($this->config['hostname']) ? explode(',', $this->config['hostname']) : $this->config['hostname']; - $portList = is_string($this->config['hostport']) ? explode(',', $this->config['hostport']) : $this->config['hostport']; - - for ($i = 0; $i < count($hostList); $i++) { - $url = $url . $hostList[$i] . ':' . $portList[0] . ','; - } - - return rtrim($url, ",") . '/'; - } - - /** - * 插入记录 - * @access public - * @param BaseQuery $query 查询对象 - * @param boolean $getLastInsID 返回自增主键 - * @return mixed - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - * @throws BulkWriteException - */ - public function insert(BaseQuery $query, bool $getLastInsID = false) - { - // 分析查询表达式 - $options = $query->parseOptions(); - - if (empty($options['data'])) { - throw new Exception('miss data to insert'); - } - - // 生成bulk对象 - $bulk = $this->builder->insert($query); - - $writeResult = $this->execute($query, $bulk); - $result = $writeResult->getInsertedCount(); - - if ($result) { - $data = $options['data']; - $lastInsId = $this->getLastInsID($query); - - if ($lastInsId) { - $pk = $query->getPk(); - $data[$pk] = $lastInsId; - } - - $query->setOption('data', $data); - - $this->db->trigger('after_insert', $query); - - if ($getLastInsID) { - return $lastInsId; - } - } - - return $result; - } - - /** - * 获取最近插入的ID - * @access public - * @param BaseQuery $query 查询对象 - * @return mixed - */ - public function getLastInsID(BaseQuery $query) - { - $id = $this->builder->getLastInsID(); - - if (is_array($id)) { - array_walk($id, function (&$item, $key) { - if ($item instanceof ObjectID) { - $item = $item->__toString(); - } - }); - } elseif ($id instanceof ObjectID) { - $id = $id->__toString(); - } - - return $id; - } - - /** - * 批量插入记录 - * @access public - * @param BaseQuery $query 查询对象 - * @param array $dataSet 数据集 - * @return integer - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - * @throws BulkWriteException - */ - public function insertAll(BaseQuery $query, array $dataSet = []): int - { - // 分析查询表达式 - $query->parseOptions(); - - if (!is_array(reset($dataSet))) { - return 0; - } - - // 生成bulkWrite对象 - $bulk = $this->builder->insertAll($query, $dataSet); - - $writeResult = $this->execute($query, $bulk); - - return $writeResult->getInsertedCount(); - } - - /** - * 更新记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return int - * @throws Exception - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - * @throws BulkWriteException - */ - public function update(BaseQuery $query): int - { - $query->parseOptions(); - - // 生成bulkWrite对象 - $bulk = $this->builder->update($query); - - $writeResult = $this->execute($query, $bulk); - - $result = $writeResult->getModifiedCount(); - - if ($result) { - $this->db->trigger('after_update', $query); - } - - return $result; - } - - /** - * 删除记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return int - * @throws Exception - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - * @throws BulkWriteException - */ - public function delete(BaseQuery $query): int - { - // 分析查询表达式 - $query->parseOptions(); - - // 生成bulkWrite对象 - $bulk = $this->builder->delete($query); - - // 执行操作 - $writeResult = $this->execute($query, $bulk); - - $result = $writeResult->getDeletedCount(); - - if ($result) { - $this->db->trigger('after_delete', $query); - } - - return $result; - } - - /** - * 查找记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return array - * @throws ModelNotFoundException - * @throws DataNotFoundException - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - */ - public function select(BaseQuery $query): array - { - $resultSet = $this->db->trigger('before_select', $query); - - if (!$resultSet) { - $resultSet = $this->query($query, function ($query) { - return $this->builder->select($query); - }); - } - - return $resultSet; - } - - /** - * 查找单条记录 - * @access public - * @param BaseQuery $query 查询对象 - * @return array - * @throws ModelNotFoundException - * @throws DataNotFoundException - * @throws AuthenticationException - * @throws InvalidArgumentException - * @throws ConnectionException - * @throws RuntimeException - */ - public function find(BaseQuery $query): array - { - // 事件回调 - $result = $this->db->trigger('before_find', $query); - - if (!$result) { - // 执行查询 - $resultSet = $this->query($query, function ($query) { - return $this->builder->select($query, true); - }); - - $result = $resultSet[0] ?? []; - } - - return $result; - } - - /** - * 得到某个字段的值 - * @access public - * @param string $field 字段名 - * @param mixed $default 默认值 - * @return mixed - */ - public function value(BaseQuery $query, string $field, $default = null) - { - $options = $query->parseOptions(); - - if (isset($options['projection'])) { - $query->removeOption('projection'); - } - - $query->setOption('projection', (array) $field); - - if (!empty($options['cache'])) { - $cacheItem = $this->parseCache($query, $options['cache']); - $key = $cacheItem->getKey(); - - if ($this->cache->has($key)) { - return $this->cache->get($key); - } - } - - $mongoQuery = $this->builder->select($query, true); - - if (isset($options['projection'])) { - $query->setOption('projection', $options['projection']); - } else { - $query->removeOption('projection'); - } - - // 执行查询操作 - $resultSet = $this->query($query, $mongoQuery); - - if (!empty($resultSet)) { - $data = array_shift($resultSet); - $result = $data[$field]; - } else { - $result = false; - } - - if (isset($cacheItem) && false !== $result) { - // 缓存数据 - $cacheItem->set($result); - $this->cacheData($cacheItem); - } - - return false !== $result ? $result : $default; - } - - /** - * 得到某个列的数组 - * @access public - * @param string $field 字段名 多个字段用逗号分隔 - * @param string $key 索引 - * @return array - */ - public function column(BaseQuery $query, string $field, string $key = ''): array - { - $options = $query->parseOptions(); - - if (isset($options['projection'])) { - $query->removeOption('projection'); - } - - if ($key && '*' != $field) { - $projection = $key . ',' . $field; - } else { - $projection = $field; - } - - $query->field($projection); - - if (!empty($options['cache'])) { - // 判断查询缓存 - $cacheItem = $this->parseCache($query, $options['cache']); - $key = $cacheItem->getKey(); - - if ($this->cache->has($key)) { - return $this->cache->get($key); - } - } - - $mongoQuery = $this->builder->select($query); - - if (isset($options['projection'])) { - $query->setOption('projection', $options['projection']); - } else { - $query->removeOption('projection'); - } - - // 执行查询操作 - $resultSet = $this->query($query, $mongoQuery); - - if (('*' == $field || strpos($field, ',')) && $key) { - $result = array_column($resultSet, null, $key); - } elseif (!empty($resultSet)) { - $result = array_column($resultSet, $field, $key); - } else { - $result = []; - } - - if (isset($cacheItem)) { - // 缓存数据 - $cacheItem->set($result); - $this->cacheData($cacheItem); - } - - return $result; - } - - /** - * 执行command - * @access public - * @param BaseQuery $query 查询对象 - * @param string|array|object $command 指令 - * @param mixed $extra 额外参数 - * @param string $db 数据库名 - * @return array - */ - public function cmd(BaseQuery $query, $command, $extra = null, string $db = ''): array - { - if (is_array($command) || is_object($command)) { - - $this->mongoLog('cmd', 'cmd', $command); - - // 直接创建Command对象 - $command = new Command($command); - } else { - // 调用Builder封装的Command对象 - $command = $this->builder->$command($query, $extra); - } - - return $this->command($command, $db); - } - - /** - * 执行数据库事务 - * @access public - * @param callable $callback 数据操作方法回调 - * @return mixed - * @throws PDOException - * @throws \Exception - * @throws \Throwable - */ - public function transaction(callable $callback) - {} - - /** - * 启动事务 - * @access public - * @return void - * @throws \PDOException - * @throws \Exception - */ - public function startTrans() - {} - - /** - * 用于非自动提交状态下面的查询提交 - * @access public - * @return void - * @throws PDOException - */ - public function commit() - {} - - /** - * 事务回滚 - * @access public - * @return void - * @throws PDOException - */ - public function rollback() - {} - -} diff --git a/vendor/topthink/think-orm/src/db/connector/Mysql.php b/vendor/topthink/think-orm/src/db/connector/Mysql.php deleted file mode 100644 index e82f4f052..000000000 --- a/vendor/topthink/think-orm/src/db/connector/Mysql.php +++ /dev/null @@ -1,162 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\connector; - -use PDO; -use think\db\PDOConnection; - -/** - * mysql数据库驱动 - */ -class Mysql extends PDOConnection -{ - - /** - * 解析pdo连接的dsn信息 - * @access protected - * @param array $config 连接信息 - * @return string - */ - protected function parseDsn(array $config): string - { - if (!empty($config['socket'])) { - $dsn = 'mysql:unix_socket=' . $config['socket']; - } elseif (!empty($config['hostport'])) { - $dsn = 'mysql:host=' . $config['hostname'] . ';port=' . $config['hostport']; - } else { - $dsn = 'mysql:host=' . $config['hostname']; - } - $dsn .= ';dbname=' . $config['database']; - - if (!empty($config['charset'])) { - $dsn .= ';charset=' . $config['charset']; - } - - return $dsn; - } - - /** - * 取得数据表的字段信息 - * @access public - * @param string $tableName - * @return array - */ - public function getFields(string $tableName): array - { - list($tableName) = explode(' ', $tableName); - - if (false === strpos($tableName, '`')) { - if (strpos($tableName, '.')) { - $tableName = str_replace('.', '`.`', $tableName); - } - $tableName = '`' . $tableName . '`'; - } - - $sql = 'SHOW FULL COLUMNS FROM ' . $tableName; - $pdo = $this->getPDOStatement($sql); - $result = $pdo->fetchAll(PDO::FETCH_ASSOC); - $info = []; - - if (!empty($result)) { - foreach ($result as $key => $val) { - $val = array_change_key_case($val); - - $info[$val['field']] = [ - 'name' => $val['field'], - 'type' => $val['type'], - 'notnull' => (bool) ('' === $val['null']), // not null is empty, null is yes - 'default' => $val['default'], - 'primary' => (strtolower($val['key']) == 'pri'), - 'autoinc' => (strtolower($val['extra']) == 'auto_increment'), - 'comment' => $val['comment'], - ]; - } - } - - return $this->fieldCase($info); - } - - /** - * 取得数据库的表信息 - * @access public - * @param string $dbName - * @return array - */ - public function getTables(string $dbName = ''): array - { - $sql = !empty($dbName) ? 'SHOW TABLES FROM ' . $dbName : 'SHOW TABLES '; - $pdo = $this->getPDOStatement($sql); - $result = $pdo->fetchAll(PDO::FETCH_ASSOC); - $info = []; - - foreach ($result as $key => $val) { - $info[$key] = current($val); - } - - return $info; - } - - protected function supportSavepoint(): bool - { - return true; - } - - /** - * 启动XA事务 - * @access public - * @param string $xid XA事务id - * @return void - */ - public function startTransXa(string $xid) - { - $this->initConnect(true); - $this->linkID->execute("XA START '$xid'"); - } - - /** - * 预编译XA事务 - * @access public - * @param string $xid XA事务id - * @return void - */ - public function prepareXa(string $xid) - { - $this->initConnect(true); - $this->linkID->execute("XA END '$xid'"); - $this->linkID->execute("XA PREPARE '$xid'"); - } - - /** - * 提交XA事务 - * @access public - * @param string $xid XA事务id - * @return void - */ - public function commitXa(string $xid) - { - $this->initConnect(true); - $this->linkID->execute("XA COMMIT '$xid'"); - } - - /** - * 回滚XA事务 - * @access public - * @param string $xid XA事务id - * @return void - */ - public function rollbackXa(string $xid) - { - $this->initConnect(true); - $this->linkID->execute("XA ROLLBACK '$xid'"); - } -} diff --git a/vendor/topthink/think-orm/src/db/connector/Oracle.php b/vendor/topthink/think-orm/src/db/connector/Oracle.php deleted file mode 100644 index 1c8032382..000000000 --- a/vendor/topthink/think-orm/src/db/connector/Oracle.php +++ /dev/null @@ -1,117 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\db\connector; - -use PDO; -use think\db\BaseQuery; -use think\db\PDOConnection; - -/** - * Oracle数据库驱动 - */ -class Oracle extends PDOConnection -{ - /** - * 解析pdo连接的dsn信息 - * @access protected - * @param array $config 连接信息 - * @return string - */ - protected function parseDsn(array $config): string - { - $dsn = 'oci:dbname='; - - if (!empty($config['hostname'])) { - // Oracle Instant Client - $dsn .= '//' . $config['hostname'] . ($config['hostport'] ? ':' . $config['hostport'] : '') . '/'; - } - - $dsn .= $config['database']; - - if (!empty($config['charset'])) { - $dsn .= ';charset=' . $config['charset']; - } - - return $dsn; - } - - /** - * 取得数据表的字段信息 - * @access public - * @param string $tableName - * @return array - */ - public function getFields(string $tableName): array - { - list($tableName) = explode(' ', $tableName); - $sql = "select a.column_name,data_type,DECODE (nullable, 'Y', 0, 1) notnull,data_default, DECODE (A .column_name,b.column_name,1,0) pk from all_tab_columns a,(select column_name from all_constraints c, all_cons_columns col where c.constraint_name = col.constraint_name and c.constraint_type = 'P' and c.table_name = '" . strtoupper($tableName) . "' ) b where table_name = '" . strtoupper($tableName) . "' and a.column_name = b.column_name (+)"; - - $pdo = $this->getPDOStatement($sql); - $result = $pdo->fetchAll(PDO::FETCH_ASSOC); - $info = []; - - if ($result) { - foreach ($result as $key => $val) { - $val = array_change_key_case($val); - - $info[$val['column_name']] = [ - 'name' => $val['column_name'], - 'type' => $val['data_type'], - 'notnull' => $val['notnull'], - 'default' => $val['data_default'], - 'primary' => $val['pk'], - 'autoinc' => $val['pk'], - ]; - } - } - - return $this->fieldCase($info); - } - - /** - * 取得数据库的表信息(暂时实现取得用户表信息) - * @access public - * @param string $dbName - * @return array - */ - public function getTables(string $dbName = ''): array - { - $sql = 'select table_name from all_tables'; - $pdo = $this->getPDOStatement($sql); - $result = $pdo->fetchAll(PDO::FETCH_ASSOC); - $info = []; - - foreach ($result as $key => $val) { - $info[$key] = current($val); - } - - return $info; - } - - /** - * 获取最近插入的ID - * @access public - * @param BaseQuery $query 查询对象 - * @param string $sequence 自增序列名 - * @return mixed - */ - public function getLastInsID(BaseQuery $query, string $sequence = null) - { - $pdo = $this->linkID->query("select {$sequence}.currval as id from dual"); - $result = $pdo->fetchColumn(); - - return $result; - } - - protected function supportSavepoint(): bool - { - return true; - } -} diff --git a/vendor/topthink/think-orm/src/db/connector/Pgsql.php b/vendor/topthink/think-orm/src/db/connector/Pgsql.php deleted file mode 100644 index 1310b9739..000000000 --- a/vendor/topthink/think-orm/src/db/connector/Pgsql.php +++ /dev/null @@ -1,108 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\db\connector; - -use PDO; -use think\db\PDOConnection; - -/** - * Pgsql数据库驱动 - */ -class Pgsql extends PDOConnection -{ - - /** - * 默认PDO连接参数 - * @var array - */ - protected $params = [ - PDO::ATTR_CASE => PDO::CASE_NATURAL, - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL, - PDO::ATTR_STRINGIFY_FETCHES => false, - ]; - - /** - * 解析pdo连接的dsn信息 - * @access protected - * @param array $config 连接信息 - * @return string - */ - protected function parseDsn(array $config): string - { - $dsn = 'pgsql:dbname=' . $config['database'] . ';host=' . $config['hostname']; - - if (!empty($config['hostport'])) { - $dsn .= ';port=' . $config['hostport']; - } - - return $dsn; - } - - /** - * 取得数据表的字段信息 - * @access public - * @param string $tableName - * @return array - */ - public function getFields(string $tableName): array - { - list($tableName) = explode(' ', $tableName); - $sql = 'select fields_name as "field",fields_type as "type",fields_not_null as "null",fields_key_name as "key",fields_default as "default",fields_default as "extra" from table_msg(\'' . $tableName . '\');'; - - $pdo = $this->getPDOStatement($sql); - $result = $pdo->fetchAll(PDO::FETCH_ASSOC); - $info = []; - - if (!empty($result)) { - foreach ($result as $key => $val) { - $val = array_change_key_case($val); - - $info[$val['field']] = [ - 'name' => $val['field'], - 'type' => $val['type'], - 'notnull' => (bool) ('' !== $val['null']), - 'default' => $val['default'], - 'primary' => !empty($val['key']), - 'autoinc' => (0 === strpos($val['extra'], 'nextval(')), - ]; - } - } - - return $this->fieldCase($info); - } - - /** - * 取得数据库的表信息 - * @access public - * @param string $dbName - * @return array - */ - public function getTables(string $dbName = ''): array - { - $sql = "select tablename as Tables_in_test from pg_tables where schemaname ='public'"; - $pdo = $this->getPDOStatement($sql); - $result = $pdo->fetchAll(PDO::FETCH_ASSOC); - $info = []; - - foreach ($result as $key => $val) { - $info[$key] = current($val); - } - - return $info; - } - - protected function supportSavepoint(): bool - { - return true; - } -} diff --git a/vendor/topthink/think-orm/src/db/connector/Sqlite.php b/vendor/topthink/think-orm/src/db/connector/Sqlite.php deleted file mode 100644 index 12a051712..000000000 --- a/vendor/topthink/think-orm/src/db/connector/Sqlite.php +++ /dev/null @@ -1,96 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\db\connector; - -use PDO; -use think\db\PDOConnection; - -/** - * Sqlite数据库驱动 - */ -class Sqlite extends PDOConnection -{ - - /** - * 解析pdo连接的dsn信息 - * @access protected - * @param array $config 连接信息 - * @return string - */ - protected function parseDsn(array $config): string - { - $dsn = 'sqlite:' . $config['database']; - - return $dsn; - } - - /** - * 取得数据表的字段信息 - * @access public - * @param string $tableName - * @return array - */ - public function getFields(string $tableName): array - { - list($tableName) = explode(' ', $tableName); - $sql = 'PRAGMA table_info( ' . $tableName . ' )'; - - $pdo = $this->getPDOStatement($sql); - $result = $pdo->fetchAll(PDO::FETCH_ASSOC); - $info = []; - - if (!empty($result)) { - foreach ($result as $key => $val) { - $val = array_change_key_case($val); - - $info[$val['name']] = [ - 'name' => $val['name'], - 'type' => $val['type'], - 'notnull' => 1 === $val['notnull'], - 'default' => $val['dflt_value'], - 'primary' => '1' == $val['pk'], - 'autoinc' => '1' == $val['pk'], - ]; - } - } - - return $this->fieldCase($info); - } - - /** - * 取得数据库的表信息 - * @access public - * @param string $dbName - * @return array - */ - public function getTables(string $dbName = ''): array - { - $sql = "SELECT name FROM sqlite_master WHERE type='table' " - . "UNION ALL SELECT name FROM sqlite_temp_master " - . "WHERE type='table' ORDER BY name"; - - $pdo = $this->getPDOStatement($sql); - $result = $pdo->fetchAll(PDO::FETCH_ASSOC); - $info = []; - - foreach ($result as $key => $val) { - $info[$key] = current($val); - } - - return $info; - } - - protected function supportSavepoint(): bool - { - return true; - } -} diff --git a/vendor/topthink/think-orm/src/db/connector/Sqlsrv.php b/vendor/topthink/think-orm/src/db/connector/Sqlsrv.php deleted file mode 100644 index 1a5fffe4e..000000000 --- a/vendor/topthink/think-orm/src/db/connector/Sqlsrv.php +++ /dev/null @@ -1,122 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\db\connector; - -use PDO; -use think\db\PDOConnection; - -/** - * Sqlsrv数据库驱动 - */ -class Sqlsrv extends PDOConnection -{ - /** - * 默认PDO连接参数 - * @var array - */ - protected $params = [ - PDO::ATTR_CASE => PDO::CASE_NATURAL, - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL, - PDO::ATTR_STRINGIFY_FETCHES => false, - ]; - - /** - * 解析pdo连接的dsn信息 - * @access protected - * @param array $config 连接信息 - * @return string - */ - protected function parseDsn(array $config): string - { - $dsn = 'sqlsrv:Database=' . $config['database'] . ';Server=' . $config['hostname']; - - if (!empty($config['hostport'])) { - $dsn .= ',' . $config['hostport']; - } - - return $dsn; - } - - /** - * 取得数据表的字段信息 - * @access public - * @param string $tableName - * @return array - */ - public function getFields(string $tableName): array - { - list($tableName) = explode(' ', $tableName); - - $sql = "SELECT column_name, data_type, column_default, is_nullable - FROM information_schema.tables AS t - JOIN information_schema.columns AS c - ON t.table_catalog = c.table_catalog - AND t.table_schema = c.table_schema - AND t.table_name = c.table_name - WHERE t.table_name = '$tableName'"; - - $pdo = $this->getPDOStatement($sql); - $result = $pdo->fetchAll(PDO::FETCH_ASSOC); - $info = []; - - if (!empty($result)) { - foreach ($result as $key => $val) { - $val = array_change_key_case($val); - - $info[$val['column_name']] = [ - 'name' => $val['column_name'], - 'type' => $val['data_type'], - 'notnull' => (bool) ('' === $val['is_nullable']), // not null is empty, null is yes - 'default' => $val['column_default'], - 'primary' => false, - 'autoinc' => false, - ]; - } - } - - $sql = "SELECT column_name FROM information_schema.key_column_usage WHERE table_name='$tableName'"; - $pdo = $this->linkID->query($sql); - $result = $pdo->fetch(PDO::FETCH_ASSOC); - - if ($result) { - $info[$result['column_name']]['primary'] = true; - } - - return $this->fieldCase($info); - } - - /** - * 取得数据表的字段信息 - * @access public - * @param string $dbName - * @return array - */ - public function getTables(string $dbName = ''): array - { - $sql = "SELECT TABLE_NAME - FROM INFORMATION_SCHEMA.TABLES - WHERE TABLE_TYPE = 'BASE TABLE' - "; - - $pdo = $this->getPDOStatement($sql); - $result = $pdo->fetchAll(PDO::FETCH_ASSOC); - $info = []; - - foreach ($result as $key => $val) { - $info[$key] = current($val); - } - - return $info; - } - -} diff --git a/vendor/topthink/think-orm/src/db/connector/pgsql.sql b/vendor/topthink/think-orm/src/db/connector/pgsql.sql deleted file mode 100644 index e1a09a30c..000000000 --- a/vendor/topthink/think-orm/src/db/connector/pgsql.sql +++ /dev/null @@ -1,117 +0,0 @@ -CREATE OR REPLACE FUNCTION pgsql_type(a_type varchar) RETURNS varchar AS -$BODY$ -DECLARE - v_type varchar; -BEGIN - IF a_type='int8' THEN - v_type:='bigint'; - ELSIF a_type='int4' THEN - v_type:='integer'; - ELSIF a_type='int2' THEN - v_type:='smallint'; - ELSIF a_type='bpchar' THEN - v_type:='char'; - ELSE - v_type:=a_type; - END IF; - RETURN v_type; -END; -$BODY$ -LANGUAGE PLPGSQL; - -CREATE TYPE "public"."tablestruct" AS ( - "fields_key_name" varchar(100), - "fields_name" VARCHAR(200), - "fields_type" VARCHAR(20), - "fields_length" BIGINT, - "fields_not_null" VARCHAR(10), - "fields_default" VARCHAR(500), - "fields_comment" VARCHAR(1000) -); - -CREATE OR REPLACE FUNCTION "public"."table_msg" (a_schema_name varchar, a_table_name varchar) RETURNS SETOF "public"."tablestruct" AS -$body$ -DECLARE - v_ret tablestruct; - v_oid oid; - v_sql varchar; - v_rec RECORD; - v_key varchar; -BEGIN - SELECT - pg_class.oid INTO v_oid - FROM - pg_class - INNER JOIN pg_namespace ON (pg_class.relnamespace = pg_namespace.oid AND lower(pg_namespace.nspname) = a_schema_name) - WHERE - pg_class.relname=a_table_name; - IF NOT FOUND THEN - RETURN; - END IF; - - v_sql=' - SELECT - pg_attribute.attname AS fields_name, - pg_attribute.attnum AS fields_index, - pgsql_type(pg_type.typname::varchar) AS fields_type, - pg_attribute.atttypmod-4 as fields_length, - CASE WHEN pg_attribute.attnotnull THEN ''not null'' - ELSE '''' - END AS fields_not_null, - pg_attrdef.adsrc AS fields_default, - pg_description.description AS fields_comment - FROM - pg_attribute - INNER JOIN pg_class ON pg_attribute.attrelid = pg_class.oid - INNER JOIN pg_type ON pg_attribute.atttypid = pg_type.oid - LEFT OUTER JOIN pg_attrdef ON pg_attrdef.adrelid = pg_class.oid AND pg_attrdef.adnum = pg_attribute.attnum - LEFT OUTER JOIN pg_description ON pg_description.objoid = pg_class.oid AND pg_description.objsubid = pg_attribute.attnum - WHERE - pg_attribute.attnum > 0 - AND attisdropped <> ''t'' - AND pg_class.oid = ' || v_oid || ' - ORDER BY pg_attribute.attnum' ; - - FOR v_rec IN EXECUTE v_sql LOOP - v_ret.fields_name=v_rec.fields_name; - v_ret.fields_type=v_rec.fields_type; - IF v_rec.fields_length > 0 THEN - v_ret.fields_length:=v_rec.fields_length; - ELSE - v_ret.fields_length:=NULL; - END IF; - v_ret.fields_not_null=v_rec.fields_not_null; - v_ret.fields_default=v_rec.fields_default; - v_ret.fields_comment=v_rec.fields_comment; - SELECT constraint_name INTO v_key FROM information_schema.key_column_usage WHERE table_schema=a_schema_name AND table_name=a_table_name AND column_name=v_rec.fields_name; - IF FOUND THEN - v_ret.fields_key_name=v_key; - ELSE - v_ret.fields_key_name=''; - END IF; - RETURN NEXT v_ret; - END LOOP; - RETURN ; -END; -$body$ -LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; - -COMMENT ON FUNCTION "public"."table_msg"(a_schema_name varchar, a_table_name varchar) -IS '获得表信息'; - ----重载一个函数 -CREATE OR REPLACE FUNCTION "public"."table_msg" (a_table_name varchar) RETURNS SETOF "public"."tablestruct" AS -$body$ -DECLARE - v_ret tablestruct; -BEGIN - FOR v_ret IN SELECT * FROM table_msg('public',a_table_name) LOOP - RETURN NEXT v_ret; - END LOOP; - RETURN; -END; -$body$ -LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; - -COMMENT ON FUNCTION "public"."table_msg"(a_table_name varchar) -IS '获得表信息'; \ No newline at end of file diff --git a/vendor/topthink/think-orm/src/db/exception/BindParamException.php b/vendor/topthink/think-orm/src/db/exception/BindParamException.php deleted file mode 100644 index 08bb38804..000000000 --- a/vendor/topthink/think-orm/src/db/exception/BindParamException.php +++ /dev/null @@ -1,35 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\exception; - -/** - * PDO参数绑定异常 - */ -class BindParamException extends DbException -{ - - /** - * BindParamException constructor. - * @access public - * @param string $message - * @param array $config - * @param string $sql - * @param array $bind - * @param int $code - */ - public function __construct(string $message, array $config, string $sql, array $bind, int $code = 10502) - { - $this->setData('Bind Param', $bind); - parent::__construct($message, $config, $sql, $code); - } -} diff --git a/vendor/topthink/think-orm/src/db/exception/DataNotFoundException.php b/vendor/topthink/think-orm/src/db/exception/DataNotFoundException.php deleted file mode 100644 index d10dd4330..000000000 --- a/vendor/topthink/think-orm/src/db/exception/DataNotFoundException.php +++ /dev/null @@ -1,43 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\exception; - -class DataNotFoundException extends DbException -{ - protected $table; - - /** - * DbException constructor. - * @access public - * @param string $message - * @param string $table - * @param array $config - */ - public function __construct(string $message, string $table = '', array $config = []) - { - $this->message = $message; - $this->table = $table; - - $this->setData('Database Config', $config); - } - - /** - * 获取数据表名 - * @access public - * @return string - */ - public function getTable() - { - return $this->table; - } -} diff --git a/vendor/topthink/think-orm/src/db/exception/DbException.php b/vendor/topthink/think-orm/src/db/exception/DbException.php deleted file mode 100644 index d5bfc3f04..000000000 --- a/vendor/topthink/think-orm/src/db/exception/DbException.php +++ /dev/null @@ -1,81 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\exception; - -use Exception; - -/** - * Database相关异常处理类 - */ -class DbException extends Exception -{ - /** - * DbException constructor. - * @access public - * @param string $message - * @param array $config - * @param string $sql - * @param int $code - */ - public function __construct(string $message, array $config = [], string $sql = '', int $code = 10500) - { - $this->message = $message; - $this->code = $code; - - $this->setData('Database Status', [ - 'Error Code' => $code, - 'Error Message' => $message, - 'Error SQL' => $sql, - ]); - - unset($config['username'], $config['password']); - $this->setData('Database Config', $config); - } - - /** - * 保存异常页面显示的额外Debug数据 - * @var array - */ - protected $data = []; - - /** - * 设置异常额外的Debug数据 - * 数据将会显示为下面的格式 - * - * Exception Data - * -------------------------------------------------- - * Label 1 - * key1 value1 - * key2 value2 - * Label 2 - * key1 value1 - * key2 value2 - * - * @param string $label 数据分类,用于异常页面显示 - * @param array $data 需要显示的数据,必须为关联数组 - */ - final protected function setData($label, array $data) - { - $this->data[$label] = $data; - } - - /** - * 获取异常额外Debug数据 - * 主要用于输出到异常页面便于调试 - * @return array 由setData设置的Debug数据 - */ - final public function getData() - { - return $this->data; - } -} diff --git a/vendor/topthink/think-orm/src/db/exception/InvalidArgumentException.php b/vendor/topthink/think-orm/src/db/exception/InvalidArgumentException.php deleted file mode 100644 index 047e45e9b..000000000 --- a/vendor/topthink/think-orm/src/db/exception/InvalidArgumentException.php +++ /dev/null @@ -1,21 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); -namespace think\db\exception; - -use Psr\SimpleCache\InvalidArgumentException as SimpleCacheInvalidArgumentInterface; - -/** - * 非法数据异常 - */ -class InvalidArgumentException extends \InvalidArgumentException implements SimpleCacheInvalidArgumentInterface -{ -} diff --git a/vendor/topthink/think-orm/src/db/exception/ModelEventException.php b/vendor/topthink/think-orm/src/db/exception/ModelEventException.php deleted file mode 100644 index 767bc1a9f..000000000 --- a/vendor/topthink/think-orm/src/db/exception/ModelEventException.php +++ /dev/null @@ -1,19 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\db\exception; - -/** - * 模型事件异常 - */ -class ModelEventException extends DbException -{ -} diff --git a/vendor/topthink/think-orm/src/db/exception/ModelNotFoundException.php b/vendor/topthink/think-orm/src/db/exception/ModelNotFoundException.php deleted file mode 100644 index 84a152579..000000000 --- a/vendor/topthink/think-orm/src/db/exception/ModelNotFoundException.php +++ /dev/null @@ -1,44 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\exception; - -class ModelNotFoundException extends DbException -{ - protected $model; - - /** - * 构造方法 - * @access public - * @param string $message - * @param string $model - * @param array $config - */ - public function __construct(string $message, string $model = '', array $config = []) - { - $this->message = $message; - $this->model = $model; - - $this->setData('Database Config', $config); - } - - /** - * 获取模型类名 - * @access public - * @return string - */ - public function getModel() - { - return $this->model; - } - -} diff --git a/vendor/topthink/think-orm/src/db/exception/PDOException.php b/vendor/topthink/think-orm/src/db/exception/PDOException.php deleted file mode 100644 index 41c0d738b..000000000 --- a/vendor/topthink/think-orm/src/db/exception/PDOException.php +++ /dev/null @@ -1,41 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\db\exception; - -/** - * PDO异常处理类 - * 重新封装了系统的\PDOException类 - */ -class PDOException extends DbException -{ - /** - * PDOException constructor. - * @access public - * @param \PDOException $exception - * @param array $config - * @param string $sql - * @param int $code - */ - public function __construct(\PDOException $exception, array $config = [], string $sql = '', int $code = 10501) - { - $error = $exception->errorInfo; - - $this->setData('PDO Error Info', [ - 'SQLSTATE' => $error[0], - 'Driver Error Code' => isset($error[1]) ? $error[1] : 0, - 'Driver Error Message' => isset($error[2]) ? $error[2] : '', - ]); - - parent::__construct($exception->getMessage(), $config, $sql, $code); - } -} diff --git a/vendor/topthink/think-orm/src/facade/Db.php b/vendor/topthink/think-orm/src/facade/Db.php deleted file mode 100644 index 174a4f023..000000000 --- a/vendor/topthink/think-orm/src/facade/Db.php +++ /dev/null @@ -1,86 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\facade; - -if (class_exists('think\Facade')) { - class Facade extends \think\Facade - {} -} else { - class Facade - { - /** - * 始终创建新的对象实例 - * @var bool - */ - protected static $alwaysNewInstance; - - protected static $instance; - - /** - * 获取当前Facade对应类名 - * @access protected - * @return string - */ - protected static function getFacadeClass() - {} - - /** - * 创建Facade实例 - * @static - * @access protected - * @param bool $newInstance 是否每次创建新的实例 - * @return object - */ - protected static function createFacade(bool $newInstance = false) - { - $class = static::getFacadeClass() ?: 'think\DbManager'; - - if (static::$alwaysNewInstance) { - $newInstance = true; - } - - if ($newInstance) { - return new $class(); - } - - if (!self::$instance) { - self::$instance = new $class(); - } - - return self::$instance; - - } - - // 调用实际类的方法 - public static function __callStatic($method, $params) - { - return call_user_func_array([static::createFacade(), $method], $params); - } - } -} - -/** - * @see \think\DbManager - * @mixin \think\DbManager - */ -class Db extends Facade -{ - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'think\DbManager'; - } -} diff --git a/vendor/topthink/think-orm/src/model/Collection.php b/vendor/topthink/think-orm/src/model/Collection.php deleted file mode 100644 index fd54272cc..000000000 --- a/vendor/topthink/think-orm/src/model/Collection.php +++ /dev/null @@ -1,250 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model; - -use think\Collection as BaseCollection; -use think\Model; -use think\Paginator; - -/** - * 模型数据集类 - */ -class Collection extends BaseCollection -{ - /** - * 延迟预载入关联查询 - * @access public - * @param array|string $relation 关联 - * @param mixed $cache 关联缓存 - * @return $this - */ - public function load($relation, $cache = false) - { - if (!$this->isEmpty()) { - $item = current($this->items); - $item->eagerlyResultSet($this->items, (array) $relation, [], false, $cache); - } - - return $this; - } - - /** - * 删除数据集的数据 - * @access public - * @return bool - */ - public function delete(): bool - { - $this->each(function (Model $model) { - $model->delete(); - }); - - return true; - } - - /** - * 更新数据 - * @access public - * @param array $data 数据数组 - * @param array $allowField 允许字段 - * @return bool - */ - public function update(array $data, array $allowField = []): bool - { - $this->each(function (Model $model) use ($data, $allowField) { - if (!empty($allowField)) { - $model->allowField($allowField); - } - - $model->save($data); - }); - - return true; - } - - /** - * 设置需要隐藏的输出属性 - * @access public - * @param array $hidden 属性列表 - * @return $this - */ - public function hidden(array $hidden) - { - $this->each(function (Model $model) use ($hidden) { - $model->hidden($hidden); - }); - - return $this; - } - - /** - * 设置需要输出的属性 - * @access public - * @param array $visible - * @return $this - */ - public function visible(array $visible) - { - $this->each(function (Model $model) use ($visible) { - $model->visible($visible); - }); - - return $this; - } - - /** - * 设置需要追加的输出属性 - * @access public - * @param array $append 属性列表 - * @return $this - */ - public function append(array $append) - { - $this->each(function (Model $model) use ($append) { - $model->append($append); - }); - - return $this; - } - - /** - * 设置父模型 - * @access public - * @param Model $parent 父模型 - * @return $this - */ - public function setParent(Model $parent) - { - $this->each(function (Model $model) use ($parent) { - $model->setParent($parent); - }); - - return $this; - } - - /** - * 设置数据字段获取器 - * @access public - * @param string|array $name 字段名 - * @param callable $callback 闭包获取器 - * @return $this - */ - public function withAttr($name, $callback = null) - { - $this->each(function (Model $model) use ($name, $callback) { - $model->withAttribute($name, $callback); - }); - - return $this; - } - - /** - * 绑定(一对一)关联属性到当前模型 - * @access protected - * @param string $relation 关联名称 - * @param array $attrs 绑定属性 - * @return $this - * @throws Exception - */ - public function bindAttr(string $relation, array $attrs = []) - { - $this->each(function (Model $model) use ($relation, $attrs) { - $model->bindAttr($relation, $attrs); - }); - - return $this; - } - - /** - * 按指定键整理数据 - * - * @access public - * @param mixed $items 数据 - * @param string $indexKey 键名 - * @return array - */ - public function dictionary($items = null, string &$indexKey = null) - { - if ($items instanceof self || $items instanceof Paginator) { - $items = $items->all(); - } - - $items = is_null($items) ? $this->items : $items; - - if ($items && empty($indexKey)) { - $indexKey = $items[0]->getPk(); - } - - if (isset($indexKey) && is_string($indexKey)) { - return array_column($items, null, $indexKey); - } - - return $items; - } - - /** - * 比较数据集,返回差集 - * - * @access public - * @param mixed $items 数据 - * @param string $indexKey 指定比较的键名 - * @return static - */ - public function diff($items, string $indexKey = null) - { - if ($this->isEmpty()) { - return new static($items); - } - - $diff = []; - $dictionary = $this->dictionary($items, $indexKey); - - if (is_string($indexKey)) { - foreach ($this->items as $item) { - if (!isset($dictionary[$item[$indexKey]])) { - $diff[] = $item; - } - } - } - - return new static($diff); - } - - /** - * 比较数据集,返回交集 - * - * @access public - * @param mixed $items 数据 - * @param string $indexKey 指定比较的键名 - * @return static - */ - public function intersect($items, string $indexKey = null) - { - if ($this->isEmpty()) { - return new static([]); - } - - $intersect = []; - $dictionary = $this->dictionary($items, $indexKey); - - if (is_string($indexKey)) { - foreach ($this->items as $item) { - if (isset($dictionary[$item[$indexKey]])) { - $intersect[] = $item; - } - } - } - - return new static($intersect); - } -} diff --git a/vendor/topthink/think-orm/src/model/Pivot.php b/vendor/topthink/think-orm/src/model/Pivot.php deleted file mode 100644 index 893c01b7e..000000000 --- a/vendor/topthink/think-orm/src/model/Pivot.php +++ /dev/null @@ -1,53 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model; - -use think\Model; - -/** - * 多对多中间表模型类 - */ -class Pivot extends Model -{ - - /** - * 父模型 - * @var Model - */ - public $parent; - - /** - * 是否时间自动写入 - * @var bool - */ - protected $autoWriteTimestamp = false; - - /** - * 架构函数 - * @access public - * @param array $data 数据 - * @param Model $parent 上级模型 - * @param string $table 中间数据表名 - */ - public function __construct(array $data = [], Model $parent = null, string $table = '') - { - $this->parent = $parent; - - if (is_null($this->name)) { - $this->name = $table; - } - - parent::__construct($data); - } - -} diff --git a/vendor/topthink/think-orm/src/model/Relation.php b/vendor/topthink/think-orm/src/model/Relation.php deleted file mode 100644 index 12ab8a817..000000000 --- a/vendor/topthink/think-orm/src/model/Relation.php +++ /dev/null @@ -1,258 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model; - -use Closure; -use ReflectionFunction; -use think\db\BaseQuery as Query; -use think\db\exception\DbException as Exception; -use think\Model; - -/** - * 模型关联基础类 - * @package think\model - * @mixin Query - */ -abstract class Relation -{ - /** - * 父模型对象 - * @var Model - */ - protected $parent; - - /** - * 当前关联的模型类名 - * @var string - */ - protected $model; - - /** - * 关联模型查询对象 - * @var Query - */ - protected $query; - - /** - * 关联表外键 - * @var string - */ - protected $foreignKey; - - /** - * 关联表主键 - * @var string - */ - protected $localKey; - - /** - * 是否执行关联基础查询 - * @var bool - */ - protected $baseQuery; - - /** - * 是否为自关联 - * @var bool - */ - protected $selfRelation = false; - - /** - * 关联数据数量限制 - * @var int - */ - protected $withLimit; - - /** - * 关联数据字段限制 - * @var array - */ - protected $withField; - - /** - * 获取关联的所属模型 - * @access public - * @return Model - */ - public function getParent(): Model - { - return $this->parent; - } - - /** - * 获取当前的关联模型类的Query实例 - * @access public - * @return Query - */ - public function getQuery() - { - return $this->query; - } - - /** - * 获取当前的关联模型类的实例 - * @access public - * @return Model - */ - public function getModel(): Model - { - return $this->query->getModel(); - } - - /** - * 当前关联是否为自关联 - * @access public - * @return bool - */ - public function isSelfRelation(): bool - { - return $this->selfRelation; - } - - /** - * 封装关联数据集 - * @access public - * @param array $resultSet 数据集 - * @param Model $parent 父模型 - * @return mixed - */ - protected function resultSetBuild(array $resultSet, Model $parent = null) - { - return (new $this->model)->toCollection($resultSet)->setParent($parent); - } - - protected function getQueryFields(string $model) - { - $fields = $this->query->getOptions('field'); - return $this->getRelationQueryFields($fields, $model); - } - - protected function getRelationQueryFields($fields, string $model) - { - if (empty($fields) || '*' == $fields) { - return $model . '.*'; - } - - if (is_string($fields)) { - $fields = explode(',', $fields); - } - - foreach ($fields as &$field) { - if (false === strpos($field, '.')) { - $field = $model . '.' . $field; - } - } - - return $fields; - } - - protected function getQueryWhere(array &$where, string $relation): void - { - foreach ($where as $key => &$val) { - if (is_string($key)) { - $where[] = [false === strpos($key, '.') ? $relation . '.' . $key : $key, '=', $val]; - unset($where[$key]); - } elseif (isset($val[0]) && false === strpos($val[0], '.')) { - $val[0] = $relation . '.' . $val[0]; - } - } - } - - /** - * 更新数据 - * @access public - * @param array $data 更新数据 - * @return integer - */ - public function update(array $data = []): int - { - return $this->query->update($data); - } - - /** - * 删除记录 - * @access public - * @param mixed $data 表达式 true 表示强制删除 - * @return int - * @throws Exception - * @throws PDOException - */ - public function delete($data = null): int - { - return $this->query->delete($data); - } - - /** - * 限制关联数据的数量 - * @access public - * @param int $limit 关联数量限制 - * @return $this - */ - public function withLimit(int $limit) - { - $this->withLimit = $limit; - return $this; - } - - /** - * 限制关联数据的字段 - * @access public - * @param array $field 关联字段限制 - * @return $this - */ - public function withField(array $field) - { - $this->withField = $field; - return $this; - } - - /** - * 判断闭包的参数类型 - * @access protected - * @return mixed - */ - protected function getClosureType(Closure $closure) - { - $reflect = new ReflectionFunction($closure); - $params = $reflect->getParameters(); - - if (!empty($params)) { - $type = $params[0]->getType(); - return Relation::class == $type || is_null($type) ? $this : $this->query; - } - - return $this; - } - - /** - * 执行基础查询(仅执行一次) - * @access protected - * @return void - */ - protected function baseQuery(): void - {} - - public function __call($method, $args) - { - if ($this->query) { - // 执行基础查询 - $this->baseQuery(); - - $result = call_user_func_array([$this->query, $method], $args); - - return $result === $this->query ? $this : $result; - } - - throw new Exception('method not exists:' . __CLASS__ . '->' . $method); - } -} diff --git a/vendor/topthink/think-orm/src/model/concern/Attribute.php b/vendor/topthink/think-orm/src/model/concern/Attribute.php deleted file mode 100644 index a89b0b0f0..000000000 --- a/vendor/topthink/think-orm/src/model/concern/Attribute.php +++ /dev/null @@ -1,651 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model\concern; - -use InvalidArgumentException; -use think\db\Raw; -use think\helper\Str; -use think\model\Relation; - -/** - * 模型数据处理 - */ -trait Attribute -{ - /** - * 数据表主键 复合主键使用数组定义 - * @var string|array - */ - protected $pk = 'id'; - - /** - * 数据表字段信息 留空则自动获取 - * @var array - */ - protected $schema = []; - - /** - * 当前允许写入的字段 - * @var array - */ - protected $field = []; - - /** - * 字段自动类型转换 - * @var array - */ - protected $type = []; - - /** - * 数据表废弃字段 - * @var array - */ - protected $disuse = []; - - /** - * 数据表只读字段 - * @var array - */ - protected $readonly = []; - - /** - * 当前模型数据 - * @var array - */ - private $data = []; - - /** - * 原始数据 - * @var array - */ - private $origin = []; - - /** - * JSON数据表字段 - * @var array - */ - protected $json = []; - - /** - * JSON数据表字段类型 - * @var array - */ - protected $jsonType = []; - - /** - * JSON数据取出是否需要转换为数组 - * @var bool - */ - protected $jsonAssoc = false; - - /** - * 是否严格字段大小写 - * @var bool - */ - protected $strict = true; - - /** - * 修改器执行记录 - * @var array - */ - private $set = []; - - /** - * 动态获取器 - * @var array - */ - private $withAttr = []; - - /** - * 获取模型对象的主键 - * @access public - * @return string|array - */ - public function getPk() - { - return $this->pk; - } - - /** - * 判断一个字段名是否为主键字段 - * @access public - * @param string $key 名称 - * @return bool - */ - protected function isPk(string $key): bool - { - $pk = $this->getPk(); - - if (is_string($pk) && $pk == $key) { - return true; - } elseif (is_array($pk) && in_array($key, $pk)) { - return true; - } - - return false; - } - - /** - * 获取模型对象的主键值 - * @access public - * @return mixed - */ - public function getKey() - { - $pk = $this->getPk(); - - if (is_string($pk) && array_key_exists($pk, $this->data)) { - return $this->data[$pk]; - } - - return; - } - - /** - * 设置允许写入的字段 - * @access public - * @param array $field 允许写入的字段 - * @return $this - */ - public function allowField(array $field) - { - $this->field = $field; - - return $this; - } - - /** - * 设置只读字段 - * @access public - * @param array $field 只读字段 - * @return $this - */ - public function readOnly(array $field) - { - $this->readonly = $field; - - return $this; - } - - /** - * 获取实际的字段名 - * @access protected - * @param string $name 字段名 - * @return string - */ - protected function getRealFieldName(string $name): string - { - return $this->strict ? $name : Str::snake($name); - } - - /** - * 设置数据对象值 - * @access public - * @param array $data 数据 - * @param bool $set 是否调用修改器 - * @param array $allow 允许的字段名 - * @return $this - */ - public function data(array $data, bool $set = false, array $allow = []) - { - // 清空数据 - $this->data = []; - - // 废弃字段 - foreach ($this->disuse as $key) { - if (array_key_exists($key, $data)) { - unset($data[$key]); - } - } - - if (!empty($allow)) { - $result = []; - foreach ($allow as $name) { - if (isset($data[$name])) { - $result[$name] = $data[$name]; - } - } - $data = $result; - } - - if ($set) { - // 数据对象赋值 - $this->setAttrs($data); - } else { - $this->data = $data; - } - - return $this; - } - - /** - * 批量追加数据对象值 - * @access public - * @param array $data 数据 - * @param bool $set 是否需要进行数据处理 - * @return $this - */ - public function appendData(array $data, bool $set = false) - { - if ($set) { - $this->setAttrs($data); - } else { - $this->data = array_merge($this->data, $data); - } - - return $this; - } - - /** - * 获取对象原始数据 如果不存在指定字段返回null - * @access public - * @param string $name 字段名 留空获取全部 - * @return mixed - */ - public function getOrigin(string $name = null) - { - if (is_null($name)) { - return $this->origin; - } - - return array_key_exists($name, $this->origin) ? $this->origin[$name] : null; - } - - /** - * 获取对象原始数据 如果不存在指定字段返回false - * @access public - * @param string $name 字段名 留空获取全部 - * @return mixed - * @throws InvalidArgumentException - */ - public function getData(string $name = null) - { - if (is_null($name)) { - return $this->data; - } - - $fieldName = $this->getRealFieldName($name); - - if (array_key_exists($fieldName, $this->data)) { - return $this->data[$fieldName]; - } elseif (array_key_exists($fieldName, $this->relation)) { - return $this->relation[$fieldName]; - } - - throw new InvalidArgumentException('property not exists:' . static::class . '->' . $name); - } - - /** - * 获取变化的数据 并排除只读数据 - * @access public - * @return array - */ - public function getChangedData(): array - { - $data = $this->force ? $this->data : array_udiff_assoc($this->data, $this->origin, function ($a, $b) { - if ((empty($a) || empty($b)) && $a !== $b) { - return 1; - } - - return is_object($a) || $a != $b ? 1 : 0; - }); - - // 只读字段不允许更新 - foreach ($this->readonly as $key => $field) { - if (isset($data[$field])) { - unset($data[$field]); - } - } - - return $data; - } - - /** - * 直接设置数据对象值 - * @access public - * @param string $name 属性名 - * @param mixed $value 值 - * @return void - */ - public function set(string $name, $value): void - { - $name = $this->getRealFieldName($name); - - $this->data[$name] = $value; - } - - /** - * 通过修改器 批量设置数据对象值 - * @access public - * @param array $data 数据 - * @return void - */ - public function setAttrs(array $data): void - { - // 进行数据处理 - foreach ($data as $key => $value) { - $this->setAttr($key, $value, $data); - } - } - - /** - * 通过修改器 设置数据对象值 - * @access public - * @param string $name 属性名 - * @param mixed $value 属性值 - * @param array $data 数据 - * @return void - */ - public function setAttr(string $name, $value, array $data = []): void - { - $name = $this->getRealFieldName($name); - - if (isset($this->set[$name])) { - return; - } - - if (is_null($value) && $this->autoWriteTimestamp && in_array($name, [$this->createTime, $this->updateTime])) { - // 自动写入的时间戳字段 - $value = $this->autoWriteTimestamp(); - } else { - // 检测修改器 - $method = 'set' . Str::studly($name) . 'Attr'; - - if (method_exists($this, $method)) { - $array = $this->data; - - $value = $this->$method($value, array_merge($this->data, $data)); - - $this->set[$name] = true; - if (is_null($value) && $array !== $this->data) { - return; - } - } elseif (isset($this->type[$name])) { - // 类型转换 - $value = $this->writeTransform($value, $this->type[$name]); - } - } - - // 设置数据对象属性 - $this->data[$name] = $value; - } - - /** - * 数据写入 类型转换 - * @access protected - * @param mixed $value 值 - * @param string|array $type 要转换的类型 - * @return mixed - */ - protected function writeTransform($value, $type) - { - if (is_null($value)) { - return; - } - - if ($value instanceof Raw) { - return $value; - } - - if (is_array($type)) { - list($type, $param) = $type; - } elseif (strpos($type, ':')) { - list($type, $param) = explode(':', $type, 2); - } - - switch ($type) { - case 'integer': - $value = (int) $value; - break; - case 'float': - if (empty($param)) { - $value = (float) $value; - } else { - $value = (float) number_format($value, $param, '.', ''); - } - break; - case 'boolean': - $value = (bool) $value; - break; - case 'timestamp': - if (!is_numeric($value)) { - $value = strtotime($value); - } - break; - case 'datetime': - $value = is_numeric($value) ? $value : strtotime($value); - $value = $this->formatDateTime('Y-m-d H:i:s.u', $value); - break; - case 'object': - if (is_object($value)) { - $value = json_encode($value, JSON_FORCE_OBJECT); - } - break; - case 'array': - $value = (array) $value; - case 'json': - $option = !empty($param) ? (int) $param : JSON_UNESCAPED_UNICODE; - $value = json_encode($value, $option); - break; - case 'serialize': - $value = serialize($value); - break; - default: - if (is_object($value) && false !== strpos($type, '\\') && method_exists($value, '__toString')) { - // 对象类型 - $value = $value->__toString(); - } - } - - return $value; - } - - /** - * 获取器 获取数据对象的值 - * @access public - * @param string $name 名称 - * @return mixed - * @throws InvalidArgumentException - */ - public function getAttr(string $name) - { - try { - $relation = false; - $value = $this->getData($name); - } catch (InvalidArgumentException $e) { - $relation = $this->isRelationAttr($name); - $value = null; - } - - return $this->getValue($name, $value, $relation); - } - - /** - * 获取经过获取器处理后的数据对象的值 - * @access protected - * @param string $name 字段名称 - * @param mixed $value 字段值 - * @param bool|string $relation 是否为关联属性或者关联名 - * @return mixed - * @throws InvalidArgumentException - */ - protected function getValue(string $name, $value, $relation = false) - { - // 检测属性获取器 - $fieldName = $this->getRealFieldName($name); - $method = 'get' . Str::studly($name) . 'Attr'; - - if (isset($this->withAttr[$fieldName])) { - if ($relation) { - $value = $this->getRelationValue($relation); - } - - if (in_array($fieldName, $this->json) && is_array($this->withAttr[$fieldName])) { - $value = $this->getJsonValue($fieldName, $value); - } else { - $closure = $this->withAttr[$fieldName]; - $value = $closure($value, $this->data); - } - } elseif (method_exists($this, $method)) { - if ($relation) { - $value = $this->getRelationValue($relation); - } - - $value = $this->$method($value, $this->data); - } elseif (isset($this->type[$fieldName])) { - // 类型转换 - $value = $this->readTransform($value, $this->type[$fieldName]); - } elseif ($this->autoWriteTimestamp && in_array($fieldName, [$this->createTime, $this->updateTime])) { - $value = $this->getTimestampValue($value); - } elseif ($relation) { - $value = $this->getRelationValue($relation); - // 保存关联对象值 - $this->relation[$name] = $value; - } - - return $value; - } - - /** - * 获取JSON字段属性值 - * @access protected - * @param string $name 属性名 - * @param mixed $value JSON数据 - * @return mixed - */ - protected function getJsonValue($name, $value) - { - foreach ($this->withAttr[$name] as $key => $closure) { - if ($this->jsonAssoc) { - $value[$key] = $closure($value[$key], $value); - } else { - $value->$key = $closure($value->$key, $value); - } - } - - return $value; - } - - /** - * 获取关联属性值 - * @access protected - * @param string $relation 关联名 - * @return mixed - */ - protected function getRelationValue(string $relation) - { - $modelRelation = $this->$relation(); - - return $modelRelation instanceof Relation ? $this->getRelationData($modelRelation) : null; - } - - /** - * 数据读取 类型转换 - * @access protected - * @param mixed $value 值 - * @param string|array $type 要转换的类型 - * @return mixed - */ - protected function readTransform($value, $type) - { - if (is_null($value)) { - return; - } - - if (is_array($type)) { - list($type, $param) = $type; - } elseif (strpos($type, ':')) { - list($type, $param) = explode(':', $type, 2); - } - - switch ($type) { - case 'integer': - $value = (int) $value; - break; - case 'float': - if (empty($param)) { - $value = (float) $value; - } else { - $value = (float) number_format($value, $param, '.', ''); - } - break; - case 'boolean': - $value = (bool) $value; - break; - case 'timestamp': - if (!is_null($value)) { - $format = !empty($param) ? $param : $this->dateFormat; - $value = $this->formatDateTime($format, $value, true); - } - break; - case 'datetime': - if (!is_null($value)) { - $format = !empty($param) ? $param : $this->dateFormat; - $value = $this->formatDateTime($format, $value); - } - break; - case 'json': - $value = json_decode($value, true); - break; - case 'array': - $value = empty($value) ? [] : json_decode($value, true); - break; - case 'object': - $value = empty($value) ? new \stdClass() : json_decode($value); - break; - case 'serialize': - try { - $value = unserialize($value); - } catch (\Exception $e) { - $value = null; - } - break; - default: - if (false !== strpos($type, '\\')) { - // 对象类型 - $value = new $type($value); - } - } - - return $value; - } - - /** - * 设置数据字段获取器 - * @access public - * @param string|array $name 字段名 - * @param callable $callback 闭包获取器 - * @return $this - */ - public function withAttribute($name, callable $callback = null) - { - if (is_array($name)) { - foreach ($name as $key => $val) { - $this->withAttribute($key, $val); - } - } else { - $name = $this->getRealFieldName($name); - - if (strpos($name, '.')) { - list($name, $key) = explode('.', $name); - - $this->withAttr[$name][$key] = $callback; - } else { - $this->withAttr[$name] = $callback; - } - } - - return $this; - } - -} diff --git a/vendor/topthink/think-orm/src/model/concern/Conversion.php b/vendor/topthink/think-orm/src/model/concern/Conversion.php deleted file mode 100644 index 178ad0fb6..000000000 --- a/vendor/topthink/think-orm/src/model/concern/Conversion.php +++ /dev/null @@ -1,278 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model\concern; - -use think\Collection; -use think\db\exception\DbException as Exception; -use think\helper\Str; -use think\Model; -use think\model\Collection as ModelCollection; -use think\model\relation\OneToOne; - -/** - * 模型数据转换处理 - */ -trait Conversion -{ - /** - * 数据输出显示的属性 - * @var array - */ - protected $visible = []; - - /** - * 数据输出隐藏的属性 - * @var array - */ - protected $hidden = []; - - /** - * 数据输出需要追加的属性 - * @var array - */ - protected $append = []; - - /** - * 数据集对象名 - * @var string - */ - protected $resultSetType; - - /** - * 设置需要附加的输出属性 - * @access public - * @param array $append 属性列表 - * @return $this - */ - public function append(array $append = []) - { - $this->append = $append; - - return $this; - } - - /** - * 设置附加关联对象的属性 - * @access public - * @param string $attr 关联属性 - * @param string|array $append 追加属性名 - * @return $this - * @throws Exception - */ - public function appendRelationAttr(string $attr, array $append) - { - $relation = Str::camel($attr); - - if (isset($this->relation[$relation])) { - $model = $this->relation[$relation]; - } else { - $model = $this->getRelationData($this->$relation()); - } - - if ($model instanceof Model) { - foreach ($append as $key => $attr) { - $key = is_numeric($key) ? $attr : $key; - if (isset($this->data[$key])) { - throw new Exception('bind attr has exists:' . $key); - } - - $this->data[$key] = $model->$attr; - } - } - - return $this; - } - - /** - * 设置需要隐藏的输出属性 - * @access public - * @param array $hidden 属性列表 - * @return $this - */ - public function hidden(array $hidden = []) - { - $this->hidden = $hidden; - - return $this; - } - - /** - * 设置需要输出的属性 - * @access public - * @param array $visible - * @return $this - */ - public function visible(array $visible = []) - { - $this->visible = $visible; - - return $this; - } - - /** - * 转换当前模型对象为数组 - * @access public - * @return array - */ - public function toArray(): array - { - $item = []; - $hasVisible = false; - - foreach ($this->visible as $key => $val) { - if (is_string($val)) { - if (strpos($val, '.')) { - list($relation, $name) = explode('.', $val); - $this->visible[$relation][] = $name; - } else { - $this->visible[$val] = true; - $hasVisible = true; - } - unset($this->visible[$key]); - } - } - - foreach ($this->hidden as $key => $val) { - if (is_string($val)) { - if (strpos($val, '.')) { - list($relation, $name) = explode('.', $val); - $this->hidden[$relation][] = $name; - } else { - $this->hidden[$val] = true; - } - unset($this->hidden[$key]); - } - } - - // 合并关联数据 - $data = array_merge($this->data, $this->relation); - - foreach ($data as $key => $val) { - if ($val instanceof Model || $val instanceof ModelCollection) { - // 关联模型对象 - if (isset($this->visible[$key]) && is_array($this->visible[$key])) { - $val->visible($this->visible[$key]); - } elseif (isset($this->hidden[$key]) && is_array($this->hidden[$key])) { - $val->hidden($this->hidden[$key]); - } - // 关联模型对象 - if (!isset($this->hidden[$key]) || true !== $this->hidden[$key]) { - $item[$key] = $val->toArray(); - } - } elseif (isset($this->visible[$key])) { - $item[$key] = $this->getAttr($key); - } elseif (!isset($this->hidden[$key]) && !$hasVisible) { - $item[$key] = $this->getAttr($key); - } - } - - // 追加属性(必须定义获取器) - foreach ($this->append as $key => $name) { - $this->appendAttrToArray($item, $key, $name); - } - - return $item; - } - - protected function appendAttrToArray(array &$item, $key, $name) - { - if (is_array($name)) { - // 追加关联对象属性 - $relation = $this->getRelation($key, true); - $item[$key] = $relation ? $relation->append($name) - ->toArray() : []; - } elseif (strpos($name, '.')) { - list($key, $attr) = explode('.', $name); - // 追加关联对象属性 - $relation = $this->getRelation($key, true); - $item[$key] = $relation ? $relation->append([$attr]) - ->toArray() : []; - } else { - $value = $this->getAttr($name); - $item[$name] = $value; - - $this->getBindAttr($name, $value, $item); - } - } - - protected function getBindAttr(string $name, $value, array &$item = []) - { - $relation = $this->isRelationAttr($name); - if (!$relation) { - return false; - } - - $modelRelation = $this->$relation(); - - if ($modelRelation instanceof OneToOne) { - $bindAttr = $modelRelation->getBindAttr(); - - if (!empty($bindAttr)) { - unset($item[$name]); - } - - foreach ($bindAttr as $key => $attr) { - $key = is_numeric($key) ? $attr : $key; - - if (isset($item[$key])) { - throw new Exception('bind attr has exists:' . $key); - } - - $item[$key] = $value ? $value->getAttr($attr) : null; - } - } - } - - /** - * 转换当前模型对象为JSON字符串 - * @access public - * @param integer $options json参数 - * @return string - */ - public function toJson(int $options = JSON_UNESCAPED_UNICODE): string - { - return json_encode($this->toArray(), $options); - } - - public function __toString() - { - return $this->toJson(); - } - - // JsonSerializable - public function jsonSerialize() - { - return $this->toArray(); - } - - /** - * 转换数据集为数据集对象 - * @access public - * @param array|Collection $collection 数据集 - * @param string $resultSetType 数据集类 - * @return Collection - */ - public function toCollection(iterable $collection = [], string $resultSetType = null): Collection - { - $resultSetType = $resultSetType ?: $this->resultSetType; - - if ($resultSetType && false !== strpos($resultSetType, '\\')) { - $collection = new $resultSetType($collection); - } else { - $collection = new ModelCollection($collection); - } - - return $collection; - } - -} diff --git a/vendor/topthink/think-orm/src/model/concern/ModelEvent.php b/vendor/topthink/think-orm/src/model/concern/ModelEvent.php deleted file mode 100644 index f560379eb..000000000 --- a/vendor/topthink/think-orm/src/model/concern/ModelEvent.php +++ /dev/null @@ -1,88 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model\concern; - -use think\db\exception\ModelEventException; -use think\helper\Str; - -/** - * 模型事件处理 - */ -trait ModelEvent -{ - - /** - * Event对象 - * @var object - */ - protected static $event; - - /** - * 是否需要事件响应 - * @var bool - */ - protected $withEvent = true; - - /** - * 设置Event对象 - * @access public - * @param object $event Event对象 - * @return void - */ - public static function setEvent($event) - { - self::$event = $event; - } - - /** - * 当前操作的事件响应 - * @access protected - * @param bool $event 是否需要事件响应 - * @return $this - */ - public function withEvent(bool $event) - { - $this->withEvent = $event; - return $this; - } - - /** - * 触发事件 - * @access protected - * @param string $event 事件名 - * @return bool - */ - protected function trigger(string $event): bool - { - if (!$this->withEvent) { - return true; - } - - $call = 'on' . Str::studly($event); - - try { - if (method_exists(static::class, $call)) { - $result = call_user_func([static::class, $call], $this); - } elseif (is_object(self::$event) && method_exists(self::$event, 'trigger')) { - $result = self::$event->trigger(static::class . '.' . $event, $this); - $result = empty($result) ? true : end($result); - } else { - $result = true; - } - - return false === $result ? false : true; - } catch (ModelEventException $e) { - return false; - } - } -} diff --git a/vendor/topthink/think-orm/src/model/concern/OptimLock.php b/vendor/topthink/think-orm/src/model/concern/OptimLock.php deleted file mode 100644 index 5e6131833..000000000 --- a/vendor/topthink/think-orm/src/model/concern/OptimLock.php +++ /dev/null @@ -1,85 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model\concern; - -use think\db\exception\DbException as Exception; - -/** - * 乐观锁 - */ -trait OptimLock -{ - protected function getOptimLockField() - { - return property_exists($this, 'optimLock') && isset($this->optimLock) ? $this->optimLock : 'lock_version'; - } - - /** - * 数据检查 - * @access protected - * @return void - */ - protected function checkData(): void - { - $this->isExists() ? $this->updateLockVersion() : $this->recordLockVersion(); - } - - /** - * 记录乐观锁 - * @access protected - * @return void - */ - protected function recordLockVersion(): void - { - $optimLock = $this->getOptimLockField(); - - if ($optimLock) { - $this->set($optimLock, 0); - } - } - - /** - * 更新乐观锁 - * @access protected - * @return void - */ - protected function updateLockVersion(): void - { - $optimLock = $this->getOptimLockField(); - - if ($optimLock && $lockVer = $this->getOrigin($optimLock)) { - // 更新乐观锁 - $this->set($optimLock, $lockVer + 1); - } - } - - public function getWhere() - { - $where = parent::getWhere(); - $optimLock = $this->getOptimLockField(); - - if ($optimLock && $lockVer = $this->getOrigin($optimLock)) { - $where[] = [$optimLock, '=', $lockVer]; - } - - return $where; - } - - protected function checkResult($result): void - { - if (!$result) { - throw new Exception('record has update'); - } - } - -} diff --git a/vendor/topthink/think-orm/src/model/concern/RelationShip.php b/vendor/topthink/think-orm/src/model/concern/RelationShip.php deleted file mode 100644 index dd75b8e1e..000000000 --- a/vendor/topthink/think-orm/src/model/concern/RelationShip.php +++ /dev/null @@ -1,781 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model\concern; - -use Closure; -use think\Collection; -use think\db\BaseQuery as Query; -use think\db\exception\DbException as Exception; -use think\helper\Str; -use think\Model; -use think\model\Relation; -use think\model\relation\BelongsTo; -use think\model\relation\BelongsToMany; -use think\model\relation\HasMany; -use think\model\relation\HasManyThrough; -use think\model\relation\HasOne; -use think\model\relation\HasOneThrough; -use think\model\relation\MorphMany; -use think\model\relation\MorphOne; -use think\model\relation\MorphTo; -use think\model\relation\OneToOne; - -/** - * 模型关联处理 - */ -trait RelationShip -{ - /** - * 父关联模型对象 - * @var object - */ - private $parent; - - /** - * 模型关联数据 - * @var array - */ - private $relation = []; - - /** - * 关联写入定义信息 - * @var array - */ - private $together = []; - - /** - * 关联自动写入信息 - * @var array - */ - protected $relationWrite = []; - - /** - * 设置父关联对象 - * @access public - * @param Model $model 模型对象 - * @return $this - */ - public function setParent(Model $model) - { - $this->parent = $model; - - return $this; - } - - /** - * 获取父关联对象 - * @access public - * @return Model - */ - public function getParent(): Model - { - return $this->parent; - } - - /** - * 获取当前模型的关联模型数据 - * @access public - * @param string $name 关联方法名 - * @param bool $auto 不存在是否自动获取 - * @return mixed - */ - public function getRelation(string $name = null, bool $auto = false) - { - if (is_null($name)) { - return $this->relation; - } - - if (array_key_exists($name, $this->relation)) { - return $this->relation[$name]; - } elseif ($auto) { - $relation = Str::camel($name); - return $this->getRelationValue($relation); - } - } - - /** - * 设置关联数据对象值 - * @access public - * @param string $name 属性名 - * @param mixed $value 属性值 - * @param array $data 数据 - * @return $this - */ - public function setRelation(string $name, $value, array $data = []) - { - // 检测修改器 - $method = 'set' . Str::studly($name) . 'Attr'; - - if (method_exists($this, $method)) { - $value = $this->$method($value, array_merge($this->data, $data)); - } - - $this->relation[$this->getRealFieldName($name)] = $value; - - return $this; - } - - /** - * 查询当前模型的关联数据 - * @access public - * @param array $relations 关联名 - * @param array $withRelationAttr 关联获取器 - * @return void - */ - public function relationQuery(array $relations, array $withRelationAttr = []): void - { - foreach ($relations as $key => $relation) { - $subRelation = ''; - $closure = null; - - if ($relation instanceof Closure) { - // 支持闭包查询过滤关联条件 - $closure = $relation; - $relation = $key; - } - - if (is_array($relation)) { - $subRelation = $relation; - $relation = $key; - } elseif (strpos($relation, '.')) { - list($relation, $subRelation) = explode('.', $relation, 2); - } - - $method = Str::camel($relation); - $relationName = Str::snake($relation); - - $relationResult = $this->$method(); - - if (isset($withRelationAttr[$relationName])) { - $relationResult->withAttr($withRelationAttr[$relationName]); - } - - $this->relation[$relation] = $relationResult->getRelation($subRelation, $closure); - } - } - - /** - * 关联数据写入 - * @access public - * @param array $relation 关联 - * @return $this - */ - public function together(array $relation) - { - $this->together = $relation; - - $this->checkAutoRelationWrite(); - - return $this; - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $relation 关联方法名 - * @param mixed $operator 比较操作符 - * @param integer $count 个数 - * @param string $id 关联表的统计字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public static function has(string $relation, string $operator = '>=', int $count = 1, string $id = '*', string $joinType = '', Query $query = null): Query - { - return (new static()) - ->$relation() - ->has($operator, $count, $id, $joinType, $query); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $relation 关联方法名 - * @param mixed $where 查询条件(数组或者闭包) - * @param mixed $fields 字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public static function hasWhere(string $relation, $where = [], string $fields = '*', string $joinType = '', Query $query = null): Query - { - return (new static()) - ->$relation() - ->hasWhere($where, $fields, $joinType, $query); - } - - /** - * 预载入关联查询 JOIN方式 - * @access public - * @param Query $query Query对象 - * @param string $relation 关联方法名 - * @param mixed $field 字段 - * @param string $joinType JOIN类型 - * @param Closure $closure 闭包 - * @param bool $first - * @return bool - */ - public function eagerly(Query $query, string $relation, $field, string $joinType = '', Closure $closure = null, bool $first = false): bool - { - $relation = Str::camel($relation); - $class = $this->$relation(); - - if ($class instanceof OneToOne) { - $class->eagerly($query, $relation, $field, $joinType, $closure, $first); - return true; - } else { - return false; - } - } - - /** - * 预载入关联查询 返回数据集 - * @access public - * @param array $resultSet 数据集 - * @param string $relation 关联名 - * @param array $withRelationAttr 关联获取器 - * @param bool $join 是否为JOIN方式 - * @param mixed $cache 关联缓存 - * @return void - */ - public function eagerlyResultSet(array &$resultSet, array $relations, array $withRelationAttr = [], bool $join = false, $cache = false): void - { - foreach ($relations as $key => $relation) { - $subRelation = []; - $closure = null; - - if ($relation instanceof Closure) { - $closure = $relation; - $relation = $key; - } - - if (is_array($relation)) { - $subRelation = $relation; - $relation = $key; - } elseif (strpos($relation, '.')) { - list($relation, $subRelation) = explode('.', $relation, 2); - - $subRelation = [$subRelation]; - } - - $relationName = $relation; - $relation = Str::camel($relation); - - $relationResult = $this->$relation(); - - if (isset($withRelationAttr[$relationName])) { - $relationResult->withAttr($withRelationAttr[$relationName]); - } - - if (is_scalar($cache)) { - $relationCache = [$cache]; - } else { - $relationCache = $cache[$relationName] ?? $cache; - } - - $relationResult->eagerlyResultSet($resultSet, $relationName, $subRelation, $closure, $relationCache, $join); - } - } - - /** - * 预载入关联查询 返回模型对象 - * @access public - * @param Model $result 数据对象 - * @param array $relations 关联 - * @param array $withRelationAttr 关联获取器 - * @param bool $join 是否为JOIN方式 - * @param mixed $cache 关联缓存 - * @return void - */ - public function eagerlyResult(Model $result, array $relations, array $withRelationAttr = [], bool $join = false, $cache = false): void - { - foreach ($relations as $key => $relation) { - $subRelation = []; - $closure = null; - - if ($relation instanceof Closure) { - $closure = $relation; - $relation = $key; - } - - if (is_array($relation)) { - $subRelation = $relation; - $relation = $key; - } elseif (strpos($relation, '.')) { - list($relation, $subRelation) = explode('.', $relation, 2); - - $subRelation = [$subRelation]; - } - - $relationName = $relation; - $relation = Str::camel($relation); - - $relationResult = $this->$relation(); - - if (isset($withRelationAttr[$relationName])) { - $relationResult->withAttr($withRelationAttr[$relationName]); - } - - if (is_scalar($cache)) { - $relationCache = [$cache]; - } else { - $relationCache = $cache[$relationName] ?? []; - } - - $relationResult->eagerlyResult($result, $relationName, $subRelation, $closure, $relationCache, $join); - } - } - - /** - * 绑定(一对一)关联属性到当前模型 - * @access protected - * @param string $relation 关联名称 - * @param array $attrs 绑定属性 - * @return $this - * @throws Exception - */ - public function bindAttr(string $relation, array $attrs = []) - { - $relation = $this->getRelation($relation); - - foreach ($attrs as $key => $attr) { - $key = is_numeric($key) ? $attr : $key; - $value = $this->getOrigin($key); - - if (!is_null($value)) { - throw new Exception('bind attr has exists:' . $key); - } - - $this->set($key, $relation ? $relation->$attr : null); - } - - return $this; - } - - /** - * 关联统计 - * @access public - * @param Query $query 查询对象 - * @param array $relations 关联名 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param bool $useSubQuery 子查询 - * @return void - */ - public function relationCount(Query $query, array $relations, string $aggregate = 'sum', string $field = '*', bool $useSubQuery = true): void - { - foreach ($relations as $key => $relation) { - $closure = $name = null; - - if ($relation instanceof Closure) { - $closure = $relation; - $relation = $key; - } elseif (is_string($key)) { - $name = $relation; - $relation = $key; - } - - $relation = Str::camel($relation); - - if ($useSubQuery) { - $count = $this->$relation()->getRelationCountQuery($closure, $aggregate, $field, $name); - } else { - $count = $this->$relation()->relationCount($this, $closure, $aggregate, $field, $name); - } - - if (empty($name)) { - $name = Str::snake($relation) . '_' . $aggregate; - } - - if ($useSubQuery) { - $query->field(['(' . $count . ')' => $name]); - } else { - $this->setAttr($name, $count); - } - } - } - - /** - * HAS ONE 关联定义 - * @access public - * @param string $model 模型名 - * @param string $foreignKey 关联外键 - * @param string $localKey 当前主键 - * @return HasOne - */ - public function hasOne(string $model, string $foreignKey = '', string $localKey = ''): HasOne - { - // 记录当前关联信息 - $model = $this->parseModel($model); - $localKey = $localKey ?: $this->getPk(); - $foreignKey = $foreignKey ?: $this->getForeignKey($this->name); - - return new HasOne($this, $model, $foreignKey, $localKey); - } - - /** - * BELONGS TO 关联定义 - * @access public - * @param string $model 模型名 - * @param string $foreignKey 关联外键 - * @param string $localKey 关联主键 - * @return BelongsTo - */ - public function belongsTo(string $model, string $foreignKey = '', string $localKey = ''): BelongsTo - { - // 记录当前关联信息 - $model = $this->parseModel($model); - $foreignKey = $foreignKey ?: $this->getForeignKey((new $model)->getName()); - $localKey = $localKey ?: (new $model)->getPk(); - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); - $relation = Str::snake($trace[1]['function']); - - return new BelongsTo($this, $model, $foreignKey, $localKey, $relation); - } - - /** - * HAS MANY 关联定义 - * @access public - * @param string $model 模型名 - * @param string $foreignKey 关联外键 - * @param string $localKey 当前主键 - * @return HasMany - */ - public function hasMany(string $model, string $foreignKey = '', string $localKey = ''): HasMany - { - // 记录当前关联信息 - $model = $this->parseModel($model); - $localKey = $localKey ?: $this->getPk(); - $foreignKey = $foreignKey ?: $this->getForeignKey($this->name); - - return new HasMany($this, $model, $foreignKey, $localKey); - } - - /** - * HAS MANY 远程关联定义 - * @access public - * @param string $model 模型名 - * @param string $through 中间模型名 - * @param string $foreignKey 关联外键 - * @param string $throughKey 关联外键 - * @param string $localKey 当前主键 - * @param string $throughPk 中间表主键 - * @return HasManyThrough - */ - public function hasManyThrough(string $model, string $through, string $foreignKey = '', string $throughKey = '', string $localKey = '', string $throughPk = ''): HasManyThrough - { - // 记录当前关联信息 - $model = $this->parseModel($model); - $through = $this->parseModel($through); - $localKey = $localKey ?: $this->getPk(); - $foreignKey = $foreignKey ?: $this->getForeignKey($this->name); - $throughKey = $throughKey ?: $this->getForeignKey((new $through)->getName()); - $throughPk = $throughPk ?: (new $through)->getPk(); - - return new HasManyThrough($this, $model, $through, $foreignKey, $throughKey, $localKey, $throughPk); - } - - /** - * HAS ONE 远程关联定义 - * @access public - * @param string $model 模型名 - * @param string $through 中间模型名 - * @param string $foreignKey 关联外键 - * @param string $throughKey 关联外键 - * @param string $localKey 当前主键 - * @param string $throughPk 中间表主键 - * @return HasOneThrough - */ - public function hasOneThrough(string $model, string $through, string $foreignKey = '', string $throughKey = '', string $localKey = '', string $throughPk = ''): HasOneThrough - { - // 记录当前关联信息 - $model = $this->parseModel($model); - $through = $this->parseModel($through); - $localKey = $localKey ?: $this->getPk(); - $foreignKey = $foreignKey ?: $this->getForeignKey($this->name); - $throughKey = $throughKey ?: $this->getForeignKey((new $through)->getName()); - $throughPk = $throughPk ?: (new $through)->getPk(); - - return new HasOneThrough($this, $model, $through, $foreignKey, $throughKey, $localKey, $throughPk); - } - - /** - * BELONGS TO MANY 关联定义 - * @access public - * @param string $model 模型名 - * @param string $middle 中间表/模型名 - * @param string $foreignKey 关联外键 - * @param string $localKey 当前模型关联键 - * @return BelongsToMany - */ - public function belongsToMany(string $model, string $middle = '', string $foreignKey = '', string $localKey = ''): BelongsToMany - { - // 记录当前关联信息 - $model = $this->parseModel($model); - $name = Str::snake(class_basename($model)); - $middle = $middle ?: Str::snake($this->name) . '_' . $name; - $foreignKey = $foreignKey ?: $name . '_id'; - $localKey = $localKey ?: $this->getForeignKey($this->name); - - return new BelongsToMany($this, $model, $middle, $foreignKey, $localKey); - } - - /** - * MORPH One 关联定义 - * @access public - * @param string $model 模型名 - * @param string|array $morph 多态字段信息 - * @param string $type 多态类型 - * @return MorphOne - */ - public function morphOne(string $model, $morph = null, string $type = ''): MorphOne - { - // 记录当前关联信息 - $model = $this->parseModel($model); - - if (is_null($morph)) { - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); - $morph = Str::snake($trace[1]['function']); - } - - if (is_array($morph)) { - list($morphType, $foreignKey) = $morph; - } else { - $morphType = $morph . '_type'; - $foreignKey = $morph . '_id'; - } - - $type = $type ?: get_class($this); - - return new MorphOne($this, $model, $foreignKey, $morphType, $type); - } - - /** - * MORPH MANY 关联定义 - * @access public - * @param string $model 模型名 - * @param string|array $morph 多态字段信息 - * @param string $type 多态类型 - * @return MorphMany - */ - public function morphMany(string $model, $morph = null, string $type = ''): MorphMany - { - // 记录当前关联信息 - $model = $this->parseModel($model); - - if (is_null($morph)) { - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); - $morph = Str::snake($trace[1]['function']); - } - - $type = $type ?: get_class($this); - - if (is_array($morph)) { - list($morphType, $foreignKey) = $morph; - } else { - $morphType = $morph . '_type'; - $foreignKey = $morph . '_id'; - } - - return new MorphMany($this, $model, $foreignKey, $morphType, $type); - } - - /** - * MORPH TO 关联定义 - * @access public - * @param string|array $morph 多态字段信息 - * @param array $alias 多态别名定义 - * @return MorphTo - */ - public function morphTo($morph = null, array $alias = []): MorphTo - { - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); - $relation = Str::snake($trace[1]['function']); - - if (is_null($morph)) { - $morph = $relation; - } - - // 记录当前关联信息 - if (is_array($morph)) { - list($morphType, $foreignKey) = $morph; - } else { - $morphType = $morph . '_type'; - $foreignKey = $morph . '_id'; - } - - return new MorphTo($this, $morphType, $foreignKey, $alias, $relation); - } - - /** - * 解析模型的完整命名空间 - * @access protected - * @param string $model 模型名(或者完整类名) - * @return string - */ - protected function parseModel(string $model): string - { - if (false === strpos($model, '\\')) { - $path = explode('\\', static::class); - array_pop($path); - array_push($path, Str::studly($model)); - $model = implode('\\', $path); - } - - return $model; - } - - /** - * 获取模型的默认外键名 - * @access protected - * @param string $name 模型名 - * @return string - */ - protected function getForeignKey(string $name): string - { - if (strpos($name, '\\')) { - $name = class_basename($name); - } - - return Str::snake($name) . '_id'; - } - - /** - * 检查属性是否为关联属性 如果是则返回关联方法名 - * @access protected - * @param string $attr 关联属性名 - * @return string|false - */ - protected function isRelationAttr(string $attr) - { - $relation = Str::camel($attr); - - if (method_exists($this, $relation) && !method_exists('think\Model', $relation)) { - return $relation; - } - - return false; - } - - /** - * 智能获取关联模型数据 - * @access protected - * @param Relation $modelRelation 模型关联对象 - * @return mixed - */ - protected function getRelationData(Relation $modelRelation) - { - if ($this->parent && !$modelRelation->isSelfRelation() - && get_class($this->parent) == get_class($modelRelation->getModel())) { - return $this->parent; - } - - // 获取关联数据 - return $modelRelation->getRelation(); - } - - /** - * 关联数据自动写入检查 - * @access protected - * @return void - */ - protected function checkAutoRelationWrite(): void - { - foreach ($this->together as $key => $name) { - if (is_array($name)) { - if (key($name) === 0) { - $this->relationWrite[$key] = []; - // 绑定关联属性 - foreach ($name as $val) { - if (isset($this->data[$val])) { - $this->relationWrite[$key][$val] = $this->data[$val]; - } - } - } else { - // 直接传入关联数据 - $this->relationWrite[$key] = $name; - } - } elseif (isset($this->relation[$name])) { - $this->relationWrite[$name] = $this->relation[$name]; - } elseif (isset($this->data[$name])) { - $this->relationWrite[$name] = $this->data[$name]; - unset($this->data[$name]); - } - } - } - - /** - * 自动关联数据更新(针对一对一关联) - * @access protected - * @return void - */ - protected function autoRelationUpdate(): void - { - foreach ($this->relationWrite as $name => $val) { - if ($val instanceof Model) { - $val->exists(true)->save(); - } else { - $model = $this->getRelation($name, true); - - if ($model instanceof Model) { - $model->exists(true)->save($val); - } - } - } - } - - /** - * 自动关联数据写入(针对一对一关联) - * @access protected - * @return void - */ - protected function autoRelationInsert(): void - { - foreach ($this->relationWrite as $name => $val) { - $method = Str::camel($name); - $this->$method()->save($val); - } - } - - /** - * 自动关联数据删除(支持一对一及一对多关联) - * @access protected - * @return void - */ - protected function autoRelationDelete(): void - { - foreach ($this->relationWrite as $key => $name) { - $name = is_numeric($key) ? $name : $key; - $result = $this->getRelation($name, true); - - if ($result instanceof Model) { - $result->delete(); - } elseif ($result instanceof Collection) { - foreach ($result as $model) { - $model->delete(); - } - } - } - } - - /** - * 移除当前模型的关联属性 - * @access public - * @return $this - */ - public function removeRelation() - { - $this->relation = []; - return $this; - } -} diff --git a/vendor/topthink/think-orm/src/model/concern/SoftDelete.php b/vendor/topthink/think-orm/src/model/concern/SoftDelete.php deleted file mode 100644 index 7357bc5f8..000000000 --- a/vendor/topthink/think-orm/src/model/concern/SoftDelete.php +++ /dev/null @@ -1,246 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model\concern; - -use think\db\BaseQuery as Query; - -/** - * 数据软删除 - */ -trait SoftDelete -{ - /** - * 是否包含软删除数据 - * @var bool - */ - protected $withTrashed = false; - - /** - * 判断当前实例是否被软删除 - * @access public - * @return bool - */ - public function trashed(): bool - { - $field = $this->getDeleteTimeField(); - - if ($field && !empty($this->getOrigin($field))) { - return true; - } - - return false; - } - - /** - * 查询软删除数据 - * @access public - * @return Query - */ - public static function withTrashed(): Query - { - $model = new static(); - - return $model->withTrashedData(true)->db(); - } - - /** - * 是否包含软删除数据 - * @access protected - * @param bool $withTrashed 是否包含软删除数据 - * @return $this - */ - protected function withTrashedData(bool $withTrashed) - { - $this->withTrashed = $withTrashed; - return $this; - } - - /** - * 只查询软删除数据 - * @access public - * @return Query - */ - public static function onlyTrashed(): Query - { - $model = new static(); - $field = $model->getDeleteTimeField(true); - - if ($field) { - return $model - ->db() - ->useSoftDelete($field, $model->getWithTrashedExp()); - } - - return $model->db(); - } - - /** - * 获取软删除数据的查询条件 - * @access protected - * @return array - */ - protected function getWithTrashedExp(): array - { - return is_null($this->defaultSoftDelete) ? ['notnull', ''] : ['<>', $this->defaultSoftDelete]; - } - - /** - * 删除当前的记录 - * @access public - * @return bool - */ - public function delete(): bool - { - if (!$this->isExists() || $this->isEmpty() || false === $this->trigger('BeforeDelete')) { - return false; - } - - $name = $this->getDeleteTimeField(); - - if ($name && !$this->isForce()) { - // 软删除 - $this->set($name, $this->autoWriteTimestamp($name)); - - $result = $this->exists()->withEvent(false)->save(); - - $this->withEvent(true); - } else { - // 读取更新条件 - $where = $this->getWhere(); - - // 删除当前模型数据 - $result = $this->db() - ->where($where) - ->removeOption('soft_delete') - ->delete(); - - $this->lazySave(false); - } - - // 关联删除 - if (!empty($this->relationWrite)) { - $this->autoRelationDelete(); - } - - $this->trigger('AfterDelete'); - - $this->exists(false); - - return true; - } - - /** - * 删除记录 - * @access public - * @param mixed $data 主键列表 支持闭包查询条件 - * @param bool $force 是否强制删除 - * @return bool - */ - public static function destroy($data, bool $force = false): bool - { - // 包含软删除数据 - $query = (new static())->db(false); - - if (is_array($data) && key($data) !== 0) { - $query->where($data); - $data = null; - } elseif ($data instanceof \Closure) { - call_user_func_array($data, [ & $query]); - $data = null; - } elseif (is_null($data)) { - return false; - } - - $resultSet = $query->select($data); - - foreach ($resultSet as $result) { - $result->force($force)->delete(); - } - - return true; - } - - /** - * 恢复被软删除的记录 - * @access public - * @param array $where 更新条件 - * @return bool - */ - public function restore($where = []): bool - { - $name = $this->getDeleteTimeField(); - - if (!$name || false === $this->trigger('BeforeRestore')) { - return false; - } - - if (empty($where)) { - $pk = $this->getPk(); - if (is_string($pk)) { - $where[] = [$pk, '=', $this->getData($pk)]; - } - } - - // 恢复删除 - $this->db(false) - ->where($where) - ->useSoftDelete($name, $this->getWithTrashedExp()) - ->update([$name => $this->defaultSoftDelete]); - - $this->trigger('AfterRestore'); - - return true; - } - - /** - * 获取软删除字段 - * @access protected - * @param bool $read 是否查询操作 写操作的时候会自动去掉表别名 - * @return string|false - */ - protected function getDeleteTimeField(bool $read = false) - { - $field = property_exists($this, 'deleteTime') && isset($this->deleteTime) ? $this->deleteTime : 'delete_time'; - - if (false === $field) { - return false; - } - - if (false === strpos($field, '.')) { - $field = '__TABLE__.' . $field; - } - - if (!$read && strpos($field, '.')) { - $array = explode('.', $field); - $field = array_pop($array); - } - - return $field; - } - - /** - * 查询的时候默认排除软删除数据 - * @access protected - * @param Query $query - * @return void - */ - protected function withNoTrashed(Query $query): void - { - $field = $this->getDeleteTimeField(true); - - if ($field) { - $condition = is_null($this->defaultSoftDelete) ? ['null', ''] : ['=', $this->defaultSoftDelete]; - $query->useSoftDelete($field, $condition); - } - } -} diff --git a/vendor/topthink/think-orm/src/model/concern/TimeStamp.php b/vendor/topthink/think-orm/src/model/concern/TimeStamp.php deleted file mode 100644 index e207961f3..000000000 --- a/vendor/topthink/think-orm/src/model/concern/TimeStamp.php +++ /dev/null @@ -1,208 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model\concern; - -use DateTime; - -/** - * 自动时间戳 - */ -trait TimeStamp -{ - /** - * 是否需要自动写入时间戳 如果设置为字符串 则表示时间字段的类型 - * @var bool|string - */ - protected $autoWriteTimestamp; - - /** - * 创建时间字段 false表示关闭 - * @var false|string - */ - protected $createTime = 'create_time'; - - /** - * 更新时间字段 false表示关闭 - * @var false|string - */ - protected $updateTime = 'update_time'; - - /** - * 时间字段显示格式 - * @var string - */ - protected $dateFormat; - - /** - * 是否需要自动写入时间字段 - * @access public - * @param bool|string $auto - * @return $this - */ - public function isAutoWriteTimestamp($auto) - { - $this->autoWriteTimestamp = $this->checkTimeFieldType($auto); - - return $this; - } - - /** - * 检测时间字段的实际类型 - * @access public - * @param bool|string $type - * @return mixed - */ - protected function checkTimeFieldType($type) - { - if (true === $type) { - if (isset($this->type[$this->createTime])) { - $type = $this->type[$this->createTime]; - } elseif (isset($this->schema[$this->createTime]) && in_array($this->schema[$this->createTime], ['datetime', 'date', 'timestamp', 'int'])) { - $type = $this->schema[$this->createTime]; - } else { - $type = $this->getFieldType($this->createTime); - } - } - - return $type; - } - - /** - * 获取自动写入时间字段 - * @access public - * @return bool|string - */ - public function getAutoWriteTimestamp() - { - return $this->autoWriteTimestamp; - } - - /** - * 设置时间字段格式化 - * @access public - * @param string|false $format - * @return $this - */ - public function setDateFormat($format) - { - $this->dateFormat = $format; - - return $this; - } - - /** - * 获取自动写入时间字段 - * @access public - * @return string|false - */ - public function getDateFormat() - { - return $this->dateFormat; - } - - /** - * 自动写入时间戳 - * @access protected - * @return mixed - */ - protected function autoWriteTimestamp() - { - // 检测时间字段类型 - $type = $this->checkTimeFieldType($this->autoWriteTimestamp); - - return is_string($type) ? $this->getTimeTypeValue($type) : time(); - } - - /** - * 获取指定类型的时间字段值 - * @access protected - * @param string $type 时间字段类型 - * @return mixed - */ - protected function getTimeTypeValue(string $type) - { - $value = time(); - - switch ($type) { - case 'datetime': - case 'date': - case 'timestamp': - $value = $this->formatDateTime('Y-m-d H:i:s.u'); - break; - default: - if (false !== strpos($type, '\\')) { - // 对象数据写入 - $obj = new $type(); - if (method_exists($obj, '__toString')) { - // 对象数据写入 - $value = $obj->__toString(); - } - } - } - - return $value; - } - - /** - * 时间日期字段格式化处理 - * @access protected - * @param mixed $format 日期格式 - * @param mixed $time 时间日期表达式 - * @param bool $timestamp 时间表达式是否为时间戳 - * @return mixed - */ - protected function formatDateTime($format, $time = 'now', bool $timestamp = false) - { - if (empty($time)) { - return; - } - - if (false === $format) { - return $time; - } elseif (false !== strpos($format, '\\')) { - return new $format($time); - } - - if ($time instanceof DateTime) { - $dateTime = $time; - } elseif ($timestamp) { - $dateTime = new DateTime(); - $dateTime->setTimestamp((int) $time); - } else { - $dateTime = new DateTime($time); - } - - return $dateTime->format($format); - } - - /** - * 获取时间字段值 - * @access protected - * @param mixed $value - * @return mixed - */ - protected function getTimestampValue($value) - { - $type = $this->checkTimeFieldType($this->autoWriteTimestamp); - - if (is_string($type) && in_array(strtolower($type), [ - 'datetime', 'date', 'timestamp', - ])) { - $value = $this->formatDateTime($this->dateFormat, $value); - } else { - $value = $this->formatDateTime($this->dateFormat, $value, true); - } - - return $value; - } -} diff --git a/vendor/topthink/think-orm/src/model/relation/BelongsTo.php b/vendor/topthink/think-orm/src/model/relation/BelongsTo.php deleted file mode 100644 index 76c7019be..000000000 --- a/vendor/topthink/think-orm/src/model/relation/BelongsTo.php +++ /dev/null @@ -1,331 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model\relation; - -use Closure; -use think\db\BaseQuery as Query; -use think\helper\Str; -use think\Model; - -/** - * BelongsTo关联类 - */ -class BelongsTo extends OneToOne -{ - /** - * 架构函数 - * @access public - * @param Model $parent 上级模型对象 - * @param string $model 模型名 - * @param string $foreignKey 关联外键 - * @param string $localKey 关联主键 - * @param string $relation 关联名 - */ - public function __construct(Model $parent, string $model, string $foreignKey, string $localKey, string $relation = null) - { - $this->parent = $parent; - $this->model = $model; - $this->foreignKey = $foreignKey; - $this->localKey = $localKey; - $this->query = (new $model)->db(); - $this->relation = $relation; - - if (get_class($parent) == $model) { - $this->selfRelation = true; - } - } - - /** - * 延迟获取关联数据 - * @access public - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包查询条件 - * @return Model - */ - public function getRelation(array $subRelation = [], Closure $closure = null) - { - if ($closure) { - $closure($this->getClosureType($closure)); - } - - $foreignKey = $this->foreignKey; - - $relationModel = $this->query - ->removeWhereField($this->localKey) - ->where($this->localKey, $this->parent->$foreignKey) - ->relation($subRelation) - ->find(); - - if ($relationModel) { - if (!empty($this->bindAttr)) { - // 绑定关联属性 - $this->bindAttr($relationModel, $this->parent); - } - - $relationModel->setParent(clone $this->parent); - } - - return $relationModel; - } - - /** - * 创建关联统计子查询 - * @access public - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 聚合字段别名 - * @return string - */ - public function getRelationCountQuery(Closure $closure = null, string $aggregate = 'count', string $field = '*', &$name = ''): string - { - if ($closure) { - $closure($this->getClosureType($closure), $name); - } - - return $this->query - ->whereExp($this->localKey, '=' . $this->parent->getTable() . '.' . $this->foreignKey) - ->fetchSql() - ->$aggregate($field); - } - - /** - * 关联统计 - * @access public - * @param Model $result 数据对象 - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return integer - */ - public function relationCount(Model $result, Closure $closure = null, string $aggregate = 'count', string $field = '*', string &$name = null) - { - $foreignKey = $this->foreignKey; - - if (!isset($result->$foreignKey)) { - return 0; - } - - if ($closure) { - $closure($this->getClosureType($closure), $name); - } - - return $this->query - ->where($this->localKey, '=', $result->$foreignKey) - ->$aggregate($field); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $operator 比较操作符 - * @param integer $count 个数 - * @param string $id 关联表的统计字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function has(string $operator = '>=', int $count = 1, string $id = '*', string $joinType = '', Query $query = null): Query - { - $table = $this->query->getTable(); - $model = class_basename($this->parent); - $relation = class_basename($this->model); - $localKey = $this->localKey; - $foreignKey = $this->foreignKey; - $softDelete = $this->query->getOptions('soft_delete'); - $query = $query ?: $this->parent->db()->alias($model); - - return $query->whereExists(function ($query) use ($table, $model, $relation, $localKey, $foreignKey, $softDelete) { - $query->table([$table => $relation]) - ->field($relation . '.' . $localKey) - ->whereExp($model . '.' . $foreignKey, '=' . $relation . '.' . $localKey) - ->when($softDelete, function ($query) use ($softDelete, $relation) { - $query->where($relation . strstr($softDelete[0], '.'), '=' == $softDelete[1][0] ? $softDelete[1][1] : null); - }); - }); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param mixed $where 查询条件(数组或者闭包) - * @param mixed $fields 字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function hasWhere($where = [], $fields = null, string $joinType = '', Query $query = null): Query - { - $table = $this->query->getTable(); - $model = class_basename($this->parent); - $relation = class_basename($this->model); - - if (is_array($where)) { - $this->getQueryWhere($where, $relation); - } elseif ($where instanceof Query) { - $where->via($relation); - } elseif ($where instanceof Closure) { - $where($this->query->via($relation)); - $where = $this->query; - } - - $fields = $this->getRelationQueryFields($fields, $model); - $softDelete = $this->query->getOptions('soft_delete'); - $query = $query ?: $this->parent->db()->alias($model); - - return $query->field($fields) - ->join([$table => $relation], $model . '.' . $this->foreignKey . '=' . $relation . '.' . $this->localKey, $joinType ?: $this->joinType) - ->when($softDelete, function ($query) use ($softDelete, $relation) { - $query->where($relation . strstr($softDelete[0], '.'), '=' == $softDelete[1][0] ? $softDelete[1][1] : null); - }) - ->where($where); - } - - /** - * 预载入关联查询(数据集) - * @access protected - * @param array $resultSet 数据集 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - protected function eagerlySet(array &$resultSet, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void - { - $localKey = $this->localKey; - $foreignKey = $this->foreignKey; - - $range = []; - foreach ($resultSet as $result) { - // 获取关联外键列表 - if (isset($result->$foreignKey)) { - $range[] = $result->$foreignKey; - } - } - - if (!empty($range)) { - $this->query->removeWhereField($localKey); - - $data = $this->eagerlyWhere([ - [$localKey, 'in', $range], - ], $localKey, $subRelation, $closure, $cache); - - // 关联数据封装 - foreach ($resultSet as $result) { - // 关联模型 - if (!isset($data[$result->$foreignKey])) { - $relationModel = null; - } else { - $relationModel = $data[$result->$foreignKey]; - $relationModel->setParent(clone $result); - $relationModel->exists(true); - } - - if ($relationModel && !empty($this->bindAttr)) { - // 绑定关联属性 - $this->bindAttr($relationModel, $result); - } else { - // 设置关联属性 - $result->setRelation($relation, $relationModel); - } - } - } - } - - /** - * 预载入关联查询(数据) - * @access protected - * @param Model $result 数据对象 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - protected function eagerlyOne(Model $result, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void - { - $localKey = $this->localKey; - $foreignKey = $this->foreignKey; - - $this->query->removeWhereField($localKey); - - $data = $this->eagerlyWhere([ - [$localKey, '=', $result->$foreignKey], - ], $localKey, $subRelation, $closure, $cache); - - // 关联模型 - if (!isset($data[$result->$foreignKey])) { - $relationModel = null; - } else { - $relationModel = $data[$result->$foreignKey]; - $relationModel->setParent(clone $result); - $relationModel->exists(true); - } - - if ($relationModel && !empty($this->bindAttr)) { - // 绑定关联属性 - $this->bindAttr($relationModel, $result); - } else { - // 设置关联属性 - $result->setRelation($relation, $relationModel); - } - } - - /** - * 添加关联数据 - * @access public - * @param Model $model关联模型对象 - * @return Model - */ - public function associate(Model $model): Model - { - $this->parent->setAttr($this->foreignKey, $model->getKey()); - $this->parent->save(); - - return $this->parent->setRelation($this->relation, $model); - } - - /** - * 注销关联数据 - * @access public - * @return Model - */ - public function dissociate(): Model - { - $foreignKey = $this->foreignKey; - - $this->parent->setAttr($foreignKey, null); - $this->parent->save(); - - return $this->parent->setRelation($this->relation, null); - } - - /** - * 执行基础查询(仅执行一次) - * @access protected - * @return void - */ - protected function baseQuery(): void - { - if (empty($this->baseQuery)) { - if (isset($this->parent->{$this->foreignKey})) { - // 关联查询带入关联条件 - $this->query->where($this->localKey, '=', $this->parent->{$this->foreignKey}); - } - - $this->baseQuery = true; - } - } -} diff --git a/vendor/topthink/think-orm/src/model/relation/BelongsToMany.php b/vendor/topthink/think-orm/src/model/relation/BelongsToMany.php deleted file mode 100644 index 16f4bf5ea..000000000 --- a/vendor/topthink/think-orm/src/model/relation/BelongsToMany.php +++ /dev/null @@ -1,708 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\model\relation; - -use Closure; -use think\Collection; -use think\db\BaseQuery as Query; -use think\db\exception\DbException as Exception; -use think\db\Raw; -use think\helper\Str; -use think\Model; -use think\model\Pivot; -use think\model\Relation; -use think\Paginator; - -/** - * 多对多关联类 - */ -class BelongsToMany extends Relation -{ - /** - * 中间表表名 - * @var string - */ - protected $middle; - - /** - * 中间表模型名称 - * @var string - */ - protected $pivotName; - - /** - * 中间表模型对象 - * @var Pivot - */ - protected $pivot; - - /** - * 中间表数据名称 - * @var string - */ - protected $pivotDataName = 'pivot'; - - /** - * 架构函数 - * @access public - * @param Model $parent 上级模型对象 - * @param string $model 模型名 - * @param string $middle 中间表/模型名 - * @param string $foreignKey 关联模型外键 - * @param string $localKey 当前模型关联键 - */ - public function __construct(Model $parent, string $model, string $middle, string $foreignKey, string $localKey) - { - $this->parent = $parent; - $this->model = $model; - $this->foreignKey = $foreignKey; - $this->localKey = $localKey; - - if (false !== strpos($middle, '\\')) { - $this->pivotName = $middle; - $this->middle = class_basename($middle); - } else { - $this->middle = $middle; - } - - $this->query = (new $model)->db(); - $this->pivot = $this->newPivot(); - } - - /** - * 设置中间表模型 - * @access public - * @param $pivot - * @return $this - */ - public function pivot(string $pivot) - { - $this->pivotName = $pivot; - return $this; - } - - /** - * 设置中间表数据名称 - * @access public - * @param string $name - * @return $this - */ - public function name(string $name) - { - $this->pivotDataName = $name; - return $this; - } - - /** - * 实例化中间表模型 - * @access public - * @param $data - * @return Pivot - * @throws Exception - */ - protected function newPivot(array $data = []): Pivot - { - $class = $this->pivotName ?: Pivot::class; - $pivot = new $class($data, $this->parent, $this->middle); - - if ($pivot instanceof Pivot) { - return $pivot; - } else { - throw new Exception('pivot model must extends: \think\model\Pivot'); - } - } - - /** - * 合成中间表模型 - * @access protected - * @param array|Collection|Paginator $models - */ - protected function hydratePivot(iterable $models) - { - foreach ($models as $model) { - $pivot = []; - - foreach ($model->getData() as $key => $val) { - if (strpos($key, '__')) { - list($name, $attr) = explode('__', $key, 2); - - if ('pivot' == $name) { - $pivot[$attr] = $val; - unset($model->$key); - } - } - } - - $model->setRelation($this->pivotDataName, $this->newPivot($pivot)); - } - } - - /** - * 创建关联查询Query对象 - * @access protected - * @return Query - */ - protected function buildQuery(): Query - { - $foreignKey = $this->foreignKey; - $localKey = $this->localKey; - - // 关联查询 - $pk = $this->parent->getPk(); - - $condition = ['pivot.' . $localKey, '=', $this->parent->$pk]; - - return $this->belongsToManyQuery($foreignKey, $localKey, [$condition]); - } - - /** - * 延迟获取关联数据 - * @access public - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包查询条件 - * @return Collection - */ - public function getRelation(array $subRelation = [], Closure $closure = null): Collection - { - if ($closure) { - $closure($this->getClosureType($closure)); - } - - $result = $this->buildQuery() - ->relation($subRelation) - ->select() - ->setParent(clone $this->parent); - - $this->hydratePivot($result); - - return $result; - } - - /** - * 重载select方法 - * @access public - * @param mixed $data - * @return Collection - */ - public function select($data = null): Collection - { - $result = $this->buildQuery()->select($data); - $this->hydratePivot($result); - - return $result; - } - - /** - * 重载paginate方法 - * @access public - * @param int|array $listRows - * @param int|bool $simple - * @param array $config - * @return Paginator - */ - public function paginate($listRows = null, $simple = false, $config = []): Paginator - { - $result = $this->buildQuery()->paginate($listRows, $simple, $config); - $this->hydratePivot($result); - - return $result; - } - - /** - * 重载find方法 - * @access public - * @param mixed $data - * @return Model - */ - public function find($data = null) - { - $result = $this->buildQuery()->find($data); - - if (!$result->isEmpty()) { - $this->hydratePivot([$result]); - } - - return $result; - } - - /** - * 查找多条记录 如果不存在则抛出异常 - * @access public - * @param array|string|Query|\Closure $data - * @return Collection - */ - public function selectOrFail($data = null): Collection - { - return $this->buildQuery()->failException(true)->select($data); - } - - /** - * 查找单条记录 如果不存在则抛出异常 - * @access public - * @param array|string|Query|\Closure $data - * @return Model - */ - public function findOrFail($data = null): Model - { - return $this->buildQuery()->failException(true)->find($data); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $operator 比较操作符 - * @param integer $count 个数 - * @param string $id 关联表的统计字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Model - */ - public function has(string $operator = '>=', $count = 1, $id = '*', string $joinType = 'INNER', Query $query = null) - { - return $this->parent; - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param mixed $where 查询条件(数组或者闭包) - * @param mixed $fields 字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - * @throws Exception - */ - public function hasWhere($where = [], $fields = null, string $joinType = '', Query $query = null) - { - throw new Exception('relation not support: hasWhere'); - } - - /** - * 设置中间表的查询条件 - * @access public - * @param string $field - * @param string $op - * @param mixed $condition - * @return $this - */ - public function wherePivot($field, $op = null, $condition = null) - { - $this->query->where('pivot.' . $field, $op, $condition); - return $this; - } - - /** - * 预载入关联查询(数据集) - * @access public - * @param array $resultSet 数据集 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResultSet(array &$resultSet, string $relation, array $subRelation, Closure $closure = null, array $cache = []): void - { - $localKey = $this->localKey; - $pk = $resultSet[0]->getPk(); - $range = []; - - foreach ($resultSet as $result) { - // 获取关联外键列表 - if (isset($result->$pk)) { - $range[] = $result->$pk; - } - } - - if (!empty($range)) { - // 查询关联数据 - $data = $this->eagerlyManyToMany([ - ['pivot.' . $localKey, 'in', $range], - ], $subRelation, $closure, $cache); - - // 关联数据封装 - foreach ($resultSet as $result) { - if (!isset($data[$result->$pk])) { - $data[$result->$pk] = []; - } - - $result->setRelation($relation, $this->resultSetBuild($data[$result->$pk], clone $this->parent)); - } - } - } - - /** - * 预载入关联查询(单个数据) - * @access public - * @param Model $result 数据对象 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResult(Model $result, string $relation, array $subRelation, Closure $closure = null, array $cache = []): void - { - $pk = $result->getPk(); - - if (isset($result->$pk)) { - $pk = $result->$pk; - // 查询管理数据 - $data = $this->eagerlyManyToMany([ - ['pivot.' . $this->localKey, '=', $pk], - ], $subRelation, $closure, $cache); - - // 关联数据封装 - if (!isset($data[$pk])) { - $data[$pk] = []; - } - - $result->setRelation($relation, $this->resultSetBuild($data[$pk], clone $this->parent)); - } - } - - /** - * 关联统计 - * @access public - * @param Model $result 数据对象 - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return integer - */ - public function relationCount(Model $result, Closure $closure = null, string $aggregate = 'count', string $field = '*', string &$name = null): float - { - $pk = $result->getPk(); - - if (!isset($result->$pk)) { - return 0; - } - - $pk = $result->$pk; - - if ($closure) { - $closure($this->getClosureType($closure), $name); - } - - return $this->belongsToManyQuery($this->foreignKey, $this->localKey, [ - ['pivot.' . $this->localKey, '=', $pk], - ])->$aggregate($field); - } - - /** - * 获取关联统计子查询 - * @access public - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return string - */ - public function getRelationCountQuery(Closure $closure = null, string $aggregate = 'count', string $field = '*', string &$name = null): string - { - if ($closure) { - $closure($this->getClosureType($closure), $name); - } - - return $this->belongsToManyQuery($this->foreignKey, $this->localKey, [ - [ - 'pivot.' . $this->localKey, 'exp', new Raw('=' . $this->parent->db(false)->getTable() . '.' . $this->parent->getPk()), - ], - ])->fetchSql()->$aggregate($field); - } - - /** - * 多对多 关联模型预查询 - * @access protected - * @param array $where 关联预查询条件 - * @param array $subRelation 子关联 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return array - */ - protected function eagerlyManyToMany(array $where, array $subRelation = [], Closure $closure = null, array $cache = []): array - { - if ($closure) { - $closure($this->getClosureType($closure)); - } - - // 预载入关联查询 支持嵌套预载入 - $list = $this->belongsToManyQuery($this->foreignKey, $this->localKey, $where) - ->with($subRelation) - ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) - ->select(); - - // 组装模型数据 - $data = []; - foreach ($list as $set) { - $pivot = []; - foreach ($set->getData() as $key => $val) { - if (strpos($key, '__')) { - list($name, $attr) = explode('__', $key, 2); - if ('pivot' == $name) { - $pivot[$attr] = $val; - unset($set->$key); - } - } - } - - $key = $pivot[$this->localKey]; - - if ($this->withLimit && isset($data[$key]) && count($data[$key]) >= $this->withLimit) { - continue; - } - - $set->setRelation($this->pivotDataName, $this->newPivot($pivot)); - - $data[$key][] = $set; - } - - return $data; - } - - /** - * BELONGS TO MANY 关联查询 - * @access protected - * @param string $foreignKey 关联模型关联键 - * @param string $localKey 当前模型关联键 - * @param array $condition 关联查询条件 - * @return Query - */ - protected function belongsToManyQuery(string $foreignKey, string $localKey, array $condition = []): Query - { - // 关联查询封装 - $tableName = $this->query->getTable(); - $table = $this->pivot->db()->getTable(); - $fields = $this->getQueryFields($tableName); - - if ($this->withLimit) { - $this->query->limit($this->withLimit); - } - - $query = $this->query - ->field($fields) - ->tableField(true, $table, 'pivot', 'pivot__'); - - if (empty($this->baseQuery)) { - $relationFk = $this->query->getPk(); - $query->join([$table => 'pivot'], 'pivot.' . $foreignKey . '=' . $tableName . '.' . $relationFk) - ->where($condition); - } - - return $query; - } - - /** - * 保存(新增)当前关联数据对象 - * @access public - * @param mixed $data 数据 可以使用数组 关联模型对象 和 关联对象的主键 - * @param array $pivot 中间表额外数据 - * @return array|Pivot - */ - public function save($data, array $pivot = []) - { - // 保存关联表/中间表数据 - return $this->attach($data, $pivot); - } - - /** - * 批量保存当前关联数据对象 - * @access public - * @param iterable $dataSet 数据集 - * @param array $pivot 中间表额外数据 - * @param bool $samePivot 额外数据是否相同 - * @return array|false - */ - public function saveAll(iterable $dataSet, array $pivot = [], bool $samePivot = false) - { - $result = []; - - foreach ($dataSet as $key => $data) { - if (!$samePivot) { - $pivotData = $pivot[$key] ?? []; - } else { - $pivotData = $pivot; - } - - $result[] = $this->attach($data, $pivotData); - } - - return empty($result) ? false : $result; - } - - /** - * 附加关联的一个中间表数据 - * @access public - * @param mixed $data 数据 可以使用数组、关联模型对象 或者 关联对象的主键 - * @param array $pivot 中间表额外数据 - * @return array|Pivot - * @throws Exception - */ - public function attach($data, array $pivot = []) - { - if (is_array($data)) { - if (key($data) === 0) { - $id = $data; - } else { - // 保存关联表数据 - $model = new $this->model; - $id = $model->insertGetId($data); - } - } elseif (is_numeric($data) || is_string($data)) { - // 根据关联表主键直接写入中间表 - $id = $data; - } elseif ($data instanceof Model) { - // 根据关联表主键直接写入中间表 - $relationFk = $data->getPk(); - $id = $data->$relationFk; - } - - if (!empty($id)) { - // 保存中间表数据 - $pk = $this->parent->getPk(); - $pivot[$this->localKey] = $this->parent->$pk; - $ids = (array) $id; - - foreach ($ids as $id) { - $pivot[$this->foreignKey] = $id; - $this->pivot->replace() - ->exists(false) - ->data([]) - ->save($pivot); - $result[] = $this->newPivot($pivot); - } - - if (count($result) == 1) { - // 返回中间表模型对象 - $result = $result[0]; - } - - return $result; - } else { - throw new Exception('miss relation data'); - } - } - - /** - * 判断是否存在关联数据 - * @access public - * @param mixed $data 数据 可以使用关联模型对象 或者 关联对象的主键 - * @return Pivot|false - */ - public function attached($data) - { - if ($data instanceof Model) { - $id = $data->getKey(); - } else { - $id = $data; - } - - $pivot = $this->pivot - ->where($this->localKey, $this->parent->getKey()) - ->where($this->foreignKey, $id) - ->find(); - - return $pivot ?: false; - } - - /** - * 解除关联的一个中间表数据 - * @access public - * @param integer|array $data 数据 可以使用关联对象的主键 - * @param bool $relationDel 是否同时删除关联表数据 - * @return integer - */ - public function detach($data = null, bool $relationDel = false): int - { - if (is_array($data)) { - $id = $data; - } elseif (is_numeric($data) || is_string($data)) { - // 根据关联表主键直接写入中间表 - $id = $data; - } elseif ($data instanceof Model) { - // 根据关联表主键直接写入中间表 - $relationFk = $data->getPk(); - $id = $data->$relationFk; - } - - // 删除中间表数据 - $pk = $this->parent->getPk(); - $pivot = []; - $pivot[] = [$this->localKey, '=', $this->parent->$pk]; - - if (isset($id)) { - $pivot[] = [$this->foreignKey, is_array($id) ? 'in' : '=', $id]; - } - - $result = $this->pivot->where($pivot)->delete(); - - // 删除关联表数据 - if (isset($id) && $relationDel) { - $model = $this->model; - $model::destroy($id); - } - - return $result; - } - - /** - * 数据同步 - * @access public - * @param array $ids - * @param bool $detaching - * @return array - */ - public function sync(array $ids, bool $detaching = true): array - { - $changes = [ - 'attached' => [], - 'detached' => [], - 'updated' => [], - ]; - - $pk = $this->parent->getPk(); - - $current = $this->pivot - ->where($this->localKey, $this->parent->$pk) - ->column($this->foreignKey); - - $records = []; - - foreach ($ids as $key => $value) { - if (!is_array($value)) { - $records[$value] = []; - } else { - $records[$key] = $value; - } - } - - $detach = array_diff($current, array_keys($records)); - - if ($detaching && count($detach) > 0) { - $this->detach($detach); - $changes['detached'] = $detach; - } - - foreach ($records as $id => $attributes) { - if (!in_array($id, $current)) { - $this->attach($id, $attributes); - $changes['attached'][] = $id; - } elseif (count($attributes) > 0 && $this->attach($id, $attributes)) { - $changes['updated'][] = $id; - } - } - - return $changes; - } - -} diff --git a/vendor/topthink/think-orm/src/model/relation/HasMany.php b/vendor/topthink/think-orm/src/model/relation/HasMany.php deleted file mode 100644 index aa46a88b5..000000000 --- a/vendor/topthink/think-orm/src/model/relation/HasMany.php +++ /dev/null @@ -1,367 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model\relation; - -use Closure; -use think\Collection; -use think\db\BaseQuery as Query; -use think\helper\Str; -use think\Model; -use think\model\Relation; - -/** - * 一对多关联类 - */ -class HasMany extends Relation -{ - /** - * 架构函数 - * @access public - * @param Model $parent 上级模型对象 - * @param string $model 模型名 - * @param string $foreignKey 关联外键 - * @param string $localKey 当前模型主键 - */ - public function __construct(Model $parent, string $model, string $foreignKey, string $localKey) - { - $this->parent = $parent; - $this->model = $model; - $this->foreignKey = $foreignKey; - $this->localKey = $localKey; - $this->query = (new $model)->db(); - - if (get_class($parent) == $model) { - $this->selfRelation = true; - } - } - - /** - * 延迟获取关联数据 - * @access public - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包查询条件 - * @return Collection - */ - public function getRelation(array $subRelation = [], Closure $closure = null): Collection - { - if ($closure) { - $closure($this->getClosureType($closure)); - } - - if ($this->withLimit) { - $this->query->limit($this->withLimit); - } - - return $this->query - ->where($this->foreignKey, $this->parent->{$this->localKey}) - ->relation($subRelation) - ->select() - ->setParent(clone $this->parent); - } - - /** - * 预载入关联查询 - * @access public - * @param array $resultSet 数据集 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResultSet(array &$resultSet, string $relation, array $subRelation, Closure $closure = null, array $cache = []): void - { - $localKey = $this->localKey; - $range = []; - - foreach ($resultSet as $result) { - // 获取关联外键列表 - if (isset($result->$localKey)) { - $range[] = $result->$localKey; - } - } - - if (!empty($range)) { - $data = $this->eagerlyOneToMany([ - [$this->foreignKey, 'in', $range], - ], $subRelation, $closure, $cache); - - // 关联数据封装 - foreach ($resultSet as $result) { - $pk = $result->$localKey; - if (!isset($data[$pk])) { - $data[$pk] = []; - } - - $result->setRelation($relation, $this->resultSetBuild($data[$pk], clone $this->parent)); - } - } - } - - /** - * 预载入关联查询 - * @access public - * @param Model $result 数据对象 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResult(Model $result, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void - { - $localKey = $this->localKey; - - if (isset($result->$localKey)) { - $pk = $result->$localKey; - $data = $this->eagerlyOneToMany([ - [$this->foreignKey, '=', $pk], - ], $subRelation, $closure, $cache); - - // 关联数据封装 - if (!isset($data[$pk])) { - $data[$pk] = []; - } - - $result->setRelation($relation, $this->resultSetBuild($data[$pk], clone $this->parent)); - } - } - - /** - * 关联统计 - * @access public - * @param Model $result 数据对象 - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return integer - */ - public function relationCount(Model $result, Closure $closure = null, string $aggregate = 'count', string $field = '*', string &$name = null) - { - $localKey = $this->localKey; - - if (!isset($result->$localKey)) { - return 0; - } - - if ($closure) { - $closure($this->getClosureType($closure), $name); - } - - return $this->query - ->where($this->foreignKey, '=', $result->$localKey) - ->$aggregate($field); - } - - /** - * 创建关联统计子查询 - * @access public - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return string - */ - public function getRelationCountQuery(Closure $closure = null, string $aggregate = 'count', string $field = '*', string &$name = null): string - { - if ($closure) { - $closure($this->getClosureType($closure), $name); - } - - return $this->query->alias($aggregate . '_table') - ->whereExp($aggregate . '_table.' . $this->foreignKey, '=' . $this->parent->getTable() . '.' . $this->localKey) - ->fetchSql() - ->$aggregate($field); - } - - /** - * 一对多 关联模型预查询 - * @access public - * @param array $where 关联预查询条件 - * @param array $subRelation 子关联 - * @param Closure $closure - * @param array $cache 关联缓存 - * @return array - */ - protected function eagerlyOneToMany(array $where, array $subRelation = [], Closure $closure = null, array $cache = []): array - { - $foreignKey = $this->foreignKey; - - $this->query->removeWhereField($this->foreignKey); - - // 预载入关联查询 支持嵌套预载入 - if ($closure) { - $this->baseQuery = true; - $closure($this->getClosureType($closure)); - } - - $list = $this->query - ->where($where) - ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) - ->with($subRelation) - ->select(); - - // 组装模型数据 - $data = []; - - foreach ($list as $set) { - $key = $set->$foreignKey; - - if ($this->withLimit && isset($data[$key]) && count($data[$key]) >= $this->withLimit) { - continue; - } - - $data[$key][] = $set; - } - - return $data; - } - - /** - * 保存(新增)当前关联数据对象 - * @access public - * @param mixed $data 数据 可以使用数组 关联模型对象 - * @param boolean $replace 是否自动识别更新和写入 - * @return Model|false - */ - public function save($data, bool $replace = true) - { - $model = $this->make(); - - return $model->replace($replace)->save($data) ? $model : false; - } - - /** - * 创建关联对象实例 - * @param array|Model $data - * @return Model - */ - public function make($data = []): Model - { - if ($data instanceof Model) { - $data = $data->getData(); - } - - // 保存关联表数据 - $data[$this->foreignKey] = $this->parent->{$this->localKey}; - - return new $this->model($data); - } - - /** - * 批量保存当前关联数据对象 - * @access public - * @param iterable $dataSet 数据集 - * @param boolean $replace 是否自动识别更新和写入 - * @return array|false - */ - public function saveAll(iterable $dataSet, bool $replace = true) - { - $result = []; - - foreach ($dataSet as $key => $data) { - $result[] = $this->save($data, $replace); - } - - return empty($result) ? false : $result; - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $operator 比较操作符 - * @param integer $count 个数 - * @param string $id 关联表的统计字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function has(string $operator = '>=', int $count = 1, string $id = '*', string $joinType = 'INNER', Query $query = null): Query - { - $table = $this->query->getTable(); - - $model = class_basename($this->parent); - $relation = class_basename($this->model); - - if ('*' != $id) { - $id = $relation . '.' . (new $this->model)->getPk(); - } - - $softDelete = $this->query->getOptions('soft_delete'); - $query = $query ?: $this->parent->db()->alias($model); - - return $query->field($model . '.*') - ->join([$table => $relation], $model . '.' . $this->localKey . '=' . $relation . '.' . $this->foreignKey, $joinType) - ->when($softDelete, function ($query) use ($softDelete, $relation) { - $query->where($relation . strstr($softDelete[0], '.'), '=' == $softDelete[1][0] ? $softDelete[1][1] : null); - }) - ->group($relation . '.' . $this->foreignKey) - ->having('count(' . $id . ')' . $operator . $count); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param mixed $where 查询条件(数组或者闭包) - * @param mixed $fields 字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function hasWhere($where = [], $fields = null, string $joinType = '', Query $query = null): Query - { - $table = $this->query->getTable(); - $model = class_basename($this->parent); - $relation = class_basename($this->model); - - if (is_array($where)) { - $this->getQueryWhere($where, $relation); - } elseif ($where instanceof Query) { - $where->via($relation); - } elseif ($where instanceof Closure) { - $where($this->query->via($relation)); - $where = $this->query; - } - - $fields = $this->getRelationQueryFields($fields, $model); - $softDelete = $this->query->getOptions('soft_delete'); - $query = $query ?: $this->parent->db()->alias($model); - - return $query->group($model . '.' . $this->localKey) - ->field($fields) - ->join([$table => $relation], $model . '.' . $this->localKey . '=' . $relation . '.' . $this->foreignKey) - ->when($softDelete, function ($query) use ($softDelete, $relation) { - $query->where($relation . strstr($softDelete[0], '.'), '=' == $softDelete[1][0] ? $softDelete[1][1] : null); - }) - ->where($where); - } - - /** - * 执行基础查询(仅执行一次) - * @access protected - * @return void - */ - protected function baseQuery(): void - { - if (empty($this->baseQuery)) { - if (isset($this->parent->{$this->localKey})) { - // 关联查询带入关联条件 - $this->query->where($this->foreignKey, '=', $this->parent->{$this->localKey}); - } - - $this->baseQuery = true; - } - } - -} diff --git a/vendor/topthink/think-orm/src/model/relation/HasManyThrough.php b/vendor/topthink/think-orm/src/model/relation/HasManyThrough.php deleted file mode 100644 index 23367f341..000000000 --- a/vendor/topthink/think-orm/src/model/relation/HasManyThrough.php +++ /dev/null @@ -1,382 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\model\relation; - -use Closure; -use think\Collection; -use think\db\BaseQuery as Query; -use think\helper\Str; -use think\Model; -use think\model\Relation; - -/** - * 远程一对多关联类 - */ -class HasManyThrough extends Relation -{ - /** - * 中间关联表外键 - * @var string - */ - protected $throughKey; - - /** - * 中间主键 - * @var string - */ - protected $throughPk; - - /** - * 中间表查询对象 - * @var Query - */ - protected $through; - - /** - * 架构函数 - * @access public - * @param Model $parent 上级模型对象 - * @param string $model 关联模型名 - * @param string $through 中间模型名 - * @param string $foreignKey 关联外键 - * @param string $throughKey 中间关联外键 - * @param string $localKey 当前模型主键 - * @param string $throughPk 中间模型主键 - */ - public function __construct(Model $parent, string $model, string $through, string $foreignKey, string $throughKey, string $localKey, string $throughPk) - { - $this->parent = $parent; - $this->model = $model; - $this->through = (new $through)->db(); - $this->foreignKey = $foreignKey; - $this->throughKey = $throughKey; - $this->localKey = $localKey; - $this->throughPk = $throughPk; - $this->query = (new $model)->db(); - } - - /** - * 延迟获取关联数据 - * @access public - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包查询条件 - * @return Collection - */ - public function getRelation(array $subRelation = [], Closure $closure = null) - { - if ($closure) { - $closure($this->getClosureType($closure)); - } - - $this->baseQuery(); - - if ($this->withLimit) { - $this->query->limit($this->withLimit); - } - - return $this->query->relation($subRelation) - ->select() - ->setParent(clone $this->parent); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $operator 比较操作符 - * @param integer $count 个数 - * @param string $id 关联表的统计字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function has(string $operator = '>=', int $count = 1, string $id = '*', string $joinType = '', Query $query = null): Query - { - $model = Str::snake(class_basename($this->parent)); - $throughTable = $this->through->getTable(); - $pk = $this->throughPk; - $throughKey = $this->throughKey; - $relation = new $this->model; - $relationTable = $relation->getTable(); - $softDelete = $this->query->getOptions('soft_delete'); - - if ('*' != $id) { - $id = $relationTable . '.' . $relation->getPk(); - } - $query = $query ?: $this->parent->db()->alias($model); - - return $query->field($model . '.*') - ->join($throughTable, $throughTable . '.' . $this->foreignKey . '=' . $model . '.' . $this->localKey) - ->join($relationTable, $relationTable . '.' . $throughKey . '=' . $throughTable . '.' . $this->throughPk) - ->when($softDelete, function ($query) use ($softDelete, $relationTable) { - $query->where($relationTable . strstr($softDelete[0], '.'), '=' == $softDelete[1][0] ? $softDelete[1][1] : null); - }) - ->group($relationTable . '.' . $this->throughKey) - ->having('count(' . $id . ')' . $operator . $count); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param mixed $where 查询条件(数组或者闭包) - * @param mixed $fields 字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function hasWhere($where = [], $fields = null, $joinType = '', Query $query = null): Query - { - $model = Str::snake(class_basename($this->parent)); - $throughTable = $this->through->getTable(); - $pk = $this->throughPk; - $throughKey = $this->throughKey; - $modelTable = (new $this->model)->getTable(); - - if (is_array($where)) { - $this->getQueryWhere($where, $modelTable); - } elseif ($where instanceof Query) { - $where->via($modelTable); - } elseif ($where instanceof Closure) { - $where($this->query->via($modelTable)); - $where = $this->query; - } - - $fields = $this->getRelationQueryFields($fields, $model); - $softDelete = $this->query->getOptions('soft_delete'); - $query = $query ?: $this->parent->db()->alias($model); - - return $query->join($throughTable, $throughTable . '.' . $this->foreignKey . '=' . $model . '.' . $this->localKey) - ->join($modelTable, $modelTable . '.' . $throughKey . '=' . $throughTable . '.' . $this->throughPk) - ->when($softDelete, function ($query) use ($softDelete, $modelTable) { - $query->where($modelTable . strstr($softDelete[0], '.'), '=' == $softDelete[1][0] ? $softDelete[1][1] : null); - }) - ->group($modelTable . '.' . $this->throughKey) - ->where($where) - ->field($fields); - } - - /** - * 预载入关联查询(数据集) - * @access protected - * @param array $resultSet 数据集 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResultSet(array &$resultSet, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void - { - $localKey = $this->localKey; - $foreignKey = $this->foreignKey; - - $range = []; - foreach ($resultSet as $result) { - // 获取关联外键列表 - if (isset($result->$localKey)) { - $range[] = $result->$localKey; - } - } - - if (!empty($range)) { - $this->query->removeWhereField($foreignKey); - - $data = $this->eagerlyWhere([ - [$this->foreignKey, 'in', $range], - ], $foreignKey, $subRelation, $closure, $cache); - - // 关联数据封装 - foreach ($resultSet as $result) { - $pk = $result->$localKey; - if (!isset($data[$pk])) { - $data[$pk] = []; - } - - // 设置关联属性 - $result->setRelation($relation, $this->resultSetBuild($data[$pk], clone $this->parent)); - } - } - } - - /** - * 预载入关联查询(数据) - * @access protected - * @param Model $result 数据对象 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResult(Model $result, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void - { - $localKey = $this->localKey; - $foreignKey = $this->foreignKey; - $pk = $result->$localKey; - - $this->query->removeWhereField($foreignKey); - - $data = $this->eagerlyWhere([ - [$foreignKey, '=', $pk], - ], $foreignKey, $subRelation, $closure, $cache); - - // 关联数据封装 - if (!isset($data[$pk])) { - $data[$pk] = []; - } - - $result->setRelation($relation, $this->resultSetBuild($data[$pk], clone $this->parent)); - } - - /** - * 关联模型预查询 - * @access public - * @param array $where 关联预查询条件 - * @param string $key 关联键名 - * @param array $subRelation 子关联 - * @param Closure $closure - * @param array $cache 关联缓存 - * @return array - */ - protected function eagerlyWhere(array $where, string $key, array $subRelation = [], Closure $closure = null, array $cache = []): array - { - // 预载入关联查询 支持嵌套预载入 - $throughList = $this->through->where($where)->select(); - $keys = $throughList->column($this->throughPk, $this->throughPk); - - if ($closure) { - $this->baseQuery = true; - $closure($this->getClosureType($closure)); - } - - $list = $this->query - ->where($this->throughKey, 'in', $keys) - ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) - ->select(); - - // 组装模型数据 - $data = []; - $keys = $throughList->column($this->foreignKey, $this->throughPk); - - foreach ($list as $set) { - $key = $keys[$set->{$this->throughKey}]; - - if ($this->withLimit && isset($data[$key]) && count($data[$key]) >= $this->withLimit) { - continue; - } - - $data[$key][] = $set; - } - - return $data; - } - - /** - * 关联统计 - * @access public - * @param Model $result 数据对象 - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return mixed - */ - public function relationCount(Model $result, Closure $closure = null, string $aggregate = 'count', string $field = '*', string &$name = null) - { - $localKey = $this->localKey; - - if (!isset($result->$localKey)) { - return 0; - } - - if ($closure) { - $closure($this->getClosureType($closure), $name); - } - - $alias = Str::snake(class_basename($this->model)); - $throughTable = $this->through->getTable(); - $pk = $this->throughPk; - $throughKey = $this->throughKey; - $modelTable = $this->parent->getTable(); - - if (false === strpos($field, '.')) { - $field = $alias . '.' . $field; - } - - return $this->query - ->alias($alias) - ->join($throughTable, $throughTable . '.' . $pk . '=' . $alias . '.' . $throughKey) - ->join($modelTable, $modelTable . '.' . $this->localKey . '=' . $throughTable . '.' . $this->foreignKey) - ->where($throughTable . '.' . $this->foreignKey, $result->$localKey) - ->$aggregate($field); - } - - /** - * 创建关联统计子查询 - * @access public - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return string - */ - public function getRelationCountQuery(Closure $closure = null, string $aggregate = 'count', string $field = '*', string &$name = null): string - { - if ($closure) { - $closure($this->getClosureType($closure), $name); - } - - $alias = Str::snake(class_basename($this->model)); - $throughTable = $this->through->getTable(); - $pk = $this->throughPk; - $throughKey = $this->throughKey; - $modelTable = $this->parent->getTable(); - - if (false === strpos($field, '.')) { - $field = $alias . '.' . $field; - } - - return $this->query - ->alias($alias) - ->join($throughTable, $throughTable . '.' . $pk . '=' . $alias . '.' . $throughKey) - ->join($modelTable, $modelTable . '.' . $this->localKey . '=' . $throughTable . '.' . $this->foreignKey) - ->whereExp($throughTable . '.' . $this->foreignKey, '=' . $this->parent->getTable() . '.' . $this->localKey) - ->fetchSql() - ->$aggregate($field); - } - - /** - * 执行基础查询(仅执行一次) - * @access protected - * @return void - */ - protected function baseQuery(): void - { - if (empty($this->baseQuery) && $this->parent->getData()) { - $alias = Str::snake(class_basename($this->model)); - $throughTable = $this->through->getTable(); - $pk = $this->throughPk; - $throughKey = $this->throughKey; - $modelTable = $this->parent->getTable(); - $fields = $this->getQueryFields($alias); - - $this->query - ->field($fields) - ->alias($alias) - ->join($throughTable, $throughTable . '.' . $pk . '=' . $alias . '.' . $throughKey) - ->join($modelTable, $modelTable . '.' . $this->localKey . '=' . $throughTable . '.' . $this->foreignKey) - ->where($throughTable . '.' . $this->foreignKey, $this->parent->{$this->localKey}); - - $this->baseQuery = true; - } - } - -} diff --git a/vendor/topthink/think-orm/src/model/relation/HasOne.php b/vendor/topthink/think-orm/src/model/relation/HasOne.php deleted file mode 100644 index 98bdf89b4..000000000 --- a/vendor/topthink/think-orm/src/model/relation/HasOne.php +++ /dev/null @@ -1,300 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\model\relation; - -use Closure; -use think\db\BaseQuery as Query; -use think\helper\Str; -use think\Model; - -/** - * HasOne 关联类 - */ -class HasOne extends OneToOne -{ - /** - * 架构函数 - * @access public - * @param Model $parent 上级模型对象 - * @param string $model 模型名 - * @param string $foreignKey 关联外键 - * @param string $localKey 当前模型主键 - */ - public function __construct(Model $parent, string $model, string $foreignKey, string $localKey) - { - $this->parent = $parent; - $this->model = $model; - $this->foreignKey = $foreignKey; - $this->localKey = $localKey; - $this->query = (new $model)->db(); - - if (get_class($parent) == $model) { - $this->selfRelation = true; - } - } - - /** - * 延迟获取关联数据 - * @access public - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包查询条件 - * @return Model - */ - public function getRelation(array $subRelation = [], Closure $closure = null) - { - $localKey = $this->localKey; - - if ($closure) { - $closure($this->getClosureType($closure)); - } - - // 判断关联类型执行查询 - $relationModel = $this->query - ->removeWhereField($this->foreignKey) - ->where($this->foreignKey, $this->parent->$localKey) - ->relation($subRelation) - ->find(); - - if ($relationModel) { - if (!empty($this->bindAttr)) { - // 绑定关联属性 - $this->bindAttr($relationModel, $this->parent); - } - - $relationModel->setParent(clone $this->parent); - } - - return $relationModel; - } - - /** - * 创建关联统计子查询 - * @access public - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return string - */ - public function getRelationCountQuery(Closure $closure = null, string $aggregate = 'count', string $field = '*', string &$name = null): string - { - if ($closure) { - $closure($this->getClosureType($closure), $name); - } - - return $this->query - ->whereExp($this->foreignKey, '=' . $this->parent->getTable() . '.' . $this->localKey) - ->fetchSql() - ->$aggregate($field); - } - - /** - * 关联统计 - * @access public - * @param Model $result 数据对象 - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return integer - */ - public function relationCount(Model $result, Closure $closure = null, string $aggregate = 'count', string $field = '*', string &$name = null) - { - $localKey = $this->localKey; - - if (!isset($result->$localKey)) { - return 0; - } - - if ($closure) { - $closure($this->getClosureType($closure), $name); - } - - return $this->query - ->where($this->foreignKey, '=', $result->$localKey) - ->$aggregate($field); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $operator 比较操作符 - * @param integer $count 个数 - * @param string $id 关联表的统计字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function has(string $operator = '>=', int $count = 1, string $id = '*', string $joinType = '', Query $query = null): Query - { - $table = $this->query->getTable(); - $model = class_basename($this->parent); - $relation = class_basename($this->model); - $localKey = $this->localKey; - $foreignKey = $this->foreignKey; - $softDelete = $this->query->getOptions('soft_delete'); - $query = $query ?: $this->parent->db()->alias($model); - - return $query->whereExists(function ($query) use ($table, $model, $relation, $localKey, $foreignKey, $softDelete) { - $query->table([$table => $relation]) - ->field($relation . '.' . $foreignKey) - ->whereExp($model . '.' . $localKey, '=' . $relation . '.' . $foreignKey) - ->when($softDelete, function ($query) use ($softDelete, $relation) { - $query->where($relation . strstr($softDelete[0], '.'), '=' == $softDelete[1][0] ? $softDelete[1][1] : null); - }); - }); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param mixed $where 查询条件(数组或者闭包) - * @param mixed $fields 字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function hasWhere($where = [], $fields = null, string $joinType = '', Query $query = null): Query - { - $table = $this->query->getTable(); - $model = class_basename($this->parent); - $relation = class_basename($this->model); - - if (is_array($where)) { - $this->getQueryWhere($where, $relation); - } elseif ($where instanceof Query) { - $where->via($relation); - } elseif ($where instanceof Closure) { - $where($this->query->via($relation)); - $where = $this->query; - } - - $fields = $this->getRelationQueryFields($fields, $model); - $softDelete = $this->query->getOptions('soft_delete'); - $query = $query ?: $this->parent->db()->alias($model); - - return $query->field($fields) - ->join([$table => $relation], $model . '.' . $this->localKey . '=' . $relation . '.' . $this->foreignKey, $joinType ?: $this->joinType) - ->when($softDelete, function ($query) use ($softDelete, $relation) { - $query->where($relation . strstr($softDelete[0], '.'), '=' == $softDelete[1][0] ? $softDelete[1][1] : null); - }) - ->where($where); - } - - /** - * 预载入关联查询(数据集) - * @access protected - * @param array $resultSet 数据集 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - protected function eagerlySet(array &$resultSet, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void - { - $localKey = $this->localKey; - $foreignKey = $this->foreignKey; - - $range = []; - foreach ($resultSet as $result) { - // 获取关联外键列表 - if (isset($result->$localKey)) { - $range[] = $result->$localKey; - } - } - - if (!empty($range)) { - $this->query->removeWhereField($foreignKey); - - $data = $this->eagerlyWhere([ - [$foreignKey, 'in', $range], - ], $foreignKey, $subRelation, $closure, $cache); - - // 关联数据封装 - foreach ($resultSet as $result) { - // 关联模型 - if (!isset($data[$result->$localKey])) { - $relationModel = null; - } else { - $relationModel = $data[$result->$localKey]; - $relationModel->setParent(clone $result); - $relationModel->exists(true); - } - - if ($relationModel && !empty($this->bindAttr)) { - // 绑定关联属性 - $this->bindAttr($relationModel, $result); - } else { - // 设置关联属性 - $result->setRelation($relation, $relationModel); - } - } - } - } - - /** - * 预载入关联查询(数据) - * @access protected - * @param Model $result 数据对象 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - protected function eagerlyOne(Model $result, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void - { - $localKey = $this->localKey; - $foreignKey = $this->foreignKey; - - $this->query->removeWhereField($foreignKey); - - $data = $this->eagerlyWhere([ - [$foreignKey, '=', $result->$localKey], - ], $foreignKey, $subRelation, $closure, $cache); - - // 关联模型 - if (!isset($data[$result->$localKey])) { - $relationModel = null; - } else { - $relationModel = $data[$result->$localKey]; - $relationModel->setParent(clone $result); - $relationModel->exists(true); - } - - if ($relationModel && !empty($this->bindAttr)) { - // 绑定关联属性 - $this->bindAttr($relationModel, $result); - } else { - $result->setRelation($relation, $relationModel); - } - } - - /** - * 执行基础查询(仅执行一次) - * @access protected - * @return void - */ - protected function baseQuery(): void - { - if (empty($this->baseQuery)) { - if (isset($this->parent->{$this->localKey})) { - // 关联查询带入关联条件 - $this->query->where($this->foreignKey, '=', $this->parent->{$this->localKey}); - } - - $this->baseQuery = true; - } - } -} diff --git a/vendor/topthink/think-orm/src/model/relation/HasOneThrough.php b/vendor/topthink/think-orm/src/model/relation/HasOneThrough.php deleted file mode 100644 index 8ec42df47..000000000 --- a/vendor/topthink/think-orm/src/model/relation/HasOneThrough.php +++ /dev/null @@ -1,163 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\model\relation; - -use Closure; -use think\helper\Str; -use think\Model; - -/** - * 远程一对一关联类 - */ -class HasOneThrough extends HasManyThrough -{ - - /** - * 延迟获取关联数据 - * @access public - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包查询条件 - * @return Model - */ - public function getRelation(array $subRelation = [], Closure $closure = null) - { - if ($closure) { - $closure($this->getClosureType($closure)); - } - - $this->baseQuery(); - - $relationModel = $this->query->relation($subRelation)->find(); - - if ($relationModel) { - $relationModel->setParent(clone $this->parent); - } - - return $relationModel; - } - - /** - * 预载入关联查询(数据集) - * @access protected - * @param array $resultSet 数据集 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResultSet(array &$resultSet, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void - { - $localKey = $this->localKey; - $foreignKey = $this->foreignKey; - - $range = []; - foreach ($resultSet as $result) { - // 获取关联外键列表 - if (isset($result->$localKey)) { - $range[] = $result->$localKey; - } - } - - if (!empty($range)) { - $this->query->removeWhereField($foreignKey); - - $data = $this->eagerlyWhere([ - [$this->foreignKey, 'in', $range], - ], $foreignKey, $subRelation, $closure, $cache); - - // 关联数据封装 - foreach ($resultSet as $result) { - // 关联模型 - if (!isset($data[$result->$localKey])) { - $relationModel = null; - } else { - $relationModel = $data[$result->$localKey]; - $relationModel->setParent(clone $result); - $relationModel->exists(true); - } - - // 设置关联属性 - $result->setRelation($relation, $relationModel); - } - } - } - - /** - * 预载入关联查询(数据) - * @access protected - * @param Model $result 数据对象 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResult(Model $result, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void - { - $localKey = $this->localKey; - $foreignKey = $this->foreignKey; - - $this->query->removeWhereField($foreignKey); - - $data = $this->eagerlyWhere([ - [$foreignKey, '=', $result->$localKey], - ], $foreignKey, $subRelation, $closure, $cache); - - // 关联模型 - if (!isset($data[$result->$localKey])) { - $relationModel = null; - } else { - $relationModel = $data[$result->$localKey]; - $relationModel->setParent(clone $result); - $relationModel->exists(true); - } - - $result->setRelation($relation, $relationModel); - } - - /** - * 关联模型预查询 - * @access public - * @param array $where 关联预查询条件 - * @param string $key 关联键名 - * @param array $subRelation 子关联 - * @param Closure $closure - * @param array $cache 关联缓存 - * @return array - */ - protected function eagerlyWhere(array $where, string $key, array $subRelation = [], Closure $closure = null, array $cache = []): array - { - // 预载入关联查询 支持嵌套预载入 - $keys = $this->through->where($where)->column($this->throughPk, $this->foreignKey); - - if ($closure) { - $closure($this->getClosureType($closure)); - } - - $list = $this->query - ->where($this->throughKey, 'in', $keys) - ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) - ->select(); - - // 组装模型数据 - $data = []; - $keys = array_flip($keys); - - foreach ($list as $set) { - $data[$keys[$set->{$this->throughKey}]] = $set; - } - - return $data; - } - -} diff --git a/vendor/topthink/think-orm/src/model/relation/MorphMany.php b/vendor/topthink/think-orm/src/model/relation/MorphMany.php deleted file mode 100644 index 82910cbc5..000000000 --- a/vendor/topthink/think-orm/src/model/relation/MorphMany.php +++ /dev/null @@ -1,353 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\model\relation; - -use Closure; -use think\Collection; -use think\db\BaseQuery as Query; -use think\db\exception\DbException as Exception; -use think\helper\Str; -use think\Model; -use think\model\Relation; - -/** - * 多态一对多关联 - */ -class MorphMany extends Relation -{ - - /** - * 多态关联外键 - * @var string - */ - protected $morphKey; - /** - * 多态字段名 - * @var string - */ - protected $morphType; - - /** - * 多态类型 - * @var string - */ - protected $type; - - /** - * 架构函数 - * @access public - * @param Model $parent 上级模型对象 - * @param string $model 模型名 - * @param string $morphKey 关联外键 - * @param string $morphType 多态字段名 - * @param string $type 多态类型 - */ - public function __construct(Model $parent, string $model, string $morphKey, string $morphType, string $type) - { - $this->parent = $parent; - $this->model = $model; - $this->type = $type; - $this->morphKey = $morphKey; - $this->morphType = $morphType; - $this->query = (new $model)->db(); - } - - /** - * 延迟获取关联数据 - * @access public - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包查询条件 - * @return Collection - */ - public function getRelation(array $subRelation = [], Closure $closure = null): Collection - { - if ($closure) { - $closure($this->getClosureType($closure)); - } - - $this->baseQuery(); - - if ($this->withLimit) { - $this->query->limit($this->withLimit); - } - - return $this->query->relation($subRelation) - ->select() - ->setParent(clone $this->parent); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $operator 比较操作符 - * @param integer $count 个数 - * @param string $id 关联表的统计字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function has(string $operator = '>=', int $count = 1, string $id = '*', string $joinType = '', Query $query = null) - { - throw new Exception('relation not support: has'); - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param mixed $where 查询条件(数组或者闭包) - * @param mixed $fields 字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function hasWhere($where = [], $fields = null, string $joinType = '', Query $query = null) - { - throw new Exception('relation not support: hasWhere'); - } - - /** - * 预载入关联查询 - * @access public - * @param array $resultSet 数据集 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResultSet(array &$resultSet, string $relation, array $subRelation, Closure $closure = null, array $cache = []): void - { - $morphType = $this->morphType; - $morphKey = $this->morphKey; - $type = $this->type; - $range = []; - - foreach ($resultSet as $result) { - $pk = $result->getPk(); - // 获取关联外键列表 - if (isset($result->$pk)) { - $range[] = $result->$pk; - } - } - - if (!empty($range)) { - $where = [ - [$morphKey, 'in', $range], - [$morphType, '=', $type], - ]; - $data = $this->eagerlyMorphToMany($where, $subRelation, $closure, $cache); - - // 关联数据封装 - foreach ($resultSet as $result) { - if (!isset($data[$result->$pk])) { - $data[$result->$pk] = []; - } - - $result->setRelation($relation, $this->resultSetBuild($data[$result->$pk], clone $this->parent)); - } - } - } - - /** - * 预载入关联查询 - * @access public - * @param Model $result 数据对象 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResult(Model $result, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void - { - $pk = $result->getPk(); - - if (isset($result->$pk)) { - $key = $result->$pk; - $data = $this->eagerlyMorphToMany([ - [$this->morphKey, '=', $key], - [$this->morphType, '=', $this->type], - ], $subRelation, $closure, $cache); - - if (!isset($data[$key])) { - $data[$key] = []; - } - - $result->setRelation($relation, $this->resultSetBuild($data[$key], clone $this->parent)); - } - } - - /** - * 关联统计 - * @access public - * @param Model $result 数据对象 - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return mixed - */ - public function relationCount(Model $result, Closure $closure = null, string $aggregate = 'count', string $field = '*', string &$name = null) - { - $pk = $result->getPk(); - - if (!isset($result->$pk)) { - return 0; - } - - if ($closure) { - $closure($this->getClosureType($closure), $name); - } - - return $this->query - ->where([ - [$this->morphKey, '=', $result->$pk], - [$this->morphType, '=', $this->type], - ]) - ->$aggregate($field); - } - - /** - * 获取关联统计子查询 - * @access public - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @param string $name 统计字段别名 - * @return string - */ - public function getRelationCountQuery(Closure $closure = null, string $aggregate = 'count', string $field = '*', string &$name = null): string - { - if ($closure) { - $closure($this->getClosureType($closure), $name); - } - - return $this->query - ->whereExp($this->morphKey, '=' . $this->parent->getTable() . '.' . $this->parent->getPk()) - ->where($this->morphType, '=', $this->type) - ->fetchSql() - ->$aggregate($field); - } - - /** - * 多态一对多 关联模型预查询 - * @access protected - * @param array $where 关联预查询条件 - * @param array $subRelation 子关联 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return array - */ - protected function eagerlyMorphToMany(array $where, array $subRelation = [], Closure $closure = null, array $cache = []): array - { - // 预载入关联查询 支持嵌套预载入 - $this->query->removeOption('where'); - - if ($closure) { - $this->baseQuery = true; - $closure($this->getClosureType($closure)); - } - - $list = $this->query - ->where($where) - ->with($subRelation) - ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) - ->select(); - $morphKey = $this->morphKey; - - // 组装模型数据 - $data = []; - foreach ($list as $set) { - $key = $set->$morphKey; - - if ($this->withLimit && isset($data[$key]) && count($data[$key]) >= $this->withLimit) { - continue; - } - - $data[$key][] = $set; - } - - return $data; - } - - /** - * 保存(新增)当前关联数据对象 - * @access public - * @param mixed $data 数据 可以使用数组 关联模型对象 - * @param bool $replace 是否自动识别更新和写入 - * @return Model|false - */ - public function save($data, bool $replace = true) - { - $model = $this->make(); - - return $model->replace($replace)->save($data) ? $model : false; - } - - /** - * 创建关联对象实例 - * @param array|Model $data - * @return Model - */ - public function make($data = []): Model - { - if ($data instanceof Model) { - $data = $data->getData(); - } - - // 保存关联表数据 - $pk = $this->parent->getPk(); - - $data[$this->morphKey] = $this->parent->$pk; - $data[$this->morphType] = $this->type; - - return new $this->model($data); - } - - /** - * 批量保存当前关联数据对象 - * @access public - * @param iterable $dataSet 数据集 - * @param boolean $replace 是否自动识别更新和写入 - * @return array|false - */ - public function saveAll(iterable $dataSet, bool $replace = true) - { - $result = []; - - foreach ($dataSet as $key => $data) { - $result[] = $this->save($data, $replace); - } - - return empty($result) ? false : $result; - } - - /** - * 执行基础查询(仅执行一次) - * @access protected - * @return void - */ - protected function baseQuery(): void - { - if (empty($this->baseQuery) && $this->parent->getData()) { - $pk = $this->parent->getPk(); - - $this->query->where([ - [$this->morphKey, '=', $this->parent->$pk], - [$this->morphType, '=', $this->type], - ]); - - $this->baseQuery = true; - } - } - -} diff --git a/vendor/topthink/think-orm/src/model/relation/MorphOne.php b/vendor/topthink/think-orm/src/model/relation/MorphOne.php deleted file mode 100644 index 6789c761f..000000000 --- a/vendor/topthink/think-orm/src/model/relation/MorphOne.php +++ /dev/null @@ -1,280 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\model\relation; - -use Closure; -use think\db\BaseQuery as Query; -use think\db\exception\DbException as Exception; -use think\helper\Str; -use think\Model; -use think\model\Relation; - -/** - * 多态一对一关联类 - */ -class MorphOne extends Relation -{ - /** - * 多态关联外键 - * @var string - */ - protected $morphKey; - - /** - * 多态字段 - * @var string - */ - protected $morphType; - - /** - * 多态类型 - * @var string - */ - protected $type; - - /** - * 构造函数 - * @access public - * @param Model $parent 上级模型对象 - * @param string $model 模型名 - * @param string $morphKey 关联外键 - * @param string $morphType 多态字段名 - * @param string $type 多态类型 - */ - public function __construct(Model $parent, string $model, string $morphKey, string $morphType, string $type) - { - $this->parent = $parent; - $this->model = $model; - $this->type = $type; - $this->morphKey = $morphKey; - $this->morphType = $morphType; - $this->query = (new $model)->db(); - } - - /** - * 延迟获取关联数据 - * @access public - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包查询条件 - * @return Model - */ - public function getRelation(array $subRelation = [], Closure $closure = null) - { - if ($closure) { - $closure($this->getClosureType($closure)); - } - - $this->baseQuery(); - - $relationModel = $this->query->relation($subRelation)->find(); - - if ($relationModel) { - $relationModel->setParent(clone $this->parent); - } - - return $relationModel; - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $operator 比较操作符 - * @param integer $count 个数 - * @param string $id 关联表的统计字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function has(string $operator = '>=', int $count = 1, string $id = '*', string $joinType = '', Query $query = null) - { - return $this->parent; - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param mixed $where 查询条件(数组或者闭包) - * @param mixed $fields 字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function hasWhere($where = [], $fields = null, string $joinType = '', Query $query = null) - { - throw new Exception('relation not support: hasWhere'); - } - - /** - * 预载入关联查询 - * @access public - * @param array $resultSet 数据集 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResultSet(array &$resultSet, string $relation, array $subRelation, Closure $closure = null, array $cache = []): void - { - $morphType = $this->morphType; - $morphKey = $this->morphKey; - $type = $this->type; - $range = []; - - foreach ($resultSet as $result) { - $pk = $result->getPk(); - // 获取关联外键列表 - if (isset($result->$pk)) { - $range[] = $result->$pk; - } - } - - if (!empty($range)) { - $data = $this->eagerlyMorphToOne([ - [$morphKey, 'in', $range], - [$morphType, '=', $type], - ], $subRelation, $closure, $cache); - - // 关联数据封装 - foreach ($resultSet as $result) { - if (!isset($data[$result->$pk])) { - $relationModel = null; - } else { - $relationModel = $data[$result->$pk]; - $relationModel->setParent(clone $result); - $relationModel->exists(true); - } - - $result->setRelation($relation, $relationModel); - } - } - } - - /** - * 预载入关联查询 - * @access public - * @param Model $result 数据对象 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResult(Model $result, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void - { - $pk = $result->getPk(); - - if (isset($result->$pk)) { - $pk = $result->$pk; - $data = $this->eagerlyMorphToOne([ - [$this->morphKey, '=', $pk], - [$this->morphType, '=', $this->type], - ], $subRelation, $closure, $cache); - - if (isset($data[$pk])) { - $relationModel = $data[$pk]; - $relationModel->setParent(clone $result); - $relationModel->exists(true); - } else { - $relationModel = null; - } - - $result->setRelation($relation, $relationModel); - } - } - - /** - * 多态一对一 关联模型预查询 - * @access protected - * @param array $where 关联预查询条件 - * @param array $subRelation 子关联 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return array - */ - protected function eagerlyMorphToOne(array $where, array $subRelation = [], $closure = null, array $cache = []): array - { - // 预载入关联查询 支持嵌套预载入 - if ($closure) { - $this->baseQuery = true; - $closure($this->getClosureType($closure)); - } - - $list = $this->query - ->where($where) - ->with($subRelation) - ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) - ->select(); - $morphKey = $this->morphKey; - - // 组装模型数据 - $data = []; - - foreach ($list as $set) { - $data[$set->$morphKey] = $set; - } - - return $data; - } - - /** - * 保存(新增)当前关联数据对象 - * @access public - * @param mixed $data 数据 可以使用数组 关联模型对象 - * @param boolean $replace 是否自动识别更新和写入 - * @return Model|false - */ - public function save($data, bool $replace = true) - { - $model = $this->make(); - return $model->replace($replace)->save($data) ? $model : false; - } - - /** - * 创建关联对象实例 - * @param array|Model $data - * @return Model - */ - public function make($data = []): Model - { - if ($data instanceof Model) { - $data = $data->getData(); - } - - // 保存关联表数据 - $pk = $this->parent->getPk(); - - $data[$this->morphKey] = $this->parent->$pk; - $data[$this->morphType] = $this->type; - - return new $this->model($data); - } - - /** - * 执行基础查询(进执行一次) - * @access protected - * @return void - */ - protected function baseQuery(): void - { - if (empty($this->baseQuery) && $this->parent->getData()) { - $pk = $this->parent->getPk(); - - $this->query->where([ - [$this->morphKey, '=', $this->parent->$pk], - [$this->morphType, '=', $this->type], - ]); - $this->baseQuery = true; - } - } - -} diff --git a/vendor/topthink/think-orm/src/model/relation/MorphTo.php b/vendor/topthink/think-orm/src/model/relation/MorphTo.php deleted file mode 100644 index c939c1d95..000000000 --- a/vendor/topthink/think-orm/src/model/relation/MorphTo.php +++ /dev/null @@ -1,333 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\model\relation; - -use Closure; -use think\db\exception\DbException as Exception; -use think\helper\Str; -use think\Model; -use think\model\Relation; - -/** - * 多态关联类 - */ -class MorphTo extends Relation -{ - /** - * 多态关联外键 - * @var string - */ - protected $morphKey; - - /** - * 多态字段 - * @var string - */ - protected $morphType; - - /** - * 多态别名 - * @var array - */ - protected $alias = []; - - /** - * 关联名 - * @var string - */ - protected $relation; - - /** - * 架构函数 - * @access public - * @param Model $parent 上级模型对象 - * @param string $morphType 多态字段名 - * @param string $morphKey 外键名 - * @param array $alias 多态别名定义 - * @param string $relation 关联名 - */ - public function __construct(Model $parent, string $morphType, string $morphKey, array $alias = [], string $relation = null) - { - $this->parent = $parent; - $this->morphType = $morphType; - $this->morphKey = $morphKey; - $this->alias = $alias; - $this->relation = $relation; - } - - /** - * 获取当前的关联模型类的实例 - * @access public - * @return Model - */ - public function getModel(): Model - { - $morphType = $this->morphType; - $model = $this->parseModel($this->parent->$morphType); - - return (new $model); - } - - /** - * 延迟获取关联数据 - * @access public - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包查询条件 - * @return Model - */ - public function getRelation(array $subRelation = [], Closure $closure = null) - { - $morphKey = $this->morphKey; - $morphType = $this->morphType; - - // 多态模型 - $model = $this->parseModel($this->parent->$morphType); - - // 主键数据 - $pk = $this->parent->$morphKey; - - $relationModel = (new $model)->relation($subRelation)->find($pk); - - if ($relationModel) { - $relationModel->setParent(clone $this->parent); - } - - return $relationModel; - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param string $operator 比较操作符 - * @param integer $count 个数 - * @param string $id 关联表的统计字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function has(string $operator = '>=', int $count = 1, string $id = '*', string $joinType = '', Query $query = null) - { - return $this->parent; - } - - /** - * 根据关联条件查询当前模型 - * @access public - * @param mixed $where 查询条件(数组或者闭包) - * @param mixed $fields 字段 - * @param string $joinType JOIN类型 - * @param Query $query Query对象 - * @return Query - */ - public function hasWhere($where = [], $fields = null, string $joinType = '', Query $query = null) - { - throw new Exception('relation not support: hasWhere'); - } - - /** - * 解析模型的完整命名空间 - * @access protected - * @param string $model 模型名(或者完整类名) - * @return string - */ - protected function parseModel(string $model): string - { - if (isset($this->alias[$model])) { - $model = $this->alias[$model]; - } - - if (false === strpos($model, '\\')) { - $path = explode('\\', get_class($this->parent)); - array_pop($path); - array_push($path, Str::studly($model)); - $model = implode('\\', $path); - } - - return $model; - } - - /** - * 设置多态别名 - * @access public - * @param array $alias 别名定义 - * @return $this - */ - public function setAlias(array $alias) - { - $this->alias = $alias; - - return $this; - } - - /** - * 移除关联查询参数 - * @access public - * @return $this - */ - public function removeOption() - { - return $this; - } - - /** - * 预载入关联查询 - * @access public - * @param array $resultSet 数据集 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - * @throws Exception - */ - public function eagerlyResultSet(array &$resultSet, string $relation, array $subRelation, Closure $closure = null, array $cache = []): void - { - $morphKey = $this->morphKey; - $morphType = $this->morphType; - $range = []; - - foreach ($resultSet as $result) { - // 获取关联外键列表 - if (!empty($result->$morphKey)) { - $range[$result->$morphType][] = $result->$morphKey; - } - } - - if (!empty($range)) { - - foreach ($range as $key => $val) { - // 多态类型映射 - $model = $this->parseModel($key); - $obj = new $model; - $pk = $obj->getPk(); - $list = $obj->with($subRelation) - ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) - ->select($val); - $data = []; - - foreach ($list as $k => $vo) { - $data[$vo->$pk] = $vo; - } - - foreach ($resultSet as $result) { - if ($key == $result->$morphType) { - // 关联模型 - if (!isset($data[$result->$morphKey])) { - $relationModel = null; - throw new Exception('relation data not exists :' . $this->model); - } else { - $relationModel = $data[$result->$morphKey]; - $relationModel->setParent(clone $result); - $relationModel->exists(true); - } - - $result->setRelation($relation, $relationModel); - } - } - } - } - } - - /** - * 预载入关联查询 - * @access public - * @param Model $result 数据对象 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @return void - */ - public function eagerlyResult(Model $result, string $relation, array $subRelation = [], Closure $closure = null, array $cache = []): void - { - // 多态类型映射 - $model = $this->parseModel($result->{$this->morphType}); - - $this->eagerlyMorphToOne($model, $relation, $result, $subRelation, $cache); - } - - /** - * 关联统计 - * @access public - * @param Model $result 数据对象 - * @param Closure $closure 闭包 - * @param string $aggregate 聚合查询方法 - * @param string $field 字段 - * @return integer - */ - public function relationCount(Model $result, Closure $closure = null, string $aggregate = 'count', string $field = '*') - {} - - /** - * 多态MorphTo 关联模型预查询 - * @access protected - * @param string $model 关联模型对象 - * @param string $relation 关联名 - * @param Model $result - * @param array $subRelation 子关联 - * @param array $cache 关联缓存 - * @return void - */ - protected function eagerlyMorphToOne(string $model, string $relation, Model $result, array $subRelation = [], array $cache = []): void - { - // 预载入关联查询 支持嵌套预载入 - $pk = $this->parent->{$this->morphKey}; - $data = (new $model)->with($subRelation) - ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) - ->find($pk); - - if ($data) { - $data->setParent(clone $result); - $data->exists(true); - } - - $result->setRelation($relation, $data ?: null); - } - - /** - * 添加关联数据 - * @access public - * @param Model $model 关联模型对象 - * @param string $type 多态类型 - * @return Model - */ - public function associate(Model $model, string $type = ''): Model - { - $morphKey = $this->morphKey; - $morphType = $this->morphType; - $pk = $model->getPk(); - - $this->parent->setAttr($morphKey, $model->$pk); - $this->parent->setAttr($morphType, $type ?: get_class($model)); - $this->parent->save(); - - return $this->parent->setRelation($this->relation, $model); - } - - /** - * 注销关联数据 - * @access public - * @return Model - */ - public function dissociate(): Model - { - $morphKey = $this->morphKey; - $morphType = $this->morphType; - - $this->parent->setAttr($morphKey, null); - $this->parent->setAttr($morphType, null); - $this->parent->save(); - - return $this->parent->setRelation($this->relation, null); - } - -} diff --git a/vendor/topthink/think-orm/src/model/relation/OneToOne.php b/vendor/topthink/think-orm/src/model/relation/OneToOne.php deleted file mode 100644 index e3eb48a4a..000000000 --- a/vendor/topthink/think-orm/src/model/relation/OneToOne.php +++ /dev/null @@ -1,332 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\model\relation; - -use Closure; -use think\db\BaseQuery as Query; -use think\db\exception\DbException as Exception; -use think\helper\Str; -use think\Model; -use think\model\Relation; - -/** - * 一对一关联基础类 - * @package think\model\relation - */ -abstract class OneToOne extends Relation -{ - /** - * JOIN类型 - * @var string - */ - protected $joinType = 'INNER'; - - /** - * 绑定的关联属性 - * @var array - */ - protected $bindAttr = []; - - /** - * 关联名 - * @var string - */ - protected $relation; - - /** - * 设置join类型 - * @access public - * @param string $type JOIN类型 - * @return $this - */ - public function joinType(string $type) - { - $this->joinType = $type; - return $this; - } - - /** - * 预载入关联查询(JOIN方式) - * @access public - * @param Query $query 查询对象 - * @param string $relation 关联名 - * @param mixed $field 关联字段 - * @param string $joinType JOIN方式 - * @param Closure $closure 闭包条件 - * @param bool $first - * @return void - */ - public function eagerly(Query $query, string $relation, $field = true, string $joinType = '', Closure $closure = null, bool $first = false): void - { - $name = Str::snake(class_basename($this->parent)); - - if ($first) { - $table = $query->getTable(); - $query->table([$table => $name]); - - if ($query->getOptions('field')) { - $masterField = $query->getOptions('field'); - $query->removeOption('field'); - } else { - $masterField = true; - } - - $query->tableField($masterField, $table, $name); - } - - // 预载入封装 - $joinTable = $this->query->getTable(); - $joinAlias = $relation; - $joinType = $joinType ?: $this->joinType; - - $query->via($joinAlias); - - if ($this instanceof BelongsTo) { - $joinOn = $name . '.' . $this->foreignKey . '=' . $joinAlias . '.' . $this->localKey; - } else { - $joinOn = $name . '.' . $this->localKey . '=' . $joinAlias . '.' . $this->foreignKey; - } - - if ($closure) { - // 执行闭包查询 - $closure($this->getClosureType($closure)); - - // 使用withField指定获取关联的字段 - if ($this->withField) { - $field = $this->withField; - } - } - - $query->join([$joinTable => $joinAlias], $joinOn, $joinType) - ->tableField($field, $joinTable, $joinAlias, $relation . '__'); - } - - /** - * 预载入关联查询(数据集) - * @access protected - * @param array $resultSet - * @param string $relation - * @param array $subRelation - * @param Closure $closure - * @return mixed - */ - abstract protected function eagerlySet(array &$resultSet, string $relation, array $subRelation = [], Closure $closure = null); - - /** - * 预载入关联查询(数据) - * @access protected - * @param Model $result - * @param string $relation - * @param array $subRelation - * @param Closure $closure - * @return mixed - */ - abstract protected function eagerlyOne(Model $result, string $relation, array $subRelation = [], Closure $closure = null); - - /** - * 预载入关联查询(数据集) - * @access public - * @param array $resultSet 数据集 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @param bool $join 是否为JOIN方式 - * @return void - */ - public function eagerlyResultSet(array &$resultSet, string $relation, array $subRelation = [], Closure $closure = null, array $cache = [], bool $join = false): void - { - if ($join) { - // 模型JOIN关联组装 - foreach ($resultSet as $result) { - $this->match($this->model, $relation, $result); - } - } else { - // IN查询 - $this->eagerlySet($resultSet, $relation, $subRelation, $closure, $cache); - } - } - - /** - * 预载入关联查询(数据) - * @access public - * @param Model $result 数据对象 - * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 - * @param Closure $closure 闭包 - * @param array $cache 关联缓存 - * @param bool $join 是否为JOIN方式 - * @return void - */ - public function eagerlyResult(Model $result, string $relation, array $subRelation = [], Closure $closure = null, array $cache = [], bool $join = false): void - { - if ($join) { - // 模型JOIN关联组装 - $this->match($this->model, $relation, $result); - } else { - // IN查询 - $this->eagerlyOne($result, $relation, $subRelation, $closure, $cache); - } - } - - /** - * 保存(新增)当前关联数据对象 - * @access public - * @param mixed $data 数据 可以使用数组 关联模型对象 - * @param boolean $replace 是否自动识别更新和写入 - * @return Model|false - */ - public function save($data, bool $replace = true) - { - if ($data instanceof Model) { - $data = $data->getData(); - } - - $model = new $this->model; - // 保存关联表数据 - $data[$this->foreignKey] = $this->parent->{$this->localKey}; - - return $model->replace($replace)->save($data) ? $model : false; - } - - /** - * 绑定关联表的属性到父模型属性 - * @access public - * @param array $attr 要绑定的属性列表 - * @return $this - */ - public function bind(array $attr) - { - $this->bindAttr = $attr; - - return $this; - } - - /** - * 获取绑定属性 - * @access public - * @return array - */ - public function getBindAttr(): array - { - return $this->bindAttr; - } - - /** - * 一对一 关联模型预查询拼装 - * @access public - * @param string $model 模型名称 - * @param string $relation 关联名 - * @param Model $result 模型对象实例 - * @return void - */ - protected function match(string $model, string $relation, Model $result): void - { - // 重新组装模型数据 - foreach ($result->getData() as $key => $val) { - if (strpos($key, '__')) { - list($name, $attr) = explode('__', $key, 2); - if ($name == $relation) { - $list[$name][$attr] = $val; - unset($result->$key); - } - } - } - - if (isset($list[$relation])) { - $array = array_unique($list[$relation]); - - if (count($array) == 1 && null === current($array)) { - $relationModel = null; - } else { - $relationModel = new $model($list[$relation]); - $relationModel->setParent(clone $result); - $relationModel->exists(true); - } - - if ($relationModel && !empty($this->bindAttr)) { - $this->bindAttr($relationModel, $result); - } - } else { - $relationModel = null; - } - - $result->setRelation($relation, $relationModel); - } - - /** - * 绑定关联属性到父模型 - * @access protected - * @param Model $model 关联模型对象 - * @param Model $result 父模型对象 - * @return void - * @throws Exception - */ - protected function bindAttr(Model $model, Model $result): void - { - foreach ($this->bindAttr as $key => $attr) { - $key = is_numeric($key) ? $attr : $key; - $value = $result->getOrigin($key); - - if (!is_null($value)) { - throw new Exception('bind attr has exists:' . $key); - } - - $result->setAttr($key, $model ? $model->$attr : null); - } - } - - /** - * 一对一 关联模型预查询(IN方式) - * @access public - * @param array $where 关联预查询条件 - * @param string $key 关联键名 - * @param array $subRelation 子关联 - * @param Closure $closure - * @param array $cache 关联缓存 - * @return array - */ - protected function eagerlyWhere(array $where, string $key, array $subRelation = [], Closure $closure = null, array $cache = []) - { - // 预载入关联查询 支持嵌套预载入 - if ($closure) { - $this->baseQuery = true; - $closure($this->getClosureType($closure)); - } - - if ($this->withField) { - $this->query->field($this->withField); - } - - if ($this->query->getOptions('order')) { - $this->query->group($key); - } - - $list = $this->query - ->where($where) - ->with($subRelation) - ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) - ->select(); - - // 组装模型数据 - $data = []; - - foreach ($list as $set) { - if (!isset($data[$set->$key])) { - $data[$set->$key] = $set; - } - } - - return $data; - } - -} diff --git a/vendor/topthink/think-orm/src/paginator/driver/Bootstrap.php b/vendor/topthink/think-orm/src/paginator/driver/Bootstrap.php deleted file mode 100644 index 6d55c3944..000000000 --- a/vendor/topthink/think-orm/src/paginator/driver/Bootstrap.php +++ /dev/null @@ -1,209 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\paginator\driver; - -use think\Paginator; - -/** - * Bootstrap 分页驱动 - */ -class Bootstrap extends Paginator -{ - - /** - * 上一页按钮 - * @param string $text - * @return string - */ - protected function getPreviousButton(string $text = "«"): string - { - - if ($this->currentPage() <= 1) { - return $this->getDisabledTextWrapper($text); - } - - $url = $this->url( - $this->currentPage() - 1 - ); - - return $this->getPageLinkWrapper($url, $text); - } - - /** - * 下一页按钮 - * @param string $text - * @return string - */ - protected function getNextButton(string $text = '»'): string - { - if (!$this->hasMore) { - return $this->getDisabledTextWrapper($text); - } - - $url = $this->url($this->currentPage() + 1); - - return $this->getPageLinkWrapper($url, $text); - } - - /** - * 页码按钮 - * @return string - */ - protected function getLinks(): string - { - if ($this->simple) { - return ''; - } - - $block = [ - 'first' => null, - 'slider' => null, - 'last' => null, - ]; - - $side = 3; - $window = $side * 2; - - if ($this->lastPage < $window + 6) { - $block['first'] = $this->getUrlRange(1, $this->lastPage); - } elseif ($this->currentPage <= $window) { - $block['first'] = $this->getUrlRange(1, $window + 2); - $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage); - } elseif ($this->currentPage > ($this->lastPage - $window)) { - $block['first'] = $this->getUrlRange(1, 2); - $block['last'] = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage); - } else { - $block['first'] = $this->getUrlRange(1, 2); - $block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side); - $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage); - } - - $html = ''; - - if (is_array($block['first'])) { - $html .= $this->getUrlLinks($block['first']); - } - - if (is_array($block['slider'])) { - $html .= $this->getDots(); - $html .= $this->getUrlLinks($block['slider']); - } - - if (is_array($block['last'])) { - $html .= $this->getDots(); - $html .= $this->getUrlLinks($block['last']); - } - - return $html; - } - - /** - * 渲染分页html - * @return mixed - */ - public function render() - { - if ($this->hasPages()) { - if ($this->simple) { - return sprintf( - '
    %s %s
', - $this->getPreviousButton(), - $this->getNextButton() - ); - } else { - return sprintf( - '
    %s %s %s
', - $this->getPreviousButton(), - $this->getLinks(), - $this->getNextButton() - ); - } - } - } - - /** - * 生成一个可点击的按钮 - * - * @param string $url - * @param string $page - * @return string - */ - protected function getAvailablePageWrapper(string $url, string $page): string - { - return '
  • ' . $page . '
  • '; - } - - /** - * 生成一个禁用的按钮 - * - * @param string $text - * @return string - */ - protected function getDisabledTextWrapper(string $text): string - { - return '
  • ' . $text . '
  • '; - } - - /** - * 生成一个激活的按钮 - * - * @param string $text - * @return string - */ - protected function getActivePageWrapper(string $text): string - { - return '
  • ' . $text . '
  • '; - } - - /** - * 生成省略号按钮 - * - * @return string - */ - protected function getDots(): string - { - return $this->getDisabledTextWrapper('...'); - } - - /** - * 批量生成页码按钮. - * - * @param array $urls - * @return string - */ - protected function getUrlLinks(array $urls): string - { - $html = ''; - - foreach ($urls as $page => $url) { - $html .= $this->getPageLinkWrapper($url, $page); - } - - return $html; - } - - /** - * 生成普通页码按钮 - * - * @param string $url - * @param string $page - * @return string - */ - protected function getPageLinkWrapper(string $url, string $page): string - { - if ($this->currentPage() == $page) { - return $this->getActivePageWrapper($page); - } - - return $this->getAvailablePageWrapper($url, $page); - } -} diff --git a/vendor/topthink/think-template/.gitignore b/vendor/topthink/think-template/.gitignore deleted file mode 100644 index 485dee64b..000000000 --- a/vendor/topthink/think-template/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.idea diff --git a/vendor/topthink/think-template/LICENSE b/vendor/topthink/think-template/LICENSE deleted file mode 100644 index 8dada3eda..000000000 --- a/vendor/topthink/think-template/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/topthink/think-template/README.md b/vendor/topthink/think-template/README.md deleted file mode 100644 index 1d190646a..000000000 --- a/vendor/topthink/think-template/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# ThinkTemplate - -基于XML和标签库的编译型模板引擎 - -## 主要特性 - -- 支持XML标签库和普通标签的混合定义; -- 支持直接使用PHP代码书写; -- 支持文件包含; -- 支持多级标签嵌套; -- 支持布局模板功能; -- 一次编译多次运行,编译和运行效率非常高; -- 模板文件和布局模板更新,自动更新模板缓存; -- 系统变量无需赋值直接输出; -- 支持多维数组的快速输出; -- 支持模板变量的默认值; -- 支持页面代码去除Html空白; -- 支持变量组合调节器和格式化功能; -- 允许定义模板禁用函数和禁用PHP语法; -- 通过标签库方式扩展; - -## 安装 - -~~~php -composer require topthink/think-template -~~~ - -## 用法示例 - - -~~~php - './template/', - 'cache_path' => './runtime/', - 'view_suffix' => 'html', -]; - -$template = new Template($config); -// 模板变量赋值 -$template->assign(['name' => 'think']); -// 读取模板文件渲染输出 -$template->fetch('index'); -// 完整模板文件渲染 -$template->fetch('./template/test.php'); -// 渲染内容输出 -$template->display($content); -~~~ - -支持静态调用 - -~~~ -use think\facade\Template; - -Template::config([ - 'view_path' => './template/', - 'cache_path' => './runtime/', - 'view_suffix' => 'html', -]); -Template::assign(['name' => 'think']); -Template::fetch('index',['name' => 'think']); -Template::display($content,['name' => 'think']); -~~~ - -详细用法参考[开发手册](https://www.kancloud.cn/manual/think-template/content) \ No newline at end of file diff --git a/vendor/topthink/think-template/composer.json b/vendor/topthink/think-template/composer.json deleted file mode 100644 index f4e1205c0..000000000 --- a/vendor/topthink/think-template/composer.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "topthink/think-template", - "description": "the php template engine", - "license": "Apache-2.0", - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "require": { - "php": ">=7.1.0", - "psr/simple-cache": "^1.0" - }, - "autoload": { - "psr-4": { - "think\\": "src" - } - } -} \ No newline at end of file diff --git a/vendor/topthink/think-template/src/Template.php b/vendor/topthink/think-template/src/Template.php deleted file mode 100644 index 84d35a528..000000000 --- a/vendor/topthink/think-template/src/Template.php +++ /dev/null @@ -1,1320 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think; - -use Exception; -use Psr\SimpleCache\CacheInterface; - -/** - * ThinkPHP分离出来的模板引擎 - * 支持XML标签和普通标签的模板解析 - * 编译型模板引擎 支持动态缓存 - */ -class Template -{ - /** - * 模板变量 - * @var array - */ - protected $data = []; - - /** - * 模板配置参数 - * @var array - */ - protected $config = [ - 'view_path' => '', // 模板路径 - 'view_suffix' => 'html', // 默认模板文件后缀 - 'view_depr' => DIRECTORY_SEPARATOR, - 'cache_path' => '', - 'cache_suffix' => 'php', // 默认模板缓存后缀 - 'tpl_deny_func_list' => 'echo,exit', // 模板引擎禁用函数 - 'tpl_deny_php' => false, // 默认模板引擎是否禁用PHP原生代码 - 'tpl_begin' => '{', // 模板引擎普通标签开始标记 - 'tpl_end' => '}', // 模板引擎普通标签结束标记 - 'strip_space' => false, // 是否去除模板文件里面的html空格与换行 - 'tpl_cache' => true, // 是否开启模板编译缓存,设为false则每次都会重新编译 - 'compile_type' => 'file', // 模板编译类型 - 'cache_prefix' => '', // 模板缓存前缀标识,可以动态改变 - 'cache_time' => 0, // 模板缓存有效期 0 为永久,(以数字为值,单位:秒) - 'layout_on' => false, // 布局模板开关 - 'layout_name' => 'layout', // 布局模板入口文件 - 'layout_item' => '{__CONTENT__}', // 布局模板的内容替换标识 - 'taglib_begin' => '{', // 标签库标签开始标记 - 'taglib_end' => '}', // 标签库标签结束标记 - 'taglib_load' => true, // 是否使用内置标签库之外的其它标签库,默认自动检测 - 'taglib_build_in' => 'cx', // 内置标签库名称(标签使用不必指定标签库名称),以逗号分隔 注意解析顺序 - 'taglib_pre_load' => '', // 需要额外加载的标签库(须指定标签库名称),多个以逗号分隔 - 'display_cache' => false, // 模板渲染缓存 - 'cache_id' => '', // 模板缓存ID - 'tpl_replace_string' => [], - 'tpl_var_identify' => 'array', // .语法变量识别,array|object|'', 为空时自动识别 - 'default_filter' => 'htmlentities', // 默认过滤方法 用于普通标签输出 - ]; - - /** - * 保留内容信息 - * @var array - */ - private $literal = []; - - /** - * 扩展解析规则 - * @var array - */ - private $extend = []; - - /** - * 模板包含信息 - * @var array - */ - private $includeFile = []; - - /** - * 模板存储对象 - * @var object - */ - protected $storage; - - /** - * 查询缓存对象 - * @var CacheInterface - */ - protected $cache; - - /** - * 架构函数 - * @access public - * @param array $config - */ - public function __construct(array $config = []) - { - $this->config = array_merge($this->config, $config); - - $this->config['taglib_begin_origin'] = $this->config['taglib_begin']; - $this->config['taglib_end_origin'] = $this->config['taglib_end']; - - $this->config['taglib_begin'] = preg_quote($this->config['taglib_begin'], '/'); - $this->config['taglib_end'] = preg_quote($this->config['taglib_end'], '/'); - $this->config['tpl_begin'] = preg_quote($this->config['tpl_begin'], '/'); - $this->config['tpl_end'] = preg_quote($this->config['tpl_end'], '/'); - - // 初始化模板编译存储器 - $type = $this->config['compile_type'] ? $this->config['compile_type'] : 'File'; - $class = false !== strpos($type, '\\') ? $type : '\\think\\template\\driver\\' . ucwords($type); - - $this->storage = new $class(); - } - - /** - * 模板变量赋值 - * @access public - * @param array $vars 模板变量 - * @return $this - */ - public function assign(array $vars = []) - { - $this->data = array_merge($this->data, $vars); - return $this; - } - - /** - * 模板引擎参数赋值 - * @access public - * @param string $name - * @param mixed $value - */ - public function __set($name, $value) - { - $this->config[$name] = $value; - } - - /** - * 设置缓存对象 - * @access public - * @param CacheInterface $cache 缓存对象 - * @return void - */ - public function setCache(CacheInterface $cache): void - { - $this->cache = $cache; - } - - /** - * 模板引擎配置 - * @access public - * @param array $config - * @return $this - */ - public function config(array $config) - { - $this->config = array_merge($this->config, $config); - return $this; - } - - /** - * 获取模板引擎配置项 - * @access public - * @param string $name - * @return mixed - */ - public function getConfig(string $name) - { - return $this->config[$name] ?? null; - } - - /** - * 模板变量获取 - * @access public - * @param string $name 变量名 - * @return mixed - */ - public function get(string $name = '') - { - if ('' == $name) { - return $this->data; - } - - $data = $this->data; - - foreach (explode('.', $name) as $key => $val) { - if (isset($data[$val])) { - $data = $data[$val]; - } else { - $data = null; - break; - } - } - - return $data; - } - - /** - * 扩展模板解析规则 - * @access public - * @param string $rule 解析规则 - * @param callable $callback 解析规则 - * @return void - */ - public function extend(string $rule, callable $callback = null): void - { - $this->extend[$rule] = $callback; - } - - /** - * 渲染模板文件 - * @access public - * @param string $template 模板文件 - * @param array $vars 模板变量 - * @return void - */ - public function fetch(string $template, array $vars = []): void - { - if ($vars) { - $this->data = array_merge($this->data, $vars); - } - - if (!empty($this->config['cache_id']) && $this->config['display_cache'] && $this->cache) { - // 读取渲染缓存 - if ($this->cache->has($this->config['cache_id'])) { - echo $this->cache->get($this->config['cache_id']); - return; - } - } - - $template = $this->parseTemplateFile($template); - - if ($template) { - $cacheFile = $this->config['cache_path'] . $this->config['cache_prefix'] . md5($this->config['layout_on'] . $this->config['layout_name'] . $template) . '.' . ltrim($this->config['cache_suffix'], '.'); - - if (!$this->checkCache($cacheFile)) { - // 缓存无效 重新模板编译 - $content = file_get_contents($template); - $this->compiler($content, $cacheFile); - } - - // 页面缓存 - ob_start(); - ob_implicit_flush(0); - - // 读取编译存储 - $this->storage->read($cacheFile, $this->data); - - // 获取并清空缓存 - $content = ob_get_clean(); - - if (!empty($this->config['cache_id']) && $this->config['display_cache'] && $this->cache) { - // 缓存页面输出 - $this->cache->set($this->config['cache_id'], $content, $this->config['cache_time']); - } - - echo $content; - } - } - - /** - * 检查编译缓存是否存在 - * @access public - * @param string $cacheId 缓存的id - * @return boolean - */ - public function isCache(string $cacheId): bool - { - if ($cacheId && $this->cache && $this->config['display_cache']) { - // 缓存页面输出 - return $this->cache->has($cacheId); - } - - return false; - } - - /** - * 渲染模板内容 - * @access public - * @param string $content 模板内容 - * @param array $vars 模板变量 - * @return void - */ - public function display(string $content, array $vars = []): void - { - if ($vars) { - $this->data = array_merge($this->data, $vars); - } - - $cacheFile = $this->config['cache_path'] . $this->config['cache_prefix'] . md5($content) . '.' . ltrim($this->config['cache_suffix'], '.'); - - if (!$this->checkCache($cacheFile)) { - // 缓存无效 模板编译 - $this->compiler($content, $cacheFile); - } - - // 读取编译存储 - $this->storage->read($cacheFile, $this->data); - } - - /** - * 设置布局 - * @access public - * @param mixed $name 布局模板名称 false 则关闭布局 - * @param string $replace 布局模板内容替换标识 - * @return $this - */ - public function layout($name, string $replace = '') - { - if (false === $name) { - // 关闭布局 - $this->config['layout_on'] = false; - } else { - // 开启布局 - $this->config['layout_on'] = true; - - // 名称必须为字符串 - if (is_string($name)) { - $this->config['layout_name'] = $name; - } - - if (!empty($replace)) { - $this->config['layout_item'] = $replace; - } - } - - return $this; - } - - /** - * 检查编译缓存是否有效 - * 如果无效则需要重新编译 - * @access private - * @param string $cacheFile 缓存文件名 - * @return bool - */ - private function checkCache(string $cacheFile): bool - { - if (!$this->config['tpl_cache'] || !is_file($cacheFile) || !$handle = @fopen($cacheFile, "r")) { - return false; - } - - // 读取第一行 - preg_match('/\/\*(.+?)\*\//', fgets($handle), $matches); - - if (!isset($matches[1])) { - return false; - } - - $includeFile = unserialize($matches[1]); - - if (!is_array($includeFile)) { - return false; - } - - // 检查模板文件是否有更新 - foreach ($includeFile as $path => $time) { - if (is_file($path) && filemtime($path) > $time) { - // 模板文件如果有更新则缓存需要更新 - return false; - } - } - - // 检查编译存储是否有效 - return $this->storage->check($cacheFile, $this->config['cache_time']); - } - - /** - * 编译模板文件内容 - * @access private - * @param string $content 模板内容 - * @param string $cacheFile 缓存文件名 - * @return void - */ - private function compiler(string &$content, string $cacheFile): void - { - // 判断是否启用布局 - if ($this->config['layout_on']) { - if (false !== strpos($content, '{__NOLAYOUT__}')) { - // 可以单独定义不使用布局 - $content = str_replace('{__NOLAYOUT__}', '', $content); - } else { - // 读取布局模板 - $layoutFile = $this->parseTemplateFile($this->config['layout_name']); - - if ($layoutFile) { - // 替换布局的主体内容 - $content = str_replace($this->config['layout_item'], $content, file_get_contents($layoutFile)); - } - } - } else { - $content = str_replace('{__NOLAYOUT__}', '', $content); - } - - // 模板解析 - $this->parse($content); - - if ($this->config['strip_space']) { - /* 去除html空格与换行 */ - $find = ['~>\s+<~', '~>(\s+\n|\r)~']; - $replace = ['><', '>']; - $content = preg_replace($find, $replace, $content); - } - - // 优化生成的php代码 - $content = preg_replace('/\?>\s*<\?php\s(?!echo\b|\bend)/s', '', $content); - - // 模板过滤输出 - $replace = $this->config['tpl_replace_string']; - $content = str_replace(array_keys($replace), array_values($replace), $content); - - // 添加安全代码及模板引用记录 - $content = 'includeFile) . '*/ ?>' . "\n" . $content; - // 编译存储 - $this->storage->write($cacheFile, $content); - - $this->includeFile = []; - } - - /** - * 模板解析入口 - * 支持普通标签和TagLib解析 支持自定义标签库 - * @access public - * @param string $content 要解析的模板内容 - * @return void - */ - public function parse(string &$content): void - { - // 内容为空不解析 - if (empty($content)) { - return; - } - - // 替换literal标签内容 - $this->parseLiteral($content); - - // 解析继承 - $this->parseExtend($content); - - // 解析布局 - $this->parseLayout($content); - - // 检查include语法 - $this->parseInclude($content); - - // 替换包含文件中literal标签内容 - $this->parseLiteral($content); - - // 检查PHP语法 - $this->parsePhp($content); - - // 获取需要引入的标签库列表 - // 标签库只需要定义一次,允许引入多个一次 - // 一般放在文件的最前面 - // 格式: - // 当TAGLIB_LOAD配置为true时才会进行检测 - if ($this->config['taglib_load']) { - $tagLibs = $this->getIncludeTagLib($content); - - if (!empty($tagLibs)) { - // 对导入的TagLib进行解析 - foreach ($tagLibs as $tagLibName) { - $this->parseTagLib($tagLibName, $content); - } - } - } - - // 预先加载的标签库 无需在每个模板中使用taglib标签加载 但必须使用标签库XML前缀 - if ($this->config['taglib_pre_load']) { - $tagLibs = explode(',', $this->config['taglib_pre_load']); - - foreach ($tagLibs as $tag) { - $this->parseTagLib($tag, $content); - } - } - - // 内置标签库 无需使用taglib标签导入就可以使用 并且不需使用标签库XML前缀 - $tagLibs = explode(',', $this->config['taglib_build_in']); - - foreach ($tagLibs as $tag) { - $this->parseTagLib($tag, $content, true); - } - - // 解析普通模板标签 {$tagName} - $this->parseTag($content); - - // 还原被替换的Literal标签 - $this->parseLiteral($content, true); - } - - /** - * 检查PHP语法 - * @access private - * @param string $content 要解析的模板内容 - * @return void - * @throws Exception - */ - private function parsePhp(string &$content): void - { - // 短标签的情况要将' . "\n", $content); - - // PHP语法检查 - if ($this->config['tpl_deny_php'] && false !== strpos($content, 'getRegex('layout'), $content, $matches)) { - // 替换Layout标签 - $content = str_replace($matches[0], '', $content); - // 解析Layout标签 - $array = $this->parseAttr($matches[0]); - - if (!$this->config['layout_on'] || $this->config['layout_name'] != $array['name']) { - // 读取布局模板 - $layoutFile = $this->parseTemplateFile($array['name']); - - if ($layoutFile) { - $replace = isset($array['replace']) ? $array['replace'] : $this->config['layout_item']; - // 替换布局的主体内容 - $content = str_replace($replace, $content, file_get_contents($layoutFile)); - } - } - } else { - $content = str_replace('{__NOLAYOUT__}', '', $content); - } - } - - /** - * 解析模板中的include标签 - * @access private - * @param string $content 要解析的模板内容 - * @return void - */ - private function parseInclude(string &$content): void - { - $regex = $this->getRegex('include'); - $func = function ($template) use (&$func, &$regex, &$content) { - if (preg_match_all($regex, $template, $matches, PREG_SET_ORDER)) { - foreach ($matches as $match) { - $array = $this->parseAttr($match[0]); - $file = $array['file']; - unset($array['file']); - - // 分析模板文件名并读取内容 - $parseStr = $this->parseTemplateName($file); - - foreach ($array as $k => $v) { - // 以$开头字符串转换成模板变量 - if (0 === strpos($v, '$')) { - $v = $this->get(substr($v, 1)); - } - - $parseStr = str_replace('[' . $k . ']', $v, $parseStr); - } - - $content = str_replace($match[0], $parseStr, $content); - // 再次对包含文件进行模板分析 - $func($parseStr); - } - unset($matches); - } - }; - - // 替换模板中的include标签 - $func($content); - } - - /** - * 解析模板中的extend标签 - * @access private - * @param string $content 要解析的模板内容 - * @return void - */ - private function parseExtend(string &$content): void - { - $regex = $this->getRegex('extend'); - $array = $blocks = $baseBlocks = []; - $extend = ''; - - $func = function ($template) use (&$func, &$regex, &$array, &$extend, &$blocks, &$baseBlocks) { - if (preg_match($regex, $template, $matches)) { - if (!isset($array[$matches['name']])) { - $array[$matches['name']] = 1; - // 读取继承模板 - $extend = $this->parseTemplateName($matches['name']); - - // 递归检查继承 - $func($extend); - - // 取得block标签内容 - $blocks = array_merge($blocks, $this->parseBlock($template)); - - return; - } - } else { - // 取得顶层模板block标签内容 - $baseBlocks = $this->parseBlock($template, true); - - if (empty($extend)) { - // 无extend标签但有block标签的情况 - $extend = $template; - } - } - }; - - $func($content); - - if (!empty($extend)) { - if ($baseBlocks) { - $children = []; - foreach ($baseBlocks as $name => $val) { - $replace = $val['content']; - - if (!empty($children[$name])) { - // 如果包含有子block标签 - foreach ($children[$name] as $key) { - $replace = str_replace($baseBlocks[$key]['begin'] . $baseBlocks[$key]['content'] . $baseBlocks[$key]['end'], $blocks[$key]['content'], $replace); - } - } - - if (isset($blocks[$name])) { - // 带有{__block__}表示与所继承模板的相应标签合并,而不是覆盖 - $replace = str_replace(['{__BLOCK__}', '{__block__}'], $replace, $blocks[$name]['content']); - - if (!empty($val['parent'])) { - // 如果不是最顶层的block标签 - $parent = $val['parent']; - - if (isset($blocks[$parent])) { - $blocks[$parent]['content'] = str_replace($blocks[$name]['begin'] . $blocks[$name]['content'] . $blocks[$name]['end'], $replace, $blocks[$parent]['content']); - } - - $blocks[$name]['content'] = $replace; - $children[$parent][] = $name; - - continue; - } - } elseif (!empty($val['parent'])) { - // 如果子标签没有被继承则用原值 - $children[$val['parent']][] = $name; - $blocks[$name] = $val; - } - - if (!$val['parent']) { - // 替换模板中的顶级block标签 - $extend = str_replace($val['begin'] . $val['content'] . $val['end'], $replace, $extend); - } - } - } - - $content = $extend; - unset($blocks, $baseBlocks); - } - } - - /** - * 替换页面中的literal标签 - * @access private - * @param string $content 模板内容 - * @param boolean $restore 是否为还原 - * @return void - */ - private function parseLiteral(string &$content, bool $restore = false): void - { - $regex = $this->getRegex($restore ? 'restoreliteral' : 'literal'); - - if (preg_match_all($regex, $content, $matches, PREG_SET_ORDER)) { - if (!$restore) { - $count = count($this->literal); - - // 替换literal标签 - foreach ($matches as $match) { - $this->literal[] = substr($match[0], strlen($match[1]), -strlen($match[2])); - $content = str_replace($match[0], "", $content); - $count++; - } - } else { - // 还原literal标签 - foreach ($matches as $match) { - $content = str_replace($match[0], $this->literal[$match[1]], $content); - } - - // 清空literal记录 - $this->literal = []; - } - - unset($matches); - } - } - - /** - * 获取模板中的block标签 - * @access private - * @param string $content 模板内容 - * @param boolean $sort 是否排序 - * @return array - */ - private function parseBlock(string &$content, bool $sort = false): array - { - $regex = $this->getRegex('block'); - $result = []; - - if (preg_match_all($regex, $content, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { - $right = $keys = []; - - foreach ($matches as $match) { - if (empty($match['name'][0])) { - if (count($right) > 0) { - $tag = array_pop($right); - $start = $tag['offset'] + strlen($tag['tag']); - $length = $match[0][1] - $start; - - $result[$tag['name']] = [ - 'begin' => $tag['tag'], - 'content' => substr($content, $start, $length), - 'end' => $match[0][0], - 'parent' => count($right) ? end($right)['name'] : '', - ]; - - $keys[$tag['name']] = $match[0][1]; - } - } else { - // 标签头压入栈 - $right[] = [ - 'name' => $match[2][0], - 'offset' => $match[0][1], - 'tag' => $match[0][0], - ]; - } - } - - unset($right, $matches); - - if ($sort) { - // 按block标签结束符在模板中的位置排序 - array_multisort($keys, $result); - } - } - - return $result; - } - - /** - * 搜索模板页面中包含的TagLib库 - * 并返回列表 - * @access private - * @param string $content 模板内容 - * @return array|null - */ - private function getIncludeTagLib(string &$content) - { - // 搜索是否有TagLib标签 - if (preg_match($this->getRegex('taglib'), $content, $matches)) { - // 替换TagLib标签 - $content = str_replace($matches[0], '', $content); - - return explode(',', $matches['name']); - } - } - - /** - * TagLib库解析 - * @access public - * @param string $tagLib 要解析的标签库 - * @param string $content 要解析的模板内容 - * @param boolean $hide 是否隐藏标签库前缀 - * @return void - */ - public function parseTagLib(string $tagLib, string &$content, bool $hide = false): void - { - if (false !== strpos($tagLib, '\\')) { - // 支持指定标签库的命名空间 - $className = $tagLib; - $tagLib = substr($tagLib, strrpos($tagLib, '\\') + 1); - } else { - $className = '\\think\\template\\taglib\\' . ucwords($tagLib); - } - - $tLib = new $className($this); - - $tLib->parseTag($content, $hide ? '' : $tagLib); - } - - /** - * 分析标签属性 - * @access public - * @param string $str 属性字符串 - * @param string $name 不为空时返回指定的属性名 - * @return array - */ - public function parseAttr(string $str, string $name = null): array - { - $regex = '/\s+(?>(?P[\w-]+)\s*)=(?>\s*)([\"\'])(?P(?:(?!\\2).)*)\\2/is'; - $array = []; - - if (preg_match_all($regex, $str, $matches, PREG_SET_ORDER)) { - foreach ($matches as $match) { - $array[$match['name']] = $match['value']; - } - unset($matches); - } - - if (!empty($name) && isset($array[$name])) { - return $array[$name]; - } - - return $array; - } - - /** - * 模板标签解析 - * 格式: {TagName:args [|content] } - * @access private - * @param string $content 要解析的模板内容 - * @return void - */ - private function parseTag(string &$content): void - { - $regex = $this->getRegex('tag'); - - if (preg_match_all($regex, $content, $matches, PREG_SET_ORDER)) { - foreach ($matches as $match) { - $str = stripslashes($match[1]); - $flag = substr($str, 0, 1); - - switch ($flag) { - case '$': - // 解析模板变量 格式 {$varName} - // 是否带有?号 - if (false !== $pos = strpos($str, '?')) { - $array = preg_split('/([!=]={1,2}|(?<]={0,1})/', substr($str, 0, $pos), 2, PREG_SPLIT_DELIM_CAPTURE); - $name = $array[0]; - - $this->parseVar($name); - //$this->parseVarFunction($name); - - $str = trim(substr($str, $pos + 1)); - $this->parseVar($str); - $first = substr($str, 0, 1); - - if (strpos($name, ')')) { - // $name为对象或是自动识别,或者含有函数 - if (isset($array[1])) { - $this->parseVar($array[2]); - $name .= $array[1] . $array[2]; - } - - switch ($first) { - case '?': - $this->parseVarFunction($name); - $str = ''; - break; - case '=': - $str = ''; - break; - default: - $str = ''; - } - } else { - if (isset($array[1])) { - $express = true; - $this->parseVar($array[2]); - $express = $name . $array[1] . $array[2]; - } else { - $express = false; - } - - if (in_array($first, ['?', '=', ':'])) { - $str = trim(substr($str, 1)); - if ('$' == substr($str, 0, 1)) { - $str = $this->parseVarFunction($str); - } - } - - // $name为数组 - switch ($first) { - case '?': - // {$varname??'xxx'} $varname有定义则输出$varname,否则输出xxx - $str = 'parseVarFunction($name) . ' : ' . $str . '; ?>'; - break; - case '=': - // {$varname?='xxx'} $varname为真时才输出xxx - $str = ''; - break; - case ':': - // {$varname?:'xxx'} $varname为真时输出$varname,否则输出xxx - $str = 'parseVarFunction($name) . ' : ' . $str . '; ?>'; - break; - default: - if (strpos($str, ':')) { - // {$varname ? 'a' : 'b'} $varname为真时输出a,否则输出b - $array = explode(':', $str, 2); - - $array[0] = '$' == substr(trim($array[0]), 0, 1) ? $this->parseVarFunction($array[0]) : $array[0]; - $array[1] = '$' == substr(trim($array[1]), 0, 1) ? $this->parseVarFunction($array[1]) : $array[1]; - - $str = implode(' : ', $array); - } - $str = ''; - } - } - } else { - $this->parseVar($str); - $this->parseVarFunction($str); - $str = ''; - } - break; - case ':': - // 输出某个函数的结果 - $str = substr($str, 1); - $this->parseVar($str); - $str = ''; - break; - case '~': - // 执行某个函数 - $str = substr($str, 1); - $this->parseVar($str); - $str = ''; - break; - case '-': - case '+': - // 输出计算 - $this->parseVar($str); - $str = ''; - break; - case '/': - // 注释标签 - $flag2 = substr($str, 1, 1); - if ('/' == $flag2 || ('*' == $flag2 && substr(rtrim($str), -2) == '*/')) { - $str = ''; - } - break; - default: - // 未识别的标签直接返回 - $str = $this->config['tpl_begin'] . $str . $this->config['tpl_end']; - break; - } - - $content = str_replace($match[0], $str, $content); - } - - unset($matches); - } - } - - /** - * 模板变量解析,支持使用函数 - * 格式: {$varname|function1|function2=arg1,arg2} - * @access public - * @param string $varStr 变量数据 - * @return void - */ - public function parseVar(string &$varStr): void - { - $varStr = trim($varStr); - - if (preg_match_all('/\$[a-zA-Z_](?>\w*)(?:[:\.][0-9a-zA-Z_](?>\w*))+/', $varStr, $matches, PREG_OFFSET_CAPTURE)) { - static $_varParseList = []; - - while ($matches[0]) { - $match = array_pop($matches[0]); - - //如果已经解析过该变量字串,则直接返回变量值 - if (isset($_varParseList[$match[0]])) { - $parseStr = $_varParseList[$match[0]]; - } else { - if (strpos($match[0], '.')) { - $vars = explode('.', $match[0]); - $first = array_shift($vars); - - if (isset($this->extend[$first])) { - $callback = $this->extend[$first]; - $parseStr = $callback($vars); - } elseif ('$Request' == $first) { - // 输出请求变量 - $parseStr = $this->parseRequestVar($vars); - } elseif ('$Think' == $first) { - // 所有以Think.打头的以特殊变量对待 无需模板赋值就可以输出 - $parseStr = $this->parseThinkVar($vars); - } else { - switch ($this->config['tpl_var_identify']) { - case 'array': // 识别为数组 - $parseStr = $first . '[\'' . implode('\'][\'', $vars) . '\']'; - break; - case 'obj': // 识别为对象 - $parseStr = $first . '->' . implode('->', $vars); - break; - default: // 自动判断数组或对象 - $parseStr = '(is_array(' . $first . ')?' . $first . '[\'' . implode('\'][\'', $vars) . '\']:' . $first . '->' . implode('->', $vars) . ')'; - } - } - } else { - $parseStr = str_replace(':', '->', $match[0]); - } - - $_varParseList[$match[0]] = $parseStr; - } - - $varStr = substr_replace($varStr, $parseStr, $match[1], strlen($match[0])); - } - unset($matches); - } - } - - /** - * 对模板中使用了函数的变量进行解析 - * 格式 {$varname|function1|function2=arg1,arg2} - * @access public - * @param string $varStr 变量字符串 - * @param bool $autoescape 自动转义 - * @return string - */ - public function parseVarFunction(string &$varStr, bool $autoescape = true): string - { - if (!$autoescape && false === strpos($varStr, '|')) { - return $varStr; - } elseif ($autoescape && !preg_match('/\|(\s)?raw(\||\s)?/i', $varStr)) { - $varStr .= '|' . $this->config['default_filter']; - } - - static $_varFunctionList = []; - - $_key = md5($varStr); - - //如果已经解析过该变量字串,则直接返回变量值 - if (isset($_varFunctionList[$_key])) { - $varStr = $_varFunctionList[$_key]; - } else { - $varArray = explode('|', $varStr); - - // 取得变量名称 - $name = trim(array_shift($varArray)); - - // 对变量使用函数 - $length = count($varArray); - - // 取得模板禁止使用函数列表 - $template_deny_funs = explode(',', $this->config['tpl_deny_func_list']); - - for ($i = 0; $i < $length; $i++) { - $args = explode('=', $varArray[$i], 2); - - // 模板函数过滤 - $fun = trim($args[0]); - if (in_array($fun, $template_deny_funs)) { - continue; - } - - switch (strtolower($fun)) { - case 'raw': - break; - case 'date': - $name = 'date(' . $args[1] . ',!is_numeric(' . $name . ')? strtotime(' . $name . ') : ' . $name . ')'; - break; - case 'first': - $name = 'current(' . $name . ')'; - break; - case 'last': - $name = 'end(' . $name . ')'; - break; - case 'upper': - $name = 'strtoupper(' . $name . ')'; - break; - case 'lower': - $name = 'strtolower(' . $name . ')'; - break; - case 'format': - $name = 'sprintf(' . $args[1] . ',' . $name . ')'; - break; - case 'default': // 特殊模板函数 - if (false === strpos($name, '(')) { - $name = '(isset(' . $name . ') && (' . $name . ' !== \'\')?' . $name . ':' . $args[1] . ')'; - } else { - $name = '(' . $name . ' ?: ' . $args[1] . ')'; - } - break; - default: // 通用模板函数 - if (isset($args[1])) { - if (strstr($args[1], '###')) { - $args[1] = str_replace('###', $name, $args[1]); - $name = "$fun($args[1])"; - } else { - $name = "$fun($name,$args[1])"; - } - } else { - if (!empty($args[0])) { - $name = "$fun($name)"; - } - } - } - } - - $_varFunctionList[$_key] = $name; - $varStr = $name; - } - return $varStr; - } - - /** - * 请求变量解析 - * 格式 以 $Request. 打头的变量属于请求变量 - * @access public - * @param array $vars 变量数组 - * @return string - */ - public function parseRequestVar(array $vars): string - { - $type = strtoupper(trim(array_shift($vars))); - $param = implode('.', $vars); - - switch ($type) { - case 'SERVER': - $parseStr = '$_SERVER[\'' . $param . '\']'; - break; - case 'GET': - $parseStr = '$_GET[\'' . $param . '\']'; - break; - case 'POST': - $parseStr = '$_POST[\'' . $param . '\']'; - break; - case 'COOKIE': - $parseStr = '$_COOKIE[\'' . $param . '\']'; - break; - case 'SESSION': - $parseStr = '$_SESSION[\'' . $param . '\']'; - break; - case 'ENV': - $parseStr = '$_ENV[\'' . $param . '\']'; - break; - case 'REQUEST': - $parseStr = '$_REQUEST[\'' . $param . '\']'; - break; - default: - $parseStr = '\'\''; - } - - return $parseStr; - } - - /** - * 特殊模板变量解析 - * 格式 以 $Think. 打头的变量属于特殊模板变量 - * @access public - * @param array $vars 变量数组 - * @return string - */ - public function parseThinkVar(array $vars): string - { - $type = strtoupper(trim(array_shift($vars))); - $param = implode('.', $vars); - - switch ($type) { - case 'CONST': - $parseStr = strtoupper($param); - break; - case 'NOW': - $parseStr = "date('Y-m-d g:i a',time())"; - break; - case 'LDELIM': - $parseStr = '\'' . ltrim($this->config['tpl_begin'], '\\') . '\''; - break; - case 'RDELIM': - $parseStr = '\'' . ltrim($this->config['tpl_end'], '\\') . '\''; - break; - default: - $parseStr = defined($type) ? $type : '\'\''; - } - - return $parseStr; - } - - /** - * 分析加载的模板文件并读取内容 支持多个模板文件读取 - * @access private - * @param string $templateName 模板文件名 - * @return string - */ - private function parseTemplateName(string $templateName): string - { - $array = explode(',', $templateName); - $parseStr = ''; - - foreach ($array as $templateName) { - if (empty($templateName)) { - continue; - } - - if (0 === strpos($templateName, '$')) { - //支持加载变量文件名 - $templateName = $this->get(substr($templateName, 1)); - } - - $template = $this->parseTemplateFile($templateName); - - if ($template) { - // 获取模板文件内容 - $parseStr .= file_get_contents($template); - } - } - - return $parseStr; - } - - /** - * 解析模板文件名 - * @access private - * @param string $template 文件名 - * @return string - */ - private function parseTemplateFile(string $template): string - { - if ('' == pathinfo($template, PATHINFO_EXTENSION)) { - - if (0 !== strpos($template, '/')) { - $template = str_replace(['/', ':'], $this->config['view_depr'], $template); - } else { - $template = str_replace(['/', ':'], $this->config['view_depr'], substr($template, 1)); - } - - $template = $this->config['view_path'] . $template . '.' . ltrim($this->config['view_suffix'], '.'); - } - - if (is_file($template)) { - // 记录模板文件的更新时间 - $this->includeFile[$template] = filemtime($template); - - return $template; - } - - throw new Exception('template not exists:' . $template); - } - - /** - * 按标签生成正则 - * @access private - * @param string $tagName 标签名 - * @return string - */ - private function getRegex(string $tagName): string - { - $regex = ''; - if ('tag' == $tagName) { - $begin = $this->config['tpl_begin']; - $end = $this->config['tpl_end']; - - if (strlen(ltrim($begin, '\\')) == 1 && strlen(ltrim($end, '\\')) == 1) { - $regex = $begin . '((?:[\$]{1,2}[a-wA-w_]|[\:\~][\$a-wA-w_]|[+]{2}[\$][a-wA-w_]|[-]{2}[\$][a-wA-w_]|\/[\*\/])(?>[^' . $end . ']*))' . $end; - } else { - $regex = $begin . '((?:[\$]{1,2}[a-wA-w_]|[\:\~][\$a-wA-w_]|[+]{2}[\$][a-wA-w_]|[-]{2}[\$][a-wA-w_]|\/[\*\/])(?>(?:(?!' . $end . ').)*))' . $end; - } - } else { - $begin = $this->config['taglib_begin']; - $end = $this->config['taglib_end']; - $single = strlen(ltrim($begin, '\\')) == 1 && strlen(ltrim($end, '\\')) == 1 ? true : false; - - switch ($tagName) { - case 'block': - if ($single) { - $regex = $begin . '(?:' . $tagName . '\b\s+(?>(?:(?!name=).)*)\bname=([\'\"])(?P[\$\w\-\/\.]+)\\1(?>[^' . $end . ']*)|\/' . $tagName . ')' . $end; - } else { - $regex = $begin . '(?:' . $tagName . '\b\s+(?>(?:(?!name=).)*)\bname=([\'\"])(?P[\$\w\-\/\.]+)\\1(?>(?:(?!' . $end . ').)*)|\/' . $tagName . ')' . $end; - } - break; - case 'literal': - if ($single) { - $regex = '(' . $begin . $tagName . '\b(?>[^' . $end . ']*)' . $end . ')'; - $regex .= '(?:(?>[^' . $begin . ']*)(?>(?!' . $begin . '(?>' . $tagName . '\b[^' . $end . ']*|\/' . $tagName . ')' . $end . ')' . $begin . '[^' . $begin . ']*)*)'; - $regex .= '(' . $begin . '\/' . $tagName . $end . ')'; - } else { - $regex = '(' . $begin . $tagName . '\b(?>(?:(?!' . $end . ').)*)' . $end . ')'; - $regex .= '(?:(?>(?:(?!' . $begin . ').)*)(?>(?!' . $begin . '(?>' . $tagName . '\b(?>(?:(?!' . $end . ').)*)|\/' . $tagName . ')' . $end . ')' . $begin . '(?>(?:(?!' . $begin . ').)*))*)'; - $regex .= '(' . $begin . '\/' . $tagName . $end . ')'; - } - break; - case 'restoreliteral': - $regex = ''; - break; - case 'include': - $name = 'file'; - case 'taglib': - case 'layout': - case 'extend': - if (empty($name)) { - $name = 'name'; - } - if ($single) { - $regex = $begin . $tagName . '\b\s+(?>(?:(?!' . $name . '=).)*)\b' . $name . '=([\'\"])(?P[\$\w\-\/\.\:@,\\\\]+)\\1(?>[^' . $end . ']*)' . $end; - } else { - $regex = $begin . $tagName . '\b\s+(?>(?:(?!' . $name . '=).)*)\b' . $name . '=([\'\"])(?P[\$\w\-\/\.\:@,\\\\]+)\\1(?>(?:(?!' . $end . ').)*)' . $end; - } - break; - } - } - - return '/' . $regex . '/is'; - } - - public function __debugInfo() - { - $data = get_object_vars($this); - unset($data['storage']); - - return $data; - } -} diff --git a/vendor/topthink/think-template/src/facade/Template.php b/vendor/topthink/think-template/src/facade/Template.php deleted file mode 100644 index 665a180a8..000000000 --- a/vendor/topthink/think-template/src/facade/Template.php +++ /dev/null @@ -1,83 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\facade; - -if (class_exists('think\Facade')) { - class Facade extends \think\Facade - {} -} else { - class Facade - { - /** - * 始终创建新的对象实例 - * @var bool - */ - protected static $alwaysNewInstance; - - protected static $instance; - - /** - * 获取当前Facade对应类名 - * @access protected - * @return string - */ - protected static function getFacadeClass() - {} - - /** - * 创建Facade实例 - * @static - * @access protected - * @return object - */ - protected static function createFacade() - { - $class = static::getFacadeClass() ?: 'think\Template'; - - if (static::$alwaysNewInstance) { - return new $class(); - } - - if (!self::$instance) { - self::$instance = new $class(); - } - - return self::$instance; - - } - - // 调用实际类的方法 - public static function __callStatic($method, $params) - { - return call_user_func_array([static::createFacade(), $method], $params); - } - } -} - -/** - * @see \think\Template - * @mixin \think\Template - */ -class Template extends Facade -{ - protected static $alwaysNewInstance = true; - - /** - * 获取当前Facade对应类名(或者已经绑定的容器对象标识) - * @access protected - * @return string - */ - protected static function getFacadeClass() - { - return 'think\Template'; - } -} diff --git a/vendor/topthink/think-template/src/template/TagLib.php b/vendor/topthink/think-template/src/template/TagLib.php deleted file mode 100644 index f6c8fbb84..000000000 --- a/vendor/topthink/think-template/src/template/TagLib.php +++ /dev/null @@ -1,349 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\template; - -use Exception; -use think\Template; - -/** - * ThinkPHP标签库TagLib解析基类 - * @category Think - * @package Think - * @subpackage Template - * @author liu21st - */ -class TagLib -{ - - /** - * 标签库定义XML文件 - * @var string - * @access protected - */ - protected $xml = ''; - protected $tags = []; // 标签定义 - /** - * 标签库名称 - * @var string - * @access protected - */ - protected $tagLib = ''; - - /** - * 标签库标签列表 - * @var array - * @access protected - */ - protected $tagList = []; - - /** - * 标签库分析数组 - * @var array - * @access protected - */ - protected $parse = []; - - /** - * 标签库是否有效 - * @var bool - * @access protected - */ - protected $valid = false; - - /** - * 当前模板对象 - * @var object - * @access protected - */ - protected $tpl; - - protected $comparison = [' nheq ' => ' !== ', ' heq ' => ' === ', ' neq ' => ' != ', ' eq ' => ' == ', ' egt ' => ' >= ', ' gt ' => ' > ', ' elt ' => ' <= ', ' lt ' => ' < ']; - - /** - * 架构函数 - * @access public - * @param Template $template 模板引擎对象 - */ - public function __construct(Template $template) - { - $this->tpl = $template; - } - - /** - * 按签标库替换页面中的标签 - * @access public - * @param string $content 模板内容 - * @param string $lib 标签库名 - * @return void - */ - public function parseTag(string &$content, string $lib = ''): void - { - $tags = []; - $lib = $lib ? strtolower($lib) . ':' : ''; - - foreach ($this->tags as $name => $val) { - $close = !isset($val['close']) || $val['close'] ? 1 : 0; - $tags[$close][$lib . $name] = $name; - if (isset($val['alias'])) { - // 别名设置 - $array = (array) $val['alias']; - foreach (explode(',', $array[0]) as $v) { - $tags[$close][$lib . $v] = $name; - } - } - } - - // 闭合标签 - if (!empty($tags[1])) { - $nodes = []; - $regex = $this->getRegex(array_keys($tags[1]), 1); - if (preg_match_all($regex, $content, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { - $right = []; - foreach ($matches as $match) { - if ('' == $match[1][0]) { - $name = strtolower($match[2][0]); - // 如果有没闭合的标签头则取出最后一个 - if (!empty($right[$name])) { - // $match[0][1]为标签结束符在模板中的位置 - $nodes[$match[0][1]] = [ - 'name' => $name, - 'begin' => array_pop($right[$name]), // 标签开始符 - 'end' => $match[0], // 标签结束符 - ]; - } - } else { - // 标签头压入栈 - $right[strtolower($match[1][0])][] = $match[0]; - } - } - unset($right, $matches); - // 按标签在模板中的位置从后向前排序 - krsort($nodes); - } - - $break = ''; - if ($nodes) { - $beginArray = []; - // 标签替换 从后向前 - foreach ($nodes as $pos => $node) { - // 对应的标签名 - $name = $tags[1][$node['name']]; - $alias = $lib . $name != $node['name'] ? ($lib ? strstr($node['name'], $lib) : $node['name']) : ''; - - // 解析标签属性 - $attrs = $this->parseAttr($node['begin'][0], $name, $alias); - $method = 'tag' . $name; - - // 读取标签库中对应的标签内容 replace[0]用来替换标签头,replace[1]用来替换标签尾 - $replace = explode($break, $this->$method($attrs, $break)); - - if (count($replace) > 1) { - while ($beginArray) { - $begin = end($beginArray); - // 判断当前标签尾的位置是否在栈中最后一个标签头的后面,是则为子标签 - if ($node['end'][1] > $begin['pos']) { - break; - } else { - // 不为子标签时,取出栈中最后一个标签头 - $begin = array_pop($beginArray); - // 替换标签头部 - $content = substr_replace($content, $begin['str'], $begin['pos'], $begin['len']); - } - } - // 替换标签尾部 - $content = substr_replace($content, $replace[1], $node['end'][1], strlen($node['end'][0])); - // 把标签头压入栈 - $beginArray[] = ['pos' => $node['begin'][1], 'len' => strlen($node['begin'][0]), 'str' => $replace[0]]; - } - } - - while ($beginArray) { - $begin = array_pop($beginArray); - // 替换标签头部 - $content = substr_replace($content, $begin['str'], $begin['pos'], $begin['len']); - } - } - } - // 自闭合标签 - if (!empty($tags[0])) { - $regex = $this->getRegex(array_keys($tags[0]), 0); - $content = preg_replace_callback($regex, function ($matches) use (&$tags, &$lib) { - // 对应的标签名 - $name = $tags[0][strtolower($matches[1])]; - $alias = $lib . $name != $matches[1] ? ($lib ? strstr($matches[1], $lib) : $matches[1]) : ''; - // 解析标签属性 - $attrs = $this->parseAttr($matches[0], $name, $alias); - $method = 'tag' . $name; - return $this->$method($attrs, ''); - }, $content); - } - } - - /** - * 按标签生成正则 - * @access public - * @param array|string $tags 标签名 - * @param boolean $close 是否为闭合标签 - * @return string - */ - public function getRegex($tags, bool $close): string - { - $begin = $this->tpl->getConfig('taglib_begin'); - $end = $this->tpl->getConfig('taglib_end'); - $single = strlen(ltrim($begin, '\\')) == 1 && strlen(ltrim($end, '\\')) == 1 ? true : false; - $tagName = is_array($tags) ? implode('|', $tags) : $tags; - - if ($single) { - if ($close) { - // 如果是闭合标签 - $regex = $begin . '(?:(' . $tagName . ')\b(?>[^' . $end . ']*)|\/(' . $tagName . '))' . $end; - } else { - $regex = $begin . '(' . $tagName . ')\b(?>[^' . $end . ']*)' . $end; - } - } else { - if ($close) { - // 如果是闭合标签 - $regex = $begin . '(?:(' . $tagName . ')\b(?>(?:(?!' . $end . ').)*)|\/(' . $tagName . '))' . $end; - } else { - $regex = $begin . '(' . $tagName . ')\b(?>(?:(?!' . $end . ').)*)' . $end; - } - } - - return '/' . $regex . '/is'; - } - - /** - * 分析标签属性 正则方式 - * @access public - * @param string $str 标签属性字符串 - * @param string $name 标签名 - * @param string $alias 别名 - * @return array - */ - public function parseAttr(string $str, string $name, string $alias = ''): array - { - $regex = '/\s+(?>(?P[\w-]+)\s*)=(?>\s*)([\"\'])(?P(?:(?!\\2).)*)\\2/is'; - $result = []; - - if (preg_match_all($regex, $str, $matches)) { - foreach ($matches['name'] as $key => $val) { - $result[$val] = $matches['value'][$key]; - } - - if (!isset($this->tags[$name])) { - // 检测是否存在别名定义 - foreach ($this->tags as $key => $val) { - if (isset($val['alias'])) { - $array = (array) $val['alias']; - if (in_array($name, explode(',', $array[0]))) { - $tag = $val; - $type = !empty($array[1]) ? $array[1] : 'type'; - $result[$type] = $name; - break; - } - } - } - } else { - $tag = $this->tags[$name]; - // 设置了标签别名 - if (!empty($alias) && isset($tag['alias'])) { - $type = !empty($tag['alias'][1]) ? $tag['alias'][1] : 'type'; - $result[$type] = $alias; - } - } - - if (!empty($tag['must'])) { - $must = explode(',', $tag['must']); - foreach ($must as $name) { - if (!isset($result[$name])) { - throw new Exception('tag attr must:' . $name); - } - } - } - } else { - // 允许直接使用表达式的标签 - if (!empty($this->tags[$name]['expression'])) { - static $_taglibs; - if (!isset($_taglibs[$name])) { - $_taglibs[$name][0] = strlen($this->tpl->getConfig('taglib_begin_origin') . $name); - $_taglibs[$name][1] = strlen($this->tpl->getConfig('taglib_end_origin')); - } - $result['expression'] = substr($str, $_taglibs[$name][0], -$_taglibs[$name][1]); - // 清除自闭合标签尾部/ - $result['expression'] = rtrim($result['expression'], '/'); - $result['expression'] = trim($result['expression']); - } elseif (empty($this->tags[$name]) || !empty($this->tags[$name]['attr'])) { - throw new Exception('tag error:' . $name); - } - } - - return $result; - } - - /** - * 解析条件表达式 - * @access public - * @param string $condition 表达式标签内容 - * @return string - */ - public function parseCondition(string $condition): string - { - if (strpos($condition, ':')) { - $condition = ' ' . substr(strstr($condition, ':'), 1); - } - - $condition = str_ireplace(array_keys($this->comparison), array_values($this->comparison), $condition); - $this->tpl->parseVar($condition); - - return $condition; - } - - /** - * 自动识别构建变量 - * @access public - * @param string $name 变量描述 - * @return string - */ - public function autoBuildVar(string &$name): string - { - $flag = substr($name, 0, 1); - - if (':' == $flag) { - // 以:开头为函数调用,解析前去掉: - $name = substr($name, 1); - } elseif ('$' != $flag && preg_match('/[a-zA-Z_]/', $flag)) { - // XXX: 这句的写法可能还需要改进 - // 常量不需要解析 - if (defined($name)) { - return $name; - } - - // 不以$开头并且也不是常量,自动补上$前缀 - $name = '$' . $name; - } - - $this->tpl->parseVar($name); - $this->tpl->parseVarFunction($name, false); - - return $name; - } - - /** - * 获取标签列表 - * @access public - * @return array - */ - public function getTags(): array - { - return $this->tags; - } -} diff --git a/vendor/topthink/think-template/src/template/driver/File.php b/vendor/topthink/think-template/src/template/driver/File.php deleted file mode 100644 index 510d10a0b..000000000 --- a/vendor/topthink/think-template/src/template/driver/File.php +++ /dev/null @@ -1,83 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\template\driver; - -use Exception; - -class File -{ - protected $cacheFile; - - /** - * 写入编译缓存 - * @access public - * @param string $cacheFile 缓存的文件名 - * @param string $content 缓存的内容 - * @return void - */ - public function write(string $cacheFile, string $content): void - { - // 检测模板目录 - $dir = dirname($cacheFile); - - if (!is_dir($dir)) { - mkdir($dir, 0755, true); - } - - // 生成模板缓存文件 - if (false === file_put_contents($cacheFile, $content)) { - throw new Exception('cache write error:' . $cacheFile, 11602); - } - } - - /** - * 读取编译编译 - * @access public - * @param string $cacheFile 缓存的文件名 - * @param array $vars 变量数组 - * @return void - */ - public function read(string $cacheFile, array $vars = []): void - { - $this->cacheFile = $cacheFile; - - if (!empty($vars) && is_array($vars)) { - // 模板阵列变量分解成为独立变量 - extract($vars, EXTR_OVERWRITE); - } - - //载入模版缓存文件 - include $this->cacheFile; - } - - /** - * 检查编译缓存是否有效 - * @access public - * @param string $cacheFile 缓存的文件名 - * @param int $cacheTime 缓存时间 - * @return bool - */ - public function check(string $cacheFile, int $cacheTime): bool - { - // 缓存文件不存在, 直接返回false - if (!file_exists($cacheFile)) { - return false; - } - - if (0 != $cacheTime && time() > filemtime($cacheFile) + $cacheTime) { - // 缓存是否在有效期 - return false; - } - - return true; - } -} diff --git a/vendor/topthink/think-template/src/template/exception/TemplateNotFoundException.php b/vendor/topthink/think-template/src/template/exception/TemplateNotFoundException.php deleted file mode 100644 index dd88b327d..000000000 --- a/vendor/topthink/think-template/src/template/exception/TemplateNotFoundException.php +++ /dev/null @@ -1,33 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\template\exception; - -class TemplateNotFoundException extends \RuntimeException -{ - protected $template; - - public function __construct(string $message, string $template = '') - { - $this->message = $message; - $this->template = $template; - } - - /** - * 获取模板文件 - * @access public - * @return string - */ - public function getTemplate(): string - { - return $this->template; - } -} diff --git a/vendor/topthink/think-template/src/template/taglib/Cx.php b/vendor/topthink/think-template/src/template/taglib/Cx.php deleted file mode 100644 index bccafc1be..000000000 --- a/vendor/topthink/think-template/src/template/taglib/Cx.php +++ /dev/null @@ -1,715 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think\template\taglib; - -use think\template\TagLib; - -/** - * CX标签库解析类 - * @category Think - * @package Think - * @subpackage Driver.Taglib - * @author liu21st - */ -class Cx extends Taglib -{ - - // 标签定义 - protected $tags = [ - // 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次 - 'php' => ['attr' => ''], - 'volist' => ['attr' => 'name,id,offset,length,key,mod', 'alias' => 'iterate'], - 'foreach' => ['attr' => 'name,id,item,key,offset,length,mod', 'expression' => true], - 'if' => ['attr' => 'condition', 'expression' => true], - 'elseif' => ['attr' => 'condition', 'close' => 0, 'expression' => true], - 'else' => ['attr' => '', 'close' => 0], - 'switch' => ['attr' => 'name', 'expression' => true], - 'case' => ['attr' => 'value,break', 'expression' => true], - 'default' => ['attr' => '', 'close' => 0], - 'compare' => ['attr' => 'name,value,type', 'alias' => ['eq,equal,notequal,neq,gt,lt,egt,elt,heq,nheq', 'type']], - 'range' => ['attr' => 'name,value,type', 'alias' => ['in,notin,between,notbetween', 'type']], - 'empty' => ['attr' => 'name'], - 'notempty' => ['attr' => 'name'], - 'present' => ['attr' => 'name'], - 'notpresent' => ['attr' => 'name'], - 'defined' => ['attr' => 'name'], - 'notdefined' => ['attr' => 'name'], - 'load' => ['attr' => 'file,href,type,value,basepath', 'close' => 0, 'alias' => ['import,css,js', 'type']], - 'assign' => ['attr' => 'name,value', 'close' => 0], - 'define' => ['attr' => 'name,value', 'close' => 0], - 'for' => ['attr' => 'start,end,name,comparison,step'], - 'url' => ['attr' => 'link,vars,suffix,domain', 'close' => 0, 'expression' => true], - 'function' => ['attr' => 'name,vars,use,call'], - ]; - - /** - * php标签解析 - * 格式: - * {php}echo $name{/php} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagPhp(array $tag, string $content): string - { - $parseStr = ''; - return $parseStr; - } - - /** - * volist标签解析 循环输出数据集 - * 格式: - * {volist name="userList" id="user" empty=""} - * {user.username} - * {user.email} - * {/volist} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagVolist(array $tag, string $content): string - { - $name = $tag['name']; - $id = $tag['id']; - $empty = isset($tag['empty']) ? $tag['empty'] : ''; - $key = !empty($tag['key']) ? $tag['key'] : 'i'; - $mod = isset($tag['mod']) ? $tag['mod'] : '2'; - $offset = !empty($tag['offset']) && is_numeric($tag['offset']) ? intval($tag['offset']) : 0; - $length = !empty($tag['length']) && is_numeric($tag['length']) ? intval($tag['length']) : 'null'; - // 允许使用函数设定数据集 {$vo.name} - $parseStr = 'autoBuildVar($name); - $parseStr .= '$_result=' . $name . ';'; - $name = '$_result'; - } else { - $name = $this->autoBuildVar($name); - } - - $parseStr .= 'if(is_array(' . $name . ') || ' . $name . ' instanceof \think\Collection || ' . $name . ' instanceof \think\Paginator): $' . $key . ' = 0;'; - - // 设置了输出数组长度 - if (0 != $offset || 'null' != $length) { - $parseStr .= '$__LIST__ = is_array(' . $name . ') ? array_slice(' . $name . ',' . $offset . ',' . $length . ', true) : ' . $name . '->slice(' . $offset . ',' . $length . ', true); '; - } else { - $parseStr .= ' $__LIST__ = ' . $name . ';'; - } - - $parseStr .= 'if( count($__LIST__)==0 ) : echo "' . $empty . '" ;'; - $parseStr .= 'else: '; - $parseStr .= 'foreach($__LIST__ as $key=>$' . $id . '): '; - $parseStr .= '$mod = ($' . $key . ' % ' . $mod . ' );'; - $parseStr .= '++$' . $key . ';?>'; - $parseStr .= $content; - $parseStr .= ''; - - return $parseStr; - } - - /** - * foreach标签解析 循环输出数据集 - * 格式: - * {foreach name="userList" id="user" key="key" index="i" mod="2" offset="3" length="5" empty=""} - * {user.username} - * {/foreach} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagForeach(array $tag, string $content): string - { - // 直接使用表达式 - if (!empty($tag['expression'])) { - $expression = ltrim(rtrim($tag['expression'], ')'), '('); - $expression = $this->autoBuildVar($expression); - $parseStr = ''; - $parseStr .= $content; - $parseStr .= ''; - return $parseStr; - } - - $name = $tag['name']; - $key = !empty($tag['key']) ? $tag['key'] : 'key'; - $item = !empty($tag['id']) ? $tag['id'] : $tag['item']; - $empty = isset($tag['empty']) ? $tag['empty'] : ''; - $offset = !empty($tag['offset']) && is_numeric($tag['offset']) ? intval($tag['offset']) : 0; - $length = !empty($tag['length']) && is_numeric($tag['length']) ? intval($tag['length']) : 'null'; - - $parseStr = 'autoBuildVar($name); - $parseStr .= $var . '=' . $name . '; '; - $name = $var; - } else { - $name = $this->autoBuildVar($name); - } - - $parseStr .= 'if(is_array(' . $name . ') || ' . $name . ' instanceof \think\Collection || ' . $name . ' instanceof \think\Paginator): '; - - // 设置了输出数组长度 - if (0 != $offset || 'null' != $length) { - if (!isset($var)) { - $var = '$_' . uniqid(); - } - $parseStr .= $var . ' = is_array(' . $name . ') ? array_slice(' . $name . ',' . $offset . ',' . $length . ', true) : ' . $name . '->slice(' . $offset . ',' . $length . ', true); '; - } else { - $var = &$name; - } - - $parseStr .= 'if( count(' . $var . ')==0 ) : echo "' . $empty . '" ;'; - $parseStr .= 'else: '; - - // 设置了索引项 - if (isset($tag['index'])) { - $index = $tag['index']; - $parseStr .= '$' . $index . '=0; '; - } - - $parseStr .= 'foreach(' . $var . ' as $' . $key . '=>$' . $item . '): '; - - // 设置了索引项 - if (isset($tag['index'])) { - $index = $tag['index']; - if (isset($tag['mod'])) { - $mod = (int) $tag['mod']; - $parseStr .= '$mod = ($' . $index . ' % ' . $mod . '); '; - } - $parseStr .= '++$' . $index . '; '; - } - - $parseStr .= '?>'; - // 循环体中的内容 - $parseStr .= $content; - $parseStr .= ''; - - return $parseStr; - } - - /** - * if标签解析 - * 格式: - * {if condition=" $a eq 1"} - * {elseif condition="$a eq 2" /} - * {else /} - * {/if} - * 表达式支持 eq neq gt egt lt elt == > >= < <= or and || && - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagIf(array $tag, string $content): string - { - $condition = !empty($tag['expression']) ? $tag['expression'] : $tag['condition']; - $condition = $this->parseCondition($condition); - $parseStr = '' . $content . ''; - - return $parseStr; - } - - /** - * elseif标签解析 - * 格式:见if标签 - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagElseif(array $tag, string $content): string - { - $condition = !empty($tag['expression']) ? $tag['expression'] : $tag['condition']; - $condition = $this->parseCondition($condition); - $parseStr = ''; - - return $parseStr; - } - - /** - * else标签解析 - * 格式:见if标签 - * @access public - * @param array $tag 标签属性 - * @return string - */ - public function tagElse(array $tag): string - { - $parseStr = ''; - - return $parseStr; - } - - /** - * switch标签解析 - * 格式: - * {switch name="a.name"} - * {case value="1" break="false"}1{/case} - * {case value="2" }2{/case} - * {default /}other - * {/switch} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagSwitch(array $tag, string $content): string - { - $name = !empty($tag['expression']) ? $tag['expression'] : $tag['name']; - $name = $this->autoBuildVar($name); - $parseStr = '' . $content . ''; - - return $parseStr; - } - - /** - * case标签解析 需要配合switch才有效 - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagCase(array $tag, string $content): string - { - $value = isset($tag['expression']) ? $tag['expression'] : $tag['value']; - $flag = substr($value, 0, 1); - - if ('$' == $flag || ':' == $flag) { - $value = $this->autoBuildVar($value); - $value = 'case ' . $value . ':'; - } elseif (strpos($value, '|')) { - $values = explode('|', $value); - $value = ''; - foreach ($values as $val) { - $value .= 'case "' . addslashes($val) . '":'; - } - } else { - $value = 'case "' . $value . '":'; - } - - $parseStr = '' . $content; - $isBreak = isset($tag['break']) ? $tag['break'] : ''; - - if ('' == $isBreak || $isBreak) { - $parseStr .= ''; - } - - return $parseStr; - } - - /** - * default标签解析 需要配合switch才有效 - * 使用: {default /}ddfdf - * @access public - * @param array $tag 标签属性 - * @return string - */ - public function tagDefault(array $tag): string - { - $parseStr = ''; - - return $parseStr; - } - - /** - * compare标签解析 - * 用于值的比较 支持 eq neq gt lt egt elt heq nheq 默认是eq - * 格式: {compare name="" type="eq" value="" }content{/compare} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagCompare(array $tag, string $content): string - { - $name = $tag['name']; - $value = $tag['value']; - $type = isset($tag['type']) ? $tag['type'] : 'eq'; // 比较类型 - $name = $this->autoBuildVar($name); - $flag = substr($value, 0, 1); - - if ('$' == $flag || ':' == $flag) { - $value = $this->autoBuildVar($value); - } else { - $value = '\'' . $value . '\''; - } - - switch ($type) { - case 'equal': - $type = 'eq'; - break; - case 'notequal': - $type = 'neq'; - break; - } - $type = $this->parseCondition(' ' . $type . ' '); - $parseStr = '' . $content . ''; - - return $parseStr; - } - - /** - * range标签解析 - * 如果某个变量存在于某个范围 则输出内容 type= in 表示在范围内 否则表示在范围外 - * 格式: {range name="var|function" value="val" type='in|notin' }content{/range} - * example: {range name="a" value="1,2,3" type='in' }content{/range} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagRange(array $tag, string $content): string - { - $name = $tag['name']; - $value = $tag['value']; - $type = isset($tag['type']) ? $tag['type'] : 'in'; // 比较类型 - - $name = $this->autoBuildVar($name); - $flag = substr($value, 0, 1); - - if ('$' == $flag || ':' == $flag) { - $value = $this->autoBuildVar($value); - $str = 'is_array(' . $value . ')?' . $value . ':explode(\',\',' . $value . ')'; - } else { - $value = '"' . $value . '"'; - $str = 'explode(\',\',' . $value . ')'; - } - - if ('between' == $type) { - $parseStr = '= $_RANGE_VAR_[0] && ' . $name . '<= $_RANGE_VAR_[1]):?>' . $content . ''; - } elseif ('notbetween' == $type) { - $parseStr = '$_RANGE_VAR_[1]):?>' . $content . ''; - } else { - $fun = ('in' == $type) ? 'in_array' : '!in_array'; - $parseStr = '' . $content . ''; - } - - return $parseStr; - } - - /** - * present标签解析 - * 如果某个变量已经设置 则输出内容 - * 格式: {present name="" }content{/present} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagPresent(array $tag, string $content): string - { - $name = $tag['name']; - $name = $this->autoBuildVar($name); - $parseStr = '' . $content . ''; - - return $parseStr; - } - - /** - * notpresent标签解析 - * 如果某个变量没有设置,则输出内容 - * 格式: {notpresent name="" }content{/notpresent} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagNotpresent(array $tag, string $content): string - { - $name = $tag['name']; - $name = $this->autoBuildVar($name); - $parseStr = '' . $content . ''; - - return $parseStr; - } - - /** - * empty标签解析 - * 如果某个变量为empty 则输出内容 - * 格式: {empty name="" }content{/empty} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagEmpty(array $tag, string $content): string - { - $name = $tag['name']; - $name = $this->autoBuildVar($name); - $parseStr = 'isEmpty())): ?>' . $content . ''; - - return $parseStr; - } - - /** - * notempty标签解析 - * 如果某个变量不为empty 则输出内容 - * 格式: {notempty name="" }content{/notempty} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagNotempty(array $tag, string $content): string - { - $name = $tag['name']; - $name = $this->autoBuildVar($name); - $parseStr = 'isEmpty()))): ?>' . $content . ''; - - return $parseStr; - } - - /** - * 判断是否已经定义了该常量 - * {defined name='TXT'}已定义{/defined} - * @access public - * @param array $tag - * @param string $content - * @return string - */ - public function tagDefined(array $tag, string $content): string - { - $name = $tag['name']; - $parseStr = '' . $content . ''; - - return $parseStr; - } - - /** - * 判断是否没有定义了该常量 - * {notdefined name='TXT'}已定义{/notdefined} - * @access public - * @param array $tag - * @param string $content - * @return string - */ - public function tagNotdefined(array $tag, string $content): string - { - $name = $tag['name']; - $parseStr = '' . $content . ''; - - return $parseStr; - } - - /** - * load 标签解析 {load file="/static/js/base.js" /} - * 格式:{load file="/static/css/base.css" /} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagLoad(array $tag, string $content): string - { - $file = isset($tag['file']) ? $tag['file'] : $tag['href']; - $type = isset($tag['type']) ? strtolower($tag['type']) : ''; - - $parseStr = ''; - $endStr = ''; - - // 判断是否存在加载条件 允许使用函数判断(默认为isset) - if (isset($tag['value'])) { - $name = $tag['value']; - $name = $this->autoBuildVar($name); - $name = 'isset(' . $name . ')'; - $parseStr .= ''; - $endStr = ''; - } - - // 文件方式导入 - $array = explode(',', $file); - - foreach ($array as $val) { - $type = strtolower(substr(strrchr($val, '.'), 1)); - switch ($type) { - case 'js': - $parseStr .= ''; - break; - case 'css': - $parseStr .= ''; - break; - case 'php': - $parseStr .= ''; - break; - } - } - - return $parseStr . $endStr; - } - - /** - * assign标签解析 - * 在模板中给某个变量赋值 支持变量赋值 - * 格式: {assign name="" value="" /} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagAssign(array $tag, string $content): string - { - $name = $this->autoBuildVar($tag['name']); - $flag = substr($tag['value'], 0, 1); - - if ('$' == $flag || ':' == $flag) { - $value = $this->autoBuildVar($tag['value']); - } else { - $value = '\'' . $tag['value'] . '\''; - } - - $parseStr = ''; - - return $parseStr; - } - - /** - * define标签解析 - * 在模板中定义常量 支持变量赋值 - * 格式: {define name="" value="" /} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagDefine(array $tag, string $content): string - { - $name = '\'' . $tag['name'] . '\''; - $flag = substr($tag['value'], 0, 1); - - if ('$' == $flag || ':' == $flag) { - $value = $this->autoBuildVar($tag['value']); - } else { - $value = '\'' . $tag['value'] . '\''; - } - - $parseStr = ''; - - return $parseStr; - } - - /** - * for标签解析 - * 格式: - * {for start="" end="" comparison="" step="" name=""} - * content - * {/for} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagFor(array $tag, string $content): string - { - //设置默认值 - $start = 0; - $end = 0; - $step = 1; - $comparison = 'lt'; - $name = 'i'; - $rand = rand(); //添加随机数,防止嵌套变量冲突 - - //获取属性 - foreach ($tag as $key => $value) { - $value = trim($value); - $flag = substr($value, 0, 1); - if ('$' == $flag || ':' == $flag) { - $value = $this->autoBuildVar($value); - } - - switch ($key) { - case 'start': - $start = $value; - break; - case 'end': - $end = $value; - break; - case 'step': - $step = $value; - break; - case 'comparison': - $comparison = $value; - break; - case 'name': - $name = $value; - break; - } - } - - $parseStr = 'parseCondition('$' . $name . ' ' . $comparison . ' $__FOR_END_' . $rand . '__') . ';$' . $name . '+=' . $step . '){ ?>'; - $parseStr .= $content; - $parseStr .= ''; - - return $parseStr; - } - - /** - * url函数的tag标签 - * 格式:{url link="模块/控制器/方法" vars="参数" suffix="true或者false 是否带有后缀" domain="true或者false 是否携带域名" /} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagUrl(array $tag, string $content): string - { - $url = isset($tag['link']) ? $tag['link'] : ''; - $vars = isset($tag['vars']) ? $tag['vars'] : ''; - $suffix = isset($tag['suffix']) ? $tag['suffix'] : 'true'; - $domain = isset($tag['domain']) ? $tag['domain'] : 'false'; - - return ''; - } - - /** - * function标签解析 匿名函数,可实现递归 - * 使用: - * {function name="func" vars="$data" call="$list" use="&$a,&$b"} - * {if is_array($data)} - * {foreach $data as $val} - * {~func($val) /} - * {/foreach} - * {else /} - * {$data} - * {/if} - * {/function} - * @access public - * @param array $tag 标签属性 - * @param string $content 标签内容 - * @return string - */ - public function tagFunction(array $tag, string $content): string - { - $name = !empty($tag['name']) ? $tag['name'] : 'func'; - $vars = !empty($tag['vars']) ? $tag['vars'] : ''; - $call = !empty($tag['call']) ? $tag['call'] : ''; - $use = ['&$' . $name]; - - if (!empty($tag['use'])) { - foreach (explode(',', $tag['use']) as $val) { - $use[] = '&' . ltrim(trim($val), '&'); - } - } - - $parseStr = '' . $content . '' : '?>'; - - return $parseStr; - } -} diff --git a/vendor/topthink/think-view/.gitignore b/vendor/topthink/think-view/.gitignore deleted file mode 100644 index 485dee64b..000000000 --- a/vendor/topthink/think-view/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.idea diff --git a/vendor/topthink/think-view/LICENSE b/vendor/topthink/think-view/LICENSE deleted file mode 100644 index 8dada3eda..000000000 --- a/vendor/topthink/think-view/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/topthink/think-view/README.md b/vendor/topthink/think-view/README.md deleted file mode 100644 index 4e52defd5..000000000 --- a/vendor/topthink/think-view/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# think-view - -ThinkPHP6.0 Think-Template模板引擎驱动 - - -## 安装 - -~~~php -composer require topthink/think-view -~~~ - -## 用法示例 - -本扩展不能单独使用,依赖ThinkPHP6.0+ - -首先配置config目录下的template.php配置文件,然后可以按照下面的用法使用。 - -~~~php - -use think\facade\View; - -// 模板变量赋值和渲染输出 -View::assign(['name' => 'think']) - // 输出过滤 - ->filter(function($content){ - return str_replace('search', 'replace', $content); - }) - // 读取模板文件渲染输出 - ->fetch('index'); - - -// 或者使用助手函数 -view('index', ['name' => 'think']); -~~~ - -具体的模板引擎配置请参考think-template库。 \ No newline at end of file diff --git a/vendor/topthink/think-view/composer.json b/vendor/topthink/think-view/composer.json deleted file mode 100644 index f4e6431bd..000000000 --- a/vendor/topthink/think-view/composer.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "topthink/think-view", - "description": "thinkphp template driver", - "license": "Apache-2.0", - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "require": { - "php": ">=7.1.0", - "topthink/think-template": "^2.0" - }, - "autoload": { - "psr-4": { - "think\\view\\driver\\": "src" - } - } -} diff --git a/vendor/topthink/think-view/src/Think.php b/vendor/topthink/think-view/src/Think.php deleted file mode 100644 index 02be10f25..000000000 --- a/vendor/topthink/think-view/src/Think.php +++ /dev/null @@ -1,263 +0,0 @@ - -// +---------------------------------------------------------------------- -declare (strict_types = 1); - -namespace think\view\driver; - -use think\App; -use think\helper\Str; -use think\Template; -use think\template\exception\TemplateNotFoundException; - -class Think -{ - // 模板引擎实例 - private $template; - private $app; - - // 模板引擎参数 - protected $config = [ - // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法 - 'auto_rule' => 1, - // 视图目录名 - 'view_dir_name' => 'view', - // 模板起始路径 - 'view_path' => '', - // 模板文件后缀 - 'view_suffix' => 'html', - // 模板文件名分隔符 - 'view_depr' => DIRECTORY_SEPARATOR, - // 是否开启模板编译缓存,设为false则每次都会重新编译 - 'tpl_cache' => true, - ]; - - public function __construct(App $app, array $config = []) - { - $this->app = $app; - - $this->config = array_merge($this->config, (array) $config); - - if (empty($this->config['cache_path'])) { - $this->config['cache_path'] = $app->getRuntimePath() . 'temp' . DIRECTORY_SEPARATOR; - } - - $this->template = new Template($this->config); - $this->template->setCache($app->cache); - $this->template->extend('$Think', function (array $vars) { - $type = strtoupper(trim(array_shift($vars))); - $param = implode('.', $vars); - - switch ($type) { - case 'CONST': - $parseStr = strtoupper($param); - break; - case 'CONFIG': - $parseStr = 'config(\'' . $param . '\')'; - break; - case 'LANG': - $parseStr = 'lang(\'' . $param . '\')'; - break; - case 'NOW': - $parseStr = "date('Y-m-d g:i a',time())"; - break; - case 'LDELIM': - $parseStr = '\'' . ltrim($this->getConfig('tpl_begin'), '\\') . '\''; - break; - case 'RDELIM': - $parseStr = '\'' . ltrim($this->getConfig('tpl_end'), '\\') . '\''; - break; - default: - $parseStr = defined($type) ? $type : '\'\''; - } - - return $parseStr; - }); - - $this->template->extend('$Request', function (array $vars) { - // 获取Request请求对象参数 - $method = array_shift($vars); - if (!empty($vars)) { - $params = implode('.', $vars); - if ('true' != $params) { - $params = '\'' . $params . '\''; - } - } else { - $params = ''; - } - - return 'app(\'request\')->' . $method . '(' . $params . ')'; - }); - } - - /** - * 检测是否存在模板文件 - * @access public - * @param string $template 模板文件或者模板规则 - * @return bool - */ - public function exists(string $template): bool - { - if ('' == pathinfo($template, PATHINFO_EXTENSION)) { - // 获取模板文件名 - $template = $this->parseTemplate($template); - } - - return is_file($template); - } - - /** - * 渲染模板文件 - * @access public - * @param string $template 模板文件 - * @param array $data 模板变量 - * @return void - */ - public function fetch(string $template, array $data = []): void - { - if (empty($this->config['view_path'])) { - $view = $this->config['view_dir_name']; - - if (is_dir($this->app->getAppPath() . $view)) { - $path = $this->app->getAppPath() . $view . DIRECTORY_SEPARATOR; - } else { - $appName = $this->app->http->getName(); - $path = $this->app->getRootPath() . $view . DIRECTORY_SEPARATOR . ($appName ? $appName . DIRECTORY_SEPARATOR : ''); - } - - $this->config['view_path'] = $path; - $this->template->view_path = $path; - } - - if ('' == pathinfo($template, PATHINFO_EXTENSION)) { - // 获取模板文件名 - $template = $this->parseTemplate($template); - } - - // 模板不存在 抛出异常 - if (!is_file($template)) { - throw new TemplateNotFoundException('template not exists:' . $template, $template); - } - - // 记录视图信息 - $this->app['log'] - ->record('[ VIEW ] ' . $template . ' [ ' . var_export(array_keys($data), true) . ' ]'); - - $this->template->fetch($template, $data); - } - - /** - * 渲染模板内容 - * @access public - * @param string $template 模板内容 - * @param array $data 模板变量 - * @return void - */ - public function display(string $template, array $data = []): void - { - $this->template->display($template, $data); - } - - /** - * 自动定位模板文件 - * @access private - * @param string $template 模板文件规则 - * @return string - */ - private function parseTemplate(string $template): string - { - // 分析模板文件规则 - $request = $this->app['request']; - - // 获取视图根目录 - if (strpos($template, '@')) { - // 跨模块调用 - list($app, $template) = explode('@', $template); - } - - if (isset($app)) { - $view = $this->config['view_dir_name']; - $viewPath = $this->app->getBasePath() . $app . DIRECTORY_SEPARATOR . $view . DIRECTORY_SEPARATOR; - - if (is_dir($viewPath)) { - $path = $viewPath; - } else { - $path = $this->app->getRootPath() . $view . DIRECTORY_SEPARATOR . $app . DIRECTORY_SEPARATOR; - } - - $this->template->view_path = $path; - } else { - $path = $this->config['view_path']; - } - - $depr = $this->config['view_depr']; - - if (0 !== strpos($template, '/')) { - $template = str_replace(['/', ':'], $depr, $template); - $controller = $request->controller(); - - if (strpos($controller, '.')) { - $pos = strrpos($controller, '.'); - $controller = substr($controller, 0, $pos) . '.' . Str::snake(substr($controller, $pos + 1)); - } else { - $controller = Str::snake($controller); - } - - if ($controller) { - if ('' == $template) { - // 如果模板文件名为空 按照默认模板渲染规则定位 - if (2 == $this->config['auto_rule']) { - $template = $request->action(true); - } elseif (3 == $this->config['auto_rule']) { - $template = $request->action(); - } else { - $template = Str::snake($request->action()); - } - - $template = str_replace('.', DIRECTORY_SEPARATOR, $controller) . $depr . $template; - } elseif (false === strpos($template, $depr)) { - $template = str_replace('.', DIRECTORY_SEPARATOR, $controller) . $depr . $template; - } - } - } else { - $template = str_replace(['/', ':'], $depr, substr($template, 1)); - } - - return $path . ltrim($template, '/') . '.' . ltrim($this->config['view_suffix'], '.'); - } - - /** - * 配置模板引擎 - * @access private - * @param array $config 参数 - * @return void - */ - public function config(array $config): void - { - $this->template->config($config); - $this->config = array_merge($this->config, $config); - } - - /** - * 获取模板引擎配置 - * @access public - * @param string $name 参数名 - * @return void - */ - public function getConfig(string $name) - { - return $this->template->getConfig($name); - } - - public function __call($method, $params) - { - return call_user_func_array([$this->template, $method], $params); - } -} diff --git a/vendor/zoujingli/ip2region/.gitignore b/vendor/zoujingli/ip2region/.gitignore deleted file mode 100644 index 12a35faed..000000000 --- a/vendor/zoujingli/ip2region/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Created by .ignore support plugin (hsz.mobi) -/.idea diff --git a/vendor/zoujingli/ip2region/Ip2Region.php b/vendor/zoujingli/ip2region/Ip2Region.php deleted file mode 100644 index b16ebbc9a..000000000 --- a/vendor/zoujingli/ip2region/Ip2Region.php +++ /dev/null @@ -1,343 +0,0 @@ - - * @date 2015-10-29 - */ - -defined('INDEX_BLOCK_LENGTH') or define('INDEX_BLOCK_LENGTH', 12); -defined('TOTAL_HEADER_LENGTH') or define('TOTAL_HEADER_LENGTH', 8192); - -class Ip2Region -{ - /** - * db file handler - */ - private $dbFileHandler = null; - - /** - * header block info - */ - private $HeaderSip = null; - private $HeaderPtr = null; - private $headerLen = 0; - - /** - * super block index info - */ - private $firstIndexPtr = 0; - private $lastIndexPtr = 0; - private $totalBlocks = 0; - - /** - * for memory mode only - * the original db binary string - */ - private $dbBinStr = null; - private $dbFile = null; - - /** - * construct method - * - * @param string ip2regionFile - */ - public function __construct($ip2regionFile = null) - { - $this->dbFile = is_null($ip2regionFile) ? __DIR__ . '/ip2region.db' : $ip2regionFile; - } - - /** - * all the db binary string will be loaded into memory - * then search the memory only and this will a lot faster than disk base search - * @Note: - * invoke it once before put it to public invoke could make it thread safe - * - * @param string $ip - * @return array|null - * @throws Exception - */ - public function memorySearch($ip) - { - //check and load the binary string for the first time - if ($this->dbBinStr == null) { - $this->dbBinStr = file_get_contents($this->dbFile); - if ($this->dbBinStr == false) { - throw new Exception("Fail to open the db file {$this->dbFile}"); - } - $this->firstIndexPtr = self::getLong($this->dbBinStr, 0); - $this->lastIndexPtr = self::getLong($this->dbBinStr, 4); - $this->totalBlocks = ($this->lastIndexPtr - $this->firstIndexPtr) / INDEX_BLOCK_LENGTH + 1; - } - if (is_string($ip)) $ip = self::safeIp2long($ip); - //binary search to define the data - $l = 0; - $h = $this->totalBlocks; - $dataPtr = 0; - while ($l <= $h) { - $m = (($l + $h) >> 1); - $p = $this->firstIndexPtr + $m * INDEX_BLOCK_LENGTH; - $sip = self::getLong($this->dbBinStr, $p); - if ($ip < $sip) { - $h = $m - 1; - } else { - $eip = self::getLong($this->dbBinStr, $p + 4); - if ($ip > $eip) { - $l = $m + 1; - } else { - $dataPtr = self::getLong($this->dbBinStr, $p + 8); - break; - } - } - } - //not matched just stop it here - if ($dataPtr == 0) return null; - //get the data - $dataLen = (($dataPtr >> 24) & 0xFF); - $dataPtr = ($dataPtr & 0x00FFFFFF); - return array( - 'city_id' => self::getLong($this->dbBinStr, $dataPtr), - 'region' => substr($this->dbBinStr, $dataPtr + 4, $dataLen - 4), - ); - } - - /** - * get the data block through the specified ip address or long ip numeric with binary search algorithm - * - * @param string ip - * @return mixed Array or NULL for any error - * @throws Exception - */ - public function binarySearch($ip) - { - //check and conver the ip address - if (is_string($ip)) $ip = self::safeIp2long($ip); - if ($this->totalBlocks == 0) { - //check and open the original db file - if ($this->dbFileHandler == null) { - $this->dbFileHandler = fopen($this->dbFile, 'r'); - if ($this->dbFileHandler == false) { - throw new Exception("Fail to open the db file {$this->dbFile}"); - } - } - fseek($this->dbFileHandler, 0); - $superBlock = fread($this->dbFileHandler, 8); - $this->firstIndexPtr = self::getLong($superBlock, 0); - $this->lastIndexPtr = self::getLong($superBlock, 4); - $this->totalBlocks = ($this->lastIndexPtr - $this->firstIndexPtr) / INDEX_BLOCK_LENGTH + 1; - } - //binary search to define the data - $l = 0; - $h = $this->totalBlocks; - $dataPtr = 0; - while ($l <= $h) { - $m = (($l + $h) >> 1); - $p = $m * INDEX_BLOCK_LENGTH; - fseek($this->dbFileHandler, $this->firstIndexPtr + $p); - $buffer = fread($this->dbFileHandler, INDEX_BLOCK_LENGTH); - $sip = self::getLong($buffer, 0); - if ($ip < $sip) { - $h = $m - 1; - } else { - $eip = self::getLong($buffer, 4); - if ($ip > $eip) { - $l = $m + 1; - } else { - $dataPtr = self::getLong($buffer, 8); - break; - } - } - } - //not matched just stop it here - if ($dataPtr == 0) return null; - //get the data - $dataLen = (($dataPtr >> 24) & 0xFF); - $dataPtr = ($dataPtr & 0x00FFFFFF); - fseek($this->dbFileHandler, $dataPtr); - $data = fread($this->dbFileHandler, $dataLen); - return array( - 'city_id' => self::getLong($data, 0), - 'region' => substr($data, 4), - ); - } - - /** - * get the data block associated with the specified ip with b-tree search algorithm - * @Note: not thread safe - * - * @param string ip - * @return Mixed Array for NULL for any error - * @throws Exception - */ - public function btreeSearch($ip) - { - if (is_string($ip)) $ip = self::safeIp2long($ip); - //check and load the header - if ($this->HeaderSip == null) { - //check and open the original db file - if ($this->dbFileHandler == null) { - $this->dbFileHandler = fopen($this->dbFile, 'r'); - if ($this->dbFileHandler == false) { - throw new Exception("Fail to open the db file {$this->dbFile}"); - } - } - fseek($this->dbFileHandler, 8); - $buffer = fread($this->dbFileHandler, TOTAL_HEADER_LENGTH); - - //fill the header - $idx = 0; - $this->HeaderSip = array(); - $this->HeaderPtr = array(); - for ($i = 0; $i < TOTAL_HEADER_LENGTH; $i += 8) { - $startIp = self::getLong($buffer, $i); - $dataPtr = self::getLong($buffer, $i + 4); - if ($dataPtr == 0) break; - $this->HeaderSip[] = $startIp; - $this->HeaderPtr[] = $dataPtr; - $idx++; - } - $this->headerLen = $idx; - } - - //1. define the index block with the binary search - $l = 0; - $h = $this->headerLen; - $sptr = 0; - $eptr = 0; - while ($l <= $h) { - $m = (($l + $h) >> 1); - - //perfetc matched, just return it - if ($ip == $this->HeaderSip[$m]) { - if ($m > 0) { - $sptr = $this->HeaderPtr[$m - 1]; - $eptr = $this->HeaderPtr[$m]; - } else { - $sptr = $this->HeaderPtr[$m]; - $eptr = $this->HeaderPtr[$m + 1]; - } - - break; - } - - //less then the middle value - if ($ip < $this->HeaderSip[$m]) { - if ($m == 0) { - $sptr = $this->HeaderPtr[$m]; - $eptr = $this->HeaderPtr[$m + 1]; - break; - } elseif ($ip > $this->HeaderSip[$m - 1]) { - $sptr = $this->HeaderPtr[$m - 1]; - $eptr = $this->HeaderPtr[$m]; - break; - } - $h = $m - 1; - } else { - if ($m == $this->headerLen - 1) { - $sptr = $this->HeaderPtr[$m - 1]; - $eptr = $this->HeaderPtr[$m]; - break; - } elseif ($ip <= $this->HeaderSip[$m + 1]) { - $sptr = $this->HeaderPtr[$m]; - $eptr = $this->HeaderPtr[$m + 1]; - break; - } - $l = $m + 1; - } - } - - //match nothing just stop it - if ($sptr == 0) return null; - - //2. search the index blocks to define the data - $blockLen = $eptr - $sptr; - fseek($this->dbFileHandler, $sptr); - $index = fread($this->dbFileHandler, $blockLen + INDEX_BLOCK_LENGTH); - - $dataPtr = 0; - $l = 0; - $h = $blockLen / INDEX_BLOCK_LENGTH; - while ($l <= $h) { - $m = (($l + $h) >> 1); - $p = (int)($m * INDEX_BLOCK_LENGTH); - $sip = self::getLong($index, $p); - if ($ip < $sip) { - $h = $m - 1; - } else { - $eip = self::getLong($index, $p + 4); - if ($ip > $eip) { - $l = $m + 1; - } else { - $dataPtr = self::getLong($index, $p + 8); - break; - } - } - } - - //not matched - if ($dataPtr == 0) return null; - - //3. get the data - $dataLen = (($dataPtr >> 24) & 0xFF); - $dataPtr = ($dataPtr & 0x00FFFFFF); - - fseek($this->dbFileHandler, $dataPtr); - $data = fread($this->dbFileHandler, $dataLen); - return array( - 'city_id' => self::getLong($data, 0), - 'region' => substr($data, 4), - ); - } - - /** - * safe self::safeIp2long function - * - * @param string ip - * - * @return false|int|string - */ - public static function safeIp2long($ip) - { - $ip = ip2long($ip); - // convert signed int to unsigned int if on 32 bit operating system - if ($ip < 0 && PHP_INT_SIZE == 4) { - $ip = sprintf("%u", $ip); - } - return $ip; - } - - /** - * read a long from a byte buffer - * - * @param string b - * @param integer offset - * @return int|string - */ - public static function getLong($b, $offset) - { - $val = ( - (ord($b[$offset++])) | - (ord($b[$offset++]) << 8) | - (ord($b[$offset++]) << 16) | - (ord($b[$offset]) << 24) - ); - // convert signed int to unsigned int if on 32 bit operating system - if ($val < 0 && PHP_INT_SIZE == 4) { - $val = sprintf("%u", $val); - } - return $val; - } - - /** - * destruct method, resource destroy - */ - public function __destruct() - { - if ($this->dbFileHandler != null) { - fclose($this->dbFileHandler); - } - $this->dbBinStr = null; - $this->HeaderSip = null; - $this->HeaderPtr = null; - } -} \ No newline at end of file diff --git a/vendor/zoujingli/ip2region/LICENSE.md b/vendor/zoujingli/ip2region/LICENSE.md deleted file mode 100644 index 739ef00d8..000000000 --- a/vendor/zoujingli/ip2region/LICENSE.md +++ /dev/null @@ -1,225 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -========================================================================== -The following license applies to the ip2region library --------------------------------------------------------------------------- -Copyright (c) 2015 Lionsoul - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/zoujingli/ip2region/README.md b/vendor/zoujingli/ip2region/README.md deleted file mode 100644 index dba1aab3b..000000000 --- a/vendor/zoujingli/ip2region/README.md +++ /dev/null @@ -1,50 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/zoujingli/ip2region/v/stable)](https://packagist.org/packages/zoujingli/ip2region) -[![Total Downloads](https://poser.pugx.org/zoujingli/ip2region/downloads)](https://packagist.org/packages/zoujingli/ip2region) -[![Latest Unstable Version](https://poser.pugx.org/zoujingli/ip2region/v/unstable)](https://packagist.org/packages/zoujingli/ip2region) -[![License](https://poser.pugx.org/zoujingli/ip2region/license)](https://packagist.org/packages/zoujingli/ip2region) - - -本库基于 [ip2region](https://github.com/lionsoul2014/ip2region) ,简单整合方便使用`composer`来管理。 --- - -[ip2region](https://github.com/lionsoul2014/ip2region) - 最自由的ip地址查询库,ip到地区的映射库,提供Binary,B树和纯内存三种查询算法,妈妈再也不用担心我的ip地址定位。 - -### 1. 99.9%准确率,定时更新: - -数据聚合了一些知名ip到地名查询提供商的数据,这些是他们官方的的准确率,经测试着实比纯真啥的准确多了。
    -每次聚合一下数据需要1-2天,会不定时更新。 - -### 2. 标准化的数据格式: - -每条ip数据段都固定了格式:_城市Id|国家|区域|省份|城市|ISP_ - -只有中国的数据精确到了城市,其他国家只能定位到国家,后前的选项全部是0,已经包含了全部你能查到的大大小小的国家。 -(请忽略前面的城市Id,个人项目需求) - -### 3. 体积小: - -数据库文件ip2region.db只有1.5M - -### Composer 安装 - -``` -composer require zoujingli/ip2region -``` - -### ip2region 使用 -```php - -$ip2region = new Ip2Region(); - -$ip = '101.105.35.57'; - -$info = $ip2region->btreeSearch($ip); - -var_export($info, true); - -// array ( -// 'city_id' => 2163, -// 'region' => '中国|华南|广东省|深圳市|鹏博士', -// ) - -``` diff --git a/vendor/zoujingli/ip2region/composer.json b/vendor/zoujingli/ip2region/composer.json deleted file mode 100644 index a64046ed0..000000000 --- a/vendor/zoujingli/ip2region/composer.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "library", - "name": "zoujingli/ip2region", - "homepage": "https://github.com/zoujingli/Ip2Region", - "description": "Ip2Region for PHP", - "license": "Apache-2.0", - "authors": [ - { - "name": "Anyon", - "email": "zoujingli@qq.com", - "homepage": "http://ctolog.com" - } - ], - "keywords": [ - "Ip2Region" - ], - "require": { - "php": ">=5.3" - }, - "autoload": { - "classmap": [ - "Ip2Region.php" - ] - } -} diff --git a/vendor/zoujingli/ip2region/ip2region.db b/vendor/zoujingli/ip2region/ip2region.db deleted file mode 100644 index 6cf58efb2ebc43c42fcba5cfe92ad986a999bf5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7516319 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�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

    g~CG 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

    $3@8hg|)7JcV3M8sCK6vNq!fk*hz1cl?vocfxa! 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%0D9r9bM#Mk9*)3AbM!IG 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

    (Tc9*rLp>nE*n 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

    k7S=(VGLWIJeEI>;FOedG5SGw3>&OBR9V zs+cSXtv4boLF=j_r-0f_B@>`IsV0-4|0|`)82p^~S{Y@7mdzn!@bljr2mdI9DRLcXd)Jd2K;zs<#^C!u69?^IcNSv+KL)ZpsLx!o2dGU? zGSBMyWCGN_nw$&je;&EO>I=z5pnh&4Ye3_#B^QI1y_H-7KjbsKOUXJ=`{iUkXg@ZP zjiB~TJ$abrDkROBEe?khiIYLpW2^{=kzes06vfOl z=zCrA$s$mn#bi0?xkE&b27OMpf~*9!sUj1g^P-w;{C=o6k z8Z@>H*$!&oK{oz}^+P@lIQ4>;?Z*n$c@@b^&{PzN19#biHFKmEy4Q2R1+Fz7fOLY9M$=ZH*z+EEiO5z^ zKW*eYp!V;Q?}Ntk0U3kZxF69EXnTvvexN@4lLJ6=RYI16?j_2|p`d*_jEskeW!(rI zw5+=f2aVrdj)VUljdC3PwJu^Fz|RAj1dSm@#-M%bu2>me4?5mvkwWbgWDNds^GcQl z)l*~)>c@@5!T%p>6ptxah2v^DnFMWDij2WOH~BFR{{Cb%V*|}q4jETipI75!Y@d$h zIs;m7E?Exxy@`lSgWfBfA!G2@|8Y3@bzOsl|L%qHjHfE}nIhAmJ~QNQ(7xM4wu8pg zLB`;}Z*2k&{xzj*aq#EPL>&A*!z6sNt@k>7M(E$o#KDi@dOTskfpwD?lk=ZUmG{#;E$jC zaPXh~xgXzbW8Q*4WXnE`gFiPP!GC7;M{)4St_e;LEq(@BG-VS;)XUMIfHrvQF=(X7l8NX)x_jMd}oV%TP#_Dh3 zdu&^Njf0=_|Hi=|hkJ4G$Im{l$)NQfBaegXC&+KC{w*oAjWH?weEtUit@XJd2fytH z@ZZ_K_&pB3eJc+BTx-L@kN<5P{Nvgm@ONz4ck%bbw!05-@cZ|VIQaekC;UU3|BrC+ z>-sat|6lBJmP~@quN2t`I?kKOxZTdX4*XL)uKvok3$(5rG6p}kzv1A|>q9vB>(XHy z{CGaY!MFJw2Y)UcVGN+LrN|ikTz!FqKMwzngKz)8c&GK*h4;8KY*)`aqioQ+a>(wW zesakkpz-u1^FYtV^2uJH$C2J-0cc%?WFOEr_9crzeHN4bK>MXXIl$^AJd2-)Xyk#G-zxUzYX>tX@sd20cd1A?JeH%u|BKxsa>@jlY&$0&26AtOK=KPOborXC=7?)MhPN z4_dZ?+yoliX0j2~zKMJqG|p$pW>A|Ja;MdIk!jGnGURU1vU|wA;Gaj6`$6kHK)w%Z z^8s0KTBsM2eL&;sOBR9VyqN3wd6X`_}7yUgXZuN z@@Jse*&Zby1C8x*@)b}&uaY~hzKd)Jji-Y=2pYquD#lUrX zn~h{WXv_`dCeXg#Og;>1^9cDE=<(ulveD{IgSL`<18YD9{Y+(p?UZ|+0W|z$pN7DCFFUa z`5Z_J^*@Ld>gRk?=&}0(vJ}*&j1+2fAt}`6B62XO%@9&(+b<@Cw*3-vG-!J($g!Zg z9Y+e)uOWrTHlCbq^*Q8CR{x1=pmi-I>-0CvE+>V?b~`C_p58$U)mM;0^_AqEpk?nO zh2|$ouCn@Sat&x3*OEWA`rYI@(D>JrLi_z5Qs~^gm%I-&5BHPxpzUfPH-YX;H%v#b?V$PDLB0lB*X!g?tM4Myp!H_R-Jr4UA%6{O|KH?Z(7N`K z?Vvt8$b+CZpOS|_`|B`y1avNcL3V=Lbdg6v=fW}aIH>&z@*7Z}-;y!-=f&r6{DbZT zOUQwsaSkF&tzJeBw)zlqC}>^7$l;(dj3CQF*UyOD59;#(*$P@$8!1$On-uEj52Voi zze9cqYV#4<4mxK$$d5ty{GX5qLF@XI{3~d?{ze`G&Fx|G2&kVg$S*UiHu8PYKK+1;(6 zZR}4D0JSe62ZFY15IGq19Cip<^n*|@Ci{W<>`xA`dI?zy8gm&r7<9Z1A%}w2JB%y` z&0$221>Mh#BPW8^JBgeEnzyOs4A6GXB;#{K8#e$4Kj$TE*AH#G$R42cs3+MAG|t{+ z0jU2%vLEO*!~ROp>qRBxK=9j6mV)NFj2sMVKZJ}yZQOY{`1fB8Q#jkt0FJ|0wb(XkEw1BRjU5}HEpfNX*Y0ztK88Qa{+@+eW-T92>3y z2VJ||13377^dP<|92;&k+XCu8MaH1x%5A~Hzh?Ll4t{J8b-DdJJt3OUQg2vfI z9{hEj*_DXXw9!jKROw_g^?@Z0;2t{O4p}<$4b4 zzm04M?duLQ{-qtm|L@M|4N#jm$uwwgGh__9Cb;cvJ80gD$#T&4Mq~oCU#iKJ)mM>1 z@1b2y##VPb@Yg~=?scwvpna4>b_Z>5F4+S#o}OeLX#VrbUZ8dLCJR9GTu4@e+EkGf zLF1o9POgnZ2EkCTm{bv2PMfX4G8xfd4l*s+g11X}N5@(5`DzaTq7_v&3_ z3~J+cGN0fdN60>)`Rq#;f!}vzKhSvkljWf6Ohl$Z~Xlz~NanQO>kTLjc=`Qv!Xj^)dMWFdCCI?u(gdAw~ zL1ZbYpE7bVsGlL^P|&^`Mji$Ad5ny~uj>uw3e`1Z%?w->TTpZR)3dl zw|WP85VWpO$wQ$250f#dPxmIrPdc10%gH3@oJx@~=yeH~VGN*g=8}1!xy>gFK;tYV z&jjt4v&cT6?>*~F_5&^3pBxAp&meNR)kl!!pyNLxd9VQ$ohzADe#7wt%)bMaFx>W4GIf@3%GwaL_T}eusnq4V~ZP;D6J+6$js@4UfZI zId>QDL%S=y_alX;?}|EB(@zF(y~}T}Ys25ZD{9ndEB=80+3J76Ke;P>?)4zvc~=;7 z7yh-i`8N(-TlmbvaXhxVOY;BLWc1vp-1qVy)_7zx+#8I-uTF-0gE9EnWVnADhhLKn z_eJAz(7tn(IB4IwDm;-4_X*W_W758t9_L4N{Acc5DvH5>HY5wrOGSBE`fd%pSBlR! z@jW@cQ@jS1ivGgylH`!(Q27S;!(;-^dxL8lnY4O}Y=r-M%l)85>P zNuTGZqN5jt@gF1OQmdEYgHzFW-gE=p5d7j)_&%RY@S&;bs*Edg!|>s$=&?8O5%^`) zU*|K+m*e2;<@k?N;dmI0gXYRr;8&-j^d5J<8^gAY4fVcc5vX2F_Op6_axiGjL&$Qg zM`Rl2WZdA4>f^(*5!noC-$KS#ca=E!%L?Xjxe?qxej{qyFBa382s^YC+7nE`gQmH95TMk_H_~m)m@4<@aitk7cyR-3g7*H z4-P$a%-qX)25OT}#&FxOsBggUPleCd*W)nrb&lr-yfGEs^*YB-6aJK~>*w?X8fQLP z1R6sz89!@d{sq3(+Ha%H3t`N~WDTf&E!p^DD!Q^;_JAg`=q2liECn6UW#nk9SCC^t z=fXI$#_F|X9cVnu$s}mrQe+y`K10SYhc>R6@q^mrlLesh6p}@t^%j#utv-w_haS5) z_Q(WiUDad~{JO{({5jZyzhc||Dh~eG_$9vGj-?$q_p{ezZ`$ONcfO|AofJdhhe z>)J@h;Mes!p0;Bwga3wO=~wK#-{O$dypZ;O$9l0D#W zuef6Zep!Pe+o#6JkOLmdFLEF2B+zVQEAK40O-$uRz zYV$6694=x0PmnRFANM=XSqCZ&t?oW!%$=cqF4!&MYpP+l5Trxg)Rk#lsfP=r!DZxua8&`&3xXM4ja2Mg=@8<{O z;O}9E;Nb7^F2=#vFIg3pgZhlfB&ePu)1dpP3>go#^$x?qFMBBt8mIda+YaidCmDlp zGn_szTjlSmQe+G|7u@AI_%`J@`0a}Dk*lJY)6CB(eDtbl7ss%xU`{~wT(Sq~yz5Ek zf$lN#Rlhp4=}8_1EqjbS4qDdp<<-ljV~_`-n_} zj@1+yPY!i=9X>s@cQaTQ`0#V+>+yH;!TC|Z&gZj*nal-nn#%~Dw&fUm- z&JJ^UjEuqW_c{1n+mG{b@b&rl%~oH4*Vz88#TVOgek%?-FWeHg3ts2=Ns%$=y5W}M z;M?4W*V%cu90z~C+>YOAZSG=QK<8kFYz4JxBipUsL3YCYZrSH|k#W+NP2u40w^yx- z3PAVCg=8Plb+0d31do31&MPJdfZCLh13}lWL1ZQ9+FL~?K+9H>bFDs)Tq38RrDW3T zDRPa~*OHB(Wt+$tv@W+A-@q}X=OY{O`$8LcKMq>2tH(k8y9ONm^O^@Z7C`4hPcjd* zzw%YzWOXtR^m~-~WI1Trh)jac(-av){gYV(+-9~BRIes$pxtGc)sma6zL{(U_0vSg z583hXF#eQ{?dLf73=> zuiG)R69<1>?ZV+fJr{n1{R?VeOb&oAc-$``OW`Wc_cF2^)FvX6p#7dAV^ACSCJuTn z!liNW$7+Uo{&lzp_9XLQ{}JY&EV6nr*$;HT(VuL$dIxzB)c#ZQxYbXPmH)lU-zQX& z@m{;e?!#Ndb<(wQjJzM_Cqu@dYm57U@&74YA5vrt{xR`Gt|6e`ANljgBrChj@4(#7eMp#A{m3m?~bjCdV}Wt zbn*(2eH>n!Gb9FdQ?!uF+qhss&yg&+1uMXcikilD5hu5;&@b=Z=dqO(!&eh>N zsk-oZb@c03c^q+TSnrzf`dEY~)`ZvDs`2C+|9YcK;qjXAyQOX|pNm}UuRkd=&Rgr} z#O33l>zn&74*q)eJ-oo$6yo5ow`by@`E+OD;9o22gM+X4#lhd_pN)fG_MEl6k0SIR zkumstq#_*r?*$j*1FWAC9Q-x^hb#+vEQ`oW(BnuInE*YGRFgHJHnn6DbS$OFMyofG zTS1RC+sL$_p9~p;f2=%jZPXpKY%ZAxdJM`Zi$Kd3lck_#%aout8FDwMpFLzN==f|S z-vPCMmy8F7e%v4&{A;l1ujR8*Vc8rqz96)Br8xM<$FjB2P|&eGj2sO**DA>a&^Bg9Rg3h&LWNdYJ1@j5>j<`$m$zE{UZr(db7J!y5B>RAV54tZ|1bWOW zCgUqZdpDA~0`;Fmc86L$zaYy&*NTWt!c6)}kvl=xhh1bEG=~|o9n`*qj6rSODEb7A zGnecE8fQ;357a)N>;>wlH(3rEPefLN`l%u(T742Z1JutpnHRe91XfJtspDGAD?6rbo`{q82q-3Wm)iZ zNLGUStRfSjZLcPipgBpAY0!Spkb6OG_K}^SWxL3upnY+Sj6waoariYhpW|`x_cN6^ z_<62kU7+?U@@dd|pCPw``rJk~gVxnTZU?p5L8d|5l_6uRy9pdupk;H(Jkar(PZofd zEhLLTb6!mL1GVW-4gk%02{{n79|w`8pyQ{E917}Z7&#oYEhESz_;Z1bL2cZ%oWGzp zO=L5u-a>A-`VKM%KW`Hm8>oFTSq|Ekh#U(u; z_Dy6O)Fwmj2KBjz+zXnMePk=BeH+;h>ZgP3gaZe&&+8(;1hx5!JPMkhV`OY~Hwg!S z>`i9BfZs1<9%#M!WFOFY`jSPUS|9n?U_+CX-V_Jw>*ImhB*qTKyOqTis2?r>*txDRt9v z&=}kd9Q6ChZYBJKvv4Pf`PnLtfo{*zK+gL$Xg7#e%nSg)sf0Jsm26UX)l1cD$ zMaJOw^(^)^XxnqiJkWhhK3NX_cqS8|?W!hcgXVb-ITwEW8IOr%4QOB2l69bUEhkri z+N>lSt=>d7gSM-M{1VjvS7dB;m%zb~vl<8g8s-i7jdl+(8wdY87jxKmKjEC=zM?nT z2Xvp%mn;HZZ;Q!JP@69DORIlHmd*?9%g7k~bM5)~&9<%uIA~e75C?ycw1{iqEuqae zvKdrwAzQ89Mz(|Q-#W+`d_Off`0>}`;OmQdOb5NTlS3vz&k?H0B>2~e$Qabd-Aa4V zbFmzQl*t)vL+5pg!l3vDMveIQTIv z!{Hl#r^D6Zp#I%*{PwV{y8{Qk|HrMs!M9(DC#_8iueUjGz(MPE58&X}^&q~rV~44eBRD?ggE*`^Z*MpKav(R{wx(2c0_|WNdZ!bH)Q2TQNBR zbPX>dOF?~>kuhjp?rFyJOlTjG3D7oHlWD7G$X3v@ZR9~vn@`CYd_T`JZ{X*R><(&^ zOBPwZm@Eg4IUT^B$Flf6T zA=BXdC)>eq3)u-8XBQd6|8c+JUdDHZd2_q)H^Q8|H0pfQ(_rQr8FIoj$KWD@+mk()q$ZYE>!bN&{6g71^;2Uqi0*`JK}gu44R zzAvoH{f6ToG@cwX4>TwFWC5uELb3?_xk;9T#ukwyLG4G8qd{#d$g!Z~Y8+V!>Zgia z18TpPTnE~Z>&XqEHXF%$&^$Mgji5G7WDM%x{T2s*FR>p7|61+=9JDR&cbv}K*|&}$Trkd0PvBDaFtZzI!I&yX?bbqx1M9Mq5d6Z;f2hJ3OB zR4*ipK=(Gq(oBABXe0Cz%KT zqyIIKai^W{UHDh_c>OQt5A=B5n=Al5))$g}K=%)Q$@r)}rXSHzK1ZE%mcN_CwsxjoU99alLeq{ zFC_bbwzn@S^nLqhlS0d$Ll!|ze%8QZvK%zdh)jTvhibA0v|Y92640_s$vRN`TWrH``yuo5&GOy(j>imRhU`i@>UAGgQx*!p+tIR4j#`}P!Gzb^bPVFTW{F1+5}gg?D5yeHuqeCs;@ zK3=yCZ(bMv&)$Nk*ZKDnyA0mGF1$Cj1CQ5*_rALIoIC47n`|6rEaiQ+IXL+L!JUNX zS(|*k*ZT0j+}`+E>%)5m`{3}P{tws}2mc%)7h=iqbKhxZK6!)w-u=RUP~a((#T;1u3y%QoT7Y$KmP zbuD<>>KVL!eRv;o2Oh5v?_qZL@ST(Qgnf~Vm){e%F~Sq~gndzsC+`VkOW}?8g#V{B z;puy#k5=;kmkb`?6Mg)I>*L(Lya)K+@V%^AIOu)dt{a|xZ}`sG9K5@=$;D5(H~jw2 zsdz7|_r?pXUWkL=cW2_@=jtpxZS6C7d~f*vWVeBRx*;4h`FO#G@IH;g4beaTBh>#% z#^C$uw;{^DDAaSv%Rui5znsh(66)Q^3{N%kS4;NuQAW z6Ryc*5&X3}tE8A5VD%DmFwDFm>+B)qa8R2ODIcV94 z91ZHTf~*9!sUl}seI_{<8qBp#DE1 z+d=(zke#45UF1>Fvd75dRzE?;pk>`ueAeA)+n7uC10AdV$$G0dko&EE zfNZyV2l=JdzanF+yBRq6^I|633xA!PHMp9b4LSzqkaI!fnMc-u+SHPDpf=0Nq}5a8 z8mq4*H-L_ljbtNe*(UO7(6Y~vTS5JABVV!ltK@djvOCCD(6Vjh=T<*Lc7m4eB4bdW z?s|>~&~cSRb_X4Axn!Qz^T|G-W&4sNL2X8nb)aRJlSxpU6uA!6WCWG86ZE;6>dn}sLrJgUZ%8^Zr>Q+WG^@OadLga1w5k8$w-+x-LwUq6UL zg+8P7DGvU%(7)o~-<$V09DJKYIQVP+VI2H#TYrXsZf%a>;Ok%D;Metc9Q+vm7w@!s z7k<>*AH%=4`oHnx*5?Tv{IcKR;K%SS4t`xR4u1S@Bae?8!+Q>M@w|=Uwa|RLV55IN z*DpSLm0|9l)0 z`fS(Dc#YL-@x>d%y~nLMjQtsHmTZjbmxg)+*$C&}nN`w6##VQ?ZH$VRh4#f{oV0#Y zc>Tt3Kh}V6+8E|%Gyc%V@HyFs@yD$GI1UT>Y?pfiZ?rZ|_*QGP4R78UzQ?r%Pj8Gq z-@vscgMYj+I-uWG{{#pBJ7ov)*y`>+?p5xK#@BOB<>1}#3%_rYdta13{l4f|_hpr2 z$QT~Q-5Jyi?u%|nWu2WNV^AAch!40g{Ps!-ex9`-h?iQujAg<1Nw$Of>>%U8p-(pi zA8LIL!^`grzkeFxQ*3Ng@!8gX4nEiVpNB8FFYKd*_#)e`Tksm|rxsskW2?iH)=vsg z-xux`GkAPoxbJoMbA7%)?4#-UjQhi95@+H`tEcez{%|b0dd}l?!P-hgki{x{>`KMTJF2Y(%S2!FUCe0Kg39Q@}Nf7TEsLG4py4E~<~QTz$( z=SjTLmTkh{wDqQO@Y|Td|7PPqgoB@}!#Mcu`V0quE&UuXdLYz`AK=)2AoAanS%MFI zAoMv1FSU9ZUj9IMz82x&*LwvH{ypbc;t=K>ANfGo*Q4;!4@9R-&N|;!;E zgMUsj1_wXRu{aD|%{5^h4!(X3KK_Alt*FGoud525Xl*9pFlQ3$nv8>gkLYzc=rgBo z3J!h@Q*rR$t2qq^zuxKij0d8Aqj*hk<^$Xtgl$ZbG5F7+Uyp--ulOt+{5TUh_@T zgFgnI!=JY{FW}(k?M2oL`pj~Qj9;?$FXPP*gwOA{;9uLa|Hi>DdmIP9y(jQ*Y;51+ zv9)mza_&DEeoLq~4rgxWT6#KuhSdvj@byBx^ug%dd-?A4GJK}BxgLk&PkC)^77o5m z0*AG)W}oG%@!1bXM<3z-e-56sdJ2yp4A&F4DJlnzIU*DA|L)~=Br+}vbytj+Zi>#I z&tpm%e)*>GnnpPe>sIq!{SjWdDg3Te6`t4>-S=Vk>8={TYg3q?Bo6+2AyRnbCjS|E z*Mx&V2cO!+{|7gP&n(NI4P!`=MO#C?n5+klxq*yZLf!o*p0+V(@YYS?+TMn@Zwl9( z4!m=de=X5<;qj(uLLzIBbDOyj+3a7xa{2iAo5QvGg3Wx_cc`bxxYFuXcw%$7wpVYC zvO%xW<&fpDI47$tBICKC?&je&*1i_6+Zr53 zDg0^M_GfVLzeVya4tibA{Q}>)Is9J9F8qzn;WrcC#NV>^zry$1JRHE`g{-Vg-S6;L ztGD6rY!1KM_%8l_7?1k^Z?}2}e#qwbFy3j)cH!Au!rbO;VV`aZW6Q@+-x6JN3a<~G zffrhvGx1VuQ-)u-B?`Y^iC?xQY~$s4`IfM+BfN4;_+7#(eBzd9qJE!c5US)1uN_}3(7;NZtI6Hjajzm-{y-(X|A5eGlFv+)&M!f&{&#FI9j6u!pR zyB1$(?bqY=TcVHjx_Sftu(f{#f5O^4i8tEVn(*yb-+{lrCHxM~PCRY(4E~n&^DDe{ zOZaWjHvD~S^8wzzCH(eH2Yzr%_#K%~@k7?;Fy3kXbm8$9`%TjS&(fL4M^UA1^oD>i ziUSG?u8D$zg2IdoC};{nVa5eqMwoF)TxLK;!4(v>dqf3C9r#8B6*NImP|!p{LAGur z5H?BJk;Oz=0t85uCCFCadG3AxIKSuca_iQuwW~YbRioKnqr+=KV>~fBeCCa+1RS>T`H7o|7h1gtPmK=e>NFmYj@G`JafWkaIH!#XpA%-|?Z!ki^qFUS zJjd!0o){BeYm#_sOt=p~8jr{DJrCBWdoLt#mQ(ab1aLO|*GUq|b?A4DE67pR4}~ zhpn7*+@J9)t$r2WVPfc~BmSV(AHu;uKlEW7d_Vuh`&zvpp0IinA2%`TuJg=?IQaG- z;rUiCz+nsAC%h>RC>+DJ zQ#Rhx+FXRg&S{yg-NpDNR=*U#Y+5va8uPsz2j5RS{Az2{0f$A?7(>TtQ8_%kE%TxZ zGKM#{WnSj4!E>yi2nXL!7rd)2S2rAd{YJd|wCK9&^w|Udi?#VH4!+IJ_$@YuTXFEq zbsOGuTJ*lI@p|ER+H&26|IPZj8;3{#!~2WgIQV(>!T(|X--Cm1b1x2l{oFT=&&sAn zuZ_vLG)czb=X*bO(0WLcG5GbCi$l2n#QR!5{qO-c&Vl%IRv&~9wmzT7!7s}TIQa1l z!4p_nGdWET(N zE%8=XZ;iK^9_`7@?C9F!eXZUPA7JeV;?LT=p2G)Oo56U(+9dIzR(};AW@8wRzd1d+ zQO_8C3m-8(`sV(OKf955zD-+zPq6w#e2Vom6<=WUEyhc%&0>6owJDt*<$#`H%8kpo zPP0DO;OlML4frM-!)AP|O}h=Rv^G2OTI>HX4tnOP`yB`W4AUccY}2}LSoUwi-#wFf z{7rbD<-Wzg4ezzxjHvuiGkm>*tOVUVbf-KK>O0A5P`!qXt?rWe&>7+U_UeqNh5)X%#852%lBqPnV>%Fk}>%AfbUa>X?$Jb@(zc0rJ^bhU1A5>j30s34eNycMC-HpRPoZ+8q z<35@ZbqBTSK~BjJZKjej_|IetW<-UP!WfFkX`p+;Oea%TPm|@KF;tMXRzFN0wfZqK zwz``TSt(pwC#^ zlZmfF`y^TWO=y3Z%=tFdBl00oKM#|At=^9u0P1HTISABdFqu^wrp+e1gWB{UD^G;_ zPO=JA-$Pb|rmZ25#-YtIG6vP1o5}t*Gh9z5@zl)l9z2bg&kUbASKwP`MqS779pG&^ zXuY}Zcx-j|9j`Cnh1c;2&;2gC|8ZUi^YFxXq0i)ZQ3A?7%*aZTBS5c}BguTL7m$UZ zb8HbATiyNpyQmSU-k8jR>JKwoMPveepJbuci^vqH|1=p}-M#W%)DG0XJ(&yYGmlJI zJxS(+`Y#}d4GZmulW~4%?+S46&-59O!@#y&&wq?h{4QLpe}co5HGE&?QylK@$!BGg zaPXg}O~ya7em=*c{ax-{Hw6d3?@h(OV66JPz?V4qX$x_fGMe^9IQY-OzQSS2GqnF2 z|Hj&Xi-Yc!>So|Gt^e zcJyk!%qv_ro-;cfj}hK;cKB?n7oIyid=8d}CuWEJB#Doh9ew-_-!mME=g$t$u`0j| zXNS+bityCzaP5)COK00Nckr^=QIky>&D=^H{Qj^CUp+fq=dZ!n&-V8cbQ|#U*?+cnG_mT^v)HXCm@C)&C#vzcp;Uo|IuCVVyCVNO`C zj(CpMBRnxDT=OS!@PF6)H~xzCITU|wPW0lPoV#Afhs_D=YB)Y(PI#>xiN8N5{FeCx z{6p*KBRqdjICmA`h1R|Zzjkgo*L9l9Z&Bxl-#&N7q3)fWSFgi!=7#x3c-OgMoZaxA zHf=9FZ*Eu*58#i@jZW&owO@aHz}&De4a5h{4ZlYoj1Qr%-x>wRop_VLf-oubUUHovz1oY}yF_%e?Tu@~`;K^TM%w z3x4aou>ahKga6w>PaOPy)eG-q{rnw=y+io?`5*W_HvW6@T)>!?TV_+2iG$xRb@5YD;XPMF9Qr-LB%E7^Z=OMzu?{8gFe8)BA_u&R)6=;3#A*(^_p@uwa z^|FC)8lZrAx zKQ)s~Sv^h0;PjN2aVG`$hH8@w=tOo+Gn!K7}TeG2nWA?AI8B? z`%l_~?wy-W=78GpLKG!HeJ06#s~3Ib<4TW2d!~eEtUhICrOKsXR9A>KhN*uPzSK*tiz8T*_`yH9*yPt4q zyCbuOE62f4TY>MeF;wEva|iwG#H+1dgV)*^4&z5{49D;jsptju8ROu`@6vo8o(_Mf zXn;3Lhrd%a#+#(WceI+~&8*%W&%*Whj%*yh*1hH~zz12I!T6AL_&v^x_!O&8#lNun zmw1WQ7vrVr=))acx0m6o)8RL3Yw-2y@VAl;_>VU2MjS5YzLahgzTN6O@Jj1*C%z{g z?$NXtueJJNJht|3KFc^iEN@f1*?j+-ao2o)lnMSf#pI;3=KJ5uO(qNBl({aeh)ltZ zMJ_8%#?aH>4+lSIepn~x;w|Qfb=wkeH$U8qsXcy$wZ9Svzbseb@7Q=o;bW}*dw9Op z3-Afn=R_QC)V;Yr!9jnka-ZT;t^NfL{(e4R;^4oxUx z8D4Gu)Zp>_ur1v8eE$D^nC}TZ{@(v4*SQ7k8w;X6JNPYRHXbhsZCo**y%&e;fy?o0 zi^DZcCp^dM5#FUZoM&#p!CwP+#k*PkM*P;|aQ$!_4*tB<69<0{(+j_&*q_JTop|r! za8B-1%=xxBeD8>i!MFbx-Z#`;Km0Lk-ya`f^?^9}bLo@x1OB{C#!p%OY3iUplVlA3 zGq-2(XKfju!@>762!FoVpRe2tIQV55g1=<-mvQj*1P(gCxnyy)|IIM317t1eZ=Hw9 zqoDU_$H*A`GQNe6urZ9p-?4Q&3LjG(K7)D>A6p!LJ2?)|5B<0T9Q?KzkAuIK{urNa z^*MN|IK1Yj@dZ{d#+MX__bE&9WyRtB%W@q2*nYrQSo>1E%-XEP!7uMB)-7lZNiqgq zGq}|_`1eF>ilY>$&omi>f8Vqg2S2ZM#ZfM(pFA=F{(ETTQP6T7Bjfcpo(=dW>why| zZuJTr{Mddjjxs^pv@Y2Q{B;7^1oS%ClxzhWPiyiL&}-bKWINEb?a7{?HoeH(t$qiY z+8X*ylX0aj*G_y_ad@x28?Uml?O_a{_Xv&2(?Hh}r;|-U?^BwRXMozANuCAzjQVWy zXRH50ZUwd9M#ffmdyAtC&^}g&JO$KGL$U-k{>9`H(C6Dr$z`B6%gL3XHmk_hpzF6a zh9eG5G7Q-*NE!!x0?(v2zp${~q%g9$Oo? zkoOl0!}UNG4*t7s**N&`4_ttQ|J>t39DKb6-fCgkuUg~n7KZt@$2%w5JkUc?vGwnsjR(E-LU+bqIK44)u?grxE_u(h;rx%7}?HPR7!mu9>$44v- z=a!N9JJx0t4u0Bq@v#fTXL{rC3D$lhK51e2EO9bk$k_Bgr3jy9%Q7AR#`^gdpRq7} zZZH#{Wo>5TpzqhYIe5y}ReE8R0Xi<~kXfMXy=<}-=vZh?#>F<~g*foGh9Q-*s4}WA)wEP3s`J;FujKL)rMSX{c z_Wj5NXniKh7!GDJhF5X$>-jbO^+jRd9)^Rj568i`e**`<|NjSn+uHmW2j6A{o^Ndm z@Cl2eNgCTke73FIIe4+HhlPuxu|I}!jwACy$7}%^Z?xszgoEGKn{n{lZVL{69sY#> zZ1rF8tybT*D5?+I9~zLQ+e4c&ay4jwSVOJ_JzH%Z8C%`$!1r4}2k=@O^I;tPx#f2p z{CJMAoQ4;o_mb7mjrcIJD`1f&_P`}*jWDI@` z?eLsXcM%SLJ#@hnCHD8PlBi8Gv~Nqc1FeVlWc-TtGZY7%6Wpsf_|JP^!}CLXSAc(9 z623<|0f+zeT!MFJwpJMB9D*i=DI5xk;3roW1 zct!X$Ycn06VbjjU=h_(N;VBzi8vni|d~abvNt6RR9wRaaKi}e#=+}i|Y`>90pWp5$ zGZ%$=T`~rLZBs%&@ZcL6SrHk-kylvu#cUVw`UD~ad=PE8gI8ayzgj_cUTL{|I{Y1EDW5GY4Sx%3jAt#4wsfq+X9zgd=b3Kq z0=(VQ@LQ+$c+S#rj7NCSrD47G!gH5~>%%;}@6xc(_rsyTepmGf4*pnp6o>!myP%KZ z1FSv}2mc!SB>uA16FB(x$)(YF(BB9?CMSUUpGZyt9j8;tLQtC`@;lIcXOT-lpNB6c z%Rp^bl0x-Wq)&W$1-$4Ed>VG4-1=QvzvK%zF3Q|=4H{+t8Nul7sb=*(K( zhb;}C4Gv!#m4e=Xm67G3_sbPz4E`MT1`hsO^gm0Z6zKg_nvB6;Z@h`a9`*kg{`S)F zcgg?a;QJYYgFiM$;`vL%F;#$%r+==)-N*Q(rQ!8=GCs}f)A1QrpNXez-$>)7OT%$p zhOZCH?l#~*E)AcHZp6V~b8f=Hk7qMpZtW}ZYOB}a@zQX7xn&$L%fjzO8sldyi_Wa% zGnq4&MTxVPMI9?MFHMqhmesTI&er}q93HI9aP&+-2dsk%tdh z7PiYk{H0}Kxn9QM^f&oCX#$6E9>Y`1!gfjH)yu;Aufc1Vh1c}Mcx-jIoa@--VcL7~ z`N1v zX7%Ry*;YRX&$4RmcU%$9nb+W*tW9V9I%{)14u0Ak9Q@}n z5q`spa6ascce6G(;%C zj^%G#WC}EfG+7Q>_6o8Zbgru*V^BZtWjtYHPU4_*yZbjjbVYa{@hU#d+6-r$kjvjk zl4Shmig2C$7XFTH-%8J}YPPsP8mHecf4&y$5X_-TvquWWh0X6&GP9vOqyt(%6=u=X?Ylr2{pFSU7< z;h@(kw-R5qBAl;Qvra(uBsmoH-sDv>20w;1_`0yXZau!)>RZ?@zl3@X8E;(?&LP|I z?JJ^f{N~Q>z<1lURXF(b%pSbj#$SW)UlBgLK7iNSx;l&>wPinsAGi7m9Q-~Rj`eZz1^)$Y?G<>$O1PA|}ilsRC z{b3mn{(awa{0D2l0*7C>a_v`&gFlCq;pt{0#dJdY~fzCQz%kV~J;XO{{vM6y{ng1J5lFSGFouz=h|GP|6{7kDi!@>WJra2D7Dl^Y>XW^iGExNOrFPzRZD3fFg zCU9@JG#Q^$7XGGlE}muWv+-6ouhvWpx({TMjN6p?XJNRucspy;9v@)i8Hhh)<9W7> zzuT7idjLjc0`%;XBpF-XJ%%77=~yJA5b4>bu#C}(0@cGpbz&mOp+9 z?BJOu?sMv(eKJkP;Me~Y9Q?jI6)&_g6qQ9;pgyz79N0sj5gCJ?hv>e-r`tOJ28W52 znOW{z#x^5tmn0d3*14OB&$jW;!Bb_?f=d2|p2or7k9s~1ei^^VOUlA?Ll)ypte>U$ zGOI7g!7s}Xc&SZWhOgzg(0wD<;jn%W-}_yUgRgJE%gg*TA6*5$H5^lJ8xDTV+i@7n z--6u^e2>-l;;^fd?_Tc1!MCr*LF>xZ;I(WUo-N`IEUYmDO95Z9vCh zTe2Of&-UaMp!Qdi9YEvkNR9>dIgZQ+&8vW%0NNH4$w{DNWHLDe)P5#88+0G?Ib;gd zf0`@-{jGm7xeU~PIavzor;J>0^$p}E&^R}fc?nb3pq*M0N$O z+iqlcSjs){dyqGSj^A6zp712+s9xkfpnmQpb3yAWj~rn2f#lPm<$8u31X}-t$+4hm z$C3G0Pf*CJjLWPt1l-@LF=K6Ty6C=m(w(g8J`9b_Y${gUq#h9{G^fA13>Pwo5e}Aw2jhaoEzG^ zJp2JWe?Ex!W#85JeEQ+wUymMPoxqJ8o00snP>;w2Xg^PqvDICF>Y(;XG6sF8$UTmO z>h1{~vUX;+aszPi^?`W8#*oB^u8bCa#rJJq#o?x%nOC{j@DWxYiRZ5j*Utrb%Iay( zU9kL{%$5~oC4Bl#=EXb7Dy#1yW9a>LW=l68FAZ&68D73JT-#UR)oj;q7-tP0uZ(JH z>RjO5Dz2GVg)!H~>#qveDh=>cSA}cWKjMv6h4tAOKi%3lSrz4g)=5Ohp!11qii2P0 zXRM0yL9eF;WD2z1(`2dD%gEKB^|pqLt?tfT6(yRj^4mR0ra;%yX)?CDYmT3_D%@ZC zY#j7FWp@q^I%eIuc-E?Lud{5t)vEA%-5S4aRWxL0<|XcOyxpp3;!b{#+#dhas&L)% zXZ#9VmMifNtHQNJM?A;s5f01sy4(eaZhLs2d&8=z{O@78D##cXa{Rh~;P=@&ynhwP z`zrswAe+nqT`NXp0<_O3$)TYA^Hp*f=rv_HIRdoaMw0oU`)n7GDbTqtO_qY%l#%72 z^Iip6ZS@+m7IdCDOvX^PlYKRpv4O^%P3C|f8<_xIdnd`1)zf4-sC@;w6|@g*BP&7Y zkey^TX#6!~4F1|U4}U1s-NQKe*WZ6KU(k6qB6C5n#d+ia&@n!cOn@H`8H1MB{R{6K z+Pi-EfK}l-Y9Ri!ZHs5{muZldyT-us!1G?^NOUCt9hhy-h)lnAc{^Z$Y4rseXWG-l(=aC7}ev%~fL2U}iLKyYE zyR?X$0Xjd=BvYVmnkHlL*G2W|AN2k-B6C6Q^T@uSXU+5@2Y{|22a*ZUK9D3wfVSgE zat!EP@gA8E+KvTeA!xouWD5LwfLs8&zj`rQ0(yVFm@EbLSw@zF##uqeFoW-cx(0aj z(7!ti2fy9V#?Q0*`8fFfGYbd5UuEO1Sm(uT_ttp3)&BL!wa2dt>(gD0cUT==IFoy@ zcf_x;X|Kh>e@+5uz!|$TTQw!m0bN&|OJ;%2QQ2ey)K8L}0qSQaS!(q%vK(|SsvzU8Hm`0> z3pzHFWZd1By$AK1SNn5sl8nJWcjFekr;WK6-g|X85BI_E3;Tn+9|xW5TrLjUPh1}U zSlEADfBf;VKe#7w@Yh`faPY4?1Mz2VJwJyJvS|mej*jPtF`OWUmNzDaU!Mi|B<8F4 z-IMX@R{sVEJ@4Cni_frm&BW)2<#pe)?4W%wNj6%r+Mo9tlg&W;VRJGe*E%O-=)8-+ z0Tts5ZFv{rC1HEH#jB&EOTs!iM#kXZZ!X2bk9ipmx^{BQ@lrbvlrgWBVINMCDNvg< z8H0blUWJ2ytz3(a1Ke5G5F5`Hsf0uo1Xjp6JBoZD{!d! ziff*q@pyGO2f8&Jk88qw8{m!Bgk@=rH(3*2ubbj$tnsf+?o7Pd8h>ta&GB=r{keG7 zny^l?*F-6(;{1~)WAN+b0=!kIyVm$6Yr=kVDc)vH*vH!9?X2D&?_~XV#=-w~;5r=q zdGC50{54??4*pyb;Ww`F`+&P?O_TublSwk}ZqxRl{+G~al1zd2;WQcFZ1cSZ2S49i zaq!#vHoRwO?|R|4Tm26F&NbmYa2MWkZD@bdT7C<>HXI`tbU08&X}n}@IOi|Mms|Y@9Q^ClinUQA&^m8S#^C!b#ldg)GJL)5dmHfbwc&NM0*}{5 zFYe+qcDIi6#=0!N&6p9N$J z{60XIs?O_j8Cec`e^f!nR(BEJ#g^*^yz9E~S$a3T`?_e}_Z(|I@TaZKGdTFqOP|HT zZ=>h%LAFi?<3rYkbMK4zOSXPq#uL^)i4R>D*7>V={<`q}u>yQjSY9_7|6*O()?cz* zpx2Q!8G~Oxg{(JN$8&a)WDNd#pa`F4{Y=Ma*mj(Wr`CnfMbmiky0G6a#6kOvTZETb zeK8Jx8JFM?ULWzbR$qt1T)ob&$IETIRN%4A*RAJuXMO0W>H4S;^!acR88=%WJ{xb2 zgCE0LIQV1gZ2Y|SVSS#zK1yV*53i4841V9v##>qct?_p2ZU4jRs^MjbVM};SX&L+vQ<=fb}^LpJC&fiO;q% z%)x)Oem3IeRmRn}$?UTyUnJhndFCO+fZ6t-7gywRqx4>ZP4+Z5Kr>G&C& z!g@Fp&$4>4x9DDXgDc@Di&p z##dW?4IW$FZRXl|bF}nR&Q}falQ&1dea`PLPr+g1WatQ^En*+w1aTSEMlC4@gbX||9ytPh$l8jqc-rFQgU-t{tDA_ucQhxhHjr`p6!O> zF#nMZJ|o3bp^Zz^Uva3{CF3Qu*Rn6gmsy+T_=?TZwHx@GW+@K-UQA{9N*lu}9DM() zaqweXgTto{SeCW8n9P{hk>J~`$H6b-27J@z=)I|oVKWYswH~(M<)CRR$e*qKFF5%1 zxfKWB&o;brGxzpl+MW3B&EfX~RXF%{vIpO5ZT8{Sp#E#f6Kqqh+ZYGGE!-CNnJr;k zH^3Whv3+7ey=CGE3u@ME|D2ft1(#KG5F;NX|NB@TYuU4&n3ZCc^rm#Z}nqqHAh zg16Zc_L;W$jn@7qyt}pUf&X<&SZ_Duy+F%#I|+WB+<^<#?M2iUX&@j+iuudw~36c^eb%E;LIbU(5G{}hg+#`tAFMR`SR_sj8iKSj-VbFOHQ=U6?$yZsb? zyKy6)_{o3A&n59!e+u7=ehr7!4LPsAj(=$NkMQx<{$o64^)$ZJ`do%X_)Zl5gSB6Q zueSDUaPYq$S&M_8*E+n~+SK5&wQ=R#v!y&NKeBp0KFQioE{_tR{*z=3epx=l%dLF{ zzO_8+v77a|4To2XGPB%v9Q=CNQ69NpLp_6x4_f_Dd6aWF^b?WsQJe2EJhuK_1->QCa}`*{j~&gz5kgw>Py&~4GDyBYJV`2X1${)aI)^Xi9>uxUr)`POFvKFQil#;4e{Q}IIUvj|UF zJ&iBe9(`S(YMR$n^y(C z)#}^uO6zAQzTfHx@LH=M#*f-^9m8Ym$L)x2&e-AC+b!g+pzU}Y+1u)U$Tvaz{9EK& ztFI&1!&fZV1~Rs~tFt4@0qv6!IRms`%_QeqeI8i?+V>WdYpuSHTn}o$fozc(`e{kt z2Y-Gvs2S9BeB%cKBpHGobgO0Cf$nl^td`x}<-#wRc(Wm4j(6p1uDOR6KegSI# zC0S_oB61pNzSGHXVB@nH=Y30-fabfH+z*=e0C^D9{~_{ss~;hcg4!P=kAv3p2~wyY zlS2Kwy7)<9zOMd`=ntU!$z%!m`I3u4=g%eNW~*-@#ZLCUpU861epo>YomYP*h5Gr0 zjKR;h!H&p*#-Bm90WDWsvZK|nA%(Wxwd8G}b=#8^nzk2tKj^#1xuj4(d8APN0n+^; zEMo?FHKh19KF=f12eru}h4zzdQs|s>0oe*PuhwK+ z(6pD4e+Er^1u1mAUr7p$;VQBtsLeH`@avqs7Sv}avNNd7b)?X=*OU9Let?WY^K}jR z|5L*_ZzqM$^LLPUTfH|a)V>cX)aTzx5A*#8E_QS5-$M#5`@Q6S&|*(!&i$l#a8Ksd zxuke+Pv$jwq*%Epv-1O_(C;xHBp-qn?4J*l{ovHSnO8qT_E()gA19xb)8;8ssQxth z40PR_dBd}$cnyD!90Y1Vn0y|zu3jLA!1o*KT=OCsgU0Xv$o>FFH`M8zK?-g6I^;8; zb@D7Z7)thLUiv&a1b*F{dBuyQQ2#HHuYuOv>*O%d_8m@60=1b;P672fmHYyt0K;tPUOF;cECWV%92`Mz5 zrKC`sWu(ylwwx3?xBNf~U3aY@*Mg>9M+)`1o)o?JaXu%11og9#+yvV9Hj`UG*E~Ow zLg%P*QfRwWkf$^X+p8gYD)bqharqy~2S9BeBp(7jyYON15zrVOC56s!kCEb$=Q3LN zCxz;dlcM(7j5be@1K`5vGA8I zBiDoW?G0q5)pwG+LB~ZEnR!u|wl4V(P@ngZa!!+y;Er4gX{?!XD_lhsC^$Y7t~K4*%!2*^dp}D z?LPxZq542_FlY?VlS4q;`bF{;s}CiG>aVH>S`V+0Li2r{{EyY&B;T_7+vEt)wjN0? z_)BPCOqPJ=yOT2iRZIz(TD=7+)V?K|(?6VhBeFYayYwIvR!@?{ zK=T?-)>{2A8H3up$9F{MfcD{Y$!yT;$OYuZR&Pb-SUn;~fchLs=3BjhOo5g+O$zlh zpDYHoUr1J1{bzEk)whwc)!h>~s2?|g*A!4c8Ds*q&XZ)?>hsBJtJjcjptUE5fY#xQ z{)-mXOl}%m(YJVx&!Rj5!`#|HlpUeZbd4TK-nzkRA zdLh))WTzqFb+a?M5cJHlMPzJs_u`JIC>h#+MIQQhICg5uF|UOBd!*1c;rpcczYTT% z^Z_Y!9W|B|s*fXu>K~H%@X&@jmlu$YhlV~+BQFMRqgLcyR{t9*RKJ@PIv#tIeL&0m zcT%X$Kgjz*ZF0#x@au$p0MzC|@=?&f_Za!O)t?}R>I2BPK-0cWegr!9^T`6Mk0-wX z?I&N7^FYUMicEv1olhzQfRp{ z$>KLdn}y^?P@7F;^S46%EK;a`HhDg1Y+0oH(E2Ao_$VyzSh4^#p7Es6v>%i6K=VzJ zcjkvScaclRhc-(|q5hYVLenlM*MRz5ORfW5yRIkS`8d=^kspDM*?h9V>f_0eLGztJ zPPFIq@Y9mtNL`ZeUWR_{c1w)%DC z&7ghb7P7~uq5WUT2SLa9L*(JlLj8BreICvs8RY4p*WV`O-@XX-yGfyXZ}MKy815s5 zUc2unh1%qjd7w5AkV5;+gQU=P<3r@i`Jv4!QfSPp$u;oyzRdP($#pPyU*_fO$&H|O zwTUbTz1OH9E3Lkh+yi?5xR9tFLZJVqV|9q%Vd_k9>c1}QZDI;7CH$Rx!V zFJ)X(mlXOuq#h}%_GMmk68Q&cS)JMDWU?Xjtj_FkDk=2-{g0&3_#2VufY!;mq|iD% zkIb@qHYwEp0#aysFC>LNi)f)5Xq&bqh0f;}kr#vdY()w!duvkY+P2l7av z{vRM80`>neDb)WzNug=~MG76WeMzCuTl$eg>*^6wXugk<{Xx?{P73w^1UbO!14*Ir zKS>I$|EEZyefw!rsQ+h3p?;nvp9A$jh!h&zU{a{h=SiVHUm%6{hasd;`xnWVL1Rvk zZ-V-Ki~K*(`uQIz^x4Hbq)?ktXS*KW%-Q!9CS=gA%#9ynMw-%z2FN{==JwYQfT~zq|ovfkw42>C%=$c3qqT0 z@?y}kv?5!B&LNkOLj7Dy3LUd;$ZJ4jzLx9+x_0eM=79FGh!k44T}Yw!H;~<|ej_Q= z{wDGkP@7xH+d#|Slk8>n+ex8qaR({1&hI4e22I;rHPHI$L;l0+_mD#C|6Wq4{e9&9 zp#3?Q>%`pc@Q}iwBBANh5CGr6dK#>q|mu{ z7%6m49!?6)>kV=wsL%f+|0k!PcSxc3qe!9l?~+2t&S-Kh==?m6EC8Li$CDp}#x{ZM zv@lHDnY<3PeXl2l_JJI70I2;y@tp-l!Uw4UpbLhUn2p=GH{3T>l$q|o|5i4@w_^+}=mHX#21n)YP!6i}ZHNuk%x zQ&rQySwDXyg|<;6vN33Vo<<7wc{hl~@=(X}( zQs}e&^GKm-&nJbJD~lAWXOlvGUO)=1kV5T;kT0vwvL{HP zHc3*b|9_K1t^O+c2IzeIA5y5FH%X!W=PmMopg!Lr-ve!<_er5;{D2$>8s~@Pr=Wf& zkwVA*Wb!l6cs?hE_SGq*(D5~u6zcyAQmCIV$s*AD|BC#^>fe$c>N9YmHZw_~b@d%7 zG`3k}3e;zsoDVwQzbA$23rL}JV=*Z-{)ME_I$T5wwJ#xsw&`MW320p{C6~!r-sPmw z*nS{|_SF@n(7B?NTm>5EYEtOjyM|l~n%6o~Ot0o|I;7C`@CH(-&5xwem^YF_%eaZ$ z3~IB56q?shf3DKza4Qs|nbk`!95o#Y-+pLB zpmnmJJOFBQkURvMww4syCl8Y`Xn%07lJB-v`uD%CG2Wyye3zps-mKCuqic?zQ|bG3 z=i*tFe!IAAyp6SKi(h7KF2}F1KCi?(REF=jbi{M4&aY47uGYRA-rf4_f!}QPTkxKh zk^f#zFTA%++Xug=(r*iQFP>}D=HU<7cpk?4T0i~p$E;0%d_ZOR&dfl3i1qm*o~ZQu zhD+i@EB!v{Ud7+Ee%`|0vG$|zu~r|4=Ue{;IOy{PHy)o*>Gydz5uarB$@rAY@SU!y zc%k)EgiovV*II5mKEvA2#AjRobMTb4Pva%lW--3Z#=jgdwR#!8-r8@#f3)#z#5Yy? z{mpI0w_5vcc%{v2CthXK?x~DUR9E`_EhdHbD_4W>w=o~UV{7kr@^|N*(Z}U{Px6mD zqxzudsy84{0X>9ogoW_f- z%|aZ`8pYTa;ozU`UV=ZcEA;>1F21w3D~#!;ozrz1b=K-wC{cHJKZ0D(%L+Q zC#+2p&)*f@qkBIV;E+?pci_k4AMc7DsmVOgO~5Boug$o?eS(9pe~M4q72WYN(@w@e z+ZC;Sjqk>Pjzi%A*4q>ue0?eoSG=5&<-WjS{{g1`a#ysxFtquB6soTvW2?I&{HtA2 zUM>B9jl*S!GMc$*`1D=TyN8(9H~0+eeowd{Yc@W2SM*^`=DBVj z4!)kk!H+YIm+T7PdtZz%*%j_fzZ3_5U%_QK=$`y;IljW$l;TjM=Q5Pxu%#c{bmgun zA5i~nf#jk}_rpniIh3DCVdlVoglw+TOH<2lYY z1ht9CuAupLBk!^Lz2qR!at$V9tGg3;Z2h?1e0OnoxDQMQ4h@HM&*VBd`1>nn;`Me% z{+|3N;o$FGTpw?+JJNke-5+r9ZBEAF7Tw$Y6dZi}hWKgL=jnK}-QgJ-&2jMkoP~p* z@7efyRzDxl+8yq<*{{kHRv=`znY}%Iir8eI-IQX%(#lcT|8J=V9BfN`^=LQ^n z`>r@V#yv${Hyk!+X8g(Bh=YHY(@i+|F?7elPul|rzbt>j!LNtE;^6By4o>UY5U;dm+SBNKdgQa4u0BuaqxZKhl8K*{W$nGxj5*#gf0*N zr_JkMczMfbQ&+;9quJtf$z5US%p{cj;inE z-YGSBygS^3)KzhwuL}1CZH%8$74GSMCZ1gt?k9f%4*otT7vkXW&E5iscXcn6mN@wP z&tHUtZ+|fk{+Xez@V3_GG8|62%bnpa$HDj64$rYR5uRHW?!}!~72OHnan8SsjQduF zzrXjZit-<+ieCF5c*6Qj;v=fUIbkIJPF2`;qwsgDqRpcj!)SbrwRsQE zw>AZMsw#RgkMm?2Use^a)0X3t<5n! zu8L0imDee^2j3HpHMf^*gS}y${1I=oHyZW|_seaJgWvy8!@)mG<#fEs-stDMdA@T~ z9Q?WZ3>Gx277!?tUVgMa4ESvdG<&&I(|dkzl1|8sHh?a#x(w?7{TU(dq9x6j6N z_J(`#MtJVta9+*BAKDxCtA}y$_bC1+4ln5b!~enuSbZQ4{uwAw?v3_86~=aej1zmq z{eqHsyf-`--tA*u?F+|vV?1kLcwTKb-fo}2*Qjfc=j;pPjPTrjVLj*JiG5)VNqoe< zaKG!3c>ca{FW&+@wJ#jYX?*p*a3A$Gc=^6?pWzA|MyI*=*UvcI_AUMk4mU60z8qWe z%6-viv#9UH;r6dGTe@91_%^$7=WBBpDC0`f&X1-=eZvneE(v@dB%l$0z+3?)x+ukFD*za)g z?PuY0tv(M2Ur*uS+o$mb2f}YWi*YzrzaLzPga7U4A{>0Z1P9&I-Yv$L9SFa7TaJVO zjpPq_sZCpk|8yYymarTLe;@k_yz)SF>myu??!=GVv?p-zzkiHz@O`?2d_VtSc&=_; zy#B%PTd)Rrql4jhc8&4V4u<7A9dCLtEbkfknO1LxpJ(;+@fHWe?>AfGf3o_Yaq!#g z3LN};yAlUqzY4$F>K$JbDjQ*qFX1@pU$@^*H!#w*lXBFzi1+;o!$vj)VUVYy}=44BN;ZVr+-PbC)9g z#zSFS+=O>O6kYxX*O@)=URJ*y2R%E$-GS#?Jr7SD3h!Bx_`j|G3O?*m6b)mW4#)GY zUVx_#g=@1kzTi-}-$F6I@KCs~&LX_zP`F>&Vtk3US&FYd6z>19248z9a{IU^#yWhx z)i>aq4u$*1Y{tuN+6uhd#!!RDhr;t#TrKON)?Od+M6E3gKB6|d>Q_D+8Ce^32Ym+B zgG{|w8|D3)nVlvR?}vJljPpa?72t)n;dQVGPt}I&t27S&`E>K~b+zHxS&xH%M&1T| zi`9R^%dLF{4*vS#XS}jDJP&1OZIlCgMs`HTwYA|qf0#Px`IQlw0{?6p)qk(`=k|z< z!S{Itk88ud{oP^w_wd@`j&MvJ3D?+-@vI|ZAIQer9SQI8+v7P$!nJXP_dF7w``HW6 zJrbT9m4^>F64v=ZJaNRX8SoKD!gaz(JpV{|-dO=&cqFRQy(WtA)RAyKkjBf8g!|rC z;PH`gUG0uCwxf29fwwyv_UHC^&e1UD=xCG$M|f6LHW}Y~)PFC+-G=u(8lCgsj4NF) z9Q^C!?Ral%(+AHz8hy|2BU~On;AmLS1M$SsNY6@hNj(2(xSlD%Q%9rGZ|Z#qUV1dV z7bwHasp~mh6*&0&nf#1b9}Ta$HF$h9tOs|D*TG}aFvm4#2A+8=>RK1Ci^CTuxCc%> z{G?;i`6swfV|^TEoJ5-jI84#|#6RGWdouNtaq#_|f`jj;A)aMzvhfbb!hIn+;+>8~ zXP%OAwd;)M9OE}aY?la69gB|s!u>JQc*(KorI;}+#!HVyQ|mC_GJO59@LqKTUVbdx z3!(zAw*G7I+GEk+dW`Kb9$VcV=Nx`Kyf-`@2fwd2!OygMGaP)qIewPa&&JQO`nmXd zRzDxlvU)b2b3EL~GQxWv5Bqs9Jok8bKbVInj)(m@iRT{=`%D3zIv$?ol*UVshijoS zy!?1LHY;%O@7;dJzr=pk06)v>XXB8(FN1r!;-K%t zyL0g@YoCp`JQ0q&i||WNgyW(Oo@4b0?|CAe(|X~#C;WFZT^iht zD9)=7;o$e}hjH+)*Z;)9zhC$l4*t2ceR1&b9s1$m>yO~z-wQvA_dgNdUq6n6K09(x z;NZtF00%w)#SO&ak=r?5p2WeA;VB&a7@o$#_x}tIExK_poo8|I(>{lTU*17DOws*I z2jk%1Yd?>J{~X{29Q?8m!NK?QA`X5GFX7tJ z{1egaUo-#g3h=@c;WzR{csrbL$H5NpbkhVR9VhfSy4ak-4DtlSd{%pGzdk6sS#_jKOc;&v5Xc zX?z|>SrBi^%*s}#tp7B=AP(oTVtjQR&hu;VwP9Xv9S%>Ia-FaqueSCzcx>Z$u1lQb zx}25C`60q%*JbaoT$j3xE^$^y7k|#l#&a^P4W66P#h-uj@bZi<{(Mz|#~EGx=Vq=B zUMEcJGHH|9<;=6Vk4FWbRoD8gOP{!(FP^B|rF%WjX-PbV$L?yE#!KpUY1Sa4vs;YE zb;G<|y)JR1dR_dzi5lZg>VObiFSA{z%W@&(;fL zehz=3URbUn^}1ApmaB%0U$%Mz2S4T{o^SIiz$e&vCgPLog>^LE z%MB-S&QIedR$q*lTKh75b-l3cYw-2;x^&N^{RX@o*Se~}D{VYG@hapa2}Cx!VY@nI*0aSq4dJgLi1_4(VxTlk2Ry7df|6c*LJ@P?|o|Mvk!ic)$hdz(O%;pj3;c`BtFdA569m;H5@x{ z;UiA9?TC*#HEj3y@O*1ufES+HWlJ57!6N+sSvvRdsH$@hZ%mZ5Dv5#y1x@6Z0Fi`? z1PeH`00l)%5R@pFM2RL4YJw1g*BJ#1t=7a!3$5BjL7_)$;^iDrkQu8jSZxz86%;h7 z+JXg56l`)1)P3IXTi+k=^Lz6>Yt~+S@3r^r*)y3*oay&t65nI}?8V=<_V3`WXS(fY zGEds@eKv;u_yOzxAl`26JMhoX^!x4${E)57VZ8H9zkRy!(8d|`abZdyzmBPRUtEs& ze)xbse!T|bSys=+2lw&E;}AT@+T`LR`}nz$hhJ>%N8yEi{CQ&nKCzEq-$^*=IcG8s zdi-97N30&jORb+We6h7D$E&TM8XR=Y%kesEvl@?CJ&v!j`dWNlAHRLp zxts7tYtw{pwqpSJeT;9IS}4S&}9e-3YExiV*3@a?wlJMaTGo`d)&ef-?}6mPfX zcHoDspTqc(K7LLf#lN!UevNlpy$e5P?T_Q3^&h0Ozta7j&&DI^e)~l6(saL_%kT=? z$T_eQug2wAsKM*4eFNTz%epk-&FOx-wcv?#o45F$bbC%ocdf1IIyc(LeIWhsCqt_T zZFpz8U#~8_+m_pdhqkOB!-c&voW56b3f?=z>GOCRe!A7qz|%8amAuE4fuEJ(zMaPV zFK6R@txZ21^!=uDaL_)_#WORUyv7Xr;{!6By!H$R;)AWt5PYoF$KjV+{YUsj8_y&h zbPSX625a*O4%+`OGF%Mgnj}t!k7hW%R@{Jtw)rLgD|_rl9Q3!gH{p%ez6oD(mLLDh zvs?)JJJhu}=z6Wf>#V*Sk6AsAC(d&EUTqSGN&J>#@H!599s39TJFEX253L@Y&D=QK z>G%B9;IXq^`ifJ|4&r#?YL2M)T9f5$=J=lu*1tseAc-u89+URV?_?d#MxTCt0&3O>cJT}=y7@`4%&a8OgA57oD0Y*koqz*X7xC^#_DUy5OiJAGu>2> z$4(=|4D0hO9CYrTjrX;BKOFQta1IW7Y@UmQZo^C*{CNXE&z5yQ;{jP#oD2t8ePE_L zc7fkM$H{Jx@%NCS)q@N1tW5XSU3?xO8wWj)U4(;f+d(*Jo548f7>3}W=f;;u#F5s_v0jdvhA*$iKaETW8Gi;DT0K~q=}y%8xqXrhLC3QS2WcPF;h^=^nXd00e%kTXHH+tp-|)r-kFAp2r2IS-^w30Z3OGO`+ESv6z~Wc$R)bs)=H zPi_Wz>=yD_knul9He0=gOn~&0BwMZCMuwp4cqjdX{I+|X3_*{nyQqWAt2h~gEGxJh z2i;cp;GlEwUOZ-xjpL1(?z%5|-=PUlWV(OpJykr+bbl`G)jtUObAIUWkJEv8<9U8Q zH=ReD^PJvm4bEpipYP8(W%y0!JG~EoGrstI|6E^=S6jUXUt#T6;&tcyV`nwK#_DVF zb@tfxc)dNg;d~c+hgTz=ih@ z@Xrxz@Nj_dCm6`{&OpB|sd(>!eqGY=(+B!>IRj6(HW_&4KtKNec$U?(@yI~GtSG*~ z>I?B|>$3)rSv`*5H_+*Qt^4sc1N}L0Ee=|L00-TtKf&t<`s1+y-#F0e{klzfqt%=6 zgpDDIzdO)xllO4YKHtYdpQAs(LFdEYaL~^YeTaizH|`tgx<4N1l$3gq=5Wm3hi;fG}FBjSz%VL{n`FaMPmF4GT zHa^nod3b)7-=_um*et)_$Kerc6UB?N{JFOnPh|Q2lXz>E-|uaBdzRnt9e8MMf^3#M z$RCf{gILxe|NL8k$E+U5?;GTL-ORn^`|-{}?xUNyj_Sg@t=@x&Ru2Z_gMFXD5RQu> zcFl~(hPb~>llMOGaEM!Vk6d33bzyXlWklhWfc$ zg3tGl4HgV_eHZyQ{m4xCS!J)x{$!Tbv&jgQZ#`vXlq|J+8CeZ7mukou$oS)ASTWQM zop(xBP>F+nwr2?rI-aGp2dT%&5cE7*HPoemY?D+n0@5Z*hE@-j;njYeK@H;sSynbV z6=eL=$WoB;l#z=;j-zt20_1Z|m1GR$v2m$^9Lwv;jUfGOA{#-*+(b5m^w~ltK#sK} z*$&cw2iXbIri%IY==Cu z5TwruWCSi=(knYkP6rwD46+EM&tkF^q|Y+40*3!O7*t7CgYG*r2D8I?fb5rCG9P5! z3&=u{?L2`j1zBzx8G_ESI_3<>Hc2Hz(DAIsLEqoGgY6Hx{mD#_?cblw0$FZ0nGdq9 z3dll`ekPC+kmW|nQjq1AN&Qa0E>SYP%l7r%EbAWMe;Sz%vduHdOptZ&PiBF&~wqfI7t6N3+vUsI{mEvZ}F#xy6eB?eTrxB=Amwlcnh8w z>W2M{_dAk!yS4AYJBK>`%ySnGKmQ@;=WiGf$TeP)3_-{9E#n8-7jZHHvLBOV2zniL z42M_0?KLbo&UOQtw^1?%dY&N@Alo5HhM=zzzM~DuIWtZsK$e>%L(u20no zcr3@}6230S-*Z@x*XKC-{+yrze>BIBc?14yYx5ht+3GEL!rCYCx2?@Pcx#S7-?riJ zTbmE?eOBL(e`Ni9jDzmS132imI*7OD`13{we#q*F@gvsfQM}WZ+l6;qy$3&G^^hPlKEJ?^*s_k|$E?recxdAZhBFU`>$(Klc>ZudwgNmd+^5vkb2o?#Ew=R}c5&sln@pJN=C4YCJaFZ-+SEXv=NF6SmwW{)V-G6W?Qf?#17- z@%$MF-L`Mzuy+^lO}{hT#aexvI2l5QeD<{s-)GC+kGET&9rz&|!(sf0jo~QXY4tAr zn63M9yxZ2d2R~tbp2S0YY%qe?H6z^2Q}~=o8h-i+H&{Lca|WJn^$h&15&r#=v+>Lk zE?e67#|MmX%Tqaj4#cypo{e8L!hLiqzk@RfA8hp@_{CNqg^#s9$KexgS(EUH)uZ^8 zHlC~Sq7iO(z&-zB{KwYjHoV%})ZoiUxOFoA+wm16+>L!`zY?#tF|5Mxvd7+y-)qZ_ z;ZS!vV~*pkwyZY%BkTWT{D9RD;(s6E{#%yy8UFbQ*L7yEDZv-`G3)<09@=t)k!vArhX>I!BS=J^SA3V~($1w!Y!R7t0Ts(iI z-$w=bczbLiKGBvt36EI+QQTRZDfq0Bemh@-7g_sae2%rBi!Zi%IbLn;Yw)^}?sM5D zt4H#@KT@}6oD5?&<~V+zjqQH?!I6HRJcR$;>JQ`fR&T&Jj`Z)fZNeKz`uFde@U1rH zZFsBo--hqAG3>|NZJTu9oz|uc|HdBsEgstVgFLoLp3~n(iQ=H2=X5yeXHBQz3-X+P z=5rxln&qRX$wAiTPdMDXj&sW%9CW?*;%{4kZOAjVuM}vy7~;dLYf9JW@(D&I!c7n9;B15YO!NnXS z7yDyp3JyB|r{bW;)HEFQ_nt1tORZjpL+3Nh^P6zcHaFwtR=))Y?ekVVX7xD!z4a5~ zppOkkaqn)F-wvsG?@@kkq~V!X??1|=oHt6hZ7SItKIOzN@z{ieq`acxo@Iq@d0gqTciccNo^!J9Q;WJ11 zeQ`BjG|J7A&+r%H)mE>;>lml}R@7?zu2D`u$9^{+8|CzOwc_}rqx`ubDw zl%LN%_(`k(2Zy(w<(%_94m#&U9CTj?`Me*O?~nI%9CSZs;OFG~?R+i{TF=Bmw|{>e zPCm=NI1kUVezNhw`F?&5!6#Ce-?W;9PqzAHc*N>ayof$IKLo}2oP0lr=i(*#{+xLO zKHu6bz+syFp4vhj^!Qzbms-6HueN#(etW*t-&0$GgZ`%5N*tET@2S<|b@_fSt;S=v zj&b}k>*sO2G2hSCCLHuP%bvsq`R$~q$j$kFo@~LlT74V&qSar*LFdNH_;#!Bz<1{R zV`mqhuzC{Tlkey1Ui|HRKcC;h|B~UHA!Wa}p1&9u#mcD)9G(Qt?Rz{yB6q9w~78KjTrn zsKDR9D#l9-^tF6YhF2H(*OfJRtiazNj^hs$xB>U_zRXW>IDBSG|6pB#i@_(~rVNgg ziJ$p;k_;g@mNGba5Qo9Xcpdi;USHtG_TgA)z(eaZ80|uk&lm)~aFF{p!72EKR?ouW zFAwqBIU65m^-FM=evCfH<52c#aA{D8gMOA^!e|!*`7A-43_(9{a48Pj=12G}>+>2M zw4Wlp*y^)!h<(BwyB1$y^@TVrlh0Z&!tb?u42PDdxmOd%?;EZ69)tVwHKYAK^R@W8 z(f)HL>+y$2`+JG?IOsjS27Kdar=MZogg1_MAIo=fH{l8EGl{obpB;GTXn&uf3lB&8 zIS`CtJCE`AVS3@9?{}YqgWi`;!BfZh{eCJAdjIM){7idnAH1KnKL-c-UzOlo9P~a< zCJx$XfBYira}YjwjDP=V2tL-@kHZVC{RAB3K3H%mex=o~!e`o;uf}KDW3RzMmsNy= zzF%C7gT9YB8wXwAYjM!}oG~s2GUhlLg7z~P2VIxzaM1TXugB+En-Uzf%?&u{cDNBQ zv;J?w7hC&s9CUl$f`g9XRvffmfmd7mnlUc2#`hm3V<2OTli^xh?gKdJn16z=8{tD?Hcj|;YqJASjPb`;5^o>l=WPcbj`7#S!C1~AWBvPLsbgIXLBYL zCqvNp5FfzTSwHLX2d(`>c)isd@W-wG1m0}*7JP@*U%~fU{Vn`MtM9`>Ka;i}2OZBx z_(7|Gg11|}1OLqGpX1+J{TP1S>ff<0p|8iu5Okjg<2c`rbEC5O9+hl7XPg^6kn6x) zJYw}IUNp`Pxq$B>DaI?txyuLAz7k(*ZK}q(bdY)m8G`n?48LuhYn48$ai|_hKQ(x4 zoI5sv`#f>Hah&^RAood{@WePb^@3glgCyQ={dC}mYz&9-Zmaj;;W$@c$NyOem+<+k z@qTQlk9QH+Iro&DC>er|`3(Hb@qQiq;OSP+81LFM$Llyd$ZnAKJ!EM0p#OM2*EC+Y zL!1mRw#SYd@3Qj!W3$N+bXf)XCAO^bIB2~Pzs%|pe5ciS;k(DXURhkfC2-L8NgTGy zK6)JoZSw~l?mU)qQSb&1x((mN;rMl@j0paSgYJtz;c(6M)c4?^`*bf3j~(Ma;afQ9 z_Wv^u_h)h6`)wSyUfAoR;2r!g!9g5!JfGl^ zLf<}G=)%hj{l2~e2kmD%KF{hUg)R$Ty_Way$Oy=~N6Au<@t2V?_|@D~hQ`T8sAtSg zWCCRTNwOW}u^nUxy6!jNrM9dx+JGDj9c20)emogu81wZY&UirfZ#EeL8FQ43f$Yb) z)YtnqQL_CB-=>2M8+|=!!vAW0w&I}c-bVj_^ZjI#5s>3CN+v+YmLx-~2Or{~>#`3A zJ%0D&p!4S=`uWm7HcGaCYvUoq(8drjz1A~t4^W*Tl`6D{}kRF_4iR*@a<7|*=o+WJEAVOE9&I8 z(c@$Y`oBxB;gIq}uETfZ32UFk4_QBl@gq^EzyE#|-|T$Yw3V&TofraL{%677wj`Foo?r z#c$7SJZFmUKNlY{#Xoi=4&&wjWb^QRs~6y7t^GKBywwY*xO9+p$sohX6u;akUNpt; z(_;L(DY~75>+yM0{C+RNORZjp$9z9Q9KYZCS%ZV_-?jK7Q~ZAa1>R_Fn()vb8%$*# zr~2)gjbA#|otesf_z@nNYGcETrus1yZ1veV=zC<>UhYyrj@eW)oO8K< zA7?H;|8l>r7T~4Ue;K~m>g9OsazD;E-gvpwW2y;%@^U}lp2D}*A!RyId&R;`W1eg zpMj@e;ny+a3U?y&3LXDRGK9L`%-jA~xZd#b_rd5iG9AX9)oW4)84mFEVBi%l22zic zVV2di@yHc^e?{@w6}GMLxGncSyzvUZkDBn`S^dB8c0Zn=1OLj#{Ph*C{Ttt=gAD7Z z`)%GZow+yNuj2;%iRpeFe~ULy_v_e#C#L%`B=J^zY#aXmbU%MS!1qu0^Xen~6RUrU zw_CjfKVgqOiHFl&%~`!J4T2dQUo+g9Z>8`(mUv`_t9*;^!HD8TGu(u?`TvVzJhV2! zmE6a^(mx-i;ptcU&og9P>3V~_HcundK|aHiL1uw`);*id0r}ifE}0MV`J4i>5acr_ z6UYeYXIIFuudfIFaL~_Ior8nEmOmHIq+hu&)E^&krT^T{Ks?JYE6Bz#y3*h47=#bD zF%Q9q+PVzGLBiTa`EAQU4jv;BgpvE$aIi48Du8NnER74kadrf36R%fNiwv0 zFcJq{Rvvz_jeiuLZ_6scVdZGnYxI?_5u~3cvKeIETgdGopIh5OCP0@(wu0=7HnJV$ zvrHZ2A&}4K940$K+H{d2NI$_Ce4JmG;1V2kJB-I8wymOgk&V9?zth^^g@f$V;BFlB zb?7}f==$D^gSLs`p!GQZptXMpufI}1Zy7Y;px0@S;GqA9{tNt3+in~1jkbR`;h^n* zjf1{d_#6DOEB*D@<2ZcQ%IlOT*k7QZk0QgSEB!r_C-E&dwx{vuY|OuB`#1aT*+M2j zKA)B(TR}cc)<(92d}gVGJOr|B50jlBpH=Q6L(uu$g1=zv{vy7e<;s1t9gGcR-^IyB zkb6x{WCEnmB)JDI=2%z=ypirZ`d|}69+wq{1FE^ zmV-axd#?1?=X*KcTYWu)ECLx@F*y%pY$fD;kab@`mV%6}jI01@UrAPjjK7Ag1Nn^H zYBC0T-XKGeK7%$KbPm7Ez5_WPQ_0>S%St2DLHf)fGeOq3Kbd9qY%(9DeE}JcLD!2c1sPiz8MAtv3_*|O_i)h9iocKl&9?K0_`WOs|Ml$0 zKeBV($E+8~V^hg2kmY8R`5^PKfGh-AuL)!XWPPJ#c)+(04&tBN7{0(kx7$B((EG;! z#6j<$AHt9L^$L!%E?@cm6(`q#^uLx|2QoL-ll35Tqk(J$*{4lpGf4j}WCCOxCdtt1 z!PhwG`LL69?6P$vLy&%gZ*a)?l=ln1#X-+w$8gX#$MNs1{%;&)oIy7ZdT#7t`+zJf zN=^rvhcn0+$bO8IjUe-_iEIXG(?TXd$4|C`v~MHZLAGZHc?e`19wv`~?3bftCrF=N zWaj_+e)^LGK<4d0GRx}OWD&@E6_cUWga5-%*xWdY|Hsz-dmQxG44LyF^Du+V0_i84 zjDXG!ayrPqn?Z)4+c3C__cg9^AIdSFf~Q{Pj>&iOoO+c@zrfcs$iX1>A!Jx*?N{S5 zYahoGSLrz|NaBCH%3s%gc$LfCf0dK(O6pH$!N+NQzM9N|FV5&SGMB6Xxn8X#>p|K# zkQ+hTY$CT?eFxe5Bi}xa+z8Ts6B$}P_!vKGWB3a1WVu`e2VHn*^5rEr-aga*{{`=y>5rW*Je=v@*9fl0uXZK%r(_1fEUp7*xj()d zToh#Bky-w}O%$I#%f0wI*A+AH`BqPh_1*XS`7yp6wijlV8>AMdgH|Kg$5 zgChDb^5=~>-dNf5@TDUEy!kS|qsZUqe+38qZ1Ai2 z<hlT}3VnT@z!GhIm0%*z1V*?uLBRQ9?WJQ&i3^vK6SS5 za~eKa)!I+PLBHqZavZeH z75H?k&%m!?Y_cDVa5zJjTa3@Ke&*uWv0V9%j_dLHR$qWGw(*x=>#~;kdNvt>Px*eK zC>d5+`(^kB+YZ0Pe?_12T|FD|MqA$|{7Dps-fr~{{2$l)?-=zCv7>4KjdQgC0LVMXS}m}S0BM2o#W@&2E5Uh+k|hm`Zm1T>Mi(o>t_dk!1_6e|I@~QXpW14 z^dBcf(DgcugRbwF_z|lg#Y5{Sn9Jue=K6E^DR|pl{~Yly4thQL9$tFAua{lVXBV&c z=iZxf&^C+lnAPKW);!-ndmiV>dH(q#iZ7YxKM%GPUop>rPHZI}vw9qFoaa80-#ux< z6Z4$@c1aR%pXWcf(1D+r=hi&T{qU1`IL|%*aIe8ZP{R47#9teni^He8d9KXFL7z|i zm$(T0W;fUNWSC{`v+=P#ZjM|V6yRe^ z{PX@eys*US_i#?Yr(63O_{)Ubz=kpufKX-DS^D@4jy0qVcx8C6T%C%4%-hP8$RtF9xZ?fFK zSK~%y%`++c+75ZriaqNIe*bgI*6`f=8?# z#phX{CHQ=6vj7L}XCV$cHx}WgRxiUV=KE{oO2)9n_Y)@@L6+4-hAXW9m3ZBJ+qQVj z>T!JCd_Vu!&vyxsZI~omLHcPU!$+q~g67IQ?y=H2m}hPJTlzI0H{#;PiK?GVs0&+!}s6Ea-=4EpYNXVnH@Oc!87O z;0uP}Io3}uK6ZhV-)IZQ;e`vF{C;aN0iU?Q$!~)OlkkZ36UC=m`)T;}1x|i9EtrAN zT;Sw){er9UB5PBO&#}kO#pl^_OYr$tUx1g|W6SWxwl3v(#R4b4D;HGaRn~qPUTyUn zyw0}IYCN{U$?vQMaeSS%Uyna%%Y6v1w|WEqs4Z&)zR||834hG`d>r3wkKKZAwa0G5 zpSA7$9NujGwBS3f{VqIV^(6j=_4y{g$Lf3Wx2^sT-fHzW{C(@^1N?Ja?icu>1x|je zG&qbOvGzytPHW$VAG7wy@sx#r&ZI76&Mfrv;S4<8>KS<7g?^6p!!s8;`Te_~KR#fg zpH~C%tc8AGXXAqx`gt-0A8Bp!@ce~-E*0Q~*8c>2;zB3C1sqJmBlg%RKGoVx!>2Fw z^LYk7)B3y`FS0hp_#7MCTzsCjDZ%I4_!r=%)}{Js$+V@iI{8iWpacKh z`u_rlkL9zk|5)hKLCz-`WG2Y(8uur&te#EgfXtIzG9TnzR6rJjJaz&Z0r^g_C|L?} z9xEd&K-yH2)ga@kA!8tI;$%BW{~ctf)w{@UkY)9dq1A(bE_A&?&W&kgI_UVxLXdOd z1hN#QO&M7Ya-OUq>pFR&OG=g6zj_txIz@qXIItdhiXNzQ}K@j72;@F4Fcv zE}n1o0{pT?I3yB|Mbk3EPVTIA>UVf=`-KZxUTSj#?_28o?}ulW`t|CM53t7$#IvlPjSsfR4#9J* z&s=9A0RBPQWMHI49u|t4Hza*3S%lruB0*USw^G@j0b_ zj?KmASwAKCd~34+Uu^Yqyvpj!@M;@R4PIw$R^w}|&02h2segW7k3VSZ_z+%i?Hlk% zOa1lX2K+I5?BjT&J+=woZ0)z;TW!qS@Mo?59Nt{&?;ZTS1P?>@lyS)2X%fl_@Q3=ZP$R`0+M**Fj5 zN35Tt_%W*=$Gfe44}QY7!$~}}xfGN!56j%-D((rS;=RkJ58vd!pRgYP zwbg%vKW6pE@fNGUfG4b;#KW811wUoE!Oir4v;V(PN}Y>cMU0 zE`23`^P6!QWDI`4J!N2=Ou#q0Q}UDKA&@qQ$xe{(BnTHmGQ8pz?(ML?m3ZSVPQT-&34ihy zcgIfJKZS3$_FM2~tGD2ZTXg>h$y;3P&wg2PG6C|vF-bB6{Vl(@X#=_+$q;JgclX}8 z#if93=TtHbZ}HnLxRrIe)z8l;4o~mockUbxx-L_2xHrMvn~E1%y%?W&tM8`-FTK?* zlJ8e3yVW%==5OXe6PW;+8%e2E_$z7Zra0K8l0x zuMPMwEBsvj6%IO{jTNp4l zitn>^-;W=x@caD}9CW{bii6IFb{w?cfrl0T*a<3K*sIe25A`WH=>JNm;GqAHpNgMa z>HoL-G`x4E|6kxV{0Ei(f3bgvpI+(zXZ#F2-Rc=Q=>L+Rg%?_V0)DA2_ec0dt53o~ zf0J%94*LBSm*EksM{!6#&$WlcLEB8hLBG>uDh^tohR>|@|C4?-ew{7rdVHR>DZy7* zeI;IN^;I}5lK(fa!$H3{V>N!4)$hh*);^Ade$T*tIOz9>+>fubv8~4+wt77dy1os# zApaZw2nqT>e%p#A>}hlKn#-$oqt`!qJ;jg|Jl=XewQ^qG|NgC}v&?-+Rs z2mS7a%{b_G+k%6(e;WUtwf`?1Ugx_Yf@g8iHqYUpef}N??dN%XyVZB#pv!s%f7ROT z#1qygiSMcO@9*rzLB9v!EgbawEB=hPR{HNlXv0C5^)CKtrCTb$YuS#2em6n~{`X4% zKkuL6pzS}$LI2PF3;Z9I{`(yMi66H5mpJJ6+x!bZV)di=SC#&M>c7T2txXsHt+hFZ zga7^z{5$4}d;vmXvRo^$X_tM|vxvp&zq2iUR(;#o`l zHp#|wmiX^U$i+u2@$+pYUTA$zz#~ii_i{vWN1yV$lT+|HOZ@jL%*7X4eGy)6{oI0s zj_p>w!s?ayQhRI_4%+839Q1n|evE^DZ^LbPwbg6z+9ht?akk+q9P~Rt>Tu9wXElC@ zwYd`q9m8Gt8tZ2*zHy0r`8fM@6aH)4&cDH*SmMu_zr{h1mqr})T-t;`Y5U?S9JI}5 z9Q3Y&`#kgSLMb2R(;8hc_?r=i3(ig(dztdJzXbj$Xn+ zkFS^U?KZD=;IAz4$Ih$x&L#dlvkOl!uVhXp@i&(E=Ylu!cWt@v;qTjcKEU_cvi9Q# ztp9`fr#2tjanLbz;D>C?hw(41|9{~}Y&#sqLB9{`EBtHQo}D=8HtfQ`v3>C^e$2*m z9RIg%w{9HteAR=WuyLNm|6}X;Js#S+2TS>X+ogV-eQ?n4V@bzB$Dgs(rGU(nR5I*K zUA9#}{G6puzw_i=y#G=^&hzl|m->A=00$laK>Px0e<7Y_{bb{y&m$M%!Rw=g)8P6Sf~u;{RFd=lu6L z=r##)(DQ9j#rd|%A780>?<(IW4F}zKKfpnc#~ z>t^6HtNgsW8V5aIX5mHFrWl`7<>%yF9CRLDhtC7KhAAOStNinR8NRs6J^C#7=gaYm zDnH*U@v166AC}?O)}{tuUge)VZpT+v`T0|egN}0*UT5uB<9At`yK&HKqOw@^j!P_&WBZTraK1e_G{_@t@(1*1ib`o%2uPpxgE-d~=mQ-nZbt z=dp4gcph)I_AU5}Reo;2g#S;KpWEAU(9fvvz(MEyEBH=pzY9-TJ&FI-wqYyY&e-I+ zwFCdm=E>(c==J;;_&;oZ{u2kClZSB7d3YHA($?i)_}5nN#6j1w3kSWv`UVF*M!v<5 zS^YR3+O`Uo;Xih77xP|NaGQ$_xXu0ko?gS_WCGsex8Rdx=|EpEBRk>$_?_G?GR*Sz zAREuQ&EJp8#q)3T_pA!=(YHDMUXd~Q*xUSPjmF`T+x-2dC|-J-|4eBa9=pvx?}|6x z=9d19*V;`uytJD0;gk60+x+_`Tkx&7x!?Sp`Zm1T>MeM}>Ph?)tAC2O-{#-@>%ha? z{Qpb^)vQakeZ~pDxZ1DFC_GZ_#~j5=tKEmkxz|yK$E+U5>#P0$DKy}ZRr~if9>;%M z?eF6?;-H_8ZNd}P{(fB&Z?E>Bqwc^vZ46y_Sna>3D5&B5Q{zsw@ES7%&#ZBOd4>B4 z{c%WVfzLHU2gGg?N_Lvuj-UMKx~F3n}?MWC;2lxr1=fdpLt@+&Yl@ zdU7L3`%Pq+W9@Tska{p2huJSMw@1|Q|86zX^~$etnWKH1{^VdN-;pwA2$=)Y zCYOwXj*UD7GM>Za39FwZL#qd4aM1f&V{y=XMB{MK`zn{PPe7KHO2$Bz6(<`(meoXt z<891^IOw`ez(K!%_);AHDEIV!M4ywW|947$Dj8m8?ISq+Za3RMiaXyXn1WBM@%Ke9 z$3Y$&T!Bxoal>Av{S3A(NIi`_0fpRSIZ1|BTKlW;nZ6!eUE}tEwBJj%g50-kBllT- zKiLlQoxmMr2>N}?v+yG8r?|#-f~;>B*$uMX9x}9gFdGM5_iJ&`@z25GPi)U%E)Kfg zu46lc)Z=7$z18R8px+l=g5O}<F)%xNnd1f4INI8?D}iH`}&qVa~tckEvX8B*+}gBlAJ-XBLnl z=yCTV4*H$XFEKX~%rWk9og_ohHc1?GJg>7YLB?D{&Ii3OM~1DoE^W*oknh~yOTG<* zcBSOMLx%0X9(3S;_hSn_!$0@S4Zgq+S^Y2$ItRYQLFepjfv?|r?83_-VB zh=aBXmU9nbx%<@)_HVD{E(Nmwhhv-!Qc4F}y0y>ZZc&S}eC@AT!mAJfPXblo#>Sh+jplHe>n zf4Scm1vtExWL-utcM*_2qhu*$B~yl!k>MCy)>s^54g}+tyK0d3HDn#geq2q)tR5#r z&|~uw9CXa%anSE(FT_Fj^@Qav6J)vl$pIjJ@9CZHQj<2#Y z*WsY&%+)yPv3v(}2IP6OjI4mzt0^NYB|)B}<76X9nzyJ%l&iE zdi+6~!w=yg+cx+)4zg{7hw*ybo((wYoO}caz25r;{wQOX=YaXxlYu|-`W83*#9CVu; zV{UZ&dYla5!q>Sr?!iINUH{7*{y#sq9x?kaZen?|OC%*hNgOX|$AY;rKjoE$<%;49w$ijv(R zW9T7IfIRjj8G^JAPQBfwfLvFkl35_fOEx(eWNbso9FTr;$&nzB%_H+c`Ya$zLE4m& zi$U6ylcCjv)94>`%w!B?oN;m;NI&bz2SJwm5Lpk>PXigI`Tm0+;GpCGA)apa4EhA= zCr*YS;|b29ezsq3oLmR8o!65Og7otc8G<}E=*u<-8D|<<3eu*GTnsX{a3K1qdaE~(%^>Yt$d^F+d70b}^4J~ZPLT2JBHOLr zL53jhgZ}t=w2^b#`OIgKWu=lK$e4ox_#od;Fc=3}ZZL%70;HdlWC-%uU?_6{^;AlDliWN7u^3LJDi({a!~XW*dE5m(}%*Kb$hp!V$NhL$jHVg4Zz8;h^9>`nYD?dt>g3QS>axutb%gJhxK5NK2kTI+# z?*eIaHyH!zKTdXnwC^JOmicYckIVvDRyG*{S@$S86{MeOWamx3pDr>4Sypf}4$?kY z%zA-blc$m)=;zJKnLi-Q%^)*D_Gy1I%j(%=4#?cdCG$a+TR;|qJaz&Z0a=$QS!(q% zG6u5E<7A`No5-yo%i2bETfK)2LDo08g>y2z%No4sVa z)jP;eka^xkhM@i5idXpY2bK5|+g3|)K|T*tMK1H>4}Oe;ZqM7;Rv_!%pUeU|Ub4v? zkT$uJpxcLxfb5qjSq(CV8gd25_E|~RS$#Db16lVt*$L857ugN6oqNa-q)kwbgC4Ur z9J3&OrjZfQ{X)j99w!fhjPo$r2{N`WvfJuCWC*f7gXNsNR{3QeC&N15XRw;%5oB32 z$eAGHxtc7pdNDZ%q@TG`1KAfPWU2hkW6Q`G$To?Sq1A&saL{wqo%mh0zwXBG@#mu8 zUL15g#Bk7iWpVsIJBQqlukqJK!CL&M>@!|32S4Mu06EX3k}=S0C$bx4oA;0*X!{4* zRv`BWy2uc;{tym&zWO=+fIK!%hM>=75919s{zq`o*ZaS~LGGCZkK&;94U7$RY-9*} z|NNKuW7g(z9CQp%;GkppEe_WvccI+L%dGI%MW^B*b09bkKhx@caM0_GbR4uz27Z>cIU5Ik z&Da;e!0H#`psy3NR=D05`Fa`|1D$VVC&;>Yk>MbF>|h-9oIeByy+1P)2fdaXhJ%hL z2Z#LEI0xq9qpi&t9CY2s;+I%`JPvx@TZn`9If3y`T%q?&Qpqr~!rx1Y;-L2m91eOv zX9^x$;jcyG_8mq6xpS1c@D_r4b;CwQHoCtEBnM6jc9wlQS=b1PeT0Pi; zZ(ZT%{5Je~TlZ%C73=?1e5ciS;jgida!tD%PgtAe3O5quzEB>S4{{AtK%V)!ulFHy zK<*>ul4C*Ij3cL8eFho6;oApq;(xYn^)?QA|Mr~~E)!%~{mHP++PsT{yfzQs!#}k8 zJ{2(sUs$abrDke%>UB4tDu zc?@I>$H{Jx_3a@;&@p_9x7!#x@Nk8HO%bf*Uc^d&?bmCiOMpB!Nrt_xo`!?IPWb^2 zdad}wm97zF`!tc8LFVBWGQ7a|6I_Ucw$H*r@9AZ)bXg$JkJ)5+(Mo?UItU-U($&Au z`Ev*kde3<%KFr$W@K})fkWGfUD|LNPZd&wpvAdiib>p-64)|1mm`1%ZTCdf7L z)nv8RYseKK?N^d9kTJ)}aHOvXc`MyMkh#5|3_*|Ii&-v6JxYe4_ku>z59qmq4D+p@ zf|c$B$T|5W8G<}E7>$FBAsEAYfz-3fksxEvBV*%yJx+$8?Jr@!fUJ8HnE+XCl57X* zr-M8Mvi%Q}M?jtjkCL5M?;?+ZEbBPgZS@}V1V}$8$q@88WjtPJ+hGDe(YFaE;St-9 zQQWQc=h7+o)Rq2z`!u|0r9USW<8xN}_qpccp#NKO9ghQf9!Vv8gREB?nGUk<8Du8N zHC2By3v|1Y5s*0(C1arbf@}ua4lQH|x(%<#VZ;ZVbLOpdbs+6mll35DXdoLw9@|8o z0BLiQ3_-7pO7I(2`sb7zanR#vJ`Q?~w*X&g^+kB8?4X0=j(hN^jfX}2OZn!THd3t)%h7G6Cn3FlVk|`d^!dP zeGNVq2fh9oSL^zMwCP92K<0Uz3=4sCLNKA$ML?DnB}+l>DV337#KsWCr`P)X(lhXx zwf;W#)i~%lXW^jd$!q8bWL}k#6(DUY$!d^m@)|OnZI8XS*4=+yt!~dXWC+j8yuBWu z=j%ZUzM$6sztTc{QLX!0?r)c}ULgI)$q@8^n#yp{|An~;2fdcQ83%nXUW|io^K$%F z+ea06wT-O?U(R}Qyacz`y6GVEa|T%ia;z1T;VNrWhlBRN8o$f-_1!q=wz>xgeXVgX z4*EJJhR3bVeYLJ0WE(b+kAjS01KDl$9x?JQ+cv7Qk2Wh~6Q|q7iAHzYfPaelXx8W1`Z)^Q?aU%{|Z^ECn?fF!# zO9$D88Du8td6mopIX7mLgF%j|A>=%e_9bK~$n{|v8MAtvOn_{|B)JD;@T64;g#TFE>txAnO?X9tS;dJdZcqHf*6i$i3n?8G@ekU%)}npD*H| z$Ja}>uK5k$riBba_r;qy=-m4w4tjq06TZjJQF~by$hkC5hM@0Ty@i9GZ~u(9+IgT2 z@9^ib;O{u-z2(p72jq2YoIC=uUPsCBAJ*od_#qq5Vf?6#^DF#o+YX)d1M(UqPObrY zu31a21KHQ>$ppx9ljI(d_It_D>OmI{dR_4ia|z`Co65)-$UKje;W0ahAICwj6TZVi z&+Y%ld#s=T#X&y<@PGLC)+VfVCqS>k$Po0g!78qeSNZMVYn59EI)1VdqCGS8R@-B=T(%PC$LRQ$WoBwtBkC+dJS0zG7ndiA;??}((pbu zw)9ml2GUQQ3_;su;C)y5&v*61LGM$Yv&v;=`u6?FERg=Q$-yA=Z3tNi(&q#+B7d{o zC^_BgGsq&4xmrxdK-$E~eOBL3wp+b}46PpY$IrL%51@aLWktzSknL7R#s=DYk)0r8 z>ms|Y-b02~4=%t#kIf75EZYv*^gno&KBq^?7|598WIf1h^9C{mecm5}gMQXxC=UAi zeHae&_H`E!yCtsX31#l81c{yix&1ns{Z2fc2*1qXR- za4QZve=2w^$QV+|5VU1@D=C$U>Rcr>9dCnLD%KS^a(QNR5Dy` z>wX6g`W$g54*I{Scj2J*yK&HMbq@|&zZVC6UWnnK_jckq=ytvj2VJlGnR_7T+cYu+ zz0O~QgU+9|IOu((2k>>)W-=1rjf37FxE2Rp)*Kvkedpq!`}#T@^mWtqIOx8fhlAEj@X|W}yjh0dYLBhJ zLEBg2pkrQwgYLVfIOzS!Djf8@w+yegeroWQ*1i@89rG$2^s#j~=xgWIIOu%1qmIvC z)#?0+lOgDQyA!{+&Yv4&IOw{>@%wB$++WAMt+VU%I+u^j_9-C8f;=ybBV$&NlkFhS zM;&Ac@*Eee!9kw~*U~4*ahgV^gPsG)ERg=Q$sCY2xn!Z$Cy*0Cj_XNe>;d0CP9{L! zt4)&aAje$?c?jhB{V>@HGPW+V+v+`J2zoC12`R*tVKec6%S)j`z2ZM}f z2$=)Ye=eC1(q{n~v3iuO23c+m83Sn(CqvM6{}~Qa4<2N{fUHXfnF+eS|IgBS$7fZf zZTMiK#0rWEikb*2SiuS|XmW&Iu!3a;%O_Y?P*m7;l~CVTLBX|vf>JdRL{N~RNU^-d~*~egP`;vpfu4@RH0XtWg450h;2^`et3HU@W ze-a0+x2Nz)UOpM0>GhwbO;DTUII#O=JUIdEyc5YOVEvg&mVjMjDOm<~pDrQ;Xbhjj zOZ;4=`0UtD@&XR(=NufY{p7`=X%1LfuGB00*FCH5I zrpN2}60ftA`CS&rzliJwHg3JiK8DRN`4-q(dYdc_`SLPd>vx9~z%iU*P}qbA8Er-WiV_LJoxtzn@cV3HGeXlFPvQvz#mk z`(CSp+z$48I6KHt=Y6inche91xz*1&=;sc<&?ZzIVkh@HQ{RLC>{9 z{31WL8-7JRSJI1X2m6eWB?D-DdgE8e^5hyE)Xrb2e_cE_O9nXDen0$r9Q1s@folP) zpGW3{wOK$G+W+QUMdTDOpGuZ^c_}#;Y#ip1WnjlHBA39Q`R;2eSq}CtR6#a?)oCOH z=(&F*{(rGfauW{vj2LHhG(TqpC$asv+^@F+2fdfRhl4%?zK?^}!wMX<&R62A{MgkvsBe|{dN1FAgY6H=MjZ4zlbedu z8n7{}B?D*=tireY`rL+Z_jYy^r_I2wr8yZs@_YGX{1aa%pW-!MUW zRRviE)_yg)6>Lw~Ms5eIvxBSwJGPb#p#FS^gZlYB4w|DMa8R8(?o+Vu>+;BQuzR+G ztn~6VWbpE&9tVAY_#+P56Mn)$`_(QSG%vex(6#@JgUWxwLF3ba{~G&{{Dy<-@4-R+ z+{^WXooff#09M{e1}{&3r~hEz(N&N&VDnf@)_Hk7+2G}kWbpFj4;*x^fP?y$4C8yP zVQ~#K$B!5m?}a0A(ED&p9Q1RdR`}7w;+k)b=MRfxUVtAzEZ%o*aL|3x76+a81RV6a z>_i;2|C}@|Z3b4SIT_COcFq}=)^v*HwPfhxked>m5HV?E>~J>q-`awNpd} zFHau99~~C&m&b6>{rEWkjF(TrLFbx^&tz=5uajqK6KstYk%K|c4ss~y-O19+vt$X_ zJy=SXdwB&}3HI)^hO7arQ%eTW8h#Eh@$;7AbA8BY4R!l?_u%X=07;7ehvOVZ|6%K z^e(-VvHEJ5-aT^3@a?epzWp8LVDE3aWcc3e|A2$;ojM%!-cpbM=;Qwr4*I#kE*#YV z-8kr7@PUzdD?)3K07qxpwBPA;!w};BPG8LOIw1~Z$-8St8)w)ygb=6EbRw& z-u~nOu=)eZ!C>tVA%}w1DJCi_S<(h*?Kf{|nf?7Uerfa?4)EZr4i z`ED|R+DV49Cl8PNXLG#8@Hj_@Zp1;Go~>Ivxj&e;XXsep~!x zFFyqb{XXZZ!_%f<_4CL8dcQgi2eoth@H7YP9?vE7;d{OlE+E@_`3YnIJ)_USLGO?q zaL|}{#LpZazb`!t2YtRc8wdUS*>mvohsU-3CmgiLcELg4VRps;>}~!92Yrt2F+8mS zTQjv}9oRalCj+QXPaHHC7vo^xjU<=gmky8LXLGL!bI2P0gGJu^c z>5YT>b0rSePI46v+J~=Z?!d;Ofb0Oa20D_3V8<4bHDKqhB?IW0at-78*Em-7WCPfF z8_59H|KwWyI`8N8IA|^1!1}!9ImOGTlEKT9+i=kR_%|H%PIWsD z8s`Bx=-wQN-|5#oi1UKok6CgY*f@+Q>%cxk)sqcg-be;7Pwv7&d-C1P#o*X}Eg3-l z8G`?Pczo~r2R?Loe7`EjGhQc)gYK^faM1n!;PCWju)pDX3mFW1pBY1f-o3}-pgsQ~ z9Q66iOs0}EynH5E;^n2}GO%%2PL_kM&k8bt#&#SI zdiIUSLGLY(;E(!xehh!w>pw$(rVQ8nUX~1Cf9p7ziccFJpM%qJ&=}6ZL32722YoJk z76;XN4hQ{>-x3`3JT1lNay|B5F%K`}-1b>=5&niB`z8+BXWqg=bNV)3?)Ov${@(ET zx%hn?>R;vGJFmc34v(LaSFr}b=BSpe1N(VLy_I=+vYI}Ewcnl0fbE%CvH|Sx8#j^x z)Q3tOG|p?-yTCrf=8*yP&a)N=Jv-Ln8@)f9aM0)0Djf9lmukGm%WLtSK2~4h-}sn( zi-X?1zr#V_1ALEz%70*w0&Bm3450m|4hQZ3^*HGLo>{CV_AIOub0JNgV(Crbv<&#c?y zCy$8t=_&Xb-ew0JG;SU7P9x&)D|W`ajEMI_SNwtz@p*CKh%~1#9-B)Bu;*-2gkLlw zK8w4JNc(|3U;2{+zmKXWle@smcasfX-bn88^1Wp6^5oC>U%byf zaL~_Ldg5U1Bo~iJhk`xVipdOEf3jqmmoFlhdHHfOfR4Qcztq>pW%%VI;^*iqaL~N; zqHVDHoyjg>bKRBP^jf3vrD{;^})m1oXeO`@&_LFOHP=Ef4_wnoPi{IpJ z_QOHzus{8|HI{cKGXwm3$r7;pv6L(W`<>oJPFaIB2eC;j_K`1srr;b6786?-;pcnCpF* zhtD4of9ADdL|XL<$MQW}HMte+Jz*QU$IJJU0ral25C`q6WjNete@kZ(zS#H7*Xc88 z47Eny*uTS2ZHUr2ay4^Z@-7H@I7`V4z_P6tMJucrxM@jbvEIk z@u{MHu=D1U0rc)#jc@ifxdjKUx2-s6U2VfbbN2xbs`DYfopIoMs$>WLtGDwT4tlQb zVGO}O-(|@FTK{|T-+dqc0|(U)c+SXJCwC;z%8~JNWz&&qGq5$#oNNj9UfPPxfVG(= z1L$*T9u9h5?>{ol2P-ci+kqY1o-71wvxppbaI7<)oB(?_=bSZ>44|<(1c&eKccPk& zOuq$d|2wh{to?d2czMzsKN@VVTa%!9KL*bq8Q%vA@KZ;|??q3;PahfA$r*SDFYkz- z>3uj02d#&*anN|4!#IGIXUPD1M?H5We}8YJ_V!$|8Cd=1WNR-!h79Ld)mkXq{YvgWd;v;h=ZX-uRV_Ge7H3uEIfe zuI5@m?_gv(Sa}6mJ~-&SeR0rwyAB5(dp!<1_68jE zy~>R^sQmwM&^+FR_w(}pIM`ZBZe}fkt%vbs0IkDYaM1hAtvKji`ZmrFwrA#&0W>Cm z!$IFg-;NLPYZ-_S9vSb=Avoy0{qH#FchdfWkMi=-_yayK58|Nr>M@M-gxH5HSpv4F zm6E~BlZn&;{eCjJ2W)=#k^!_%p2R`x?J4}}SU-6NpW^F$Dqa%TVN!}e@7F#H2Rm;v z8wZWa3;4p3aqlX_L1VHA2kmLE;-H`DyoQ7J|HU|{&g=LRzxJg#sQqR5a53ls=U4w(#T#JL&)jAw>FRaI*`c1BJ1HN%&d{%D4L1S2j zZ}m2};h;7@z(H+(h=1gDKF0s!?bqO-@vmhp!JcsiWCpAcSu%Vc%abp-r@)>^6=WsY zyWbjey_atwt3b~(a=VxBAOq-K@qZ)vZ!g9=d1MCk{y;W>owt$P1J=%7GI)8ilYV|5 z>lct2ur-+_$AGPevE&}GHusVNtexZs95g<4IOy3_kAuGV_>sPW-Pd_!_{qm=7yBOA zm>)xS0_$gIve3(m$f01z7LyI2Yas(@zINlFG5;9{tCReKgPs=+j3L0wqzAp}XChmuW+G&b| z?w34#|50&YIsgat|G-gcGqAm-IhhZ34;GLe!0L1)1L(X5;RjRC-UklBLFLUx@%#Lv z(jGr^UFOHdW3yy9-uu%AZwL0QY)>7qzq^o^-%LKU?gGgWf;S#6iEe zbJnOd2kiYkm+S&|?On-2uzR_P3|^j`jsMBp>4IPA=PkrR?HA#oF-&pL^W`GEo0oUT zLC=&woY?;M(w0rVW{frI|eTTdLcA6|@u*7+s){i|@$J$v=2bSGH(SLC-~$9_i!FHf#v{K2jPzYV{`%kRVokBZNrA^6Zy@m;8RRN8dpD82vZkzur7dj<#n_pP!x=)1}X zaL`;lIEvqojcwMFpM%x;f(%}sjKRnGvE#W$u-~c3lHpNr=dn?IR*G{`L9PI+vyu!? z_#92ZLBEeN5r5Lh_9^Ck(kQ)Sqo0 z^72>l*G9#k%Phu0^#V~;^RgbV^7*Z%&!Byt44^ujanN3| z1>fpxV;jERuVn|vg53*QGJNF6empAe_DL-7PVNM2^DD9r?AcLI1}{%O#SPnM{!N1J zyZ_)d-exTh8mrH6&|dvt9CROjj)UGAzQDirec(GBbPs-ygT6!l0SCPY*5RP*t;c`# z^ZtZ`+TVqP#%DMFvya0s?4w|9_9Xj&?SXyCjF)H009peLIOtrB)B$^+%#u}L?N^fx zUfxIsQ2k$V(C-iYh95FI_NUqCv>a@ouOKtcV|kVgFz9FdTezdsO0eg}8ge_>xpt7j z%ag-!(7I}YA3i#s_XxbDpQ{yqoR{a1P7A@#TSNx1e`k~w;GlMn$4~TQPr^av?QqcZ zw>^Hw=s52kaL_n+#6jOxo{66|I2B^4r*s04*E{) z4jgnZ+=+wM(jXkPKJUUo<9{~}x<~H8L1R03blL~(8QPcZ2lhVGpDgq8MdV_zpHIC` zF7xu`WI1RbCIhJbA^6bI@$+3VK4Nryml%nU9v$!53=Vq7$l?!SR8a+ z58)5{dK-s>=6XC1dR{+*KRPhEL<5^FD)v?&T@?RPVzy9Q3@Njz8<=&*3HBPAOg%$1PcegZ^8Yuj0#m z?v~?kc%3)#x4isqe5<#!4F}zWAK;*O&JS_Wn%Rzn%6H%&`LQ44|M6pMaL_ub#dnU5 zpL4&$za1U_p2K%|-RN||8#%`(_4too|0f)@{&z9vpq~qq0kl?kM(USLfgtX5#y8Ar88~itrS-?~X3QyJhq&PP*eg zGI3w(iC>zD_u6GRXurA~2OWC_-YXM-PS+a;Js+>cLGRU9WzrsC-|6)vdx7l_y~z@= zHB(9kFHf$aX2czl+( zKN|{dix3N{Xxk^Q{9KRE(yza2>iFHctCpz&OdS7zcqwgzACecpgq zc^|6r&6)VT*n)$`d@ByRr?%msargiS)%g(L?#J%HYhr(rTKqFV_P;pTJ8klLCaw8j z9Ftly^JOg0k^%Jdi=8;A{#Q8Yne{aedLDg)gZlO@Ugztr9tVy2kIW(1=kZ)J{N(j_ z;lF$Pf8e083iJo;*ep2)tPf+!0D3khS-zvl#&?)~@n^E}ew>0o@8z@b&%FGN~U>yHs4C{7GykD|-`Iva#3cPAe{7$tRuNf2XyIQ<%Ox!=~ z@h~Q?rDQBW-ya*>Y=VQH_50wU@yx+N>pT|+t=oNZ&_1>w4qEd~al`iNJQCX4eZBwK zv?2sZ_V&S$HsX)3DjB>yIhKBb z^}m4Z2X^oGCkKP=KSRijmuJZ;u=>^HcChQ+LDqPAEm;RP@Ac#^u(8@rHh>-5Nbd3S zy=3t6;V zIA~p+frHj<2ORX=?}&ru;!GS==PVqwZ=8*v6URI`7YEJzc{r&5op4Y)opDh4`8a4z z{s{-w>4F=!X1bD~`|AQ6wEi!|LHk=FUgY;_ieKbwz8emD{&vU1lz1;BQ`3B~c`P8? zL5APsYEPc(<@^F!S^{=ol#*p&>tqpG4mPJ1WF^>Mw}uQ}o;0B@*d9BO450VSeQ?m< zsLYv~Hh^7kBN-s>A$ac8I41kzpmn|<-qg$UaM1S>`{ST_IRFRE`++!Uzd8s9?fD1e zpfNv$>jvF}WB?u83>kM_L+jXPatsdY!?8GMZ6Ak&KF8(bps^~z zLHo(^IOw|C;Gk=7i-Xqr2{>rIorr_VPr^ZKz8wy>Hj?)E$#HEYr{JLTo{EFoKMe<+ z_jDZeIp_==G=?2;&^&g;LC>8tanN<0g@f8Z8wdUV*f}`pIesqQ+1orH|C5h%7u?Xj zMt1eJaRFZF<5Pr#&XwYz`}86l)aPzE=vulnN1)#qB^$u@)kZRa#^=vd(_UcrRBtkX z+WZR+TJt?{(C@JIq)o6f$t445elMPy?g86R_L2cK7nk6d`n6n!gZgjIB3mWgM;e-6$h<{YjMyx^ua;b(iaDv>pC3tearQX4`?4C z0~}|6%kBmoblw~B`~6%)@nPQ1a2&Lkj=(|deyO4k_j_h)Is$B+j3hH)dtjCv zb|rP63<8spJeVpGlU09a~D4dHEu8FganQXm1_ymlJ{AX!|3f%vT|JD0#(x|Rsxux3wf_h{ z!Rt@NL7(fN#6j!rDSVRe=aX?zn@{7QI?v#sd7m;hZ3;F=d1N8jo>@d@z;<;wdz1aVygwPdJei4u-T|J)pYt&+!9n9wii6hn z^Ejw{77n_u*|=eQ#S0|p+UMY)@q7^nmCwaN?;G>*mwXR@nP&mm{7xnVXz!YjgXVVu z4%)|F!9i^<#LKwn?cZlD!a>i$S8-4uUc(oAJFnxQ`CY=8gFTD0WB|3l6kq1oyBs&{ z8s8v6`^lSD=JWCv4*H#hw{cMW@8F<$e-{Upm*b%Qrve9!^Lsexo_!w&wYdTZt?iXK z=(<+nm0*2a!?l2|fh-w7{ai~q*w|*t8nAo3mJFbAUWbGFxgH0tjSV=c&l_>jJHsX% zv>vK(P@QVd1^QVnIRR`9Pb6n}`Ao9J%S*|*UOta32kTD-xz)?Jk#%70)RPTf-bn5N zTN``H0J>i`{azFYW!`w?tB^T-TXJ6ZBoFMo|RY~3yuFt{ul@K;S(HmUw?{&#{b_qXl?ul2en^=gZ98$9P~5j&v3)m zz<){5bLaD^X$P?9X-BdX*w}U^3%$IEtO1+HT5>1Ydi#p313R{!Z1D0%GJxj&3mo(w z_&*$UUw?^%_THU1=(+Y44!W1W#zAZQ8yvK@zr{h<`yCFNyYF$(eenZ*1M5RQ89-xL zhl9qj9tYL`5eK#N)710^ura)moDX&{EFjCk-t8BWi^0a~b@DB+I&YKZUS2`2@bZ;p z0L{xT9Mu2aQ`2r>-`{p8dx4ElZ?cb<_a(=Ht-bN&qhNI&BPW3!JDHsAn}xaM0S=A3xa355YlewHXd-v-z~N0qi-_NCr^(p*ZOM_AnfD@3g={ z^LRK8T1!XZpgsRcyydib-?hR)^Kujp+Ut(SLC>$&IOx2`;D+5t$4*PH1{Qs;`!0N0dtGv9L-0J1q$n9RfgA8EpB*)>P zeIuW-2OH;HGJt+Bv0z%-4(xi{lc$2M+tbJfFK;9R=zHDcanN|S!9ja|TdoW2eJo1` z&={V8gXZ@{9JIfkgoEay9S*wp+vA`*C*xq_keq^pp4X@1pkq(NLHF$GIB1T}z|Zu4 zo`r+T&&EN=o`Zwd%(*ydA3hHU^}iDiS|^?H^Sy6>!a?KEg=+_UZf3~p-uo9Ev`%{9pmusrOAiE_uY<^DVEbfqGI)7%F%I9`yj+6!@%H=T*G-Gh`s;Df z*xrDHeh2kN9JFTs55LK;s~-;9Px|AazTJ$2*3T`|(xzbVx_RU{uy?TWW@qc(9?!`gRqkrO{ak~!(t;zdw(7ikq2bCA&pks&O zpz9jWegd|}7LmKa*4}Qi!OI)T;N{5(9CVE%anQdT8Z|8)3U*z^nkgYLnZIB0)(mio`ddCZal?A<9T!9n*zDGs`p=W)>Z%)&wA zJR6_mbza0l`{!I7v}Wevpz(hR2d$r%anSmikAwD>1vsdkSMV~gzX%6C>tDq|^YR)F znv2CaXx?APm-wErl>G#(&&|meVCOxY49omlmgAstcmsda+k6WLjlkgVyRge7^LE4r zHsXf8gKZ)~zb{vXgVtd+&u6fIqg_A-&>p)P2d#%KIOykSTXE3mf^9gcoeyx(bM`|V ztpCY&9CY3tIOucAM>yEECm-XWbA5t?_JmJy(7pU`9CTg(VU2;clO+S}e4qWN1_!_dmzK_Va#&gX(;XgMJ?L9S-Wx_xKM!&UHAb|MfVipFiTDc7DP^ z$L_*G*SH%GK6lA=zhI4>VhP5}Gr?4F%UmUww7Sq|1t1z82whiY;s*s))c zbztYMCj;oc`T!iXHy(%|#I>-`BnRW5b#(|1x~^t8XuoPcJuL)V|3zc~jl-chXdNEL zb%BjrmJFaVX)!%*0P9;L8KB<&md@cgs6R*GpuOctyd~Fczw^)vhwp8z9)*MM!J~0d z-&#*kmx1kp%gJ)EzjstY2GDc-82nhU`|&vX1J+I>89>*PKRxXRcJFj2dw{L6p5&!o zei@nZ@+>(CY(JSy2GD(1fP?yfJPvwhwZTEpskS(1O`d>*?)?*Su(3)`Vl9FFTqcjq z2dyQtotL*KJ9&9$vJmVYuZZjc_MYF93}DA5?Qqa{GVO8D_rNFPpzp*^!9inkDh|4q z({NCqPsc&?eg+P@#tt}W-aF!;cl$GO(D+PIOx7R7YD7$^Kj64JK>-@ zopDh4`8eo){}T?X(**~uv98P=*nXHL1E~KO;GpZh5C^^I6yl(3FTz3nNtqY0b(Kfv zgI#+8*$(WpYI`yRwkES=3E1_Pk^!_PFTz26=!W<5bM?kSV{+y6bQjn<-%U1veWq(9 zgO?{)u?E1#wlf((d*jtOXiTobul4(`4}P6r%k}sTK6f|b{e6yZ#zA9y3l5s!TX9g| zZo@(M?B8(E`neqkjnx1g^qt8-9JIIGL7&0e>`V>@Tk}K6;N{7kIB4z$;h?#=3%}d@ za}N%hyTLf9&JY}Q?SIEX>){_bXw2`$LH+qB4!XwsaL^dukAv3g(CO)1u=06i0Ila@ z9MsM*9P}ISt4O`q_em z>TktC?Qg?Dbw0pBd(nqDXgzGlLHE=S{1b2IQ~clF=l|fKv8};DpGRtO(BAbK4qAu* z#X;?Vj(_Rnxf2KV^D7*5-me)$u=;sq0No4U;NN;5zMGyl1M5R`vIW?BIGij5TPH|V~2!LVn+9ul-K?ZrXQtlx3awfupD#ysGl>q=&%8PLxw z$pE^?o8X}S?1O{a&%r_KEf)u^)qQc$b85dCX%5(2=aS`M|E8>h44^if;(0UTy|zDo zKLz8#8#jy((qmAAk_#~zM@`f~&hy7!Ny z?_g`}1Tui`&6YUm*j6}boR7jm=QFf1~MeGJyVl_aOW(?h$?- zl-!Mj*6lqw=(G7?9CY3xIA{(39XD+5{y~E3+&d%P16F4*8NkLN`6mt<+xu9DVBd%2 zku5=UM3#eHR|OfoJh>kSt)-zj=vi6JoPvEGDInW|-KQsz0o2c7IA{!qok^yvG|H2KMi$`aqJ;3&*o@5`e_WP1Ic=?TF8QAzN zBA0pja)} z5418bPoBU*<2(Tejq^ktwC6mDgYMaDF3ck?S zY8ei?-bFLgeqep;PnLs?Z3S85<+Wt+^5j(<)SuUI(E4ADgU)K~I+5(LG@h#`*$-^2`jZ2^d>}a(Y~F{E8L&E8vK-V;veL`fkX2yytH}niI*nui z&BZbt)aT_mXsq6#&tP+%M+Q)xH*vwe@D>iL|27Ujk^6HRN`%e(oS^!1noCvJR|HJsCjPvH{=d z=h}pW%ByftKdbRAe%`G(Xz$vFgX(;MgZlg-4q8jw@g08bN4Q~o$j2n8{wFx-dGsmm zfsI=!89;0J-#BRh{0|Nq&l((bAJyWZ{(Qzd0UNg=WB|?ee{s-xKgU7q^9vkw?f=6; z?R<$hovCq4@@DeBJu{XcfrIAdNF1~$w8TNrxK?=Unekl5;GjL>SRC|>J`M+6S3VB< zj8lMveqM0=%rpbm=PVgO*WLyPowqFxT5l)dpzA#m2fd@7goA!>ryUNu-u5%o87Id! zXOazI=V~PPc==v3czJTl%(NWreWQY`0sE{`OV)XLJ-N%vcasfX-be;7Pfo?b)?{)T z4*Kr&bgmclZbps)+k3~7!ON2~aL} z6kq1oyBvSZujOqVG)M2?pmyHHL1SKygRZfHzJrZh0U5ylZb0%L4*J~sJ`VO?l&ru( z^Rf~L?M16_(0A0UanLnZ&P=<39owDU4mRdH$emvP6nzUKNs<3JXIt<@rOu$K=Z9|aqS$H)N3*}uE_2LG1!?K8-CIA|Qc$3c7S4>;%= z>u^v%>)E@0jAPYE?g1OCy=3t6rI~JS@vvv9_8VoB=#pMrMxul zJ7J%eNgjS+X<9S0$%)B9c(c;<&Lk&4X^!WY#{Hq7G|dOAUqBXu)h{B$dT(a~zOgjD zXf?-f!mGTz8sA=;F1GR=c#W6W;y;w8oqowVJE_A#eW)+x=g!aTTv>7g^h|QvOeDkU zu{=2g@9=!A-x2TR<(=`u=hOUEIc<_6yr0+UkKgKbZo>yWpXRO1IWZZC4|+bWHopsp zCs%Xq-T1v;|DX6!FE7UDdigxO?D_Q0U#Pzb2aV^eIH=9no=?lc$}7kk_&w}%e69K7 zSYAs8(73&hFY&%D#g{$Le=C~4Eyv5f%?f;@pKB9d^?V%LYP`m;w-ygR4#_OOBb^od z)?`+ifzwy!%u2sp!8Incd5+JH<8vWiI6Jmkgm;^r zPO`Ps9q%za-WNUbOTGSOc(2*9&EELcvo*iTHF%%daUA;MP+;roI=r9P>5mWgc81`Y z+38B_PZpo#<&*I#-p*9KWVYrmDV?2Wa$iuNvt$6RpMCMBbKk1_)A*EmvCdSyY+k%K z7vYt$ezFE%KQGOFwn=`n0k4`D&s&X;d^ukGsF&&U%W@JyCCpJ9 z99|0hoRYM~;nP3%X_uUUcl0*T#6fk=!a;S;#tXep5#DQly2|FRH{NG{y2b9nzId6} zS%fe1^5ysnFJFmQdf(RI+r4}T{>l9G;!4K9tx;y7pV$qVAz zdm5kX<@4~e1#w?mgx7g_J-*A!cjFBU;&nCR&0g`jdxbu{65DKrgPyHN;rU*t0PpZh zy4%)sM|_!=FUPC=*lPT9FaHAH`AQtCukfY|@)_=Z$zjFYk{JSQy7-AU?s%C*qS9#{Fk9K4oDX+o||-UZ(_~wJ@&j**NI) z#S8e{h4H%P;q$%z0=#UYk0<`Emw$)XEljU%%sD!##~Zj78q~pe#M~ z*PQc{3-Lm4zX;EirMXwrw=Di+S-N2yeftRyW$AAZHffn8i&!U1;`|mYNz0F4lJ@^G zr=WriaMqnoj!4?zZI`5%{F-w{a>9}{b5g96B?G8VJIdQHNsE8YDaexHj94e>fJ2i} z^r0hOxFr48K+ao)_gj*F)i-IA^vCaAl6HM2IXd|#4o^?v+V8_b<8wcr@j6+&d`TRu z3Op=H2R)MaWa8F23K=wBlFp$ENuHOVcl3*r!!;01gK%#}CAhTbgb< zWuMkbJ`So=fVWwi4&O{4+Ty1yO@Hdn_@9cy?_VazCa2+rUZ)7}w>0hfIpzKF!AsMQ zUvumbJhL=?ejvwY@d@6}M7(5a`q!_iUy7G6P5(WxN&BP%uUVS5x|8~~cvzaYYl$bz zxbK#wGv@4bMA95@xh(df72bMT`qbx~>li%W%M0+rW$8hGX3UH5e#_E3u53cz@S)4n zXCA|g@yxRHlVa-|Ua~ChJOeMq%a^4GT!~lUHOu1KtHpONOTT%PW52?`Tb527g@2C+ zFHe?p?=Mg9zK=C_Bc55FerM|~iw7@H-k?8k#xd#tCg*xH&Rqo_ygYe}{=b!8{4iru zgqOb++pNGhd3hBMI#;#Te>bW(@1`1}|^K_jvnz@!;jjyLfrLuB3vWrM{PTf02FclK1#o>U-(B7ukm| z#X;ql;l18V@0d$@Z@lpRSYGr#lF_s2i+@=x*F_tWf)+&iD)4PM@ehxgML z^LQ>ND`;nhw}bauk^b~@&gn^Syq}l%#|NxPf4B1v#P9L)!8qJ>H*-1!zkfx#WFB>f z;-LN%;|Hva?H{<3_u-YX{2=_`mFeYoF#d<&pktfipz`MUVP3xlez?~;0*5E8KS!=i z3&H9akr}XdvSgi?*OTEWZ|7+ISa1J09CY4%yuizk$3f+7@V0*J3AEqN+b1*aV|kXW z0qa988P4$f9dJ-P9r3fh{2csTKi7G9r&?T$`MjB|~>V_Ro~V;<-6(vSa|Oll%n-wb=s)jd@QTROezGROgbF=>V{G zIFK9+&oAQlM##T=`9Da*>fcLdygW+=(0aHOhq#{c0e-H5_@I^Pr1?4LC3oTX#6Bm3 zX$P!tSu%k7GXx*%<4}xeyv;2BAm_5RF$RapcQiRY8Hc?U&%7c1m&37(Tx;?EqG%BiRY851q*{%a5Inm-(@aa8R4C z;;;KSEWyjYP6hsl*9kc2T9Q?1e%`9|G_I?F49!-h<#vtD@k3Xo>tE)5<}m!oRk8h+ zICQtYq7|O+^$YOARq+~&@F`w@Dn4UXTK6LFs59|rsq-T3KZloi{Zf3k*M9+rz4NIv z2Vds(m*a1&N*BD$`{A2-x!142p}Vb__i(6K$oFIK<6FJ`Z8)gT2RLYd{t*Az>wJPk z%>w%QDGr*if8+3Q8EyUt2bI_0pmWvYUwHZdaL_vc693A}zh0GQz{Vj<22eZS;Gn*J zOP!NeYn-!WfGaDcU z9EL35`SJo@=5-d~tGv!?ymEE=FI)d>@b#FMo>v$IEMQcy|Z;Z7u$}ANvIk zkI$oT|684Az>dw50o3M~IGplZPTOQBUgzcYc<^?TN-g0&&zYAB%-`B`FJ&z2aHE<5z$=m6SgX*7;ck_0-<2@?V zkL_OWiTA3E?-jlAeqN_P?Ss8<I#SabB``m6uoJo4tGszO^#0fo(VpT1Y=Xz_)WKD-bzl5$FTV#L z>c}{iML<6Hf;uWY;!Vz z_VDNNS+P8sjlbaMnuCMxsTbF#nU~|avSg?EvCYn8Ay_*_WLV(!U%?l9`>*5W@z|sS zf6x2#KEB55ti?h1+B(_hT8eTO+=AZG2z)9S61Z2cE2p=WVi% z?`PJ04tmGV$J_a_?boH{VDnf(hBLf=2mC^Brw|9N z=OX+P+};x|#X;|um*JpmzkD74o%(f}(<~W4^{>Etd7a+t(tNPzO99yrtWJM21GeX6 z$>8P5l{nn_3TykSb!juO`pwAzdd6LiU*qTcD}Jq?tIxW$5bW3@GJyKo7r$;@ymzk0 zLG9c?-@xh@kO5TxM!cW5-ygquU3}Kuf`j^YD-OEe+wj}H%>g*5&Om&S*SQM^jp5xm zXivU}aTpwr&5{As<`5jzpTBcmpz9(7sQe!|sLgxv`@9eL?!hb(Rbd`8s?UALr|2JpNd$lRS=t_J=3%iQeXuIOsk9DIBynPNIEK z`(yxJ%VfON>paiAfE`;v7J}6;A_M4Lv+()ehXu3=)=riz0Xw#o450e2P!85kDOnD> z7sxsonmD!v*MF6 zR(K(Gxb~z7zjl4xC;Q+7ynG;j$NG4m-iZ%dAK$m{!a>L0jc2@07B5*J-%m>MGOx1; zFJB+`{|dau%WLsKeS6L(8~A>8gXS@5ii74W58r=79Fqe!@ZZ|l5XY7b2YUU3Hl+EW z^+^_j9a}{9@baEy4cI!VC4-kI2jif7;Se0GPSOmAoJH(=&2i|zh<+Z5w}|IT4#!)1 z{Z=@r&qv{)c{~~imA9ty~YNh`>(%=@_<2hGtNIA|Q+#MgWI27DvV93`7@(7R0);{dj1`jY|FPBp&W*XjA8{T>Be}E--3g_ySNnxea~lEV;c=>}k z=$SqS2R%c_;tzS9hc~8GQ)78G8Q${xZ{wi)@8Fo?+iHm05Ta9{7m_t_NN&)Jk_K=&pY_S+PnFHLdKy_QEEu>NGp z0NN||$3gFS2jGLf{t)~=uX8^RYG){3;^!^J%QyMnh_BfcuVpR1epB4fH*89qfqhPI zPKND%><+xf>(}BxZHjx&F1*3Z8}Z=fNfp;y75CemDz3LGUW<8dm5$Al(7udLE$#7ykZ*me2S{v=C16Dsv)_~1REt!9EY_ovu2Ufp7nE^d>$>8P5 zDfnqs@p*bW?SSovwPXORpPWHC*!9+u0aV@r2m2l)>4<~+e^%urV(s%faebkOB0*(HjT#=Sm#3wy(mk_VR0RQ2oE+*Lt7(aP6S^A_M5! z`{JN$zYYhzUtN#i;Ma8{4%#374+qu1iEF$$)+rzh!S0tLG6U9rmJFai-$FUqb!EwL ztDoyO9MtCDaM1kTjt}%>@4!Lt26y6vyv|)X+_{6_X}KG}$FFNJ4r+44L|A*tCzK!5oK;uaUQ29ta<7+aDkMaJD#UHAQ-$y-+ zgT5CXhl9p;JU+qePpnFtfqie;oXiJ(ek6mJCr{#_&oWQZpO<4hSu%j01@rNDz0GnQ zZnB@>Rp6j^p7(IjbM1Y+X?0v1dDZ;fygELQPQ^iM<}|!Rb^KnXBYvjWISVhWj_<2Q zcv_wQZBI@?auMF6I(=vl-);89FZFgV!v|HzYrhN6czG5dQyt%J#^N)oW1nZ@CDrl$ zq!cgr@(MiovB~DNU+!k@Mg7SP=>3YU0_%S@S>xrkWSy7SlL7R6*%t@Bv+ajBi|r)M zanOBtC=PlC9fpIQD`~-b50C9+$r7-+E+qqK43EG;?H`G^@?(#}LEi%(jf2{3y*Vue zJ8uygj`L&l@zcFOXW-{}|Ifui{X7o`T~{X@RNfi?)8=@ObiuoN`2{$r{)Kp<_n`;} z^*P0F^7{R7P(SiLP8NS)bG$De z#3yWy?+g?1Nt@&MV3X<3Gx6A3GJt*-HU$U0pHIc-di(S6`J3bW`2u{ImoLZ5z5NP& zt(ULELHpQx9Q1Cy0pGbf-WOltbzZ+751ZqDm2Ba^zq3ViQ9*_#TjDkDLmAlKHG~ZI zzwJ4jgYUZ~o@>7?X(8BH6_FXx_f%x?@}wzs!1`81X2ABGEE&8!$-_bI?~fngeK-&Y z?W+gjpl8;>IH>+1v`ISD`0`+pV=>ciRm|6prr2$`|}ZO=F|fckb0V+B@TL+)-vK(xmuOP#peB8R=7kJ+;#Cv!YdHZ*#IGSevcLaG&?*ejL=! zP#iQS#W<*Z7}p3^o+Sh58i(VcevY93V0DVfUeIw-PRHJ42CUBivvlrpR?X`lUvp8z z#7s9uF;h(@UCd`hUw zGZamVnRDb<6f+d%l)k_B^L(E_-mlNQ=k=`b`mW1fd(FNTCleq&Nzz$8nEP2t#XLWs zO48kF552Yqd} z8ehouL|#jO5C?r9{2|5!sW*`hblVrGXBbE{+hWK2Oa-a9Q3~EHGG}*ug71v^}d0hw$1OK)3&T{2Ri2p9CXf=^ni>XCmrZ~uEQtU zn3HkPx&0BJX7%a#9X5x#c%3ai0P4XCe0E2dw7@9CXYdanR?2X8bqn`5zANui`bjqd4e#kKxC+`Fj9|gVuxX zTm!fJF{k3QxBJK19K7IjUoZTed%4ejfAsT`2*@@@$q^vOtCXw&+5eSf0;DHNz72A( z`wl5c&nD7YJt)CJk9&xN?!#f9m&8E&)K_Tl(=>zROG<$HpwanNxl;-G)aUxR}# zdo2#yQ-NRixj#>?$3gGOC*f0U{Hgdf>z~fH&-V2wSphO;B{>6R%$cOKdN2pS!^WJ8 z$85|vUS;#C#_#{!U+W%V{D&Fb9!&iLn|8`r6ueSOc9P}Fa68?(Kb1lBX=CBb@eD1H$NgVv&fcV?i^A5i0 zbN@WJ83#Q--^D?<`olC z=Sv*)8nO!qJ@?R02d)1X|IU{E9tYj7{fqSb( zwEqBp(B^gs|HYR575~k~{~ya9wS7w_K#qHo++pl*g!Ud zJDS$JNfPw9-;G!KWrJ!Q^g4DQ4%%}+p0Iin|7wS?f4!rm=D$0%zm{}u8+^T81Al`z zlm^K$`yPlNwk;9eZ`T&iNdApO~-1KsxOhLQ;A^_i>yc??#P zF_8W^nE<(`O_C1up6x!C1=+4B83R2=WCHYk5YmBOC-27}wDmrOgU){u{UGy9l8qpb zohH(O_AJIh?_>XlgZ{nqcO3Mw`7plB`j_K1ew?5d2i*@(;-HVUr*P2v(>Un5p20!K zd=>}oc@77COs!yhL9aQaTV>nzJpO{s^Tmde=GA`L7Se%UGuPlRThA+u^SWPGoOGb; zdV~4~KW3bCpx2X)>~oNLM#&iH6^Gxd+HPCC&3PjJxft>Zia zSvH$=p!=jA2YsIX6#vZTxs5SFUMq-`?hEVLfrD;K13e()$4LiT--&~c|0NDOpItcU zzS@m9+T5D(|Jt(OkRa#kOw!4}nRBoQ|JKI&KOA)Yy*TLkvkwPd*LOJRzWttgf{YU< z9ca&f9CZ8xIB5L`9CW|^h=V>)HRC^7&(An$&p{k?*+Z=Bmj-@ZW4c|HDChjy9C!fE=S-vI1mXmE;tV@u!k8tH((Py6iC=biKbfl(Ys} zHiOIp+4gMGSv@$8gYFZ@m>`dfIO#y=8SLaUR6G6lrsJ)4`g_IJIOu-Jz_WJx&*x<0 zpnp%b#XDI~XS~Z!zpk$MnO4ui``ei3;-H_QEyB;Uo`E>%--E?C=$r@PL#$^g4*L4` zg*!_c$M|{^=|JZ*76-lVmEo{aJ~vg4SJ*g}_$0=W_XsBAQ>;D}pSIJ#jyD}&Wc9`P z!_1B26+D82J~uszgYKWlaL~U^mf)cMOYvn^Uyg&;|GBdyRf8FiJynS~`YmohxLB>F?331Zh z;p@R%JZ8(raktxVSMU|@WqjoyQzzh{*VtA#=rz1G4qDH^bF4oXulUN3Q;EmE^2aWY z*L>wai&85+Ut7=D{5}4)e=J{z&-mKE7BmwF-Oo3DU6KHK%qGc3ka`p8tRCF_bx925 zZ=X2nX4|rJ@R*Gs$3d@+chL`W-H4M8^nAFRI>>nvCta1*tMLbYJ$MKQ{d-{%{+u5t zSb?vy{^xPf=Z+Wf7p-UY*Ci23Zz(+n%?F>)Reb=Rx=+t53$K z?eX`h({X3@;M)?H@~yw_rQ&Jd`g1ZJKjB+{zuF3K{jL5D5@g^fe(PT=I0?`Ew&W4H z*0sSw_y5T_=ymKAyrb1m#o_PreY8$E==VxG589W^EngG z`PQG$xp+5QS9iRk#m}L#h2z-b$BE-rE&iOT#uL_)#NWo{y7vygsioxY8~E*l&3L2L zoAAB1>^{7?#a|y<@YJ9Dy3&5)Ip`<9z31Zpv-(jS^f~1i?yMgC%zpmaKVH&t&~xmB zpGzVj$23Yh&~vO64tgzW{WI@<{Or#G(t-A5;3wLcC*h#yTP6^t3d7(s>wR5*OQGP{Y_+ZmhW#N9q7GuHV!(^ws<>RZ~LE15}?mDr0Zbo?Z|pT z&Y3vrK=0>I{ki1kPJWzQNI||2IE#!~Jx)5%?dnV&WNvZNf!0sMLB~8D@8Z`Lbfq8k zIf!(i`{4{6blEd;(0UI2p!YVU13k}kse|;#$ppwgOp*?C*={)KKI#5*NioQ>gUATT zev6W`tv-j0fsRQ!(7!c$;GkpX;XQx$kBhSy2c#Y)D?sK@NhUznl_cHSwrp?42i@nS z10Ayu4svf0^rZ*%nnrE`>EBA$fy}L*bp3oiI0x@<`IG+yS=SS!ApJF@vwCn9KGDXxhGjvIBk4f)LvSrV$>u!y z=aR#J^z|d81KpNC;WyaaZp5egeG*J(Opu;9`5nlZ-;;v8mbIUBRuBICbIDC0{Wp_> z?4Mi6nAPKC0%V*d=|JWj`~{z3bDoKVK6l@QgZA8v&$jKIgM-fhuQ=%byd4K!_6{6$ z*||8#u@2@jACUey=|HbtcjBO9#&FPO@Rx4ZEV{bM=!2nW5-{1~sZ{(2nr{_0a4 zwC6J%^j>ir-eB|D$$UVs59DEx{d0tLp!4|>2VHg-4!SM7@n##p1$VaI;2@tXKIos1 zIvgyCopwmajFSn_Ya{7E?+H)GLASRHo^!~LpL>XFj_;3?4)nb0hIhA~9yr``jOXRN zLnRTAIY-GDNPnDkp!4sE=ld~(UU*-t_rv>J{an20kbk{v0A6hMK{)6*=i{LJ_5ysc zZOafmV)KmR!)%_z@r$iKg1Le2bFvC#%xcns{#{UtkFx&J^pCNA(p_qExa?3#<3wL? zA|2@5uE8s8K9wvBa=hYX0%SiYNe6nKT!-Im+j0vIdVFW$x7u;J4PR&TS&wgEeC{WM zjX3B%%$s<^dXo62LnZ$_#_z6d#@!)*&k+2=J-{#iIG%umeipaYFD1>beZ7TraO#UZ zHZ$<7U;Oylc&A_dap{cb*f_a(f%O#PziLmMbSc03Yeg#F z!PkS1IOzF*>aQg!oqbO#89UvUB^~H>rV9?*-xWW@>Sy9PzxsWfi|7C9pErBqeXZUP z2Yp7tkfVpV)ZEV0a-RqCP2?6(pfzy`L!eh^0>92lYjl@Cgm*Aj(PmRJspW{a3Wj3F3e4Neya{LdrAFjYB**KH& zDZl#HF{a|ve)Z?}bbN-5GZUX}t53JdJ~X7x)?cSsUj$yv};+@o$d!&yVfFL5_9sEe`r# z#{c2Y>cMYp?{D_E0G{)k@6W~afAiOhUU-4k3-My>AB0D&9>s_K=C^A&Uh$j%o2wF! zSx+3lhaP#|>|Px7xL4tz*MVyMf#3Z3wh&)${jcM1SpNnbbexTN;x~UTC2{w=pMP+i zYwYoo?c0K`L1+B5;uz0a-Enwweo9f$1Mg!!eQ_9ncS>Q<4+rfz2QP3X9b)ts;t^MJ zRs`iApB@C+s-F~T|p4$ z{LW*f5HGg+AbfBTp58)z2tLAkO7ZbQc-MV=Zg~P;5rjL%EAc&*LxHvM=JRt-c0--PZdCzQN|R5l>i865kYr3)b>@+>C!{ z<9rl^F_7(zlMaUe&fjz&;fDg9*A$TM;)YrJ8_^8xS-^&<{m!*dK zo<%u6E;T%JH=hN%9REXVsMp3TQo}Tm{&aE}NdIusSv?q!gZ59ruTBm19(W>NVe6{I zC#8n^n&D)8iuFvzW6V>&D;mciP7U>X{s_Lp#$1X2%eLj;_)9j=m+@C@oV7UUw!Dgi zZsTkCI_p`FZ?y5>#6jo$7M`$r5_fi7g0#@JN(=SAr8N%PpMhtk`D2uggFauk#X+~d z9S-^&-5v+6cfdjSLr1(5zYd>jJvXF_4ma=`}^Ub zzk_-XUSK_ic%)URztI}S%Ubz+jB>o9Rj9uaT8UrRDqJVOBYHhPtyTD+EBGDk={U^l z&wbsW@fp@L6Q5=ETXE3)z}s;6C5Qgm_#CVM6~Eo;ci^C7&c)|h{Z1UT9>YQB5XTqU zwk&QH4hFeT9zqTS`Hj}$lk7rfWUk*ecZDp>4vQ%_nHhHMw=DzsEZOkF@s3D~eaN4li5Adry`4 z^wy#N9r0%zg0Hzp{R=+B>ND|J>+pX0UEDZ+SL;xJTlj7q^ml{jnuku`TFAh5ADjZfm!td)=-h+ z`!EiAjy-}uYTN!8{_Cw$9cW$#nxdAPI26qk_i~> z_+CF*XZ3p0!CxHvYBdg5%kL_$!C$p?y@tPTcNSjYdO*H|DW(fCx++T$8Q?{f;+1R zCxtHMq;Q@K&IwZS!6$`Z9uN8lL-5E+;S0xuenAwEofJmD40;4{e9=kasF$~i$2|JZsyIVp^N=EsSX?!Q+52H$7ne}{i>_5C<}d}7ML-~j%U)qlo8=W`Hu zRu3{m2OH$Kb5n58$66{5T2I4ste%S(WQIR|!##5$9?1+p`hasdijT|;M?KCp>Jl8j zyp{866h0<1{Ktd*O*a-Vvz~JNGOLfnL6^N82krj@4zJ(F-<4P3@Q#c#9-ojIj$MRb ziG%iBg;&@(mH3Rz@D=&}-kJE#nPJcIsX4(dIOt<%77kj!6$gDh-iCwLXXBv#b8yhd z;9qgjZND7{?YRR7U3M-GBjtCJ=i#8&hdXi5b;WSd-x81Gi){SGc#UmKE&gO?xO*=9 z;VFET?c3+^)tTX0^B8{({)+Xl#b2|YbvWp<>+#pE{sz9m`ZwYUt0(bBn?n=6H`6~S z?!%iiLw$Xt1$R~t+Hj3()lTd9q9d44;=LQJr4)H z*XoI%b+TVJ9|!I4g@g8-jf2*E*nbUyQO&}~_OgVyiC|7Z21_%U1dcRV=7_oSS{uHB~IK^*EM;vrrr{bX7*a<(wmOT>(t>@tVtp6Mwv|fNmtzLp( zY|DywE6}o|0e%WGtXqF%ILL7Ad5&UAS zkHAM}`E9=hUtv8f@fU2I7x6XL{}K+muU^JqvHrFAI_qDLC#)xlJL?Iux!=nU_4UJS zyi<1gcs0)po$;J(|Gbuq_qU#N@#5_8wt4gn!Xwrn#mln8N9%Z;mgAt$iI?INtmjJn zDjVl&e1`SR#P6`4x%eXMS&Y|My%tYce-f{=dOhB3>utfEEgQ6DZf(PM5AggF#mn0I z>rXje(KdW{Ew2kz;<2{=UN?@{wDtEkwfO3`;dhSvfi?ImZNs)fdVa7L2fZ(S6+dqM z4hOxr3EHtg+xhEZHlEWid`zyxxp<_Vzn(<#igw}J4|xu)#AEHk{SUF<;&@FvKhIix zb-S?dy)3&1Pqg#b^Ca%th58z1(4NOgd%foj((%mpVaqmN2X2FBSv?zX+dj-Y#Q)*a z4$o;Ho+Q7YpNkh*e<41ky?^c-ii3`GAs%V(p9iDu!!(e3I_XBV_uEp6m$mozGv)Zz zw(LZFMtgq_%*2;ieJKw5JO7X4%WRzGc#YL-anLzDiLbM5Sqbv58k*7F}6^ttK3 zcyoLIH%kldYz{#Ot~njT5iS@Qq;v>lAonV9(t*}f@nT;O2H}G{gwLmP{tUq*9sGSu z6ra{19C#x4;nVTi);|Z2G0q9}$MKpDVLXMNT0GGq+%5MxNqn1)vmHOuAv`UOd!FC$ z<5qWgR!4symEAE+LEVN<}(~0(a~>9DL&5Xm*ZDj|5f;>}<9vyO z9@AYo==i(w#!mikt|q+M*42U^?-c6)2jOtg`=X#T-r1kG!D;NP)BH805|5o0?yBao zAIF{5gVX6b-H%g=$4(FZ|6zeAPWNLbac4b27tWI|{_nfoF5%OCy6FA?Gvr~A`~M^4 zj()!0Kpq6CA0m%h{TS)29-M<0`2L`f6cvRzE;Gs|Qhhw(k$-;0ZrYki_f!JcD}N*?fYoJjT0*YX_zl1u0#_RQUPJ zlx}IH;O;y-y^C+K__uoJUQ;WKi!mIS3K?>ImP3?Ck zDabfEq%eI@YWG}Hkp0$;6l5E_lfnfoGS4BT@F@FjC@IL87m~u`LsGj(NI{N8loaH(loC>qV;YizEIW)8Wd95&1)0M| zq;N6gTr3HLo=E9Ef)r%iOG!c2HIfw42B&tvgcL3h()*1f1=(+-NkR6>7*d#lk0k|} zXBjC-e>o{g{Zdkpxm`wH1F{dVC52X;Zxy5<^Q7?*>EG7TXq#*Ub zkb-R23{q$pPw73A6l6X(k%IK!ObWHbQhVM)3ZJlDvq(Y4xs{xjYU?GZgN*rSQjmT7 z7gCUG(F{_MWoMGY?QHu^p*q_nOkSF3&?rimCOMdKbOo0>F-7Mv3g&!0OXokNEU%U_Q_(9YuX_4e2~ZQ z1>|6meKmxPfSmtPau`U@aB>pJewa*70Xe2q$=M)tn?v3O(sMUi1+w01@;;Dp?k67r zS=T~x5y(6jlMjO|`w00c$T5A4TmrIhmy*js_SJH-24tSKhF?* zEc+fQJa#;_>lRXw`D`UW1lg94$WKA${~5UrWd7U99U$X3kh?(Uzng4?5iHw8egiVM zJ>*{4z;nkwazDs5`2hI?$e2Hp%^>Gb3waRa*c~DdgUsy+nRbFdKhw$9AoI*1GeMSZ zLuP@@Et_l)GXD-_Cy?XSnalw_SIHhA*S$P4-|D@{J|J`JOBRFdw?X7!_?=@kgp61{ zN)7{g>4aj!Yk}E)Z zR+6hg&dKM=)gW_TL%ssCuC?SktFI?FfUIjHnE<)YC&^79^WRKv0al#27gY36K3BYLI0ok`=IbU}{b!ISIB!QVS=OQ$V(5DtQaYva`t9AkQgt$U8vx=Uj3= z$Tlt@t3a-G)#L+KUq~(jIgX3The77>2)P7goTcP4kZoU1)`0Zal23!o=NWPZ$g(TR zRaSqVTn+NLTSKk`*;nhy4Is;IBok6+Tax4!kZsvYZUgDrPVNAiPXoCNWPk3K1lgZW zq`5@<2FR~BF`O}vy06q7} zB9QqHAd5lfJct|&@;AZ|G6HfvjFQ7ZdWMrvgPiBjkSjpuu##K_a?kucxf&XoubK6KJU`kPHwrGVn}4&!7#S<&STWje}gfg0?uc-^F{W?eO+p!$*dv_6s_&??KLo zbaENU_AV!DK+c(3G6B+)BoBl193hW_Jf9vToz;VmJjOxhHjA7Ma@^;TF{{VP1nlAd zAxXMU{<%2ljCZklcBLQW9FCI-kTH{_vwCm_4swnKXX4##KXk`?`elQ&@O;}Rz3_;Q zALVfYGPeve6Xe`$LuP>->uj<;$a*`Foj`gzlU+dWW4n?$Ajc?|>;ZD@^2j2P$J79F zFvva}LJk8xx5-f;_Ue-61n^gRd2W{`c=LLRjGA@VTD_2dZYK-L=!W6mJscO`Q`)|*TA0NJ;BWWLpV zk$ph+XJ4`aWd9VBMIh(N0J7NXgUG=k=iU%90y6(7ISgc+;p7OAIh2y4K;}7`ECZQm zIXMoVkEG^bPEG>ppG-~z*$>mnTR@K8EOItT&m3|!$Q;&?>#V+>+yJt!jbs93T}g6_ z)whx#f{gPKS!eZnavR9@ZYOtuyq48K?gBZVcax1E%QlhUfXs6bxfkR-*+=dNz3(EM zLH2nIc@SjIhseXA*GBRv$UKjc4x}d-&bmOxZz3JYdV`C2T#WFq7sW{j(i4>8BklTd z2|mhSpM%l({Z@Yf2feN?#1~n8G5$AyJ_motms|axILP@EJb~9(y%vAkuEWpZpx5VT zaghBGJclQ&p2X|AhW{(!{q%bL)2`vy=i{H@J8ZoT_)dTB1z+O3{J9kD#z9^m3%avp*l_bBQ9W7p*Wvaj~|eH$m;w^si@e826_132hD{{e@qxc3Ww#6ceK zK{F1z|6A~bwvC7Iqjn8HhC5p}ID^-j&+xCA$MKpo{OifJc;XEIxu7IocZPrcydK|i zhJWv-0dKT=6YkFNpX(0JWS^WFUN8Tz^lrTQ%y8&5yajhw4{~^J%?bZFjo0}z@XQ?F z-v-aJdNv-hdK9m)dL{m@)!)On+x+l;mOnZ-obYKsP!DfT~7Gw zG`@EbV#jMFWwc%RRx#PLKoe@v73JKe&3`M+>*o=Q{^-plndL0hhUytwT z=HGK^z(IR<;*C~s!d*B2K48!t@9y7o33_mRd-!uH1Ba%&nZt?rNmkFqv#g$t=ky5Q zU&Q-pxp<_9ef9<~@8REnyc7q0zveQ$!s?ZHtcShNi!bQmkIOwc==U$~#X-O0P}L)h zfPAMTN;=T*BUIxL^zh$nScrr6KZt{l^ANto>Pzu|_;G?|IB5TJ{7D<zaQNO z&$4h>`Oic4!q3k0??d&*`{eoem;2%c zdH(&ZLcAz1)c;d{0DfMc|9s;>yx8i4@JOCNC!=_U&7l&Xk*A-f3})i7JpY-!I9`+I zKZ{k1zm*qO-OYQQ2^{qEbxC|voPOe5Nrti)GIWJKxA-GmclC z74|rg7742HMQ4QzPT(4~7_Xr&-=C_*8?D}ie}7i^MmqKVIOwtm@ZYU|{H!qF`Fbxh zCeAo<(t&<9ILK%Ge7_%R@kGAA{v`4GeE-?tPw~(4!|bp5Y~D7!(dtdO%lGGG& zUe?>c2VIU=^!AUJN_<9df81x{vEKGsJ3QXof8OIR{O;cV_|C^+MHSCw3-BuIsqP(C zfYd8V2l_e5`|!uD{~x`>1V}weI?!>J^$u%leZ7`UfYg(uvwH9(4%+_|{({ZtMSQib zYYh&19=?Qw_P@-Spz9^wt5$yvUvK@dqe8?P{Yz}13kG`HuMnKjZB`d66N!A?l^;*(_j`Iuk!&WC7LF!GU zbG{w~eYkG-@z;=Sylo$U57rJpy^sIwWfvUuGuvJ99INNz1%3SI;S2FdAAkLf;#c?a z*Pn?v==1nBc!kv~@$0QV3IDUz|ANo9`W!rF^*9dtz0teysy_alti~7h@t;*#jDucF z|AvEpX6*0y!+reciypxrvvHQ-px;wiia&1s|G;bd`0I8p{&XMz8Hs1`6;@w~uVz{K zOvM`fC9A)TgO2$M4to7xi*K~`zKMhOyoH1IByiBrbtG}u$3G_qeR*xCum2of2Rzc( zKLNjk z+0S3wOYw?+et%Ztf9&T!ll&)qMn6CQnfNXJ{Ft-wm@ON}Yx?=`O4Q{`um4%s#9{KWEsf0T277!IkzW}6>y*`CAX5C0`eV`spK?}@19I2 zXIOnEc?-z7G>cpZa(!4&CP2ndk{^Pcs~?edAU*YDBgi$di98B2hhwAzy}qUP57R)_ zn@+kkKW32LKa4^8xRjo8(w*RYf>t=_W3V-z(LcPpTJFR9heaUUGJvcD8MB^jw0aZi zPO@<_anSGAw825IlPBY+SWgxXGKU}=2fd!R#X;xa4hQ|tPW%4hqEq{a^8N0`;)(hcux>*|Mt_MFo{ z+zZmPk8}k#W+C3+dd|f`$0@===Q995&&C{xgU+EC2l?JmFbD@-*ZDZ;bHoKW=y%=+ z;X~wMkZalz@^_GP z>^SK_&hwxg2i@nF;-K@n4F7|z_X^ep@*Rpe>Bif(Ou#{}nOEYV+kO?}UG2}qiDV3< z9w!%p?1#nVGLUn1IaveJQ%g33jM+ju(DQjB4!X~;!9lO#*W#f2tpW#qo~q<=eVyON z38cH;>XUHLZJ&%!vt_5_py$<}@fo&_Gy8`RfQ-42d>CXtkC2D0euO+~^<$*7dT>+! zF!N@=Ep5mVxA<{N$qJA;SCY4YZ0{`cFvz-&kPdX)XW_GL&U5fPY+L5ycUn&j2R)8) ze18A1`)zy|W&!&jx<1b5^hgK8<$EaiP>0bAIWDAw2XE#6`Ch!nmaWBi^!MLqX~4hg z@1J+R#zDX5(ujk8N2UpH?(e_D($YW70{LunHtCL9&oSKDvcb9dx#0&DDV>9$C_I=_ zq|arC$gI>N{o62`EP$ST=cSOWv3f1pBhB~ckynGfRxpvQuzDrw()~EW33z6ae?D!4 zXBFA!y75j${(Cx|@th+6_ed_@t;qi^*&Xju~4x{n0HlH%q1tU_@yT{2z zAnRI8y7HoM-z$8U{!$!PFX0@!3?FCXUyg&mHu47?bPiYGa6?LZzhFEL+A{$M9p_3M zbo{G0*6`jdY29nd1U&glTF)futR7sAgU){Q`PV{|_=iRQzWO7)j&bhbwat3G z(dtcjb5Z!ceD}5mcSZj35)5FR0e;!!fUtb?06pg~CFg?NtIs2y)q{5jgg1hGuX7ri z0J&dHk`DCx@E-oLuLqytpx*+!v|-hH^UdT?IY8sxE)L4KEcp7wuFx{CAs zJS)!&gKA$-A)T{&Fp$@y2KvWQ2A(<4_qV~b2KwibY&^$$a`7Hk&%^Vr-U}}n=)Z?p zh)1j*#YYVE&!MIGsDXZ4M&o4z{olXk_|*gbex8V5Yjdc;VY>V#MkPLDpx-Am@!12z zWzVK|4CdhT28Iv4n$|hE6OUOvj^8!Vz8j0*JurMMCB08D9|!%;>;k-MVEA@QdQMP{ zKWz0!aA-+#nIh6mR2UGFz=(D`h@ zLFcm(f79mk7M`%}O5)DyL2;M`a^1@&bKur@f}C73a)Pf%$r13yrl5BzSpm{hN!|jo z>@0FNWWE{X%pqg&^~RuIoUF2XHMt0+e=%7DGEOa--^$l}krg20RFXATuO(N*7w-i< z*O2SPna_IC!9=-kw`N;F#>^%oAnS^fWguggljA}9Cy*5&^QGR_(@0n(Es9mujlMse60ZhAB5ok3=S%sHFv1k&G`%sG-%!y|Pq_cWZ$hL#*^C&qCgMOuC z&Ut?S=aP|u{y0X-DImvXDmlaIGs)Q?W6mM(06DMbk}<2t$weURT1+khIS-eTH6Z=9 zWCG-zNs`X$K{4|I>CYweL3(*r$r#A^ak9$l)#L*p{R_!OpmQLX!2WkQj^t_> zxS7WSxejE^_2d?io~>jv$T%(JVURf=A)VEOL7aOa%Vv}LAY=9-3*g;1f^LOm1mrOr zCCfk`*JK4qeeH%gAMdMQ~Zu&>I=@gU1iAg>0Q+eC7mICEZ4CP4a= zkIV;| zPcO0nq^FRq09m$@bXE_d`0!$XKXVZd`u@emIOzNMBk+;M{yypw9Q5z3Q8;M-XuQID zD)H-z!;gn^4}U!l`aQTw_!O&8#b;Q3CLSveAKaDJF^JrOr<8P!z8*B;|1I`^AAN&^z7DVl-^+30y|!Q<{#~*EoBDek^l$V1 zIOz9A58yx0FRxSmh&S7qE%;&UIfDPM*xyec#X*-nhCAyI2J!mXpzxRJ?1ywbb5MBt zpLq|c4c^h}r{bNg-Wl&_^>grIs}I5lTYU%~v3eA*807bDB_12(??vNyVvv75A&I*| zem?}~b1!thzCM#ny7cpX{e<)R9Q*m&pFw7Ue19;TECbnx<>Yvf*C-~CQ>;FfyaS|v zE;+lE@1H})K~!A~Cles`BT6w z$lRuqGeG7xldJ++S2elF>Wj&TLHZvdmw@yvC0BqfyOPYg*4J~%9w7aBIX_MiT)^Yv0{?qralGb&@SyyrM=gHrg7AxZ{4M-D4q88sJF5qS z`8#oNm@<#YZ!TUi*njq;5RVM@@2yAiioyQ9l1dzoz0U6oU5DQ~*k5yQ!()T}{*U8t z4)*VBzco0#1>`;JS!4|4{pdLPw$yo_`W;e`o=v0!ea||e)=J;=w|X3 zke*rOJdmC{$(YsSvk5`_b8W=hp!)^uh$(R-4tIBrs6SQ58`-Y zi2sa75^o&h-xq7b-4OpeTQHRVq5d`VIKF78|E$Pjyk@As_SWK{-xGfle|o5YefSyt z*`a=(&*7l2ldQl&`&Z)s8tTubf8(G%tMC_x`qvg#4-F$AugOHo3XtC=s3c<`7K!G->FHHG*^7y9kJ7$0?E zIBW^ekE3zW&ufjrLDxGLpJ4r0;uRN$pFTu?B|hUq|5>b=IB5S(_?^}h!{=Mi0{k8u z|6UyQb)+gBbiLL11J=I~|C_D%?>OjZZyv@Uv-%Po^z&d#@fxew;-J4f^dt_tjZfjA z^`~*r-}QP1f7a&n91gmTD{%0?{e}O_mi;%r%I5Pt{(|+qh_AMB*5C=-t|b1kjrj@w zgZ2N2|8k-KJjSp1VO#bH?yM(>@IGV2@2eF2gowTu9JIng_hD;1!|EsEeXQOWztHLt z9JD`*$0B+U7R2$Ii2uE~T09Z)=S&jc5%Kp_4R~Y3-)lADF5-_x5aqro>K_Z~_z6*8 zZx!XWi>N-CJog0)aFFNF;2s?GJ*j)? z2YF8?PCC%{!m6m>XLYg){ihyMcy z9dj8Dx=)tlp!@KjIOuzzPvA9Huf;)^eG&(KU-c;*biX}~gZ4awudroTM#FFZ<=3@` z+z&F(1EjNh@NXP++gIVB*Y@Y}7i`;K#6ibjjf1XtO*G5_sppcffXr8u{Sgs-(Z zzlwwI!`C?0ApLRj;5t9fA<}_v<9d99ZOcX+^lzUxanL!xg>SR{za0nd`JC}VeqSg~ zI?!YN1-`?!u>l8t4|gXH+Vds8%eHYh4tfrJg@exjYaDbAjX3BrZNmR!_5b4E*?#*T z2OWPu4!Vs8@Mhb_798~V_kO}bx8-O2pv~bB4myWlaL_S-#ShzlIKnjqWc)&M2gosM zAZP#P>vPCyM}2)d=|Jam3(lW+Tm3J1>|+0ZM;vz-hl^5q4q5!=vYwhNBqg z80lbkCgTsp&$s>y@WIwU1drHyqxdlE8IF&zb(P|ytUekq^Wz8Q__$L4+fbL|<4Z&R z9j6KSm8D^o%=0SzYFl<9USZ2t;!|u6Q}I}7cxk}zGR5(#QvbV5)%Zi!zX*q@{AT82 zyvFuhExy9)EAba>%op+1w(J`GC9A)TCv06wysp&$HdH;n!}=Ra!wAgdH>0BD2yuQR ztCT$0=6ge?Iia`&s=QykMl?4~2N~NWY&4;Sn1rikH~5uPZe2UFyDn4zb|4q^9_zauRO#CLB=gs&XHn+KW%(g3z zFB<93=f(KL*7FGds4e>#zRc#Z9IvtdTKvh8{`bnB!k-@LkHs_ib5>u0gC3)m_$r&{ z^Z4qK;VQ@fLa}CK7~AN_kCW~#+x7$w`WQ^&TSofdG24pQjSRn$bGshjVcXk)H`?5q z@c-C0{uke8`|3L!^fCTD4*J;NkAv0^;LWz}Ex5D!1eb80jPm!cxuZDNqx?N>6dymz ze|CKWK4p~uZQH4M%<6IcYg@K)RG0?x`?u+&1Noh+pb2+2W-vN*Cyw^l*pu+g(fZlH zpbZX_SETj{PR7StPuXZb^DtVUo8qJ^AMNiAF2zCruDJ{cef}DUgWf+}j$dIt`n`;Q;h^7T z_%{yvS^8Bt=(azPgZ}OL0uH*3FXF4Mz6RfD^*3?QG2g5q~%AU(BY!s-fw^gdx54*Ht&_R(Pl$g!&=V<7u2PA06L zBpX5Q!J0_7(~k9*c%#jy3IC7H^S}5vw%$EB=&|?~2R-iphwrueJ{fYl3PG} zwvx{3LANns4orD9EkBoR1nF-g9Y}xB9nT*V4i)c(pY6vFdgFb@ge|Y86$E{8c<&`% z)9Z&9j0s;@m)12X#6e%{>pv!poI57`=+(5mC|L&5Q%+WZ%%PHWpzA8aLAE6rfS355 zAY>eP?$xxjqND>^HW-G3j2{fgFS2niWcI#c4y!!4VC^-z|+!#)d0O>C!V<0_oG68a|lVqdSo5;N&W9}mz=(bPC|6<2+1`g5_ z%)~+W=S}!uZNJ@)gVyih@dENVtt6*_%x5YYvwEDY0X>Jwgw>N|BgnC6A|2?MbMbjL zw>xo|^%nDq;h;Tn{4SgG-FTJXhe0)dpUwY%`~mA(h(By&KEipm)YoT{4rFe@<2YQF zNb4K?0|!0lm*Jr2%yQ1{TED%yWCUc{D7gq^Zi~qpcq)}yxz?0K=$WS(t&Q{E*x}jyYa7VK40UY=S(9GI-e%| z2iwLUanNy^anQ#_3l2KwPxxW0AHn};V;;ppuYt$#-|bi&$3fTYaL{8EjOFj#vHoxT zbR6{F=>)vB)iZFIE}uC(5eNMp zgN`!zD!S{~!?>+6q_m2&4doU$0IDj{g4VTLQd)R{iWOMr&KRDLkM;*d{w{;!I zo%IK0e3z#zyp?l4NX662!pD+4meX<2`U!aJvT*#%JT^1%fo0*PFX6@bs51YYG8!Le z{g>l^u>LFX@m8OJS6F`~9xDrfc%I)RkK>EV{QMV}g%ObZ#weNiTbaIwlO)|TUk{e! zPxyLJgM*&uwRob;pPxy*vCO}R)r5n7M&&=aEA!t42+BEc%YA<~4tfr^#X--*c6j@8 zKYjUtI2w=?J{6+<&*a93OA}6Yz?1|2@7+ zd~&%zc7Mcgu$~+7KU@7TIOzLOGjP!Nm}cTP**tH?LFaP|4*FX6EPS^0%)vo>{)&U{ zhud+`|A*)f9Q1K97YFU1hl9Q!bSDnl6T?BjKOQd+(_lLLC!MUAU#_p~R+7^|)-|1+ z0kZ5&@)nTSerJ)htv-jW0y!?#;lQ`zJU|dw}an9S*wf_4p2(X9K>|mi-cMw4Nq>ugz^AzTdX-0RDrG|053i zerq!h`g`Ur_(9u0hw#I8{v5%bEgM{lU+U)*T!vrf_iZqa_czD+?>?lAtfwoUW8>uFJ;wR#c^;l`{k`x$ z*54N|u>L~4$i^Qqj?bWu^Y4$44)lG5LDXmaapL5Bkk|GXknRo}e=a_6oPRIiP8{?- zqZrG^{d(i11AT6~Yh0KGGEO$R4WxfN=|JCWxElwZ!+ad{J&pzVJ+>|P;#JmPjf4Kp zejg6{9>o3Q!cHLXWppOHfV}?DmE8M)ukR!GgVYa@&g#KJ=KqkNL!5M=|3Aed9CV(G zanSYt4F`E_27hN=AU$2l9FU$|GT-XG$UY$R>`OYU2M>=6TR-CWNe1a2wQYF}2i+%2 z@TYAK&oEDr$5fnjpxgc|4tgw}NX0V_$$QA_+0zCHn*!B=6YC z;^DMD`mUZD_~Aa{SJ|BLnkM5_7;Zz@8 z7il?N{HVo`;UV(x zme~d8to$Z;pOv$}Ptfk5#@pjzv&CEBZ!G`YKEWwJQ%}ZzPsQ6IsY82wpT+m%VQBg8 z7LG@^==ob7jQn?bTEWPVi{``Vp`YCat^h{T#T^^;)a%Rd=L{<+s*z{uzS5=Q>qqb-d5@wX5@Q)z7D^GPq&;7aM3OLtYQQ{%ks~Lk^gR5N4T@ae-9&nPJ2F#eEAo^ z$nOgm!pNUfT?8Y4Z~4V=ms_+yDTce=qUZVDVC3t3C5(LAUIimx{?#z@>*5+1`L?uwf2yF57UXSRVk@Dt@hamal&bK!aA!3RIL>g49b3(AAr>_AZE`yt+CJs_25pgim%I?KMe^090Vi(z3&)|{Ji3DWncZ~com$mIw#?Y zeS_xZEXzYM^2;>|Mt}W)_+&U``DwVmuYT9E0bbWvzumbWM)?i&IUC?@mXm>ze81jh z;a99~ufk~N^OXM@jQlq@cfdJ|H^KXCzWd=Xto^@)4_i4$;IOZLKi&1?oT{I;XIuDJ z{j`044I}>@_ETWw+vHRj`8NCwd}cpw+aehGcm(d$Prv`(8NQ&O*7HL65{q97UuM%@ z4tMPrRNl?`c{dpOZ^vH=Bfnm*g0HstHSo1o=5;Xg^DTjqZ<8q8gK6vNH~t7C|Lyoc z!96YB3oh*!Y}-RSm%+XJ>G$9Jz~%k4efq-4f2Y15JkW9m!7(c*4iD?6+x)%o@P5G~ zE7?9rz{r2Uz7j@0UIin+kBo#zGp|+!m$@-;wYB*;82R}9FzT^_W%)Zi-pZT+KhQ6j z^(^&&5KdT`Nf;elMI9#g3o=ONo5jOPw8I|y!^!Xzo7Yqr`MOPmkny$=-b@`@G@3ovyVKjd= z?fe0oO z9PSr%JkrniC+Fbd&z2Ly$gc}`8{776I#v*c6SwI-rAfH*3gd z;6ZtJdK^wzJPFqh&})R5@Z$sYnUPs=z0J1)e!yJ6(VVfMi9+O+S%XzfFcQNIr(fB)DA@Q0T35uCGl6O8=w zehhzYb#8`{kGH_z*nGc*zZ;;P{-y7gRTmE0*Qp+iWk-xV3D~xpRh5K910C=F~41!|=bsLDo$S?a~xYEk6f=5}-Xc+nW zjDg2m{(W$@<&T3C1NB-j3D?@P%!KDz{(N}ZK;34ZhM%$Wm&0|IzXE>N>bw$OWy`V} zer}*{^UuS`w_!bu{PlhVj7IWqG4}$D{5J3+{F2pS4ZPmwwE;$c+Kuog%ijzmzwc~; zk#EnfF!I~vHaKJXS@>VJEdPcZZC<k&&7w6nHuG1F4ZR0vlQV18t^*`ANd{#WTD8Jwg z-fY3OYCO0xpLZFZ1EaALKNm)`@_An1JQ!`tFNnBK@bBZnd-=Sd^L+RsBsmx3SI7D0 zU%{pB8W{QVuZ58>|2i1;D`46Z7(H0Pw9$AF>k;?sI*wPO(T#a$SK(o)#$6d4i)()s zhb!Z{j;i29T*oDnaE3CaU(Ld~xV}HRDIR3@#)Eyuc^7B#5G_93>SFh4oNq3~gRMXD z9y~lmPyUqG(R~&VO3$#?r<^!W+Y=L_bG{Cx55NaouE?};S87oM=^e=o`w82K`{!pOgWejA(_tjCBfoU`(q z;Bc_MC(Yf?y0|^~;yvn640pXfD0@G@qw97%?-bQ|5)XUc9{fZ0*eOyn%sXK!y8yTNT!_VCr?ApY% z&%^bW(*Uova@N5ai)Y~-cLqgS&d+zkp~c-@)cLO9ohghf9uK3-9%Q_+HH@D4f&Qlr zjOq`;C&1|L7RH56gxlJ*g>cbb+71!8%U#-!6~iTW*?&xM>@MB!;&9?FJAZ~#cWHa3 z;mlqB+wm?7H(GoboV!c!CuxHBQ8%8Mb^GDwyL1e{1^)J~;Md0$obA4YzrQQ^Yj4i+ zet?fz{3kfHxEsoK_fXxI+QP_hZ-sEtP+gA^xXVzjb1{7BQ2$O*cNtt_@hDtMoO?xF z8GMUPdn=55yc|Y;%)IZ=Acti9zX?BpBz_PNE$;fk$ln8V8$7_u83@OQ>T<>5%Aq>G zT?HqG>T{7vIAzO{hBHI$z1(naXmI&)1;2Mqa5z+tJFbH9r3!!Dl*V&Nu8ErPFt0+# zNm{|kUn}Lq$65S%82NZ>82M|!Ht>lR!Jy?__nicz*{k@r!pU$ui?^=`_MM^e{rCYS z`3Lbtk;aqwG$ipFJhZrrz~@xx_363r#T9zp+66}by0sYYTA|}A-QX)LbS&#C`05J% zkNX<9q(ZL;qi`wnVr4%TbEZRK(6OB@ z@K(x~HrWOvKjxExk&kELeO8D4aBP^ie|#AA8K&3%NqFioT^G|}5K3ier=erF?e%cI- zd^`)kuG6|VVC1KL6aJUw{~Jbry*I+hx7#lGKTIpz-v7aGv0QiaeXF-&qd z`Q^>Q$k(R{Mt)!Z7)Cz+3B1?J`4mRJo}axxMn1m)FPR!N~7N zKf$53gS!{LSI-08@E{+_eSHPENdBKa4j0KW^mzOvi=T|QMRI&E#KX3l?+W3f;aX+{ zE*Ty~r_moq;hvV$3%+5v9_w#}ONZ-!{bg|f;r4twJZQL{W5i(O-#HM6E44nZ3a%cm z&)|=P6PA;NQ^WQBEor!ZxIS0d0Iwge&-878GZxRnjl*?(U>BSluIKhma5!Agx7`Si zzaxTy#}%CJ^5NDag8#ge&oj#~^6?X3G`Wd>{zSO#h~Ub1@*}PgM#Ue)zZ$_iPDcdi zyp#W%0zCY!<@^ptzRc4{1SJuTNAY>+`FHX=&c{<|+;IhwG``H@PvaRR^UC5OD*Ko^ zoCTwn9Q8aKM)R50b%f8c__-s3A|&NU@De2DMDavtjVJLC`DOV%j6Qr@{&$AESiE>d zkcW=Fli#@&E;{yhe&>8Vw79zjMzZYgQn;&4+YP>QM9@a+d=-p*&ebq_{J;4ZyK7+N zd=WGpdW`tfVW#PsVdOf%cM*d#4|G+tmH^Jcu-L_pN+e4-97lrUCm3mHo zDqLjo2;8YMI6Rhf=FV`JN;~g`FRRr3<#HIEbBJq%KfuV38D0T*t<>i=y1`dh>hq-6 zz}H&*I=G}#&uOD@%%+XQm6f`$Rl$i$y%tWw6D#$c`5`z}sn=6!xV|#@{YXcf!0Rl& z9?n$i{*r~m%HY7iIVX2jT<=!}Z*S&5mtVu@R_Xm4=fTLwJHhDLOo{#uF zjQn#A=ffA+v=_n`Rq4GV7sJSx(*;I8zZmXX6`Z$;Yp!nabyY!Exppgok$>JNTE%yS ztAb}f$-nSqd>)ed&d0yA_#r&BxVs)kzMP;cXpQ84l{WY^B+psY;D;@K1P^c0xVsrH ztqStD@*G(i+{fyC3ygf7Z-tS+2c{fGeqMd6g5F5#*#}=XRO|UP{uYw>+xT}DKZJ)C zcNH-5W!?=VKd*aWM#yYSUd^WA{noni7%?s`}CfIQ&oDs zlZNYPXL*Oo3b?*X$3q(64OM}ByTNU&3KHnF;|nfG;$g<(S-8=r-38~W^g6By4y){a zCL`H*MrvOjflEeepC5%|BQ-w`SB~^!fUXKojMRNO2|qMa_o+#6W~6TCS-5eej+5+y z!;!jQxKYe&l)%;n*ncL*j5^l#X8|;gpr1hU+cA0nUuleKrf{M(MXCn&7>o zg4ztvTYU=ev-o}(eZGnJ(|!SeZ}A`C!xldR9~~7uxQT23V{m9WZZ!2At?e0wZyc@t zz)f)JXsvS@92>3oo5kV5qxG16JAB7z?LUXWLr3fVffX?FV`z87$oH}Lz{73Y5pdOL zJqH*Gk7B+xjIE7^k)L)9{CCSA4?j3s-#3zgkw33U!kN+9muBH`w0;BBjbXXQXd6c1 z*cjWc;KUex{woQGV{~3_Eca@T)tq0#ZO7{WeTDF^#s;hAx(@Ew@F`>U*|byP)5hxd z(+)=dzPR@A>0|XhJRRUO#%kYwCR{XDzv~x)OUCN96oq?^)orpDeA8GRtGO9QbLBe` ze};RH)%~RpjQl(CZh;5dw1eQ-SRKcU!yVuD<{@o6E36k#?Me%UAm9uAT&<;twJzj$3{^Y3eyOxi~ zkhEJIPgp#OPqO%Ad>WEzYw+nv<~sx5jbz$Ac+TQY_;*P158;O`egqFK?%t#R`?L-b zJcp#rCcNZJs~g@QNjU@Xn8o9Gi2S-f05@yCYoSae`4K#WBqxiJC%4y}B5ALp+3X-*rs?R~o47Q!VKkHUYtPtTcq!pOe|qZb^rcpR?0 zPxqH9IB}n@_avOTFZlQ=ce=~Mx%=!~8V;>|SIstDt>ZrtxJ$J@FI)^?Rju3P)i9bf zj`N&r;1Y{R;hxpO^~ZCsNH6%$)xntKIj8*#jOK70ai!HkMg(W^5c&KvxVPo^fzg*z z&Mh!Hqcz8}TVdqOEQgVwwl92}#rwnPkF5*Na|7Uk)x4*;;1V|oj#USXS{GdG;_w~S z)~CTks`WhZPPo$IRWS1Z1&oBpR_j>keK7L(y;sAi@gsMI8wZcC*1lo_oUr^PTwAT* zMVeX7Gnm!EiVk_5qId%373E!3U|L*Ch0JVf2k$m`%9htb7Fj6ctU(H}d&vtjgD z2l~=E)j`oboi>7p$mh(bd?YzZJcA^j#Y5!FTmUbu4$e7)^|*-qr*ytaycT`aA@8!8 zcnZn1X*@)JzKh|M%_|LO*iPhIIaxSYt$ke+++3~4?iM(#w(GTV^s)ErJC{zqpMLdz zzBiP2rE3p&v3N1u_5NU$#JjMyza;G(9xh7iz7v7FB=vu& zVz|WOQMh|D@ZZVp0ryPme+|9hQj3?twhsehVBzbQ} zGMMyO-USgn9BA=Da7^=EoM{IqeP5l#6L%&3|3^uD8j`W@8a##M*`hRFZ}A3vUxmi^ z<010*#@`KBYB{bd8N|kDP8_dBk~0nuk^ir1EIdwg-2L!)i%)4I!jC6) z-OYlLzxQA^jQsuNbKrSN-R9@R3zGVu?2|B(cgVYiF!K3};8aqNziBv=)MH;3ZnSl` z3(i@76Wq+Q$oH>X;G&6o?h%>DI-RKF^TlwbJ=n;LJq*uQLnhCfffj@ZO2Koqr1Nn;7`-R_}+un5h59 zeF=XxQSV#$8b{^QAD*afcmxiuO!p9d z+C$pU41w=@NS9?Oym*qvQ2<`Da5!1FLpO!{FsJCT@=EyXDSAGC4P0XJDBN?3wpB0qhADbXyb(tJ9+I12 zDZ%cAybqx_9GhbAY=je2?EHU9kf@pB z`@JL{rl#orm4@r5=s9WwyvE{dVdVe+T?cQ|XgHWaVI(Gjn)OlNj&^O^WBH=Czi99oPAaf9-<#x7hK`?!w04WUoW8VJqS13 zv@P&=Q-W^$7%Mmghf{*n_A!R(rt)9dRBe-1aQ;+XM+NY4Q?*Yx9&SBVuh-hZZKrDA zQV9QQs@^m6Yxoo^=T!JNmVX-DZmRC@?ct)S+71!;T+2BR?le{Rug-AKsk-mD0sBh zZ45kis`i2R!POQY2PbS^NqC}_^AJ4E+N1`4*p}rH82S27haag!^aI@vNz=y4zBXDTT>!z`dP1A9<2wXBv&n2R8Y?{4a9iA{vj|&gLiD~*= zRT6%Dnr`Q_;Mvo3Uzh{WvvTIc3oU06jQp|nDL7?0X}I3v4RFTtvoJbyt~=9hhmqe7 z{{ioqrv1rI`1NVp|GWXeX*vIdk$msZ{R>9tmea5P8%DmbYlM-{*##qC{(s)AZh5S3{fB=zAuU@WPtlUng*{<Kf6MXj*)287}O>kc;;#oLX z6a1n8Zi4sK1ec%4SnGbcxh8o36#BFlIIPj}0rxOt=?`o9XTcpG)_01Y1D8G=JlC3Y z(K5Jby5>ZtbIveb;YpT18D41REQ0H7+7)p93|*E6_@x>8j?gvm`WgDJ(GBosnD@uJ zEpTRro?~a>oR!lAw|-RX*5*;#`BANN1irxH7s4fv>N<_W-5=HZ_kc?uwRHrSKdSTU z3-^Ciw}%06>`_}TIALWb;b}In8aQL|EZk^i?t*vQy!OCfS~&;cuOHQAZ-$RPs%>}- z4lUn3#uh z2amV-1UO;wBs|HcoebALrfoYD4r{e;ZYKP=-t*vQG3_kv|C4ZPRxo=O*DPr`WAQAU zo2AzdO>pxpy%uYM!&!Pg>t^%J)NDOx&V%!3>-ly8+!~hWL)*Y7TFyzcgAydq3rF!7 zlJVp?J`KtJLN$1;#b@Fn^3NBa3?qL}(J$a%&er!Bw1tu0YXtvlww|~D8b*G+`V<(+ z7>hdt+XcT(9L1!9(Qh8PE<$<{QO%gSL1B`&&5!s6TrCWbUKDL*(0PAaNvZlElM77LUQm zzthaW{hYsnl}X;8%~*_PGY%JzAG{k2vzv z;-SUe80v|9J@Ig?)$P97!C@rvBY22>ovT?!B=G{g4#~P$fq#c2=Ma7v$+8^5L*%#H zaq#`NJ^URWuXS@1VC3830T}stJqRPe-z8w=*JBc{ovr^D%!Fsp4mxJt*=`QJ#Nta~ zv{1fnw`_KhdPd`EJcA@Zi-#6>%VAW-H}YH^j4t6@fo=u7-pbqnzXfM0^KCdc+kaQl zHNnlZ^<26I4rlARlbb_-I7hDwqHyILJwLC46La)@G6_$equbuJIYDbA@49J&Cy;ED zNqkz3#%u5p`EB*#Il=hp8lQkC(0chU51v7ilf^^izXdP@uAQUz1kQvXpQHar%$gJA zBiY6Z@DTZRF?&u>H%D_;;4dLrFKh7iNXp!Rhfi2JbK!YR!+5xx4N^xNQ}#oaO(`SJXx$wyLV0lp7Onfvj> z7C(ZA7I)9U$S>n^82LKXQ4aFkHXb6s9j<^IY+f(GFIxO182NVyteF#Z-J<1m!|y;+ zpCR~Yi;uw*7Ej`nEIt{Zf~5VY;?pc%gNHk`9JdpG%j)p2`$Vub$Mto4xabM}j(G$w zc_R4dOt!HooUnKjPCXIa`Yrb*rs2@yZZ601xq3ZP0Joj1`&}ViG*|b{2;60^J+}gv zSUd`s&(;09FWhgg-v4tO9J6>FuAHma@>TG-x%!{i{V?*^*MEl-7Ei*pbM;>6neeQ+ zdfqY{M*do34vhTu>=Q7$Y7S#lbK#W5({Q~lO9Py-couG)t78tk;G8Xc6Wnae*a9Oz z{__otHs0E*v-=iCKK>nyd>szK$j85jkWfSKfyh1 zUcD9s2_(}d@f=z}zt@C^$d7^F03%=KjqpuY|C`}bt7jRE{I>U3%0!Z%#2b;6zYE`O z@jZABNq!R^BL9Eu-{5kqTVELYct05VI@|^iT%i5%AUI|@arkzd_6`{N^)&=We%d=> z1{Z_)r*P#j? zY4K6;Xp4`5t8KpHnD2xI{<<%ThsZx?@c`u``Jbo&4->Y$NjO}f=d12X+Tlq(M#SMe zpVV#RE_mpZT89dFxWz}n$d8Rz!pQgMRq#m59|b2YKM99V2L7E+ZXx@{LM^`lZoN?Z z#x`)XtsFhg(4_m0mg?r&ji&w#kh1w2Dc+x^WAD9eJvH4Dg zr!CZexCVY?p5d7349j{vq*Dum<05!nt7X>|!W1MgUoLLlnkT3sV!#ft~IM_}Y zebk!&L0*S*meU0PWH~>>p_S>LqCQXQ_oSk5;wddN38$XYF|IVc%;HbObrxR%XKdOm z91@prGr7f-vskx{B%E5T|EZ$znXZd`2J2K>(AVB!bdyZc}G`^8%3 z5AgpM>v+hIaA^51#lDvE-%@vla8XLHF(Yu7l+L#pE=k!j0*HV4@>F0^6rHzQ~Hj(DtKfn zcxgKKw2y+3e@EZwR8aJHjYse>VeurKN!b`I99sQdnq^Px_8Eao(z@?Q;d?AT41OT3 z%l;souy_()m=0DgZ*`?x1S9|5_NQPp;Uk`*SPZ8vX9F!J+S3vaOaMi{OBkmo=*!N})q zhPPYJKVUSs4fo`{3?rZa3XGopfalj5*6pDM4%7a52j`a1wo7#UIk_ZAO43r zpRpt;LK2VQA@cqCqi|Z|Zpo71bR^qq2fRCyGJD{OrJA3_>yV7YtiV?x$ytqOES|-4 zNaodqmu%9UC>}!+kK+l8C-I@1HC}M zneVHbAH_rDmJdNj&pH_IU z<}~3YpV_?d6q0Gvc*f#cJhZs`9R9-Q`z3Y$M)Q++21)r@Jn^k<1NbB)WlqL3Na~!$ zb4cpkBz)BBhUb3L{3bj^Ql|SE4mIDorTmA!RQuajON07?r9tKucToer9-Y6{ox4F| z=*ex2-QhVjezQBb2@jFvyW^Gy&BtrJ1wY(cr#*s)$lq7o21Y*r1Q_`~_Qa(@2^x}h zmqqdJNXqYl_e7H43vae~3!XYj<7vDeNj)3z(Bkf77)d$q7fXX8^yHWB{0LrxBp$_k zqEj}zqF#8Z#mn#nlI2a}DT}A^myyit6?_Mhd!BdVVOyJ5;nJWJI*IYm&Ug&1*}|JF z@Szs3z=v7Yx7qp0G5 zyW$ugqCae7883m+FJ7i?FQu)}r(50m1$cOw=DW+`KP>h8qq~AOM^a7{FGVtK8D4Jj zzIY5t`Ek6`;#GJ8{jfLx{3L$V;>Yk1`TBIFd?e%NQM?rS^6{9(<9I!iIyB&+#a%ZT z$$O#Qm2B@wa!$qDAt}E-emdI3GIqej5?jXT(qMD1rGC793!b<^_m?D|K{C#t#do7u zH@UO+;P0bfZgZVJ!1p4_`4n$Pvahw^A@bw-H?oe9T}ANA&=&fT%ki!j?}mpKcXzN|4bl7pJVcW3?u09C z`>cYI|376U?St08=8B?t3cc}#J3o!rp)||508lKPk7y^)mJ2QNobhrW1!ix0qKNa`HNhg!S>ABH6VUc3^$xSel~;G>Z&?-;xq zN%`aO5J|op3nTyE(|s&ElKK?jt&!BT4So`mb~qU?v3L|OMN*$KJgnAyH;!!p$-E+X z_rGhr2i_COe0$+3Bspok9!WV3c!+%6##7D&U5^pG1W7!K$B;}L$H!ZI0-msV63-#2 ze-j=eU*-ca^8YD32q(0Bmt@(|ueWn7z{5xFc>NfRPB}n-SPP?hS^CVG^c9b5U)ljL zLef7+@X+FJ7L430+@n65c0ke(_rQB1>9>2~rRWNls|-JkBf^$KMqe= zJc*~!+*bLW(s%~Rys~(hvVJ}dFR|m%QkD_PakBt#jr{Qr50O8HE`yOjRz6Leqf55C z^P_kUNlp{qcBSSN;`yufcwK-uBgtvOzd?W8_TEFOoCM{+(e0Z+(p&S8>xSa0=jU>`(s-qIPr07?ILA>IYaHe8HfhNRED z9Pf^#f9rwwM3U1BzX?gs&3Gx2{<93ve^K)b@YYDmZ-Xb0Oq;|*i@TR#B;~s`Fp?a% zmTd+}Jc4&ZQch<)XYnSy8Ob?e3mzih->#$mk<_OU4^hB2;MT*)&uasWOjZrOa1sz2MZ9 zW}R_7+J)~%YhC{Nd+_(se_x|~JZJGHd>@kh{dhBy{jmiiUP*kC#V6y_kd$A8*CLsACO!|z zv1vY@Lb8t1c+W31rx#v|eBJPJB+K3x?{Dz|cnryW<9Nd2Nj&wX)-8>P$ghh7Fp@Ie zK^XmO2IG@o!N~6mUsDc}{3N~u{gJ+IC;q0z|A{vu*`9adN0GF{F+4<4AJvaX7fH^`_$x?qUd4AK$=QQ%`IE-C;v%X4He4jnBV_O_ z^5x^(k>vaXe*;O*oA@3iIq%{k$$1YKNzVKD2S{>0#6^NOD5l_0*g^TqHTIaFMLve7qP*IhWwI zNOET4`z*d6KVb2Lcr%h|Tku0jru`oOAChT*#E&7#`3V>Ky5XV4T`%f}WZFDjB}B+GRhE|P7yKRy6SIRkN#{O>aezt`f!agj_r0VT-#~@JkZJ? z1jj5t4i8NXXgX7L*MVJrU;c)FE21Af$&{V}-K%AX0(v-X(}FRaMh3pU>u z;g_t;HSk)?Uk9(Z`EGzWTK*wxPhpmg9aHB2bE_k;s`yM!F^KF7Zwq^VT-fPSF zDg2o&%jfVuYtQ}gmsaM1@b^}? zAK?Glvit}iwRL?A{)xCe>+~}mT76s{cpU$lWwsMGELMEImS+ehGE)Y(1)x2@A{ zyAWQZ-Eum>XIS}X!bNqu4M*U!>hvC%v*CGlx{u6sD}o{tA7U@2T)_R_K`LX)yBN^J)j5zCzz0+W{`Jcmzgr@2fitM*e@{ zv*B}B=(;-(?zBSxv*-+8WH}eZ$lr(41x9|_Vz|`GFN4ch=zq|C;nWI!79b5TSrNQc z!~J7R;X2~-yu%8(-r^1LZku)wjC{_!@JE)DgTJ)#$O zv3L}YSv(Hsp0)o*;pS&`*<0Z7S-WRuCGECS+b{x`tkf~3C|tTy+qn$xy;9$?(+9p~ zr5^ikg^|C{wsAq9RMT0zYK(te~x<)jQsmsVleXYIE;KbgJI;4t+&IK zD|J7uf)gvX{z-V^%HX6ej72;IBR>W>37)c2{|lQ6Bf0K&(_kdmIIaeM#HO7NqXRM~ zHUoZirCuLB2G_3i;|y*loLZ^ZFKM{m+NuFY{(RsC82K@%7h&Y%FTu#aXLt>~ex;sc zY=AQ>wXev+Ict+9c;8Ch_V&ZgEA_b30)J!e^DX@S%3xC?+uIND;g!Le@_xl5aA-Mh z6@BI^{ccww+(T&cR@wT6cd%S?9NY>2YnArH z|Avuo&qf$&{|x6=+5QWEyee3{hU@50U^I3e_mu91(U3m0&!;dtX>I3>0|4Gi5@Bu6HAdGzcD;W9tehoKUyag^f1tAnC9SNr!NMDTF;YJHAu5B!tH-On)c?>Gu! zHRh{;M8-vt)^k*?;~0Q*FC4( z^9p#C<*$Y_mXn2Fw)iXXUMuHQ_<+spAdLLJ@D=>^b9(*K3?mk!D+@Qm^8Mvq@a}rO&e{X#>h+$S zCU{@H_VfGU=6e5}g=>MsdOiPf4eYZG!MlU$TZ-ZF4ME=RdBtu59KN7&_agoIi@Gd> zVC0`Ej={(;V;mm-qAvRg_(6*&VC3(gNy7CnYJc7UXI|8MezNe-FY0++2qWLmxR>CU z^myUc(7&zGZKe<|TBGYR0++1OeJ2Vd|89-zVRY9b?wtr=jC#%qt}DI z;2YQIK6?}V=QX;W{{=?Azbb{1-+#;C*cv?_i^D^$4i#|a8a=L6!Q(AH0Zy#ZWl6%R zHM*|TaQzxxj}35UjjqQm+-URK1?Sf2cG3hluhDaZ7Px4w_S=!Qw8L8cK4}!LT&rzZ z1t-?(`&E)~?ON?~X2Pkpx-4lpvo@$dEAQ7X3pcLSfH&o%VZe;FH#AnJ2@)U8imSI~e)x30>-65jL2%6Cakz3_Q1lb``B%Y-b-FA` zc+xsOeoclKuG4e2MR3aEY4}--uY~I@-T-GTo`u78x=p(EJSV$8SUV{1QkMrKe~fDd z=dTY62j%_26~HH1{ABnPi=PS?Sv&%FwD>u2r}aUH7}Iu!kuU%Ea97Lk248LQYhdK( zdo5hDKG-Mojl!iCFN1qqejhky@i=^k&36bqbbau^puBFb0v=}h_rjHyUj--D2Y-~D zB)r7pOJU^eybMOZK2O8XSeeUVHFw@s{J^o)+%~ms-3G?!7_x>pt+^mU9nWW$}^lXp4`5 z$8OMf%-#nh->+7~3Cl@t2oh-W8s6iLhZ8sGe(?}IX@iadPKKv!(C5ge!pJ{sHVv-T zY28eCp-sC8USc^*;bm6N)9^DEUk=w<{tEaxEB|@8enT+kC&nHdVC0_(dI3i7%JV@l z!Y^6=8W{Qdtc8)!Uk4*uF1H>=et+KpZ?v3E@MfEK3%u3lyNxz^Rm)G}A@XCPufaR4 z%$@M-R?Zvnn^yim;YQ2Z1^>tD{D1IUR_C`j1k=!cClp*%gNN@}{(s?jt(^DZ_pNRp zz#rPQAHg}RXA`{Fru`KD%yK@5_gUTc!(Uj=m+%2A{~-LGgHFhC?gI zZKNODsNZeLgIjOZV{sd}t;GxBqK$eii@;qr21RwP&T_?Y$ws>tfJ--O-&nRWIO}g4 zgEJn^yWnhG^v&aWS9HWh5*XMfe%!~p{t8C7e8K-F zU&E+l55^ywVKj3q?b8B>o9#KNEiB^}?en8>=@z|)D%%nys<-%dNaBgwE&duOiHFFa z=g)+5Tl6}p2@WmpwsP&WRo8nB{P0%2K6(VM-D=aqsjYgBl!oiK>bBGX=eFv3R}=i{ zR()pqGZ^{z0e%iQTf7BEKK>1i{4>tq!ryJxWjq8Q-m1%W1pc4Je}s>2wP$nSpSS9H zT?iw8UhTF8VXJLg=X@CXdmszot1W&FeC;+}#_Qk`i$~$oZPvHIv2AvJ3RhaZ3Qla( z^SUHFZJX{pH8Aqa^)UR{HeIe-82R{2c-}T$#`*A5+jQGl45uufhU;y<4e(3Mi)Yo{ z8hEY6*TL&8z5(83_1_F5zr0)Et=qJJ+Xf@w&KVf_?I8>AusZC7bK7*^Y=XmWx~^S@ z{Vt>Hw-7GMXgmUU%4nN+hPzl!G2GSS-QX)TcHIq^WOTk!xYXihaJj|%!u>P4UIxGk ziznenE&nkX`F*W6!*;ImBpxCkp9v$sjE}>!Y}(l{^4I=z;CYraA6}5r@z^KfR7Tft z8m`Oe`dR_6&FK1C2RB-L7yO@$UYq(OO{9c{9D4>{h5?##IJ zcj3FysRv#09z2KSez_)mACmjr_T$Y+?vZZ6JDs38o$&;cX_I)$;%U4d$^A(@Kxx%O|ED)UT^URJcHz(y(}Ignbw^I zBZ<3{VdTeDe*q)k@BI=+ek`jkjHFFmA>1yjW2Eh2B=^g?-@?eZ=kH)7_shA{;SQF6 z28{fDeP_Z&Ssh=EWP|P2Lvxds0Y$vrTK@WV*%Jv)Mr zKS#@%fQOwl$91M1F3$RK;4FR^$+SoCu#4uqV)*K;ZcEp|C0T#ZjElm^-;;BFHYf_R z{+^i#9wL9AOm`UhZM#P{Xp3YVyAUrza_?&dzW~WSHW%Vukd#@Bmms;vDT;STa!*bV zyeE?Te|q6JAsHvX881cBhGlp;k}~_^{gKRT06rASJxCS!FpJ-dS0brf6<&?x9;b2m zG>g~ZwMfdGiKoy2>XydqkiWMXuSZhP20Vjq;NH|MUi2p|GlF+QQvc3)7mF9;B}nQY z#bXwam`Y&kjyuYHzV05Tk!9Y)a?*{6iJ!K@DRy--JfCPk12m)dq9#?hKI=Kl)}i@zl<`G z+yiz950Tu{=>7^L{~XZYvO#Mk@izELNa82s5hT-|g?B_!{yBJ0i}%7qi@V-1@@4j+ zOeFbj@a{;;?}6tm-h}T(lK&~b&*J;>W+d}%!NdMm=K=8Twv2bc!>n()mu(Np{kjpn zBa(jU9J~{fI&{WMEFQ&sBKfbU7haAer!O8ua=&pLPax^XlK3Pf_x(=Bry;qAxdxw( zWZD^cEt2`p#8)9He>Gl@q?`skha|rVZ$^^ef``a`&GtE*cBs^8_u~hUEZ0Fiw79Fv z2Ajue-?asQ8A(6+3Vzh$$MDeN?tXZ@^@kJKACVk`it(;U?xF35ms-3Gk0IG6b{ z_v=>Rl}PGbg@+GV|M?({B;O@qB>650BmY0zL>T#P;~{vG?h9@*JVo2YO=X)w{+@8W z?F?;)LVO^S_#j*)b%^02iO2EqQ7h*$=7Xfovv`PPeYslJDU$V)#4||NMHUY&?q(84 za!k+SAv!=G;vR>Q9HZSV82RJrY#90D;~W_IoF}qDJLI3e!cRwX&d>obK{9O=uSAkl zg*VRA_%1w$q?{%^w78oOr>s6{%0beeQ9Oa<9_A#TTcZ0*6CN(LW7#tL93=T^aU}a= z7H|8s#tZRNki<{Li!2_&yCB)dit!R8IZ-@Bew{u8*J<3XfYA+88QXc5^3f3PAuq&> zknGnHJVa8CTL~k{ajPg#L_M>3xY}}_gOMK-cpgT6+Io(yNb)bl%aOE0U%b-dRrqL& zkHM>jc@A+LJ|4+(O~9v1oM~s^n~~IK3!Xuelf^^i=i30kz_xTk!TIh*mJ$7n|Kker z9FqIPoA40%=QUn}*Jl0m9c~?rB;T#4FG7;v3ok{IUxsHap2c?~c?M(;{=UUOz;j5- zX~GX%{0JT*Ki>_s1CpF7d^D2y7(9VwzDYbpzCIga71akn+g_ms4p0=zYnoHqDLNalMo-qzxUc#&v-ey0fD1xZdZ-WAEby5S{A z>KVmD9EXobGOr1E!s1DM68fC|dNTe#k}^NQb4Zq}2@e}}TDJ>+ zhwVV_GygA~qg~`b(p|$S?2LaI@yS7C5x)IJceu9ky%!@o?Mi z+CLX=4~mdnTSf2^Bt4FZ4VO2?-zK8eEf76`97fojC>u=pgbfwr{bq0nYII7gk+zM z;9V?UjF%wEkK)~t>u`)mii2+2Mk!Ap?rn^F8GBsn+ZrAYdgGCX1NB%ZN&77s7m?)w~fIgI>1 z{s+oO(mzD-j!5F?;9Zc+w-_%$zJJ3rNamZxb4cdfgohS)SHQ^klU$=E^^Par8X ziHFG7p&NXamg%mBueJDfaA5sRcNqEez#cI2@09o>+|zP;(GE9gP8ps+avqqJn8maB zZY2Bf9{hbIIUnGm#odiClKsNn1S3D+n_0g|rY*$VA(^&4{uYv)xAA6+x8Na?eD`PS zQ>yh$;vw>7mchvPIe&%AZNKXa_t$;d4SJ9K-C;3*{AVH(dM*?+Tmh-BM#Lty0hg*(Ydem}zNkW9M*uSb&KfHxx9 zM|RZ9gsxHeOJclISg!i1L`MvNE`8KbCYi*mE2|rGroG;CS(V-Lg z4)Sa`W$`q;#P;{4^oL0Lhc@_0NcQ)W@wQ0%w?aIDBqxc7$e*7qgX=WzR=`N6b`&t^WNB_^# zxyMIQ-F6BUIP zH0i4qTBwP)f`aY}2uOeg0YQi)T$DQr7bQqw-sgMH`Q!OK-~2vj&YYP!JG(nOyU}B| z5-$Qh?iS+!^xWz#CWCo?{EYdt#J0)8VNgAShrubXY3Jh+p!3N{d=Ka~(!IFA)eCVE zsQ+Rd1+6!R12F4aN(S>f{|ojf=(STiZVzhT0e1wo&%m9)yq3T{Ky9*d4(QyKiwA<* z55i&4Yl#Ssf|iZpAa0lS5@ayfE50JbO}bxt8RJ=QpX1VTCg`(+EF8GHw}QC=53x^D zaTwnIDY;JsM?u#jVz>-m2qpI|$8k{m1P;Jl5BZu5TGm@h22)?f7(mxL(s2}2kKw@8 zz12K-gX$?b4Rp;U9k&O4#?b+H1hvV)JwV%%jl-b!5j+gEAM$Y=)INa&&~M#%-;hD$ z@z&4=^d2OE>)_f@a%MdaT-~c;Z1B5Ka-S6360~e8-V5q~9}ZmITT2FWEodF>!R%Yy z8Z@>xI1M!ZbX)*xQ;0`_+Kk3yU@F(I#^T37>m7%SK>Zivr$A#Ek0(IYL9TD$NuXsX z<0xn!#_)@v_EYdwP(Rb~bkG=P;1W>#Qd|aVUyc`n#Wt;G6Q2)(10JZVfldHe7 z_h!_P>)h**dgjtD`x>SL4ug5^gaa_=wB2MduYdNCe{|>1pUC^%Ic+}~Oq&B_Ft4c& zk{eu`Mlw9XIn6st{@Fb*{6Yrvef*Qmt0r4d!7V}cRGbF-t$=jg-qkzcj-d5s;7+dI z8IJ-z?~KM1Tzw*rf_?`ehU1_%2^^>%;(G_D$Y8$H@hch3*iJJxQ2P|z60|L;I1@Cs zEF1;3i77Yp`0kfw`vYg#&!9FDTmb5)5RU?lVKg2CT6Qchf{*kYGI#=L*@<`( zXxYj5MbK{`OuZcUX0?nVg7FUDLAvL%T)V>}EVER0V+`_i; zT9U!kQ?VTml+TDJ}z@_sa1+&^FG;3qZ>*#1-(;S6-h= zT+q(e3vv52yU#n|IOx2Tz;&Qy>u~@&E?zo0W0}3)auFHKdxwiTcA)3+RGbESACZm& zSNA$G{?2yU7>DX^+G%f z)aPhi1Zq=^qo8GDIB<3EUNV^Za32}Wc&+rw--=y^F6 z=Yi^jaWH0?eU2VWe#FhmN11Pr+kP5x0J?tb{fP`_JVj(M?^BA&licHUGTRP%yhLyS z=JER+8O(Kz=h@z1P;Kw2YHD+)y?N=u~_)HOx$w1-%!`!eP)niQwV0Y@54r@DI1% zIpnw9c-|qGxq3P0(tp|GSdIfQuNmGagE^-2$gplO_gl{AIS90_K{x<22mZ~NLG>7p zgZfF}V1esrAsNj7Px&tyO#dH{E0)>UCza&Sm)ZAOOUPi~f04g%$NEb$e9ikQFHQzC z2NLAvZo5{H!F=ZaHF>4mZ>z}bU7Kn$nD?_aWH9H|4P-Faj=m*tbn|2rxz4qzXFu$; z{S3kZm}9+*;{rO?SvUaG|88=}<#rBaEay38xov;Za;|mTdMXYsUT(Lg6B*2$>Aak4 z&bEC7M?rHSh66BdE?w>?gT|18GeK>#a2V7kf&*9gGHC;5?%^Jwac1METzx#A0Gg8% zan#jgxD3>1xeRLa9$pT*&aeVkf!eIab*^5I15kS}i!p=FnJKs>=$x5~JA%%`8Mu?H zcgC5no`rjWmd(aFpk;G$f6%f6@Ca8Qi3>pO3vm?GCWeEqw(fN!cei!#ax$2C)q@Pl zBa*s!*^CX;PX^8bJ&)w#fuJ!A!b3p)55>V1uK%7K3(#{-1Wy9BpNylRK4UUy*;4!l zsQpYFfZBMy$Y8F^^(N=IdM+8vJx*7#uR!-NW#JsqyUoPYRG~C|RJK*3>Tlel_u7W&fu7@1a7!@n-*IbDn>IMj)zfkC zh;8pZN(R&CV>})~?Xz$JsLw(ixVkrv{P=SFocJd)==szuB7=FJEhax@&#T^e=FHRf zJYSE4XI*^~8O-z1WO8)5ea{smzv$+}6t)G-;~lpKJ*L{=G|-$$$H7Z(&b-Wi0L{G= z+!A!$Q*moh`!+Ze)Mpm%4{ARE4+PEaK{yOrHiGj&=Ze922&nx~d@HD*+wd^Z{Ljbt zxca@g05ty#@hDLLqwyHfc*f$#Kz)wGMWDx2F@6d(hVgg;s6G)-0Rj?b5Okl&IFA=3wL$(Zn&?j z_rv``+dcq?LF0+wA)wzT{Wsy$pz$>005pDYI`a^8ZcN9Spn4Y0 z0o}Kpi~G8IKO6?NkKm}Q$8Z2@@68~C+IW8>gZY01uad#sb6Y|N^FFtf{F*ynuan-eUgDwrwWkC}{u0Z~&&w->Lt@?(-N9K-=!kVY@(cAQy*0^$1=B z+J}pA9CW-AxEj=d4c-oFUyJKNpZV6~0L*&llEJL&ZH_glJ`NXw)?19Dt{%hlKh(By$Bxr0<6Hq+S1Qf}^*I=i0nLH2_%T->hl@btEXET+ z=ZA@S5~%%T90eW67!JT}S2_FVefyk}zyX-|YxBrpj@NwV6{wz$SAm}6R^uwrYyP!3 zyuj8YxC*rFT3qMq^*8|CH{~s4e*V|?nT5N8`s{`aK+6{5sH?|RbM?8n47A>IJP)+& zd>jXjGlA1Su>GXt9-ubaH~@VP@}+SK3x%>Aq1k-_|i)fO_CYY1D(+im||E&BwtYy?L^ z^D~Bn9d2xO)IsZt;Q-8->&ak#+iE8n%)H%2-tCUp9&&@5+l}Po?)m)$`4{)Rf07L5 zy%=^$&WH9w#IliFxiMcokT-{s2wc-`_{rEZLmMiRg|5S3Ot7nnBuQ0!j>0M6l zvBLkgg#Rg@P0n%kTyl7Y{oZke3|Ib@?_l0Y&Rb!>uR3@I-=kUK>mG?LTmcK-@;X=I zI_SdpcI$D`O)LB!o4xak@l){JTi%u9an#jgH~{ng-7CjndG)f*S(<+uT~Y$Fc9T;B_=@_T{W z^u{@$&v$Zh81z_<;381_V!X=LSK}(sHPW@X8ua~$8e9h&TRjevZ2w;JDnA+2PYO;0 ztv4NKf|kv~VONjf0?-%=aS^D`VmtxV&qN#reV!7-aZsNL9Duq0lR^e_E%zMy2eVyx z2az__1HF$+$6+wb;-HmXm)DwQ zL1RwEX<+t0&IFA=3kR<5wV@5DpLCoF+CN#i2WZ)B+#fWa0eB#&pFwzts}IG);3GbV z&BsNcev0t~(DqKm0hoQ&mU#&3Cl~hzEjs{*LGv?$hk&+aC@ugqPjCrn*-~5v8fQ6f z+0NEeaT=J<7I7x1pDf%TG@b!C47#ox!NWjf&c`D_eU8NUfW~|;E&wwI{4uD_CwLKP z*~K^x8e0M{2fe0UfvZ7nYH%HB*?PR!)%W25)W4U;m_h5!!eP+(BY2pr=i?}7T`?Sh zSvH+05OPa_UM{dniGE>N2Y9s+7J6b}RSlaC8P`>+rff!0-w zC%F1V{32-CDR?TV|7my@sQql*;OdR|Bxt=&_%vvHn{fc@$2*^63aY2$j-c^m;2xm< zvvDs_|GjYzs7)>oyLtpiLF13%63}`}aRsRVN*o9ElfZSL{_F8>Q2RZ2udDCF4WRao zH~{tIwP&Az+E2ujKy4=D7eRAl3N8UN23!Ujb2*NK)|17l7I<#1)`^DsjODb{h-vNzk%Q zH~@3JF64ND`bozDn0?ZbdWNgx_MmO-fIGT+1`dPP6~RM5ZHD4oLF>8=4+Hg?kBdO- zD#r6%eLfCc-MfhG1uYxHFM`@n!Bau&nuY@~ke_y`9OR ze!NRq7F2J-0cgG6rDQPI;xfr#)|ExRl5P7t*XVM{aCEoF@A8qutL*FN2zkUR`#UNl z$pvgbuK~P5a@5sh)X+MKp z;@X#z-*9bal4rSf%_h%r^||CSw`@82UDxJ4@;ujOKDolxE6E?aaehSp*tPkD4CZ@$ zpOP23F)Sv3=9c}Oyu^)vDLL-y33A;kdmW~p9IUdx596(7pRcyR`H)2pR=eLG`G)#8 zc0Xs4!{69?gdF|G{su^lT=I>1f8mvq!CdEgjXcZMXOsW_jeQ;X4|18Smy_TB#(%73 z%2nPxGQ8d@<#KO6`M<9I0U5@(;B|Wi8RoW3xzej7f9l%&kG#m$7n9-q`CeD=GcqjJ zYyQv4@o)T@E%@Ek1UdM|9!GBt@4wdg|NNNWzDr%>uW!A^{6Z1fqxY~+o+g8-KSQ4A#`9+~m^ROn!Hj1Td9rK&969RR z$H;$KV;`F@kYAyV{*^B(yN*XB!de2txB339N;y+^3xHC~nNr!^VO z{|0SCZtLpp$Z1vf{Y5%C?CKG6L6yA@P)L5D%6{JWAo-ChJI@~_KUQVu|2T4ys~3}_ zRrdT4BbQY9=HA6pa#@w%Fr0ga%gOO7`f;)&^&~J5S;Gp9=`yM}Iogck)of&5g2Vm~8 z&m@DnFENYU!?n*QU$M?^V^1=e-?r*S2J?Hcy~$x$kB|%2`Hfq>46l$3lZP{&2gnbu z^Z&ia%koB%!Hjb>8O(YgBE!?unDY;lA93|Z$zbY_kso*UKas)oQ$z-{EyZLo_p?1g z22+2M{Ipy488VnQ6Ubn`J1~(9rq4fG8s(&&ym5@pC^O4zamNo z(UQVu9XMYEylKj7Q_8h*53}!rw$zQCqzXA0nIlj(b z7fO)p*4f|ftS9eUXMg*2H+j!GJNJGh2d?g|=YGib_Bk$zoV?z@ekRYGDdd*x?Xs!l zwDoolq?6mPx8vzR?zrCenL)nDEqgJ!(|Y?D>`Vsp9CQg8%>2KU45pq*2J<_yS>zly zo?LQxy}h;*ArD*c|1mGAhnG*jf4zMS7LcJ+YrY#^NG@7$_fIhyhW?eg_XK&o>+@;y zv+M0+c@i1S@19L2M_rp3xy&tFPOeyQe`~Ii9A9tee1crP-d<0uA=kM+>&d}-`&jm> z*{*8)JIq<+uGQvRnb(cnquRbc$tLGi+x?$Q4p-Y_7aOBLXH35MaiAL7s+tP z|M=Wt3VC{s|L@PqGsvYi{-!1ThWTq`DA}0Y+k2fn%Pl*bJjb<}ODixFf6_9m>wY!(IJu+0{qm zF|IxqPXP5Z5l@2Y4~4o<##2H4OvAH4{m;g6S5M$ouD%*qx%ygM4eGN7Z-mN+LVY*k zEv~*5ZwK{Ri+8*F9=sQ{-hH?M)TR-icJ*c)fco^7lR^8(Tfu$+9n(}i26XJk;v&%T zD#lY?eHxzb>N9W&=(v~SH$eT&#ATp<%JDo`pN|)S`do;YfZ8m@aZo=ATn(C6HF(x4 zTc3@~!1RgV1+D8nJP)+&d>jY0N#NzKz5;IqwcmsTSNB$vtJn`O^F4*NzNPm^SDs=3_J`p=6oEux>wD91JzS;M=K-;n!SAp8B#T!A(Zo*q!eJkD$TDBGk zpmllQ*Z5~Z=Y+FZXgmQHs(ahW+ud=mWj{d1*iiQr{1n_k9*@g@u=R4h0CZdy;tEik zO1uQL>{1-;uywDF3}#-{(?4k06ddg2yi~{-c9Fr1XE)Dfpl#2>T|vjO8xCCE+e7}z z_T%lX@zX%_KOMJ+o5qB?cfcJ%kA)080n}z9p6cq;a0%#fQHp1|`fNN0G|str9+<}$ zUI6NIA+B)sO8haXpHJ`-S6_-xgW5Oaz}3BdJTHU#4`HD>lZ2C9Jq5RfPah5CrsCG1 zW7-A_E!!3g&5d?A&DGPf&^|m53$-~Pw|DgpxFe{a4BQFSe`lNtn*Uk2E2vF3EdDhv zl-(VRg%5=KT#kFVdN$4h&CgscwCq(l44Qipd=seuo3YTg55Yq9p;&0yTd>ghe~X3M z-->SowYeP&^?wH*?&^2r5up7r65j*b#(VK-(6SFZ@24STmV{EAsz)9+h{z-)yLw; zKSrmA zgSI7sSAo{G8drh(UyG|j+gO7)f|lKcw}8gE6>oR-TD%+d+_4Am1&v`JJ`EZ}GY&xg zdk2`epz}rs&Vkg2L%niwe^(!X2SVS6L%D-+o~sYW!$9rxap3CSK{9A;-XZeg8vnsU zu4^6P@d(<+6dW|Tb5tXbP1seyV-v@re_^Os0#7|^mz{=7p!DTXpHf@_YEy|9ftFp2 z+aI^}4!9#|y%{(Ybd0ia4>+HCHtq#Q<3iW=#yOxixi}2!KZ1vW`pL&-V2(BZ*wsJ5 zi$Luc<0YW+EX7+u?YH9Xu3n4lK<(@CUQqx0@IlbBhj4?dH{#=TV{s(rs6cHyf4%@9S2u$@V|PE|2Nc^eBB0nP2hU+ zKvy5cvY_^Fl>ro!5I+hBh`yq?^!!T#UvMsnb`-TRhn z0^i#IE0jt;m;9!8iPwsp_O1PYOzGrK-`eYJoxk-@XWDu*4!~T;%OZFE)?Rn&M!wwj z*@Fz`8elfLm+PlDxzD%uTHlrA99PdJ!xh8XCs&dCe{1*E0P;ZB=OA+UTl*XS5%Mi= zy}u>j`mOy<_1nm|yYb&a9_HHQlMCFs3dvxu89qQB<=TuUk8%59EV;9j(O$DkCueT7-%-sXU$xP`AHSO1 zccXoe-;X@d)d!Kmy!XF>9Cq~xxnQHc4qr$v+GzJ%F*&-?{!gwLxoo4qR{xK(oIG!% zJ?`_#3pU#8Ckx5(jdrdk$Z4D0wfaqrbCc~ei=4B`&WBv`Rh#UxSChfapT1-;-@WZe z?!U>O^RJ`}yaD8auAf2V8#dYhv+x^oc$0r`X(+>skcVxu*Yoqq1)J=(yFzkwlfUzA zuag%em$|W(Z}Ox6+~i;WTqrw+gZDPs>tp{S&);OP6aJevi)}rI1Ne9%bL=xRn9mtM zr_B=EK86D@^`)EquAu)P-3p4yEZlCA2!?H_TNFS-)uh*+DSgJ+0L1R zVE%vWxm*2s z$E{`#CvcGImd)DA_xrY*W15A7u3PQ7s~b7T^^;2u+hx57`Khh;dj5Fw(_8K5?9Y&+ zt{x-Dx4P@+ zjlYQ;xc1&Q_Q^KePZqhyHoM=l$-TDOdDWYov(5kP_etCfK@Ph%5%Q32{;Fg?w;f8p zb(_8a_BQfeu0EVR!qrET?{W2e$px-nNRDo^$2~@VahrV&Fog^?!+9LNL@sglQgYcg z``V_Q{LgK6fBql2Vw=53w2~Zm?GxncZT2x+L$2Fqk5@f;?>75c+dlHaZT46kA~(2t zBl+Yuze}6s9IuHSxVpEU=Z@`mzNM2hx7*JtvdH1>_H(odxnR59pM~Ti*QS^p-EPlm zF>-vn-QEN_*ls_&@oN2sq*}lFhvcgoamVCZf5H1n*Ja?Tu<(cEuG4UG8(UAo0jRy# zmJDj|wIjnhkMLZOR?B@yww{UuP(R)UWH4pD zHRQTldra%eL9IVvjy?zff&7D=pWY76hdb=&H7VqlI2AO z*Jp&Bx5Lio!Q`8E*kg3_4!;Q0Pcbe7{qLA^91L;&3?+m4pE9?Q!EDQK$+xtPtZ9whJ#@{>|;Nl4CdT>C;2|NE%%cP-MSti!>=!}KOZE6c`Y}J4CWrK(d36* z`-jP6+!)4^A9dUN7#X(fe~ynMKjD^rl03mJJCXe79d>>`O9r#9Nn|j~P9{g)w#Ue` zcKCM|gnE0k$#Zu2&lQ9&^X8JvcKGk8UQV9p+RP_cxOycy?%F5F%Uyj1`D<5Sxx=h|-}?{(wcM{aQS zM)FD5zKML=)tkwIt9y0qlREo4Fh-tU=O5>FuQ!7n)cN1>nDV@O?l-8n=kp};IrVlw zx2Wg-@Om?U61W#kgKc&B}>6(JAXY45?yClB9g=kwjM`=vo&G=m#&MrU{@YIbzrtT7Lzic`7p{a{y3^ic`5O84o%a9a zzCkYAY0u~7?!BoeA8>6BlEK`Ua)^Ay)f>oQ>W$>U)xBLDi(PIWlEb^~>xu|@$S(Uj zd?f^~^zW4VuIqK>$aP_Up)xDqCuAl5UBV_+4`PZDA;R*iZHt z<&&d7+2?{7IsTK~R|#^%PxdulBl(w~{K&kdZr({UnEz$pL_YnKy(ZI4h9l#>UfvmU z@RL0!czZb(d;Pbj^IVff4)3+cD?%Q&*MIy!Nf}-~`M$mOdgJ}%g1z>9UPzAa^$%#- z7`be(9ZxyAVy}Pe`JpSkO7e$$?fLT~GMIZBKPE47^~L0+d+qlPzaWFTSL#c0+_g!N z>-O5$Gxg+PuYY5Ul)j#~k9oDv-WQrqZokid53U3Gf_?s>|8Z~Lh2&2A?D?cKIdh*o z=a6&u*?E{t?!V8zrW!!L-nAb{hIiUq2FP_u&P{pZNgc^mgBJx>Pn zeUK;_l7pl^UX1*rYd?iN)zznwr|3<>lgZ=)Qfd4gIK?d_3=Sp&Xzh8Tn`z;gX<@^0-Rxth*9kj0p{z3-xzV8L{iwEs<#1!)MgZ7*-gZ%12 z`@B#>hH-cExGp8X;rf|Le)FLD{|8P|;5*vh+hj0fdxs3BUPgwl z`oFs6)f*S422*cKhWj69{O!nTu1z|*{UN`30sV9!cXag(@#59gWN$#=N%3?qZ7=aYxCu7y1B-%b9#Ycqm;pKEhJ8D9Ah+gLybvt5N` zFk^UtJj#u2G)oeG z58KD%<>VfR?VQXe_jYaiko&rR`jM}7_5Nfqb8-MVeAv#V2pPT^Du%7T)hyNf!dejz}3B5$zb}qjXcctpHBvJZn={TW(;?c!8|sHlkanF z?k5+x?J6WcaM(Ux9wd)B?BDTkj@?-D;wJC;8kXzIj}?BDX$bAMb6* zX>Qqca{D884tF4Tb@guKD`~IinjA8i{&UIKx;FjEgWR$=kn>!9FnNd@!%#AqWp5$h z>e}2!9(KgPVPH|F7FF!j61_qk>7Cl?&?@2uq&6 zd4l}Z5&PH~Pkx$pY3@Bkj=DB6@{338+?zt4dc@AjY2@ig?740Rx#WnQlci)ZbM-Yc zm}C7qxy&tFPOflmD#;(RfAn1N5gE++@MAKV`X}U1-TwI>d6BCxCVzIso;N-xgL$4^ zLI!hOmXg7Y;R`aD{rn{vOg&Bp^SDlsmmjh7dB!B4o`H1|vt1lsgIsYsrgPkYj zFWfl4B*z=kQ<0qrDcIAO~#YRPIIe zj`EuPsC}=LMGhae{Y1zGNA0zaLUPejdrwF)IqKTS$R$T@pQYroqwf79IeyfBcP~K> zj{46$r_TzH@t8ek-^Yc>NyqH_sbq4RtEZDQkJ*6B``$A`E;wf2s}_=rj`?rA z9_s29lcUG%XVWoq*)hAl<>ZQEc085jMXtV>96x67M@o?Ej@fG|_2k{h{I3`D9$^pp zr(^!D%agD1_L9MT_i7&*%y+oHrz;{E*k82gzW*V|9pp_?W$4>j)W4pAF=| z)xG1~mvY?x_VP_+&~MUuH9C!5udDU_M290?&dE;?=y=xPB%W?aD zd@K2TSKmh7e%xLYs3re!+;000GMM|>>d0U|XQ?Mc@%2gFy`AL1)x8rOmlJm1M##|< z_WEj!T;l4bkgHGF&p~R)TTb{_mT+&|Rx+6WzbAv~e;XOh=NH?_VA|A@LHCb&Kaj!HcaZB& z*lTz7`GMN3)L_X{K2~PNFpmC<-On9#()IAG_VcXN8OCmT5+Qt|TT;212=2-k} zeoMhCCs+JzuL)O@KmOUyhfm0hTzxS){xIgjgX2{M@fC-N0}Rg)dtYBHG5R=y#Fxp!*~8O-&c zDl+Id_q?^_>L!26H(Up+A%pomYXiB?^;u62n(Q?n?-b{*Q|{bF&N^k!Czp|XoU-?J zW|MPW{VH-_SMNu@&eg9c4?JbhGlR%CxcYC%;Zy$8AM*YsLWYVHJb&FthBtp9`(!Zn zJo4aE{^pms_Hq*$`aU1x+;Ym#1hvV+0hl&J$T0X9eji{c`F2;ogABj4;rjV7GHg0Q zKl!KpFlfCI9KaQA`Av*F$#84il#bqAWH5aWC&Pnn`CRF4GMIjT$9Ul7#^jD!IDn~I z_V;8k+cn~pUj`a~IS#;#c_bMMPqK}FIOP|BwyO|FL2Y8V&eiL2_>Z<8!2y{5?;(TP zKlhTsjPpJ+-1R)qU-zH#&lcEa11!$|66)*~lB1{WHP0Bigkv|8-+nA5zj?|&*StlB zPS10X>nt*udtzsk|8dHH_0!}GZw?vWY0Kw~bIE0{O*uJ!%031YE zW7$gHe#$qWanzFG^R_8ny&uRsPWeBy<+^ecg+d)Y=ecCZHtB0 z)eejEW1*gDI32X?d02dMT~g2UvCy*Zu~5AO7V7^3EL6V`3yr5E76aZ1^~}H*f%>@^ zXM);fVWDlg3=6gCg1dso(+!KSqM;t$vCy)Y;~t=8v$0T{E3nXdd*U2WKe@OcsQ+uQ z7{uq5*W#N%{oIU)fR-JKh3dCpq4oY2-v;XEc03HU?fF<}**me&vUg#jF$~8-?eE4y zWBwf$ee#m}{2mMSGXmcOk8r&1#dV^Hky80p906OlCSg4<)SZEB#R0FN+IBtel2PE}5gN63_SuE5(z(RA< z3-P!BjX8vc`cJ|_+nbDq`cJ_^ZO*|$V{3th*3}XV)l;!h|L0<%ep=zyp#Ixnq4sUD z(D7=Ah1#THq5jjcP@m^vq3t~%w+D@_1HJ&%=Y{wpSHBnw)jMJFpBs|8b;en)ei;_( zvkMjv+>q3#E501me-A9wCL3Sj>OHa0Hul0obE7vFTDA`sYI7wPIu_Og<_0X(<~LYu8JN@~jD^+}!9v@9BNlJ+ zI@!nKm2gs*JS3_p)n7|LSwiE3ytl!SX|^MW!{Q~j`eL= zXj^W_Li^zkEY1#0>NyMxwa>>w=lnad(7NuzLhXlRaWiAS8~+Y8{@-Jv_9O5Mpgv#3 z;`$qsdQ8DW+wu|?nyW8kp?;=fp?NY53yt}&SZLW-u+X+o$3kspVDZC%q|CqJS3!@9 z5-c>HQY^IpU&BK4=XESJ{x`5t`Fp?*HZ zLj8P%g~szS7FzZbEOabB#X|l64+|~32n+3>#aO8R85SD<=U8ajC3vZ;e}RS8`z20* z#`YB!YQGGNzYj|4vK$MwUx9_z^)+4vYQGw<0gbr|3(e=XSg6f9ydE?stMT`s{l5(h z^|>7jji(liz1JpX{($RTy&mrb?WjUISZE&pi1&dWJNvOv{|B(p{yB&nKx1pf zLdWzd7TT6$_-9a?U$9V{lUS(FCVUFi=2tAV>}f1iZ^lC7JcEVCc@~TEyrk{{78;wE z#Pc0!T_G&A|C8`Jp#9SV3+>OASZJT5VxczYVxcj#!a{9YW1&9VV4<P@m6Zp?VYxZDR}z z_45}j)cyr5w0~a2LdSgy7OKC5Uj~h5Di&IH8W!sFulN;Eo9S3+y)&>-KYznQ%f5<* zw!H+Gg7(#GSg4=Zu~7Rruuz{fvCw{a6N`g`ld|5zpMctbiVdvye`KNhBK#%joDj!C z`znFI290MWUJYvh4HjSLC0)A)3yrM`Zw9sb4h!|U1q-#=itAjx9{=p>zhI&Ld=mc( z>gO~T8c#Dm>*@g(>fcKygZ8^KePX~>21}*{hQ;KJSmYt2uK-*Q0-v!Nq_wYPdpN|)S zwre4-0JW*aAA`xz#Bp1*@U;idiKLsydBi07T1AZ+tlN| zpt-aU9|SFX2seQGZ^XwzbL<2@>FP~*V{5lAyd5-eYwA1bCcfcJ%`#A%50`33KxId`R0eGOR55i&4 zwnT6q=sY|Ep!MeC;jVr+9tCPY8b1cwhvRUkwr&hK6Vy)@?g1K4 zHXiQkcjFPD`9Bih1KKC|;!&VwN8>S|`8*as25LVJ7lGOo;|Z=l5l3A;hNps#<1}36 z>gD)d(D>iO^IUyCUI3b73vmUgO(k9gTJK^U2enDyD$xF4i>pEHYw$+U*f!xUFfx+V zWh>qeYF~@%K*y^d?{@V)_#kN6L%3Hv`?%d%z1)%;5 z@%A*kY%SgmT6PcK3&~uY+J_HXXgW*mU}^wP;4?Q1qKgV#UMetW26 z2q%H|RWcTOU6+D|`Z));0IjPf7HX4<#UJ@C&2zEPcD2Gn%eKZs$FvO=+LpFB9n|JL z++HxA4p^wo1z4!h3$f5+p(7SrHUkTtH!i~0gO(kLMa_-uXDn2|0Shhr8yp6WErNyG z+=zwR_&5(*u-?H~XkXogg&zAiW1;#GEc7@Xip3wpNx8RRq4E3{=Y#sc6ALYS7Z&C< z6&?=i|8D#tsGpCp&^SNFLi_C#{3)o<|KUZhz8DKF`xzEGUY}#3ZC`?g`dNyFUNe7z z6R!Rh7TT_5Sm;Zq5Zi5iz4Rgw^-=?&PFUWo=sS2+0FPn(0;WwF`sW}P3&Tl04q>4-hq2HYj$onfYQRG0%tkD9ZaIpD+8o0|%O1x<*H2Dhp=E!@ zCqe6K!b0bbQ&?!u{EAP5+BD-cpk>cup=}JX(0e-XBFc0hU3EC&ASZFSti-qQ4D=ajI)>vrSHdtuBwZ%fmy&V>6pN56nr(>Zxd>%gE z)!SpCadyB$=%mtdju%%xbUo{5Fd;aON{ ze_n=#=4uz*6*Pu!SZM!u$CrcF)dLId|7K6?eji37u5bL z+!wUoepu+dcMTS*UyJ*L_W1xTG$*gaLSwid3ypIi7JBRt!V%EAZp1?EeJpe=^6+5L z*lxl?W4;*+bKMdT0rfK!-wGPrZCGg8+p*9X?!b3~+TVqRp1X%*q59qU_nStJCfK?+kvz%H2X8Vt>gqA_ z-|RWcdzD;b*X5OxLF4pZBL}X%cbd-;PTTuiLZ`X*a@zd9@mU;z`Mz@!ImNX(huq?{ z{d~D48O(PLQpv4P+wTIjA%poYURyGl-`{RW22)QXgZZvsIvGrx^T?fCKb=qeBf6e8 zpC^vQ0ho1lBX@VpUQX`e>e=L8Zfw2DV18q~4;jp|SCVsFJ(t|qweLs1#;x~SGCa>~ zY_C5V%y%3HkO#Wg6~N zYM;P?t9zr#W85~5B}d)ZV&wQ~|C1^{J5G>SoVND`eN6`Q-Kdr1HK*l>l_Pf1Cy__6xwvVF(d6nyPHMzRk-Xm8-u4}g6&8#QyZnlq$J>-UF zdv8f28O%MXN6A66yYJ-;*FetrpT597c*$f)-=Y5tKtAV;ozE@E@Wc!rFD=Pn=6Nc) z)fwA=YciPoMca_m&e&s-P6l&~&LcysJGqD9d~$nN??CQ&#@_3dK?XCPi^yP(>BVHQ z$DQ2C)jN~HjO`NgrEYAQWH9wCau?UWD;Z2b-N-%M7_!O3+_L%PJKeV2MFw+!&TulA zZM>U2;*7mtaU}VVuK#<;uyzf@$$IhPFP{P{K+ z%z67Aa@iR>x68@zp0U4!@gDhKuFd;oFz5DpWH67l`Q!y>?7fi-$zbaLC4>2&tsjsp z+_IJA58aqQB3HTgYsp~7zm5#%e_^aAgZcfCYBHGL=%^uYblb9t45q%B3})Hy$Y92^ zg$$;?mAu{cSxc@vV;@uXjC|a+ zKSBQ4jq?}sNw*)G$fw-8ekC`%`WZ5qF`p#|ZdvavbNj3ve-=4>)_&JALM}LKA1{UE z=g!*4-Sgz=S^v)AJjP?>va@#ImXqVIeS*B>tX)?f8O(3X)RTj=?*5#>&kP0Txh4z8 zLHjv@12Dg_lSEFobuT60e>(23mMtVd5ZKp350XdO z_TFgnW3K%;a*-QPF&W;h=6v`B8O-abC&^E_Hsi@p2X-z!L!RLF$wcye*XO^UVINtC!<< zLH)mn_k;RBfCE?e+LFQCm)?$iA^T0g!`6`uW)5Vu%L`r9E^qvo$=4*|H$n5{E!^p1 z+ka>L0IXh`Jn%vMBs71P-18|cG=}l`Z=g1>;u7e>u`b1nKy4P|uR(2A;yPEa$2(np z7v2q>mnY}!!6#k437>-ZKTW>;R~*2h#mu)(WH9%)cP7J_Pni#wu>ZmAf7~8wK2Of+ zfR|_5`U?Ct=$`zQcok?~t;RpP`cJsQ)f@3qP@l)}anQ0S@XxOP3qI}Y%{a(%`}{I8 z9Qlel+@)RKK+rKAgx>`n_xJEYS3iVLx_T21T;1!+c7fS0{5_0boP6~*9CWvJ?{Xds z(D-R`&U{<}YF~+$fX2KOA9wW=H~_WxdXVASFBoTbySy~$!kkIR0hl>+1^W<^X|n^HD$)I(4y~vGh^9m@(tlp!RKWCs*%`Pr7;&4qV;q!~6stYpxjOC4=b)9|p~b zBe(%H{ze>t8N-!iFk{Q%aSfU$gK-h4O)-AL)t|&q!M~Oy=Zwd3S5M$op!TcrDOdj$ z2d?hrvR$C_MjPB0bl&KP-*ol2@JZ13L7H#?=6~y4MTYm5GM}#|gECEG!s?Ps^F|nkDnjlMPwaoz0L_rhT5(zM)7fGsU;!=q$W)vi0O;i*VbcV%3 z3pKI&E3}|V-I5BLwAv;DI-_DkU7EDoLe;MmMTOQSsaw)Qdw=ieInN*O*XNz*b?&+6 zp1aJ<%`8EqZC4YX;5u@Y&$}h@)M@^F`F*_}`~$A7^4+Q*;-JrCKf(j6dzpSPH`5<_ z3C{;AanRTD*Jb(#UU2p2NI~k)lR;qZy(~W{&+;$X$L|AH;8j_^{HC)P#cQ*C`7Lj+ zF3TVCY?d#tyN8mQaL*H`d@qX(61Hp-@67VO<9yG+Av|Z8>oYWr<7b#JzX|IV;xVho z@%mw|{|0>5F#qL!9^Yk$gZ^IXgTwrfLF%87y&&Hi(nkhX_a4F|NBH`BzXjhj!q?ZQd+{gPE}s8;PvNcBXB(av;p=z8C-Kw> zU+-!3;DNRGMlx?BeZ3cvh3AZPeTHz*&-IMKLBF?ZEDmz4dgE~T+nXE@x%gQleZ7xy zHl8=q*Y9!7#|x}ph+i<$KWi@kLz#$A8tLnI#Z1PhjP&(>#Zeai1j#PJ_z`+Cp+C-}B(U;h`d9j~`~1KybJ z>+caa;fZYbxSzzkvfXxdm&S_^?4jm8{>aRmQ5ey z2cTm(6$c&LH}Jt$&%krWxNQmHd1Kr-^YMZ){-`0`yDr3wY}sPGWQ-fzbUZf3eF@EW(^y7`?TpR1g6TuT>-CQN5 zKF;dnIM>Fxd5hwSan=U!qAvY(<0&}n1!E_>xab8#B*}} zzn?m2k{80q%a9s?*cD^ zms|f8_z!daEz;+;_;t4IJiOZ0RfE^s80zp_ZC$JJ+pPWV_&QtHdOT)r;`onq{l0Gx zy4d>(zAe}Povdp+{!^>pi`QGd0l&}2^E3Q@>;D0KhxNG=|Ap0miSM%Y?#3IfpQc=Y z-J`C}dNKww&v9~#)wh!MAmeEu+pXR~CP3ynNuGGj^>dO8V9gNr%i}oc+&1U>{UFEo z02zSp(-yqd=B*7+*nB4O7jpdz<$Ky+#1C7WBlzE~&0BcN>OJ^-w!QD;M{VDIfFH9l z9LGPl`X~6OR{sp|wR#_Z!p3$I53En`EI$}@mfJ_C;NL#W?W5E1Osi+%XPo7>>r6c7 zEO*R=@I0&M;{|8AIVr@8tW7a~q1C71VQU}3tE?WytF3(vezUc?1;5qCuo}P1#&$Oz zvw9qVvJc*%j&!FMq6(a{)jF6DE@1!KY@c@Z}*(-$3TwTI2r7<`jdF8 z_1}j7#>VqoyxrP#;Lls12^_S~B;IA)(v81k+xUNY%G&hcy|!#09$4MW;~2*jgSFX+Z?XDTe4DLnJ6>=7H{d(- z-1Yev_^)i)hw;bq+`fAp-(&T?_>)$D3U9S~8{TE>>c&&ne-HjItACDzUiZGhL9Y*A z;$K-mU+4KTkhzVM0qAwU9|xWD0X(p6_wqSb^L@QX6vB)0-Mz$Od|JM{=Ujq^tscRv z^4)#ZD844&-9KN8ugiD$YS!bie0L8dj&HSPe~fRlKDXl!S-lYly}#X*@5fs6_5M$s z3_$O_x8W%pXAjskJY|%g=H9q5=oKCw3(ca!=B`3ZHw9o99Zr%KD7r)gaqmL)KdV zb@XbrO&kYZb_4Az-!NS=T{wGZ*3aLMq9QCZ?^U=cH^Z)}{{!ou7Z5>&HO%wfI-A9w!6P{rEKw+Pqu`lSM|8t?9V zMDg13?)7pV9vkoO)x`1o@$UXW1Kv8`y>@HE6XV@$x+LB;-n~}p#@`O1f)6Wl$7t$3r=oAA~NzW&d*4R4>|?zMK{ zi3#qtXAw1MCMWYGC>G5~!|-FShY1B1H< z<%h@swBCe2a)DpEY!KhEc7Y#my+FqnA*(>@Q8KW)*M>i9%kIPXyLEX7@E)tbM?WCn z!xJH6AnS^g3D7Z<0Z1F~eLS#by@?#R6Wwe4EPTX7cTA4NL0`X*!a?sVX5$klx_c~> zaFE}y^Csg(6Mg+{j$%AK(e1AYK6|2@=TaQ>epDI0Xrenl7vneCdY4S}k5y09@gFC9 zL4GHqj|{Bt)!?A(S~}4`0doKFBpHC-uULlPZ0o%R2fYV!D-L?^Yc+nGjsJEWbZl#I z(ECVh@jGnUJMq{=cl^Y0&^8-z(0hg(@l7_i&G;5u*H*mV#@2w}Z*3mHcUb>B@kX1I zCj1d=^C;eI^%i`O^|=>+(#?LgM z!3R%r*U}7p$Rs!Zp?IdX$-;9cxnnGZkC~*$r#BV{J;%r4p!eQ$anRp7ISW7A+T`J& z^?ZE%B)9Do@N!#k1%9=S^BTO;+FXZ&9((g}(EG#lanLzjfLBd&^A^Q#w0;)hpvS{v z{3cs=30`gMt-+U1a_995yw=*(;W6t!j@R2fG~l3PxDN+?jQAPeX!R!i5gWs!_+yj& zw7I8@^&ZFf+jTk<-i`m+>VLuCu<^f%AGY-#!T)Y^ z@)iy{4{zh3{l9~!tW6Jo)W-7x4tj0*5C=VeKEgq_{TL3q?Z@$6>$4C4m+kA%anSqH zU*Mp}z?b+5>*pj6dQAQo2OZo0aM1MzIOuudP3F1TWMAJWHhr=`2;_e0DP$TnZ{hcs z$xL{f-xtdwhr|AwL1Rad;hC-;AxlA)EhDQy`izoqhh6<0@?(&GJ|P3EdlA-k3Cr{N zl}?@jdCWaYezDNiza(p`T)mEL1!><#23Gf?w0Ul_?)N$}2J)B{Cxe8mdrAENYbtS6Cc8k^+fAOZ`bjbX{lDQX{IV&& zz9(}I{zDtjwNv~&kpDI0lVOm4BIIROpF@^gy@H$z(q|><&vnbrBDa9lx02gH`q@sN z0O|iE8Gw$b5}$8lSb#5dZM^I8Dyv8F+A03&+qfrOH^r~Nd5Rtz4df1x=UqF=(lxGL zM$QGPSCUmA$4``ut#xhUU$Lb++97y|I zG7n_E`D7U6+7%&7LE4m&a;R_`PGLD~Y=TT1~ELcFV3M*MYQOPsXesCtE?*+eWs7jJbpC2U+g`8Gu}? zy%v0r&HrBJ5Ts2yxg2D@E67@_*O4)hvBk+PApd{gO1=uR>}zBSWZ53_D9Cs|Adi78 zdz|dI`T%(Xr2R>9@RP2626+ZZpJ$TeLE20pi>zKumVk_5IvKWlgscW>UqiNAy@O1E zUZ2TMkT!?NS3$>5c7cqun>-BC<_P&VNSk-a6i7ck|8_BTMBjjZu?dOo?AbnPln?S~}ncM=>|5mad zqkH02x@_Yr_+ETqPOv3+}NdLY5qH zk2TZD;9YynO5vc7K|S~}H%{+39#}u#RGu?Wb@vam@PeuCy_$u1(NujOtXGW3tW6x> zG}S$K+Kk^b)jhxc5f1vieG3lyKAElfFRcDc9Q1k7F8o1T_8}a!-iSY9%RY)XTfGI} zYyCWlx7rxm@OEq8f$y8@o{#Ov6V@h)cTRQBQ4is-+InBZL7xY{j)RW>PdMoKyKvCw z@ZEUI+V|i`t<4AcF>7-i2YuhpKkzTC&oA+>Y}v2zeyb1QfsM^8;{V7+?!5=6;-KF} z{EZ@iFg(j|uV;`!Mv=R}^i3S}y$avLv#mZF&#`(4pX8SHCgWl2GlEwXxqDex;-K&M zxC+0^>UZNYtH<%6$lWXRit!8Gvfeb-HO<%GGY#S4Y3}_n5xjJodk#~EgMRMd2RP_^ zS1!dbw>DScpl!==I7=!@pDF?gf1p|Gw38@O-PEQ{u-!9`E90Fsa1X-z=U?9kfmc zQ>;D}FLHIS7{Ac^nTEsb+j;I+f`_dh!K+H#YoaJ#TjGwBIy_e5_GuhXl=%8R^GUp` z#LYuDo+`2T6_ogY4oY-B|3V7#o|ZSr!0Mhio%3S4dk@|>anSpy-@-xPn>Pf{neN`# z7s8{{-D~F?aL_rw5eI$m-y$6JJv@u?YOB}awbR{xuftbc{Wcu*y=}MSp#7}DW7FOJ z)i}P%>YMSc)7|m;V;uDO{|Ua$#=IS`x3M+gpl$BML64=M;h^>VanO6Y58ykd`&Zr1 z`)qgOzp(ZG65nO>vl|D!H~1h9y6i)Eqm7{nZ?-YC;J>!|6Zn(X=TmsAE!&2J&iQX} z(7F9B4!W+VanSlRc)N|W1K)3RdjL;Z|4F>x+7IAEX1IINLuc^#HN)PkiRa94`zwS$ zJ;ROR8N7Xl+bVuqWOB;INL9KyS1xP8%$AD-dHc?9pV{@=qv$NxTlbcUO&5Ab8w z<~aV<47Xih6cu|`$oQt=gf51iV$94Z3^+CneM%# z#dz4-MDQwW6U9NVjW^)6)}{`xw>AxU<4pH{uqHfVZIbxAGkyKsQwj%t-&YR~dTzdl zgT8CU)Yx zto?5MVQc>g4%+5XyxHn4IOw{5jf1Z134AZ@`7DF?Bo11C3U3Yj^>6V1!8SY*cJHZ9 z;&7Y%ANd6wvg9)YFXEu>U&2BAIf!@Kcn;yO+j#zjciDDz<8RuW{1rcJ%O1hswlTkh zziaDF;h@{ngM-e`dpPLazK?_c2FFqS1MBlc{9{}86C8BRpW>kN_8AWPTOPgm7dGZE zanSAh3Lmg_{Tl}z!+&tl&taXwLEE3i18eU^c#mJipDgbKOvf`L{@cTOe^eGeEaKj` za5_Fb;Yaf{tj$F@=zAS6 z#;YR!x6^4K#jCAegWqB8@5CFe-h@9E@rMnf{o^=jKh1c%)jRO#to}TnuzC_tMf}@O zVc8yh$VG11p%<}@7r8Nvz`tkp@8daE58-1ja@#c)A9sAkx-$PP^FSj-;@LR3E8ee1W*Wxj& z$MO1$-1au$_t_YJhTm`X2k<@CelOm7k(=8#Jo92VKUo(u4;Q;Jgz&tJU7LJ-lC_zP zUugAdc)8Up@VT~ZC0=#0+pZ|S@?tk{tMFQDQ-{YccE@2H-*mB?&&_!K#kMW@F01dx zAGG>Ic%${xguiNIcnyEU#`Y%ucdNgJzist*@RTjvgCD)vy?^Wj{Mg05zW?(${_(}` zeE9_b)Y^ZB_u6>+@EqT5W60+?@!dA&;xGGdKL3FK(Rat&EBG5$e-rfR;(VED&3(xzsRnIQ9%MP|dXQ`4r7 zCUZcxH$>)HJ)bN9Xp|Ky zkc}X(ZJWqukbYXoR**JrWV_Wn$S#n6y2-;8^k8R2+UgnB(Ca z%n98133EbbLu_!`q|syn$ao6LB9Lt?Cd)zERFDafHc9erkTJhQra;>Fko_QS2FMd2 zV?Ie98|>=G$uFRMa9ZJ)WH8j#y>BzOAnhY$709s~C0jw}vyJSu`XRClRNc%c+jn&tZ>p+%WPqu@!=^ztO&YUF4ywhDhpDY5|_F}RGWIs+P z8$p(BA|CX91A_3b#>3(|id*>Cj$G5}eZH|i39E=d2CWI2l<@K z0Wx9rB-sVhe>Zv9>PN_&Y&V7wnF5*T9x?zKvp1S!0A#&&|UhwQR? zH<|Mt*FHq%fvh*5to@$bmO8Q(H$Ld)m$k=kpJdk5JpBxXe-zSg-Am?BqISHhn$z&1e zILQ*LPbb6Be;e=hB7LjRB1=K{HF-72daohpf{e40oDXuHTtHTVj5A6u0%^aPtOnWM z8geDT5=uewU>;6?9({81*FYZavR7Pwv+WR?vu1|19?A4{|}Hm zK-%vlcY(CuO*TU1&j+2~L_Pv1j+`?6QL-6iy)EP(kY)Fhtsuv98~HTIx}G81LHg_< z_k*-QKqlbZpQcSsk}rX@IY@SbZ0{lRRgh!&HL?q2*>3U;kbU|lnF3k1hdc_><^%E= z$o@S}ehhML`GgG4cJu7zF$R!jljKVv?GKV~gY1iU$duK4$N=P6_44ts^%KEC*6Uq_ zm%2W^G92`?ia)?FwfbfFmF}4FuEL|%&kdYA@I8*h5E+KQ|C8qrWI4##D#)urj<;*b z1jsm(WD0a1$N-*R%RTTL=@aC54v_&!dv6ivGRT}{kV8P`b10b!vaT#L2c&(7%(Hqv zSzz@-auP^ClgT2h7n3EB!(-xfGHmq-xdmiATge?(-$^!t^wUHpK*p0KgF9@@cXFKv zSvH*vKpxY*bvQ`fThBafbnSb{0OWDm+l2qfuIF1gHn+NU<&vEs+jxk46{Mfn$ir4Y zLZ(3HmOKhF&JV}{bUuH~wt^f3A+iXhUQCvN95d6&Fi1ZUvK*vM1$i|{n`_9qAZ;qi zYLM~NkcpqT_DM1Yat!p4M?seTfDAy#vyHg|ohvd2q)mwI-R|1-k=ggUHlxWLkaI0W z7J;-cCc_}-a)c}exo(t^b3yvAB&$HKKT)z8WWUsqYe256YsoDjeQqV|L6&VGcUXNV z*$A?~n#g95K3m9EkU4K7+d-a7caQ-{pI$xV2YG!IB4a;y+ZZQx7_uZH5JCJdv zlY?RG?SsZD0a7J>9rOqPHwJDm)JEE^$xkoL34Qjq5oWn>W8wtKU=|1(>U z0WTdNJX`17%fN@s*2hF|D4sc6$KYk*!>!E-JbSjDzusv4jM;A9&ct)9O$Z-n^;|s9 z`pL)PxLgy?!N<>b*Om!*!E8Ndyh41^Yk9SL<<*ed^tXgI-tf#zDsu!$I4`@lCd_&G;7Ue=EMt`rMA+Z`=3)zRQ-~ zjXz}b&^X&q16fx(nFDg1gvc<+@f;zmtR5v}AY+J=n?TOx&156U@zz8pK+e-789ZX! z@+kh8jp1<|Xj2RW}tkU6lAHX$+$vMmv^ z6lDBmWEJeAO_YqmJ@P%bWCHe4Pm(E+WqZf~be^AO3?R<~GssMkZOkHLAafNb`>j4e z2B6FCV?3baA*(>@Q8ETHwmA8c)en*>*vEK!$iV8}e*C~}_gMMdY<~yHdUuk|ApN(H zdq9@mOSXbs2inMXkoFy90;GMC>;!o|dx-1;8BaHP805NigiL{KZx4A4gwnxY+knN3< zF{{VP1jw>U@+FXK=|M6DI&WkEvaELy@3Oh-=C}o^he#h}4rh^#Aj>w936Og%N%AF- zIXOtCK>H^H&}-(OXZr;p<0&MIK>92u!ywxgA%i#Fvff{D(E0ou+XZr*$H~JW%N`+9 zpz9)!fgDT6$zG7hkv=j2Jq8YQj)1huA`3v4EhNJrV~ddGAZ;qhDv+^7$y$*1b!5HO z8^{23A05F#*Y$V&E!&p2na_7zKOr&((odY+0y1w~$$F4$NCVjj@*JRvYzDcWw2-YJ z>uMttAY)6CT~_ZV4}&awggj>T<76+$bJRYvA7tMRkO9c?@BJV105bjvSp~ALC>aAC zGua3-KTTu;q)n1cfh^lY1|ZMVym#>)+mG+zAp6C8pFTnRBsYO<`(~;4S)B~NaP#AR zNq->iLu3ia@j0EW0v#tA0~te{Yy_E~CNcqf%_jrU=e=Le_On4=7mOy$LH0!jITz%4 zekEB2dJK@YApO^oYe3qsC1W6Ch?5DcC&|F--q-j5=l-W@7kmHaI0Tu8EHVe=I1iBp zAosEg$*|QUWEJQ(lC>b?sUu@nkCXKvbJ9RIg7niwwt|egjZA=yIZ1Yb^w~|OK>F+< zdqMi?BM1M-?duFO6QrI+W`jJpA5G?fTw6k99$Y~^pDX}5P728|NSg>*3bO5Gd9u1Wn0Kr zkk?;rWGBda50L@Ln7tGD|J{vP&~8LJ-^Drhg+Kw zcy_5CSKes+j8dI{?@T9}vp&ce$}^%(Ff@T+aT*Wh!lO(kAs{Y3FaR$q))+t_OGrKNg4ddu)zt-cyx zWBsqi*I7U7@mQ%}_fMWb$MH>8-;8gu_FM67rS9=!J6><=ZNPU~``vh>wQ0il*s^AEf;OGGX;38N6cq;#KAobUw*UkZs8# zvq9E7n#=)NSBT65X`fFPS-qGHgUnTgECpG%j4TJaR#cF4GnE6Ft={j4P$LH2JG z`3T50^HFj?$a)Wu39Bc`E|76{lZQdt93fMn*H!Wu$Q&LgdqLXwk-=-Oz4tl}GC$s* zO8p&QxcW|V7swcPld-Q|Jx(S-wkt`dK-WbEAlu^g(;j3zadHbt`>kX>$QT;P9U$|t zlWYWO-$XWpv}qw*LHcha+d-9Mh9hJO zbj;*2s~;zOL5}}EvLB?)02zRc#~Z*;*mdtD`x^AV99adj?NKrYvaUFp09iIkra;El zLk6I8^^%etOpre1DOC>SCV`Qr2m6t3Z(xYvKM3wePjT# ztml>S7+2=L>o0^Cl)3K$EyTmr`5sp^ z(mC!snal9=j<4ULv=eW%F*M<= z)=wMWKF5FUcYLo)2cEDoB=Jrg+o3sr0_44;NiyiNe!A!QX)y0EX%o}QAZ26d!H?M( zj^n*^{Jvd-3cNo2ge`j#53Id+IdgTno0BX&=W?4Xyx?*-Cxv*CwJFBKm%I6i;Qr;V z|5Jf4cNIz@I;8xe(TYZI}xZTy0WDv7@96xMhID+?H;oeu@hX+>o%KgESave_w zdF+yM?f*DgKikzC$Q>Z#*-18njG>8)-R;`M$pG}b#A7(n2lH?;*di`j=$C)d$G-z_srn1CTyFuYx(LaPRq# ztgASFu5#@|_#~@O#*3_8jF(*HmYt4QSv`v1VC`?j z7g?Ldc(t{u!Ed!TtMM&X---{v+Kpkv)x55`+KpiX9=pcX{S;oyc3tcGnT!`*>$asBUugB~@h#SVD_(DH8u0tA%>#I|wQ0eN z=DI$M=Q2NY-MXgZGps%n53KH0@_&j-|N6(%#(Ehz==Vr`6VI&lulP0fEd2CJKdmk8 zJa0G-@yFBhy%9KEzLd`zkHoXB&1gKwmJQ)~)+QehSNcm^xQ<2ei!1$)mkv75^YKe6 z{Z}66dv|B!ms<}Kl&i|dPD}pb$&Y$&o+IPK$IOx1xk5^eeiq~G}=CBT5eVrTsZ8+%s+>SR| zy$MfT=l4F&oFwtU`tjzmALsc?n_2H@{LFd&1G104hlAF?kLOrDgoEzWF?ilQH|Bi2 z$m+#-c%C~>BKSq~{8`dJznC1%p6BMj6bG%B;Z^h8K8oVi^W5Cl;I+`g+}4q?d2V0C z@lEsm_gdK(oALU2{<0@!pW-{Lz7zk&JpXywFTcch>zy|L(>gwE9DMqt%;m&}05r zIOsM$j6XKd9siHx&DN#`ho_tA^Vj%Oj9<>FRvdJnw&B0AHowK&=lQiuxi)s-pzWW< z6U>9`>m=T3>pg^b*&KG`hi#sZ;3;d29@u!i`CJp`yLrgMv*-KEr2T08jQMU|XW}{Y?HIXMNTX4{Qw-pDyzWo^AZrl4){9dcqCHJ@ehQ zVlV#Ge0O}d;-J@%HXQW2@f#ep{#*PRtN#v%rF)p$-{YWd+HpaS{|@rG`R+RNJf4{E z&XFXZvU%&lkJ&hn<7o@rxtYFz_o6Rw`}!L==(Y^TL9gc-c;*6kPG#ZQ3*7!4jptZD zAv|w^J5KU((Bt+TykLQwlR_Nynt1^}ae>>GNelcOka~!$1=+?rvTL%dcaw)f>PN_w z)qBXm>fRI_wEwAik@a7U`)rrY;Vis#ft&L(yqvz|v7iE9$9BmvxgL*MJ&vbrTYB(b zYtx4Z3*2?pTgdz@v~vN^Ug+j+H2$51{=IU{e-{V6hM$2$w2gD>OgzWxA-rIr8$%&J zW1%}QX5yfaL17&9aVmm?&hte$==d+jXDxK+!X-H9bzn9Qy1k`1==oBHgD(369P}8w z6bC&XE?eji23c1IIRr}B7emQRkTzLlP+{Y_5(mA8T!n-7b2Sb+=4%%Er66M~BV!bZkFd=!ZeZ79nFGea6WINS{eE02!Ni?Lt2Xq@NHO25A!^W1!2D+pNBw z+y&BpHyNI5?a36#7<$OS>Ru%d`uK7k4mzLnaL_T##}`A&EjQweY#tWlOKg6s zanSjx!B<3ooy7>#e}6tRBS^ zRkmLIttz*F-^No_?i$jAgU-WyIOs9(KK@Uue~g2!_Y?et)lcF9F6W&W<#}n;-AfsX zgZ%!HHwrI{x_cu(z%PsXfBOUf@0){z{&vshINbIk?XSS+TD=mlin`CVMx%b?Mpthl zo1tmHm(xPFTD^^Iher;2XLgW*)xAwPNZs3v-xGD8LH-fmNS|`AsR?h5`XBMTOI{nk z??yMa{WtRcW;g2C;$#B6&%CioG64CVChvJXVeOMR=x;W?fOlH`5Z-m8KPEH1(CfzE zu=<<$;Tzp=NFBM+55tw2>0={g&|_`hyV1`C`HiG3GEuuo$Cf06TNn9{?Bm|oYWz-D z_txPczxU*=$774!Zz09;M%w81;;oC^Jhb62*|G=mmlwI;VEO~zxyb)$pLd>j2=7|t z_Gvf%hAsOho?7I_--G|l`uThj|DRo?V-As3Ap1H>#;hJE6CnL3$pG|t_=;sg<}gGC zp!Kg8aevtL*+T~ZvHA%d^mnyR;(^t@#e8q%Vtq~Roq`Wu?7kBt1J7LSUZZ8!E- zeB@&HyGWz(?8UzR*2!r6JB!`-tbP|iW3l@!l{4}0FLw7Ca&XY^9t`1Q7Q4@tkHyE? zx^fr$X&}GDl1>f=`Tnj9atO$}hLV{e_W`oV;UM=nMv!NKv_F%~0r~x=5SeH7d~!Ve zj^C%AKo)>}cVZ#A2xQsCWHm^e8gjYSSCF+J-yd5?ZnOG!vL2*;19`vIA0T&t^uLn~ z@?8IXN`~Jbban4s9Q1n^$K#;$IRQV<+MJIU*qj&Qpx;Yi+%C_!?VwEq;fM z`A&R;ZOcX+^cdKLgN|o2zQx*a#eZ!5{{-J=+p-=1sg3zwyxz9G0pDR`*oh~s&m`Vy z{T#yoxY+$h&nx(=HqWo&uiJS3goFN$PZtilFS_x=wp~Z?zuS7>!r!(rzk~mu)!)Ta zw!J<0F&o=)yw~V@d{QMR^#Og!w zZ{Ot3&C~GAo7}OHgd|P$_zVIe@oLrAr-Q<4rD2ng6$?fZ%c;ij(xN5@N zZ*s>;2mY+J--qwFeh%Qz*_fZl6E?Oa-f8_D!nG(#-X8ot8~^+G zQQNK$@DFVaAK}Mr49D?atM}pkw!H)R;3aPS8B3VAC2kwPg%4Tc=5{Fl?IkvEc;*r} zw^?}h5;qT{@iUgVZ9fywS)$)J=!NjSC2m{t@d8^{Azrk^&3Q3ivc%2vbbQ7Vw_j%B zVOwtmFST`*;XkmkU5a0}#2tro@XKusSK#H=X9Ygj>XmqvjUkGIo?kcM)l1y>sMO%g zZCxwyHA~$5uf^|J;;spI;_H^U<8VEGmyP*uJZ5d;_$FKLW_*jy$yU7H=A;1!{T;pg z@Etauop__|izfV6w!IJIkJx%2#UHb6e;jYNF|^>VwvXEIcH7<#{8?LeAHLt#djNmV zmVF*i*t(KQe38``<2O~i z@8n;CS692^ss>+bV_SwVx3R6jS5~`YX%${;eb(V?Y}?o3F&k$b-%{<4jji}L8}oL& zzS>{DjmMM*9P}8w4+nj0`WX)T8*2CCpxg2Q-e~nE{8u*Shw(>jJdfg!*_a>4n{8WK z@K)=;4R5#gcHqxi|NHRgZ5tCf==D5_ciOUt@ITtRUcq0rWnaTzxAp!B@3ML~e%Qu& z1W#4F>q8Izp0$4;|IqsU2tQ_HIF9$)-1gyt&7oJrzOHevDXMUI^$EUzCW_xs<6d9f zh=bl|UW6~9z1(-L#+TyqnqnCqv-WX(TaCM4v>mUnaj)?k@SQd8-q$bi#u~dXgePiz zy^os2L0^}>fFG=J_by(>J8OKsFLVfh&+6~vA6om5@XxH?i+^tQFYtb=58x+j+c)_Te}Aca4V8nJEOqzRrsFfM9>zh(9Kp+%y7{TVmn?O!^{R2u*OfJR zt+lDcZ(Zu4dYL67qd_=B{Ud!Y~Ek1{s--@#+} zudV(B{^U|O|4-qd_wicsKUkYi9Q3}#Asn>-KjN>jUb#>EDh_(j^EDjwp3>_$=>GZ> z-evV}{Li-RUvSX-EpOnU_f+4+4_lifcwpo4migj4j7kE%W~&_w#FU(0jji_!>86Z!Lbe)nhp5xg5tgFLTGtJvivS z%^%^gRF0)BIOs996$iav_hY=?+BD#xZSKQCkK3Q&|Ig|_#}n2*i66B3%Xrr^_kV|O z{I9f;!M$`wsrDEt|qY|M$^@A7#DL{|7ke zJ;M)i(Ea!ke$48}@sF3eYsDux=(3;Upv!)S2Uho%a}RmBn}>8fXSqACL-@Gm?%I`$ z=Ph^lqVw@{m%IHw9zTD%+wTSVBx^qzFS0hpI6N-@Q@aoc{SA?6_zYX`OdRyw4CA2Z zW(1$T+#MUGIOuh$48Lr-J09lXS6G{J9JEaZ4tk7TiO;olRpRrPyKCSAeBpApAFp5T z$Eud=H8V~Ip!+n6FIw)7pT+pnUlXF3^tWc?hY4q7LJ<5vF%4tj0;Ck}dT|Cs#(Qje3HKq3E2RLZmTfsT9!fkIlK6r&Yr!w&D74Cc) zji0%~KlKFv=lUL=WAzZ8M|*j^%g4vBaN9KjKhNst;{_|+ycOb;R=CHk$@r8N?s07@ zUPPbrxK@mZZP^G8dcItQ&syQmqf2nm`fU6PtC!=T^$L9M3U_W+;`3Ly|E(;*7p`#I zemxF4hgEpg>Nntvt$q^@I#)~ZYOB}aD_6MlVijI%ZR+qfHvYBvx)tuRY(0MW3isF% z!$IdQj_z#6jy#c=HN(O>V*Wu#Ivp-HW%baL|Z!H>~K&ZFb_ z$1B{q_6ZJp4t|RFu5ia{9}c?Sf8n6#=I8i;)&GtE$Cf>TgZ6(C53G&1lH+!zdtAuC zhpcqR@KAixN_PxT#*0?^4NviZv|{|imHxCN_%uAc(!H-Bf?u@K{g3iu++XP)7iQs? zu5`!MWjN^dd=3t}U6~qsuCZ}^(@J+7ZeHnE zZCRJN7HeM6nOh2;UTkzJE?wZ_&w_Cjf-@nrB(*t;7r8@?a zc*@4sgCASz&eP*K=>OpUfrI{Em&~PKg9pyfwl2gu}@dIYs*kPbCo^M#D}eNb8^WWx%hZ%GXXDH<&J?uyvXXs_=O

    FTyWd<<9Fl_~onI`F;fsI_7d5^g2+1Uv0}?gI{OM z&cmy$O%z|k`1Q3RUcJg4t2OwotK7M^8ee1ewfH)#ug7DyY#jgTDtC_Gi`TF6-_!RX z;rCnp0ld-1*@U;)-2NJGwfS$upS69o4^P=X>cQW`<^S66}X0sgO5?%4Po z|HA5D;-Kg9SNNz}*FL+JW1!Yu8%N_gRuAE4*Shm14+nh?laG(5F3));;GoZS&#U!g z=hy1BE=~rZ^#UB;llSlx;*)CK7$)PO?^BwB7g@a+57)Z$E`pa@n=<@TYjYW1VdK0K z2YqkJRd~$maUArqasz%(t$R%Q5e{14f`k6=bt_(9>mGv|@WxtqJU8LZw!JNQtJT}^ zr>*`B{`*>Y?zH3kt$qLp-7nAKp!5Gcp0Iinf64khh{G-a@V@K4jCa<${dfrPvNqlL zTQ(|KFz#3VSQ?TC3OLYwG;h()q6YwfH)# zug7CnkK?=Q{5^p;-P?^<-|YIVxtTUMyLueI_7+#4dkc>vxA=Po(Pt&T?iT;lQ~AyG z_4upS<~6+Q7PsE+Tm0COTXbx3G6=7>-*#Wkbz`+_Q-NQ-+KvAje6F>r#1~rqdOTtE zB%WIB#@2&>Z1qp@!20xVqy24eT}k}#ZLa+hyw~b|cyOB=gLgaU zIFFBU_uI!=IE#|Paz(TyYI4&#Qn4%#P$98 z>EvLL@089Uhgf|mnF%MKWt?OVNShEj&g!{jV0G_O9L|*AhQ163{jK3Sala8{*(S0X zq|X*IVf7^0Y4t;77sz*RcawqDy~}Y}+`;D*uE0UR2fG}<+HH$>4G#L7*FVHT+gyvo zxCaNFyU=1qaBNtbUL@VfB+_V0G`Gj0fa<;NxTf`q`Y1anO1AB<>%E8O-ew zG6gzLvft_hvBm=l@>!4ikQ^p26U*Omy1CV9C&p7r$e*Zc|mV&ISj0~*q_2M9N z<@GVnf5rWC-(=p%0JNXaagecjU(g1m9w+NTj*SK~1+rZ|WB}U!OZ+Q$%y?h3EXWw* zWB@u3{W$2l2Jn+Mp8w*Y^YcF(besVWGEUFi;Kv|~&w0hk;Gzw#{l(PF`J3PGj*|)4 z|6UtX#5THb_;&n20tgsez_e7z2>aJ;q_339GwkTE#X#ypS#$o1BXIyQ10$k^7C zF_3FfoD8h)-H(GV`v4AlE&6{rJSxBK{&O63yLRB9ZFaIPzu2IU#dYK^sMw!&&TcZW zy7x;Q^xWTt!#x~J-fsLskl%lQho`2NpL66-jHlbR zA0PwJ^XShw==I?*%pu5QQ#zRq(*I~O2V|Tfvi}Y1hYUcjA>Nxf$g9oeV(FyM=g_ZDSN)ywN>|-h{8>xa2X#tHnVdTkCMp_1?_*LFPP8_Jhpf0C~dd zC&>VG4sXFhpR3%8gKpPqe9cDpn7bASJ;(3BLEGPngUk!a{p;nL)`o*_<8L@` z;Ne8txgqi}$k>jMDUjDMJ!D{Y@3;8xY}wy)?!Z$#56mF5L5}~?WDdx_3z1=~N65hH zUi(JB5oBFWWHZQkTF6$bw~_52^WQ-xK*p0KJ3*E`M0Q!dn|vFjpLfV(AZ?D5y&%i> zkpal|dL8()8{K2XJ{b&?>@TjFFZe9G&} zHZlRyXOip$d3-!X23Gfa@Ln5FAN_pg&WkwN2r@rSWHZP)(n7X^Y{W$2gWq{)Xq)j^64{|&YkSDBuk_R#3+KWEq`o&ONo4|47gkimCc-TN-}9IKN7=>7`P zKj>>cG6pi9I2nLEPw>Xzpszc|;^S<+xj5*3r?YU-KF_8fkYgiG2B42wdHAia?ybf_ zm%R-KUG{by^znTS4tk8O#qZeUu1j|^W{_)p1{r|P=Q`#AbUw*2NIwy>9As`Q$SROF zQL+}KpE@!II%YBey|%2!LHoZ82c46<@eMY%jX3D*g-!T9oBV?3IJSR;Z`tIot6TA( zSo>`_XrJ3z?@w*LWCCQ_BzeN>C&}Pm>!%(Eos$L}^fBc=<^;a|d|Gh^8SJn&JLw;! zO`L28S+;{rfSgB3G63C2zraE73;hxYy@u?<8?Dc#|IgBy$5&Bae|Q2>VnGuY4GMSz z_$yS@1VKPSb797UOHCA8ZM99r1>Bmrf`Z=L3WPmTQBaVCoeGkO3&`TV3J4;Sum%Wl zBcOnwiGock!TCLN&iUi}IZw{#%sb~@=ACzzJAsk((Oeh>>nLX)jBZ`c{l@t)l0IDk zFSPnDf{|PcFJ?^sN6T!)o<%{wG+}-7JMY3s+G;6`r0&b8?|U`|us#a5b(X_Oaw~_C z_$%O*I{uwi@LDTp9gJiR@G0D4tRAN+WBGrnWA(h>5=L^~Zv`W1lMBc4zlz4nHEbB` zBUvY01S5%09qYD0vL3^BKtXODu^|-9bs5+mD45@_!e*jiZp^~^Na~UXUp!XpehHjz z`)Us(+1I6G-3Ao2Pb1bx^HP(qa4v(9w0Q>@$+u`a!kxzI8tHNv$s84ek(8MMcd`9; zg^{ciu7G=(|0)#+2`sf-MP1(WN$b^w>n>E%=@2PFl9_u3+!`F^=BPbZdQLNv` z%IOQEo4Ias`i*t#u2+9O_B0C0JcDgO!7B8-?Z`I!R8+VBbf(ofsvGXD}0CLkOL!$$%XH<_PGoGi^bmq z-*54MAM57jsXre(90he5fh|BmIfYms$-eU8;nvq9U?gq(D2$|kAA<`lz7T$fz6+iy zJPVH+YimyUMe~n_k*p`jz%P&0`5^)$xh9Rm<7{8!VI=pjis%;<>dL!2huv-i4Q%e;H%)y|FTfM6pFEn2RQ08&GggX~g;Em)ITvvVpZ?XRR3P!T8tuT@?|22%nzYRt*ZY$v(R?bcs$$i3IFp~0j z!$^+VJus4SSWR7!%!k+z3d+yGW}82Z_08|>g^}DB-3KFS!~HOl@mvEVX}1G#o#k8) zBUxwu1S1&(Kf?{?Z-mcU`!~V99e2(+=D=}!A0`9tI!@c<3K+?C&Huqj%KSatZJa&_ z=?){gm-q)5Nqb%iql_5On0kzJb5P*V#rjCv`6@Wm;n1ibo#(Z{C!~* z%$ZI<_`C_lJ?}YXBT5SkK>x9c=y~+LYA+RmK$r*ZCC6s#+nus)Kux?`N%kfZU9SRcvSI2T4zmpj=n3eMLl z*p?_b)>>g>=8t0&DCp~2>=E-H#nz#qUiH`p^EYCBB-cK7!AS1&4;|+=M?v|?*cK?r zCk5-@t$ydv@>``w9xS9g8hBe;L+C(zbtr0|jk+5Boy0FYH+q94}2+ z|F5>Mzrpv7({u6t@ZYU%{{bT@GY>|x_Q;2kth*k7ksJ%dU?j)jgYd&PmL7qTtO16@ zNa9Dpk6O%QMOYqCK-w2FkyhY(x?D!o^ z{^+vLn_n5mMo`d(QEavO_hJ($*tQnykE1Qf!5Kf!EiTf1m0(LzFt*FEYs|kE8$-di zacqP68?io;YsLxiWb4x@aIxi90>3`a{p&7{o$2r!jE&&__M0%0YpxkE3ij*Fgpph~ zy#>#*Hkl2V+Hq6{&$afMH_mlYFh_aV!6>-jJ_LK4`ESSiC|G|w^Er+d>$dgS(#>T(_7|H$rgD{ddKLjI*Pryk0wahapIOir~d!XRhyb7C%f^%*b);GWN4UA-M za2Q5%EFXc9_>WR13g+8nYzrjkZfr{wjH_1I4k+mBj@S?i##jc{MZvZnb}$NJhG1_) z!M3+!eI)1ZZ($@kdnEdNZa)uu{&+pVw}6r4 zlLB8bUe`sxgIkW*d8rkgYVm1sItt2ZKi;iF!TF^g>t8xv?*&~3cN{OrozsaNkenZ} z*(f+Sg|UOpKLqO|84s7kNXBP~?ND&<;$CbXn#uG1d~AXF3$Y_nu%;b_jiBJ2gecZG zzmoxXwzlm8BU$Hng@14UZZHymcesbu_bM34e0VjCw{ zFp}rR*TXlA*Eyj-jATtX0M53UFg)1G83Ny8{dg;U+jw{S=d}6lFp_KGKaF=wQLx`K z>|zwmS4*(f=HH9;&F|a+=ZtrkebT(MlM5r61Mh_Ivi%N)|6=}oU?lar7ru{i$@3=X ze)u02lLsS-$%h}bzIzBBZf!LJe%!{@6Y!Jca5k_*J8Vv^u;>Tc-jDeS6B-cbQ!$^*) z2#n-DLlj2x4%NTlSF9bz!sD!t<6$K6Merocc``h8yuRl)4MtLzVi-wXO5hphp9#-K zL7wkmk(^)Vz)0dtVI=h}gXdZM&xaRSzbqWjvvT#f!um*#wMFo9i!bLmLV-Vu^^u-~ z;JDTCv+-^!3g)6TY+DqxTRW`3-j1maFp~D%INptYq5e3w4h8;ttiQ?PH^W=3{I6gn z<8v!q$s89v&#GcRK{BUdeI#RVJB(!h-vRHmcGv~)Hvb;#g=GH3)}dhAdaRFR+iLir zjg3Pvk{lA`i-P?oV|^s!rxyOk+UM|ix5E)VHalYdV|qL~$6+LEyc00$7`zksJ!K>n zNe*S$aul3vDzLGDnJ44e1{9ok8nHf-zHSDm7U?{Y2Dd5Fer#Lhw!EZB`l}VzN7BFP zFp_?3U*z_^v`FgJ59^0C2PXqY(qEn7%pyG>Wx>6RbiTR{Mlu)mf%}@jAAF;ga}$hY z&de@yb5Jn<=VFJV;5fP)8!>+r>m#{G9fk*5o`c|9EdN{K+lutubbFCI@=v<2QP>Cy z+9!%VYyKvzkEBoUpiU?_E|Rf+j^&nHDl&shG?!bsZrIT-0Y13zD+>-mxJ zi{>8sH_C@Eb*XZhaF* za_?dWjHKOW!f%mJYH~;CZFr8hxl>ACqu_Z#KWsJ%&Xr;8Nb`@v#!%2laclz$j*CXD zk7QqE@I0%_e7M~Dr~>}b+T^1mH-v(DDFf@TH2*3X$#d;b;59n-oV75L>%Mg`lC|ik zaLoL1cvF#{FE+zpTN`eJk@QO?jO2aJsv_Rc)HY1P`a5k5?}Cxsv)Trc|naB3SHP%)KU?j)yK^V!kU$La z&ieEij3oXze8OVBhfmqIKaf8P=8Y(}0X-CNer+T6tofU;zWJRW;X2#49{$O4`x!p1 z$C`5nMzY^uU?g?_FO1|`tN}(c9vWfaVw?%AEho5tKEb!IJHeMv(BE%{;L#KG_w{37 zG-*Uqy7LkoF@F>;p5S&%PrA%0nc$Yso*>`7slfX0OmH8)lmA082QF2=QwA@e;Fi3E zzZ^ze-{#x174Z8OvtokV0tNY`U|XW#TOzHnzWJRG;7W_Hf_F{OZ*=U24_f|*;QyKb zSNN>?n_yqdbexI2cQjFdCz1@GH&N?yKHOrW);$GAwg0A$7r?0#-9Nm=_vO;ywiER` zC+%P)-*dPaPM@gxw1-3H&wzVb`MqHz?Rg#C&-QgajHG>TfcsC>?_dvrvnT2|g~G5m z(S4?p?_J*vqu`rk&L3eUIShvL%%2YzSe}LOMBCRS7)f0w!$`iRFa<7VUqQc=z^_`F zufcCvnQy{K_B8`W(mpfc*%S4<1nYm&Qt8sn`u+}C3I!PlGr1{g{E_lL91ABJ-#>6pxg@0q0Sa4-DVN!k~Gga1BB z`{*Aqn)xih)5(L8d{ZJHe!%h>1|t~{55h?L4=Z6L{Za*Qx4zy1SDSw?++hAj`0OP2l35&^O|Wl%XENht zvi3_FoIY9Gvpw8xvevOXe9dI-(@Yr27|w#TCu`q@;hf1@-&{D)w#|nhu=ru{!&c5C z@Dt{La|EJb6qgWrwe!qo}S^39dB;Tq!G1+a7g8Y-Q=_qKQ_Slg5Gq9EBufitGUyJq4 z?|cuRv@%b@KU!{eFp}|H5C1e-$LG)RFXsO*?3>@2!kC%jwttLyAPr8RqW{aIJsg_i z-j|+~;bg$wrnpZ&2X}`vr?@|R#Am_T788bZrs%iMa^buw?%WZ?rbs~;twVeo^t?L$-Dyx~)&j`>(0-7=ov6pw%lrfOXZ;nB9=F))(< zf$|a@F@F^P#P+osM(4g`&9erMnLiG1v@*Ydk+kh5cr)b$ZT=^>!PuqUazztK~XM56ajqus2?x`a7)dc$%?@Xipr|CH*1J0YK zb5uTDFip?Dg>Yn=wqX=5o2KWcxiFIT*gP1?`FcK#U)CUDxE!bnZ(} z*K4ID80q~7xY=~QpU@mevW8EFk=!dg4@Pp|`+WF<>3aS0I~YlPOBl(uSSuLGbB7CI zB-e}=!AS01q{2w9iPB&s+qQ<0?5hpjcDmjhX$K?O_F@>xeV9w8yQ5KX%{vAgLBVxy z6dOZ9ZgFg-`Kz!sD5%!~>=6`fdlc&UIQa}evt_yxkk%^ds=SS!bt8>^qTIrK*6)26l_Z*Ib*ZUAIADfo(J`w z?w&-!_&J5GL%}nbdhBWQpTYV_p21xQBe{m{1NXIl><1%h!|P#m2k*o>H^4}8>klJo z&jIj_)Ae5NO>nlgNf<`*JbECEWSk6w(S23Te($(2l6LSI8%V|mc0CHlzy_>ue&^=t zZYB!K%)<6Z!I&9<%|=0d80#b1?;qj8mgf){Nxg1?k>r0XeA{%rmvuY*Cmj#Y9dM4e zxswauV|{urjDo&!{t6>$lfS|DS=LopK$|;1A^vhE)k~!gN7|DAk&%j8^e-?h;+J7XB#6Jp-OxI^9Q5eZM{}=pk z6y);?7D>)yIhH4A9ivzuNgGatk(4?whOs`9WAk+w$vw>J@Ea(o z@0(a8{uwZmd1fYzq|CQqB+n+^p6)iFp!`PcSrm+iCagcp+GjS$FACyYVe?Q>PChn* zg0_lceI&WPgC7O)QEVj&Vydt{k{ss1NZPX$M$+bG@O&E^3t%Mvh45nL1nw_6OJF4B z{0Bx7^Dd0!cw7o2nQxcD?^(=p7|EC~hmoAKD&Rmt8@^9Fpx`(4O;{hvGqn{kl6`#u zBiZ&t7>WNQ>b}y(7`6xn_n#+Vi%~Flm0(Lz&{k#Ga`RVUSEAtku2tBW`Qun0N!zZ1 zk<|SY7|D5XHH;*OH87HxwJ^FPm;=|rNZRL9@!p{iGMGQj zf=^rjo`I3n>lYZwGlKuZNOEX^8?BuG!AQ#g6-JWJ+39W)`d3x6Ynx#QqhS0D!QNv2 zTd_mUe>e6y^FNP0V*aDp6XyROd(!-;us@jpN33strwK;#dx3LsprCDk!y;)DA4YPX za^7HV`G$U1vki>onzSv9)vqdcXCbF z2kvYBesH$Mhv6J6C-)6Ef<73U)G3Pf@3ej0^@bZmK@M^3CKT*Pw}X-V zFUX7G^ck8%dl-rTQW(kq?z{}{VE&FX+|D>M_ptJ>f-@~X3%+)ServrKjO07yz2UyLZ9llb#Seh9t&U;X zHNOWBvGQ+$Z`1sp+u^Os{|NYT+x7{#z_u-fpRxR(g-6bCw+8nsM$K@Wqu_o>GPVUOUfirl z3f4Ej^8$>d?_PvQTV2M$NXElUFp}}`G8{2~6n@2W7z-mQXB=E)c}`%zDCqYTY$^)+ zIt`nNg50vOea+twn~j3|8)2-EkJL7vXi8E!cW%BjGvL_yB0u)g`7WpKH*Lj}CT+TjBjNe&;v)t19v zc)$5;U?lUv0meTH?#)KAK9Xu3L88G_CqUK$k&M=a1K zzYAIdPe;MGAK$>vn5o}>oC(jGso$2I4I{a)`wm<>Q@=G@1~0alB`}iji~a{*ZRM|l zk@(lbNWOEs4vv{W4u5UAZG(|~JG2r;l5-WDn5o|;t%bjtso#V=3?ung5l&oVVH6+gfHA&Ustwo(tde zwti3kUO4YlII;a!r2xdhI8h)`=2A{TsY72$%h}D z`5gDx zfAfAz1^oUTx8E%KVg>x6#e4*>v~5?xF>CWUyxw9qz?N)yx;=;S{=mm@%=~e<(&DS&-E-YXA0y8_@WHw6>yL3A zcL+|HzZOPcJVg25z;$!oU!EX`df2xZXCBW)=DBY^l$7Np!(HcT{1tFF^LK|Io##II zFy%Z37nr{g9%=ET;1?|BMR>HujDcS=|I2X1{84!FJa^dxw8Ip5>OA*_2a*l*DkHGb?Z+>S1>x2dFFT-e`6u9LA z9UHCS%mwb}fj(!-N36^! zT(rRbIvAf5;8_b?H-+=XY`E0?W$?NM+Fzf-u?5h_g3nnwzrnuc<1D1U3$>jK;b#`= zG59Pz8h>zXj)7lV=sp-6n=iu=^GD&O3w3NPgWp@IV`Dj7ZvF~5X8t(**+L!9pTp}H zYWr+}H=6$o_$%{og-d7U`U`AFf;EUiKt0^{{V#XEEb>v9@O`xbI?Z=YDXu`NMF5`3vEQ z`J-@bu{-%;>Jo=HTFe)4!eVOSI`h}V4d!oz&zipp{>}V8jAYJqmbm^a@9NkX`!4Ix zceUNt!ZGv5;q~w8v9Uz`+*JrawN%I3({N;|j<+a$Y^k=}ak$R5t%n=T-w6BWca|~E zm+2gy0;ew1IXn$+y-erEHgIT}?l%MOyv)7vaptHlaON_1Sa6Rn3r3P#PZ-I(dM%u7 z{xIw<)APv9FiIN6`1~WBWByz?Z<&sG3-jes!51*RR2)<}ZWiTl@kzX63};#4?P_-YS#Fn>ol^q!vAGT^Qja|PVZV!FduoBtX()BIU*PxD_3 z_cDKP_&W3VfnD=^@L=-~fp4?@-VXoCV(x%*EG8E&H-82EiTPK!z$2Ef_NwZFn}&T^g8 za$)p`wB#Pno$%1*I>zpX?^&+rrhDPy<=W;Y@T*qlYw+t<=5)B!{AFUb9?t zTMMsSt~q}S$IKsx*IPLo;7!Z**xwAFHGdO)Zn@4&zrnuwopP=>%eCEZh5uBpdENo% zm_HZ3$Ncxge>MN#;DT~(|3Y|VxgHmz;L#R81}?Vv68Ke%c@2KuVy440telx}%=~e9 zlWn^h{>uDY;e`2X;gjY+1=pFs9zJdUGcb~I@(X;{VwzyzVw?*4y+YeI1MXa*=h-gs z0~Ol-!{7%k<{|iDi+KbdZZRX^CoSfmaDn*?;n5a927bw6UWOy)kHSS2+Wr&Zi4~gj zBzTtjXT$GQXn)OttIfX`t}}l1>1N#=^yiXn9*Et~r?)kpX71zSq<`2U|-*?vy zXU@DEe(rtu+u^JgpNB`kugAq0_$7;Z8IG7g3cvHdj)6IF>HBW(GpwD;;JNSX+&B+j z`o7MY%iwk9{}hgyKMsHPzV^lE@R#pv`)`52GXGY%()?BM_V=~FcECF=W*5BMV)npC z%zqR5I%PFp&~scH zxa|tfza5NZ99|5kuh4#M4|iCh=g^LD2oBDn8F1GXdTnwA{D&3p{SR<|;7YiMZF|)U zH*~f7Gq7DzaP4yi);GU%4V-CtX2CsIxa%IFf3JmmS(&}zzAJQo>jxv5ORtBKoa1hQ zkz6zOhml-Q4SV6BHW83D! zcUpVi1>bM}zr+8qJoDfO%s&i9vabi>N6r5j{KN`fw>$|WS?B)~MzZcIfRS8x7s5}O z|7rLcE9Y4l4a?{J{v3>?zn+JYwA)A+Nn4GAU$FLn5sp|nQ5ea7{{}V8jHDf$4|w151NY&_8MjFvxMxwY25Z9lNY-G@;1(a~I7xw1 z&7TIhg@g8N2WNhu`^|!TexS$KweT$4b~apU{xbNfkF^b-{+KrZSo>}i95H_sesra_ z)nhAp*0xfw>7Ia#SL%2uflDo>3|?$8OW>8}Uj?tR__gpli}@6eSxg+>Wd6THisiyISkz!Gp~|1io*zw!{5!p2g(D4_eGa@NkP6 z0gqg*Z8Zvxm_G`?vRbbN#==FbbsSEBi&wkHAE#|g;8KezgXdbzJQ!X0IP3ZOFp_JE z1@Pk4Zpq`+YYDv4{Hx%YZ5xNbT&?HXE%3?JI=`KQee*kO+(`2^vTl!J{m>d+PiDYf z*XWqP0?uBeb4VB-yhg7nhQRl%(K-2E`0+J5-#!74H2*001@pfMk2e1pIAY~Q;nFpF z?3BTa*XXgc1a2^YBYf8UP4GGM{|5W!ch=HJYxNp4A0EC|%NzkezE;cTKI^Sc@#co+a8DO%wG@t=6BZ7 z4(s$B9fhmcxgDNJ>gMc)_pQ@$vL8;Y(|)gok66r6xNe=!b@lM+bvjPYz-MjSCfK)a zolhAjpX&K&6};wCUE8dMW9E;;FT}LpUyRXTF}?O214qmsh5r@PdnW&e{g{poCl1H; zUbpiZ^TucH?Nb<^S@7V`^qImCIPWvJ<6F$n`LJ((=X3aTeW%4)&vnOocWE{MR!zb6fo0{_+>J(gOG4-&&-W}eY{|o7C;8@$B??p_2CvR|Xdy9ME zQ()ix&PI5n{{F)Gf;Gk$t~`Ia0Uq#$`?W{@H^LF~N8xY3(EIJ*!6&|OUkmQ5e-HcS zcQz5fNq=h)h5xn5eePqPL;V|mWt02s(dO-(vG6$akB8CSX~~y5MKF^12{6jJAi0|} z5uR-RDRA*7x8+C8FLz2{B=N7pNXmZ=Mt8Mh+t*=qs3pH`pAOHkn3-_tCilrS{AF-# zlm0d&4ktEgU(~`#-p%+1M)F&&!!VNfMvlNp+V&`nq)ons>o(~-5B2cRo7|dFJZCu# zBYE%Q42s7)Jb>xZ+45(A3kc{r3CBWXxrWd7g`Qa!AR=( zH2lnFx3xn*J_|o*Wj+rh+1E%INe-jnm#mzZVI*~l!06>D<2efZn{}K!Uvl36QpZnw z_|h-k>w^F5bQ#>k{8zzOf2rf@8W_oV%Y>1Pw=B5lm+qVoc@OYfxUc#9!Pyoch6jG> z&R@;%4F|#KT=1;lh0%zUP9MjEQP(&zH^b<nP_o7#;f5xzf2Ee#FWd4x`0Iw8;n<$-W+i(aWnT^D!97@A4jpQJ)Qz z`2>s>{@`5UJP9NDpS=HsQFIYwsQ^Zjb0LhRoTp$kEvWm`@H1b!h0BP47DgLaJDr{9 z;1_M%(J+#2$G}M54}1wmH^*t8mtpkX8gh=nNaCY#@t5wkk0o8~l)$B5>bpZ_aLoL1 z*#A*XAR6I=8ddM$ipi_K~9G0W#Te8TGZJ$%Zx z{Q*W#1?RgT;X2z_J$%~sb!Lm3{a?*LjP=i2OcQ)=i}ulPTig%|+BpO3BRQ^p7|DF- ze8qhAmCjumaJR4YHU?R0mpgs=Ka`|)ZRNz64cl9)^w$y|{I_qCXQ zaLo1cWdr@?J4rX75VZJQ2< zw%YGZ;q0wiuP_|hs?V&WaBQnSXOF}FR$WUtUlaee?kfyOzIJ~)LVcrf>}#!K9NzS` z=C&FB>1#c|{0#eFyZz<_&seun&NltcU>MHZrtOdqN4Dv2W}|TFHhovB3|_oV$IlYD ze48u3H?M$W+w}Yxhy88VR+ZGTQjdiUII~jEvsrLkY7)iejgwacHI@dUZU?hGQ zMhnuCJ2@UaxYAwvrqj_G0_Rk^H%zDQxp1Dv=fjao{e5&4F0IshmBFz}ZRa?Qmzv=cOi`A z*jWVsr%KO#@4`sVtxMr@E2jdESxg+RtkN-41@ElV_Z4@+yV>8P9OHZ78uK534_3Kf zE^Xe+IRqyxrWW?AY)!kJHrcN4Y-GUM+ije~dE0djlMfec*R@a~JaW5^fl+W|yL`BY6j`a3}whXr~-^QEUvo`g~INIJOc6b*aK8%wLQ3BO32S;Zn*B z-cK%r%XjJ;qXLfY)c2|4aOF<-y_fi(r&TbLe%THucIw!ug^%pi^U+Zly||q<$+z%{ zojTWjPo5|^FGsOHk~P3d7|Hqi6pUmo_XCWijz7Xk);4u8lCfP6`#asx;%1#4XBXpn zm*$WLhj!WA3uo`rGQ)7*E^W_zII>HBj~|7Lcj+8n0>8RT$N6jU>$|kR)8RLFXy~+^GF&T+O2(*0cY>lc_s|!?bdlXA1>IfllTLc553>fG6(Od3zE(dAH6RQ{dv=?)8f}7nH!IyWLp}n_cXb!Ap1R7+40s zw_EG794@zNx(?v|616${W^PS!##Sw$bd8VxEnudmf>W<*?V-33d4DOv>o!{f;~F#6~d7{ z+ILa7c#q~;0+;S_e@Wxp0%dS)k6wGmVI2SZot7@}|C#^yFcN<^7|C}by2F2{)^qEX zaHhp)!M&>8JBpc?dRM!7*Hz0Ln2+_5%vXKjzUp`S!TrrYpxSMYf^Czr+31?$q>M1u zztPIP2}V**HjIK8Ck(sQdQ5rn;A$OjLtrHRcngd&t9bYFRye0x$7e2#-b2p6SKE|J6B=6<^1xCLH4>|6Ud zd%2e1t7ES{++nYdnT~L1ug*CcaQ0rUV;Iiat7ASF&a?P@xL~i2^FlbXSN9c#OZV#h zSq7Kybx%%XEmQ%=_UibL!->7xU$yY}dvy*u3IDiPe>YJFBRSX9!@ljy*~c}-K3(G_ z!!7pd_cv1D)O~uqq`|HC={d0tjO6|5wlI?4Wwe9SZQJ(nW&5;`I>1Qw+Yt`gwi$5d zKK%_{7M#6L=jt##WS@;O_||<|uiN0;_v!WQpI{{4Lb(G*a=y!f@3fe^U?ed^VI=2> zyI~~XOZhW=kL~MTIM4j~aKS$Py;ULn>^?VK#QU_*?Q^rA-zV=ahq3+(=6?~6sNadg zNY1DKf{XU)7?=Q0+Na}WGK}Q9ate%OT{jg*;-3a1@fX8L$}E9P_vsv12FEP_I9zG| zDmbyvZ8d>oxfVV_U4rjTeGenKzj_iz;y(rduutcoAK^Ol*TW6_bWAqFXZPv+)&%?J zclOh#`*jRtz?u8?S|$t5-tV5dfO~gg_>TQLPv*c#zP*+U=k3?u73RZ{{d$Z?;nMxu zUuE#({cgwXAEGJX;;lK5KK->=7}Q^WC6qt|_DaQhnVyGvmt*Z7yg zNanE)Fp~c52qTH<1S5&L97Ylof|0~zz}YqKW0UwF;$e7bjh^G~hVyE4oaEQIkzqA5 z&qT3{Q7~sN!8Vw`5$l`Zc@Rdj-g}5`N7P7tqgekjEysDh#%+Oua#FCVC>X10*mM-M zPkU?ul50ckNEF13!bZ#=#TEt3@9!pHi_Kqxoq>Y#XJSjuUxrz+rf{`49pTKL_R~^>^YhfhU z)azg*=f_WBB=;3#Fp_h39ImXg0lMm?gkty(0^G}0|54aEA%{xUUFlyI2`AX+i7|HXR*VxbW z1M-Y!1lE7UwtW*u^6X{?jO4k@%mZ%GTk4;H^^xT8HjE^G7L2}cJ`N|$UkiV8z)gI@n&dEyqATGeF#5mC zsQXd)_yPCvS9n+d1dMKK%`=hjVYF!__mEG*Xy7Z{XFCO>*01m^`v(}^6_oQMjNbd$ zxy-49k(5~vpSB#%z)1G{3+!8rbCCBs4(ix$1|u08&0!>Ks$@81{tWp44(he-?_ng@ z2;E>LYq{=l=0RQaWWm`7-A|rp4iCe52kjgIM-JNc5nOywkHM0IZux5m-JEGjy(_T( ztb=;JJR2@mzf%U6AJqA|0*+a3aX4{M@1NAdbqC$#q3pLFMsl3~1S6S~e}<9N_cV;s z4sj3g42*&~(D?;MQm_BQNMagbBr%Qf{|@R}@mCm0nP*`nb5s+2&fnu27<=4V>mRmjS zAJXyTB*;IZ*WDR#c0&6o4Cf`ZzWH!LLg&UpIFhij0hcCp{FK4v30=olz_En;&(_Hq zP8?pJa1(u*uQtF)t_?TBn-h91{3VQJp5Fo^xzF|${B=UFAGg6se&DZO#UxkgK>gh?n;@I`*qc@WJY`|_p!M2;RU!hJDlX`5$R+_&GyAuUv?!s1^ ze=oKMb$czT&jGA&e&z1P+z5@FJ3iA9A zyVCrtuxn5dzZM%ae;m6W1@RlO3G}yDlX})-kDx1FP3m(L>!YB2=WcR9k^{B{3UW)q zwnRbst*{N|Z^WKOL3|U|H^1}eT6g$8TILAs<0y!E0$X7ILhP}7wanw#lPGAbQ`kE5 z*JDqk(3?rupTYX(cm7)IMo`d4QEVv+>Q#na|2Hjj1NImS@;{C}iGn(w!q%C;9(x)E z^*V!XFn=R9{XUIvkL`hin5(dvD5y&owio*NwWJ$*V@KYv@uRS#QP8$yuxtLV+pfj> zdAhBW4-c=^xn%_WSgp=2kHbjjz$aiN_mrN5(bOXD$@~*8u$V$PQme;E6!vTF`OY_P z=%R1j<9YnUp9XPMzY^1?0@54afbUR&SCtAb)_dKHIq{E$#=(_82 z7|HX#5R9Z=8E_AazY5MgqW843U?kUHJ>lL*v@X}dNb24PzR_ZCg3%Mfv*2tPNlX|< z^4xGB{3qMj9WYuNJX_3xk=zH!g(DUdh5aKoW{whbRL_ICaO9{SM^QLt{y1D`{(AVV z`I}(>sJ6fJE&gw{eVSnZTfHuDzN1aP)BCX*aL#vnZ#fr6vc|g;M)GX>F1YYJy?%V^ zJ2!#?e-!IKZT@HAkrqD+j#xQSxb!<6V`XscJIyB!C%)73axLtCr`H|MG1i&KwC>69 zdB-&Vd^q)(wsRVseoT*-_Hc(|+P@v)PUgQH4w*j#&OD~`OctDdOzRScbB^iyGZ)S~ zrfaZ#xZs#xyA{F_w&gn1iNeLlH0KidjbrXd|7Ko#6P|HQpJ&a4-#Mn&K6Btw%b^S| zKW1w!c=a)Tmu3wdJLWErIo+H%Txq#g!HHusZ#%Vc-7)t+M_GT?!@jkHbDTOJ*Kd<% zz}d(3H~V2Y=eYYD-&b^U;k@JS55YS~`Eca8epfIGmmb&uQBnpkw)iD*xy4t&l~!gI zTzA}U;(z%$^>D*+{ol=vaOw%&Z`uj+Ibr$0+2#+!krVozx+uK&gl@YJPFPGW+;Bp_ zkJkwMCp0(bd&)nl`%ODZ`6tz%0cW1nePzMDPHKI7!~IX{_gx3TNWNomBb;aDR{Gd71!oI~jKa$&z*3NL|k6LCHJlOn0;G7@z|3l@% zc|Tg7aKVpSm%<<2H81}t?XwoU9tGbY-hlNZ>UW~BZ`(R`9FKLnZ8D5x44emt>NKAW zINSVTc(D10)VUE9e8)11^>ga<`XU$3v-o^CQm6k*C<@Q0)0}6*v+Csgw9ag})XFS_ zV-^#K6P8;oTvw-cuZMk$cj~#0uGe|vd-!y{ey8FLT=|pwtA3)KpVVIq*EOiWzJW2> zp#DZUyHWk&M)Gge`^NdO-=u!$9M`<(G`>6BNrQgU`9cCbCW# z0uML;2)MwuErcWHkHUR@Ewi6bd-}SsT=*Ve%fA=)&F?s#f1%^ab>&4cl6&K+FcN0B>?Uxv#Yu{)%l&x%agd zZm^g}_^jhybcXlwnqc4jPLk(ekmSj8>fgaFlRUXU*$Tce$#PEePPWmQQ`i=5)t`d( z+uOF6!V%jx3YVI{41PaJ^IQRckfgbN2!CY$kKr{*n*Un(Q}f4QB=w5J>ytcLt89Qb zC21ROhAWe_-Kt>U{7y5^Z_~_^XA^BWaN7$s|90?Y7SjRlX#P$xl76`yMv{LBM&i$aJ71uE(FN{m+g<_x zpT++k?q>e(a1Yz|D)?%Pxd!fKF}>mIET#{9qs80=yXN=c!R8+V-)8>X;i2Zg8@|W< z_rmvCp7+Cf7LyM@YB7(&ubY25Jlp*5z@_FdgOQBAx$u1RFMt3tJCk0^$b9A72yXXgJL z-e~?W;GfNZ8vf1vK8&Osrxn~vk4@)7#_ENh{NIN-oVZZ)sfGOuE#@N6Z+?-Efn@lC zi*#)K4!-ar9ak5@spe0Ek+fTDxRd!WhePJifL}5HSQyC|8wVGee**lb`DegL%A5%! znJeCck!<@mjAY!-f|10`hTk#&9Jti{WpMdLTE_}Fc9G5@ad;Ck!85YW7kMER^h*ZT zuQY!Z>|bQZW-4PWRgb}ZIFf4f9$cEL?O6sdPSrA(z{^v$FUnKB92D#;7aK!CAH}i0 z`JD6{85R4=~ z14dGQXE-y>8+;z$*UEx>Sq{D7J{Hp#?r%8^Nb|B$ux%I{Lxavw>J!KMxfXvXj0QL7 zzV}^l9{UaQ&xZ>%-YJAfT0W!T2=PAew@2Y3%YOnq+4egHE>83MTtHn);2CM&p%#2| zX(n85X0M0XiKKwvy?_e{=$uRiA*50yawA(}Q z@YXsWM!=6-{1b42m0t*tZ0%jrk~)rpBdxVBqHxS&;;?VqI&D~ow9)dzaHNgaHwwqv zXn)1wL>ukjTG(%+`8#ciZ>#x4VIL00mD7$nu$`8f47X_Kbq(4r1x{_JWv0Px+j(-Y zyB(a~&Kuc+ZQH{g+Ig*$;Er&}Vlv=vR!(;~ubp?NLrgv#Y3J=bkNcldcw#%R{=%d| z&Lnt7JMFKTaN=Ukq4r|(yjYJr=Mv9H8No4_1Semj<(vnH%%5?IclN$ZB)$pjqmeDy z*ZpwbC0`7n=VfIMw`VaGP`;+ihVa`L~0S%sCgsNS-@f0;i{I z`?QBUSWHK_lWluB+|&Hm!Z)UCJKO{hH2)yjwRjKCOV{?#hYKvG5RTZkQMkzb6W~(Y zwhS(}mr?3>@Y48BaubUMHtyp_#(ZtHYptakK1+DM)m zFp@kw!(BRRd{_7y^Jl_0cGPWef(M!3g>UJo^}Q8FQpelidoAX#@ZZh<5BNdzKLkJ5 z(TlDphv(rE^S=sDxA-^UndW~Bo^AVj2d+2&Pw<(J+J?WtjpqL!+|<$Au%6#for8Vz zJDuo@PFlwlIJJ}3D-BNXq;+WzhdOCpGT?5VG|%pEW+&~tEV!@5_k*)7J`4};r1=bi z^Ezn``S63Cyt(IiX8jO6ypz{)KRg0{ypuO@Bj0m-0xsy}Z9d1nphEZ=%kx=yWGC;` zIqvO@f=74qUf)Q)#=t0L1HY?!37*kO`*9{btCM%hZ?x@fxYWuigXeeh-2IfZ0AAe5 z%kp^!w*+3=$(y~oc_(KXT;9oB@msSioeKDaPTsKJi2o3-wDPOqot?aYZe+i^;Ob6Z zQZVNC!Zn?|P>|aJIMK;F=ktDYE$m-z$3lqtC*(cm5Z?@L9@4%@hLIc#=fN#P8lM7R z5YpU!2e%AqnXTXpZQG0B)R4AY8r(Ldeb)}YIHY}d37j6%c54q`8q)kPgFA$@k2=EL zY`@*%KZLZcu7rDpv>mR3ueKbnfio>W3+@@xzPJ|d71Flt4PO`1zUTw@4e5C62VZa7 z-T?Ox=@=LQ-x$)daTAe0+(iZ zn_g#5D}&1|rUL%JVm^dF%JAeHH6O$4Eq()>u$Wr7F2j>=GuFdM^7#oylIPEGgZUd_ z-~3Kz+N!fB-}D#+-`v?-me1Pqk8qy(^Wg_NYx%=q-~3J&`m~GYp9K%^qHQ$-Mw0WR z@JREIf?qa&1V+-fQMkB^woeIM+C|&B432ft{l?)Kn;p#40$Gz}=i?4x^)cpXA zq`wZrNZR2LoUoW$xX$)l5C3F!`5E>tH>WH6>Z-Zzg%e%9Z-Z|Q)xsycdh$KbQ?PG- z=L*W~sr9PwiNB||gL5s%MK2v2SM_3S_wu?u%=)t*95H_s-q=gG{Q~~Fm$vOTxYGPp z@OJa>fNRWu08aGMebvIg`JLYMQEzRBEEq{U^n?fZ*0ve~-)1ql!*`fJ2OetvyWv0E zwts>DW-<4{NZR>+`0p0;5BO2@KL#V|m&f5}%>OJr()^>~(dHimN6a6EXPf^W7)d#E z;JN0X2P3K1d^r6&jcI=!_3ER!-QLIZk$mgsPcV|4?|_l`b6_O?TsW_f_C-GYKp*eh z;9HTy;DSD$e4D5cF72azS_YTn557rN0iUpPzK2is(R_Y@e>8s`j3noJ*tdN-eaXMC z_G5c^VL#1bQ9sJ>r~V3frTJIEv3@#E;_&~>|0{gf;+tUK{Lb~9FRs@*rof@=weA^k zx9c^Z?r_9nqVVGDwO&i$^6Pc{SHSDc|0x{1UXO)%5Yu1Vq@us)ujsG)`T$XAOck7f zgKtUI!gc1ahfiDl8Q9O(K61jIkL3R#C&5VWmo|f&hdudCK{9+^*pp|w=ff?`p8~fF z>pj(rVI=XFz)0>_r^876?cvL<{1A-9p8;ov^}cZy+&ApWbLW0=cG#2ui5Z3m+qOgC zoUq<|$%XF;d-4qTUbw*gg>WS7>F>VbSHhnBPJe9Ji=bCl^8XpJF%1Nc%qdv2}Tk#8Aek66nJXblXn!S!AN3?VI=P{mcXxC%xf@`ZC{6H zSo}=5-24@A%=~e2`cbJ%I`)WZz}J^3A3Bm6(h^H=!nKu_K)Xo7#U z{rWJHHg^WmFN5^{VHzA7r0tUdcN?UA-5t&xr0tvqXAkn^cQj!bN&W+2B<(W@M&JB} zwY>{_gEaq}VI;q0_#-@ckSG6>cLbP7gFN})xcP9wAn(m7y#HSaKQqXi_Yv<` zKMRi@mk;vvH|cQ9wvEFHYtLG^j&g!~y!Eg@ zNXMSz(*CZNp9Y6qoli30t6fiiYj6#WPd%M&j=Y-(>!57|HuQVK~RNc?`~T z?LIbK;Ck|Vv_d%I>b>hI{D#H63D0o#*yrDw@Yx~l>o{EL>Ty~HC#?KhxX#saQV;vC zj!DPk8p`wJJ)+;ish%hA+oZuE&y)YLl>ujZp1doY1!sG@uP~hBY5U~Dd7d7d`EY@! zITXSpJso4CU?k5jUx1OkYxE*K+VkW$ePduG^V>@>lJn8aaKvJwaIvTPm%yc-9wTM& zT+3k|{GO-%wH!t@!EaT{VI=Q-R=`M}W4;f6L`?8ao{wQ9^XEz!iGLNm#^Tq)G0&6# zQ5c64p7vucjGiswcS+yCNS+ZNhU+{}{?9@^{F}9d482Z$mX;Qj zZn|`X($dm`(gp=~e(%q9egAmB-k-j&@43!(&bjV$KVf&l&Hf%(NG`fLbpPgP7CC19 zadN4RSw=3u*&aLO%A5T?vx>a^=Ft7U+z#^Yn?v_^eS64zt-g<3YxO#EbaUu_KRW2o zocsHAm`YCT@2_1tIitU=D{^N4(EaW1P2@c5$tM@|_v@{Y{6K%dmZp(m(>DH}Hq*(m z{(jBG$;JKsJ+p*d+CTioBb?7Na(VyI{Z3p3xw5~1E~_GgyC=U*{;+>|*7L#n!AE51 z_D^y(8C<=Fysy8%AO4eE+uz@#>d0Tx--)$!lniby9V4IUAG-f9(>G*r-*bISuJ7;H zQUm$B{(jwlPX^b2l6=Z~ejtNe&;KJw{rwsavcl5|S#CZ2jD?;HA}riGNz4jkZL-3~ z2V3=s<0#qc?a3W{J?KbIv3e>wBg@~@GRZkv{#bI!d0GDclTR+l3f;edEF?daml$>8cSGPuWMoLp+-mys*8{NuffyfZ5-Z=ZN|u#5a*Rv7;- zp-=D;xjHM{`W?UbT0^eQ@@ut@T%YA1Qw`)O%dd?fo7Y0w{CeG$gMH-v z+2Q&q=o=g$AIuJaJg-$oaEM%MJ$2-a0e;)e0ldZ-;J>fQCJ!9o=RAlE>-D|fVDgXw zeh#;ga|ZbHoJ-Cd;J@R@Cy%#nCy*yw{}gh8?W>SnG{ApPG>bgn`WKLkZOjsK=>UK2 z%E+%<{SESF>)%4Iw0aeJr_FyC`F$Jz19J5M{~cKk`D2^sC**(Iwx5z~ZEkhsqtvM1nRFC84nFGVD zR;{jY!4b64dMKg?j*{beKI}e%Np|QcAnoLmvhYeUax|@+2*r_TuIjBx{ADWpkJT6 z$kqNBgBtS3HqIyHy*Bd2AJEf~c8ZIJ)&HHqAAkUy?ua>^jTep1QZ z2HCxf++&bGuAbx!t7i@hYe9cAP=^nL9-BvS{Y``1oEvbI<$Ho`a?T+C-D@tn+{URO zSK1t^$kjH78glI*zs~E(kugZ;5AA{Se|guHC9 z|IT+gxzy@qC)-sC<*{PRU$a>fw<_{t>TG{irC|3JRo#<_z$-0CC9c|-j1=93GC z_;XT7eqe|{mTBZt>nS6bTTcbKa)>`aRpjk9haKcZt>?fBxl_c4%NS9%O>YoJ(ql|_1{JwZTlTVj#)iUF2BVe zZw0y1=1@fj_nr0IWN?q!cgXKr|9fO`^_}Dot^Xr(wT)9l{@CiDkpF4@|035~y^j2u zovY8u_14osj;tQ!aO^qZyr<9L-;$HFa{PMBCJ)N-*K{y>XpW!rF!Jymf6hmcN9KfI zoW=PWMb69d$D2>c{VRE9dZ5zuyw_Qma2t1~<1C$jhu}IeCTkyhsK& z=auA)+x(cBxA9oG&DTTnklXw?w~+I!C!ajldd86ptX@c-ZuJ@D?Y8X>@;6rhmi&YD z|Bu{g^(Jz&^|z2C>j{SP_!=6z|5tpRykMxG=Tl^G$M`gPt<~3&U$^=j;t%8Qd{mMIJQFANyc(j`ie{hY$0g zw~rv-IV^Oa+uub7_npW{a-P-m$>VLz3FHDBr;t3|>NCg>*}fhogPX%_a?I*+@_akS z1>~pf7@sCDn3<^WDVlq5D0BR=0-< zpzoR!aU0NYI<&=?Sp8Cb)au8uQ2$q0==T)9#`RWjz(V7Ehfjfee!z{OZJV%A&yTnn z)YF0^s|RP?9tvI4R#@noo`KJ_`dPR&Xxk(#)PFV>>OTj!1N9{1j-Z|kuu#v1xD%+S zGmgNmr35m#$6(^^;cn1(+p|mhz~!KAEAX3Ee+vuMH)5eNH{mT- z|0@<6=Wlo`sAn7A4%&7H-VNIC9=zY`2k=3wAHubuZR_x1(6&eLad2w`pS1cZ+&bCU zld#b5w4RNH`p?0lFe%}>HaN0+(Ej%D8u(&TtM1q082oustMoXI!2N#Z`L~BxgMJ(3 z8Z0#CwYay{ug8yqetRN@p8)kdiG_Y|Wj+?FFTg@$K81zqPvd2v{^eNcH!N1*b)f!N zu~7eOSg5`p3-xcnCqX@@a0KcJIKTh;R*&Ol zpvU!cywd8c@P4Zwzz0G1nM3$6Xq+QB0&N>yz;S_l4B{B*xh#$&aIYUOt zLF0_W<6#ni=P&^mS$!6s4bP2l)ng8hfqLTjDbVx9(|8eRoM-R{R^N?u@D#oGRQ5x)v=s0^Ku% zi*FCRf#%j7XMo1c#4&Jlz!7K;!6jVxOa1-x5UvINo@O0xw0aY62Hodda0Kr6H!ovM zaQ9CFSp#pCN^=!hML37@Mw}QsshATn+Rd_F`e;;lH^)%sTtGD0? z)E{&qgXR`=_w6lstJSyRx2^sT-U-@v7k(eK?FV=_{F(Y5Tn)PS)?lIee2n*k#@~m(1Z{g1 z3-uhs-&(yM3)LHNqt%;mGidx49D)0tqhGL2Kx;1vw*lQh+v09k?~cDL->t(ZLBIQU3P)BCx|4tBuVZi>#|yf@)!@Bw!T46``|y6NAHe;3`SC;i zCaC`{ycsl~EqE*Fp1BQIf_kd(VbI);;Nw<5f$Ks24Y(0BP7{v69ZPQ>ci`?1I0E+@ zbJvr>y{`K`=MA)N63zkj=VGDyt@!J{e!U&X^KbC=1^7GA^T_x3BPSxYbACv7kAO!{eH)ZZQV0FB=h4+8ZJ#&fMc4==I$QXE-5xQ#s4 z*3~$kQ$WvmiMTcBIWY;h13mX8;~t>LMNgbz^-SCk)F0x4@xG@JSAw>!!gDA1`aE0; z`c1|%98I*x+9c)xS{sSD5wsqfa0EKuU@{rp<8%tSz}8hEYx@Cz9(Lhs(0QoA`$5|t z!1bWVT?1|eowp|34C-&eLj9+4yJ@~B8FvEJJLBP?{tTn_4~z?Gn$D!d(ZZ`pzOTm1meSmFCK@kUVpCR_{Zufz3LZ@?!(`#Oaqs|PQV zSK4)1#d&+#kCTlDfyNn(b3k*;#lu1S8i7ZG#vFwwTYU;H0Ii2YTm%|t7M=$h=Lsw{ z&Xaf{Xq-j3*y<&CBdC89-fZ@?LNF8H0A;PZ_qfO;)9@`L-;6Y%wzZ~tAC9f zLH$kmwAFvcLiGp>?Kddno(8(FCgZ)U?KLO<3^e}dSm^ceVSL2uU*JY?_hcM_du_Rf z#|3EHB-{)1UcNUTWc9%~$LhIwC=@Me)qNNq4%&7Ej$ZZK2Cv;7UIe;FU5vYcdb;A_ zRv&>UgU-(syw~dc@He1)#kV-Jda#}h?zP_rUQfR6?^oOKLC|}LLpZW}@CJ_&Q2!{r z5;TWZ_+6{NhlO5??!>!6J$vw8(6;;Ve$acp1NgAjkKp5={u4N|dQi^#1RZ-i7V7ye z7OG#3ud({IxDV*w)fZ=gjy)6ivwDb&K-QCJQwtOX&x>G^_1bYR$qtfL1Q-H zW>8NHj;tP3@Z1d=GZD82eQuD1+gQCVP653KPsKf~-V<-P`VPF)>bvmPxBNKUa3yH` zDtr_)&N18wFN|xI-h`X2-hxv$`fXEj0jR$a7g>E4o^ACxSZMr5uu%V_SZMqho)79- zfJ;HgScYG<`fK>?&3@Z+@bz1K|L<`Y=&_THhgkgcj1h` z`q%B5xMjZ|^ECb$+&u?JRu2xaHbAc*5^+1wYsF-I_}{*M1lPk4yjE<$k=27w$>2U` zJ4goiKIjmS+5h<0froGe`Yb*8FS*wG>&W2VD}BZ~1Z~?Ew*$RaNyeQ)=j0+>3+k!E zhe16@@KI3DF?`(WC-6y7|0&#P^(Nd5>TkgjxH*5$d4Oy9w^4~W1@xFoRSonQycS1R z4-S*Tz1BKHK5F9}WBjlD+*)u1x_1R%GbZT#r{Zp)F}vfhto}7_w0aX3n&*%BC(yRd zxW($H@y}L|uuy++oDA-|oZxjF=->LCffGP;PQiHG!XY~+gfyT+kgFrol@np~(rr`TQ<4nbKK|S;E600x8tF68UuLW(p z4sW*l7F=odD%|{y-){?!K;sABlI!gnHE z>)UWOs9u8)Tm1+=4!X~u!1Y#dz&~3(!a~~yr^u22o+1eD2wQ>bXJDb%8wogQ(Zq3GgvC4DXD-HE}+M0S1fdlSK)r3o)8P2pPO-it7l=MIcH;`*I)y%(7k;i7Mk-QEHvg|EOcB$ zu+TZb1q;nT2MhN(JkAB3!&|Y?d~U--tv(D3orl}8(0=d0Lf2wA78+*+7TWKfSm^xR zg@wi+iG{Wug@w+~Xe@O8$6%p3=V75a^9PY(JJ@;Xu zIgH0bbDn@BP)~5i9pR@5cewl8L0o*bub1Embd7>*?g$G&uh|N*(6$fY$m+qhJT5@@ zoCKT*>Nyj4uzE*)fz>a>LidwSSZLeMI0bayNX0@uS74zruf#&f)dl|wv~3S8)ZY`Q zfyPP4mA~`bR^bTLA6!T7MGxOy2EBPKgU)jzj==R?e@B=B8Z#6B0rdK(pX$H&V`k!; zKfiD zcZAn~*7LPE160q%F{{V%T&vH+5$Jh8xRDHctOXgY6VSGaxHafKT@r3@_4Dy1R=*U- ztRBZrR{s&7o9o9p4-2j5c35a%$yjJ#?Xht8e0)B*dp_;}>gk9t0C&&F7lPJvCoJ4O zA9n_K&&L;myXWIBpmDll;qK@7Dy#nj3(c(?7P?1u$3pY}B^Db0S6Jx2)B_8R-xCY% z_t#ix%-`TN(0K}}Sd%nO!z&&5!TfjYE z;2dzz7dRI*pIfnT&lmVMQ2$UY)H4hV-9v82LTm31JQ8$HMq%OZ|9CXG`#&B78Z!?I zcmK!v;O_tUZgBU1+~HP#TpjTR;I1{k5ZtxKoxojd+!@@p#utJ1buqpSbbcZ*0Xz(J9&X1%bGQQwovYzksDA_&?)3w{6LjA0!b1BRiG^D~coewxgGYl~ zKX?piK6zNU^@H=ltsi_hxb=f0&^ZZi<30vjw~4qlXl_Zkt?JxM&&5LL{5;&w>d80- zG)^iOn!^=14Kz+Vz6G@394yqIi-me_#X{TOhKE{x7_JBPH(;UfRlmbR=iz%SH2z5} z)N=|qTD=Ji?dwM@w6CAA(6-IE1=MpI3-$brg?b_^)DsNlyn(J)B5n;@S4p@H==`_E z?LgNz8K;1@O~pdTbp`$nXkTeqs3#p?1KRdlycYC&V;vT{F0bO(Kyz4+h3Xq{IcS^; zEcE{OP5c&UEp5a?^-Xv)Xg*u8&^Uj^e*=xb6${n3;Y!fDs=`8ZdmFz4n)7zN!|LzK zR^N$*`gdWW=d$gozGKPsQv>MI-mc;Lg%d!3-vT%q2u}y3myAUSm@ZBu~1J7jzEu{U>L^%x__R5 z6F`sgL_8NX|9N;m=y(_4r$FoBX}l10EQ|0npm{FF#a1uDOF+l96h9A|!wYyBXl~2# z3eY$&;+3F%t-`B8*J2G`3mShNeibzT*YJAK@ovE7pq>i65j6iz_|Kqm{(?8_zj@EK z1#bnN!)>?{wBIVc9W>7!cqeFIyYOyM{~r9I)jz^Q`>Mu5{WbU?=-3b8TF~*<;V;0g z4SWs20E5>oC6vs7w3Vt&Bxb)7H)0zBz!ig{~X)~^tYXD@wuS6orl|jKHp2m?Lq7CeB1#vpN{wf(6L{L zJAocwo$*DW{a%bO0rg*sF9WTI%W)U0cg4R2^k?RB^p=>2JLd_8EM zzsLPR@0&t=GidGg$0I@8j>4ls^B;rrK%YP7U&^RUdS*t&X zmk3@1EXB`*&iM;?8EE|Fcm?SCzKH(_n&&HcHT+>pt6#6d>p|mhz^{W|TfTwIL7(|o z;LXa6zXkslG|u1fR?zdpHvD(cIsXT)1U+X};kQA@_zvC<+Sd;JF6bP-hj&_i7v2rp z*B)FATK_fpW6*v-!Fxe#V;}w}Xf6E%0sL>!em}(rLC10k{|D6nUt9|srw)Gx zn*ZncFzD~uj^Hmq^ZXJY1lXyPp z@xA~*1?qVkF9fasMfe%3FUG}IFTu}(#(54e0bT2*_<7KNU%<;i^I48pfcjs=D?$CM z@Jpcnm+@*){~G)%=y+el>p|;z1AZMe&KtNKG)@J66LfCh!W%*ToA94ON`{NwYzH;%cpz&|RLqXSZ z7@lwS1^6k@I8Wn+R$qjl0o~gd%CFR?n??F6euZd3Zi(%mp|a z>+8Wdp6@{GAqlqy&EZ@uR6h?3-Fw?%p`K*i0S@!r*AaKJdS`qIXxmG%Q2%9E=)1Pd zaXF}`0@s0hKEtK=`Fa`tBdGog7TR_-ZnSz6ZU&9hf+MR3&Fbm67pT8C&H(Kz6ZZpc8{!;L zPcFXI>bK#0Kx2-@_geivEL0zlg~pkH3qa!(;u%(d5XV6MaV*sT7=9eoKNrup`U1QV zG|xr27}QgOmw?7uikE@LS&mnNdRAef`b$`-{xV(*+IAf-2lZ6o%~s!nw}Se&;kT{+ z4*n;o|6f>WZu_xN{Qy1)+V&8h`=H;~JUkyN?rn9=0=&@bi*PY$+Y-FY>dWy;(DoK+R!_%$tlk&*vwDbgKy%B*58}W};{|O6?(~O1sTW|!Le=v(Yn|*Vi4Ce4S1@*MW9YCL@ zbi|!N|8A=@u8jG56+RB?KY>qM{bw9mJ&2Q^uzTH;+#f*wiTGmBz3~#9Vf9Qr67(8! z6wU+nAqev-)x@)V~4?^}L8zgT`Nj*MjD-4zCCGZ@{%y zufvBy{YUUos~^M1L1Ui4k=27zt`BIOH}Of(wx@6edVUPb$p7bG^9O&rBYf;N-~Tuk zdc83h3ym`mmxA6Sl;MrwUX$QIgL?jge_rouZ zTnl=Bsl$z+F`IB?_25m87xesc0@s6{cN%a6dd(2LMTVQlvxYaa9zd@%lW_!EC&4D} zfuQ$XaXc6F?;q#k2=rPy_%q)nf#z@(-U)iIx(k13^^dU7`;KZX)L(=5gU;0fe9-EL za4l$@I(!)1XK^?JZ5#ZByqSGyo?AGFp!+}~7V0?@3q6+4!a_Z*@kUV3CS3hD-&2G4 zgL)3&dQeXTZUl|fgquM5Sg3y>9%S{wxWMX# zc<(2^e;FRC#!eHX`pS>@oZ4f z92^5ZUgCHzsAnFYZ}kOuA*g>5E(RS}30`9LrMMI{P8nVc>RE@^gT~x|H(PxRt_1a0 z;q9RDci^3%ZFk{n(6%-BFsT0sJ__nThU-B+4frIe=M-)P^)%sTtGD0?G=6Z1Tx;jK zj_27q4QSi{!|ScS0hfcuslY-#Z{ojz=Cc`ZwfZ)^9W4l?Vx$?z&kK};A(L5#HWw?@qfmxkNItra68c7JS5|SuYA1_ zN5_3VIKkrybPhYUkFn^}L67T74IeK>fit+}lC@iMTbW zo`l(_rs7|Kw(W*{S-m&zWA(l`12kqP?gttt#95$iv+*#{ zn73o0{yT6Us3#wf1s&HoJRQ_O0~djMX5rbOZRg-}P)`M}1fAz9ycg8J5AO%{AHWAe zb326p3+k!GCqUzTgN2^Ezr{j5^;oE<0XKriY{C&}&cU~wXVCab_-s)BId};0ZwZ0{bysL*HPzSq1Q`ou+YBR;>SQekK?&kpNF5Y`jdD* z=)L~}ya=@IGgxTb#dxXJpT|O5k+la6Dco;aRs^?A4$G=~zr47BZXd=k`u3a2&N zJn=Q4`n9+hX#C!|A84EqXMtYpX5$>I=i-r|ZAam1tJmQDp#2`e5vV6<;<|wQJ`Q&P zeV@`1cd>d`+zs?^KfB}MKl=U=cqFJk3Kv+t5Ep^|{pl=x*y=~{QPB9ua6M?-2HXhh zZ^F%>o)#Q|<`(?KJp^S@zh(HK z)eqrX(6)8>FlhWEI0E$tr+Hj}_LYcRgT_q4{UTovaTchajR#qMFwOyunTyAR_B8<) zfW|DuG0?VgJQwuuUgzQYf;lX}3qjj1!o{F5OK>T;;bu^O3ywf@2!i3^nV{FkXW@?US^LDxF2FIX$8iMu+linR z8QfJF>LSvqZ&jRhMH5RHT;Z9cXj8m+hiVLm&02Uf^8je{#ju%>e5l&9< zb8e3>1@&Ksg+6<^9A9PiU*K+_=cDfUm!RYQ6&BjI2Nt?UJ#n?wYh+OWm-r~?-?JRU z5op^Wk$HmN>&03(U&nDJs9uG4fX>ysSZK`maIMwr@T#+X{Ut1P zK3~Rbl^JIpeiJm#TUcnEjri|Y{|AneY(8fX4+GHiY%47E9C`*8dR|Vzc~;NILj8AR zq5gaDSWy2sJRa0D0Z#(;OvXaOX{q>i@yDp#D01)au8uQ2$q0sQ+s$R6mY?0B!p}eA?8nPkvoC%B381DayA292@Sw%M0Se!{33<|8-dCG13d~nd`Ux5Pt;f zsm6P)z7OvQ^&h~spvPbx7TWJ;Sm++|IX-IjWB52|%oDgCv~2@!0d0F4ub$_7*5Li% z_JwOfJ$3jnXq+SXIH>0Y7V7y13-x@9h4xjCg?bwBNzgn`;TEf(#+{z<+jhp6fX2TR zr+~Ii#a%#ScE#O5`|6H+fO>l3G|;x`xEH9WH}0eVX4}4ay47dkB2fP<{19lIhq2JM zv$0Tpj%uL(1-M-QO}zqFTfGJsJn8pUh^K>&cLtsf>YsySpmE~(iUq!YCB6oZfoc z=o~iTW>8NHPI$(TnTXde_G7NYTS0T!hATn+Rk#|o-x~Z+tN#lhxB3ZOZ}kRz65N`> zDaC%ARNMtLPFLIw)YBbDp#26V%nj6&h&+Lu!te%h8gYLZ>aKf{`ClPm1*7&#w zsHZ0us{b1QMwv0w@HJMy7Wc7wUpyc5oU#BvYxU=_P<;truR3FHz~#z}S%Ei#_PYsh z2EA9^g4aLidp6*5&^Q%1dAT2_Jr)}0eB2Av(;E-B`UrfdGW)#?3-yo0LiJHN&+7TO z05qRMJRLOV3>*XX$MIZc#+iqO>Q7*yZJ)$KpBK%?Pl0-##)DS)Z3p8V(D=D{xYbAC z4a)Stj)nI11{Ufs#}%s6^CqrVrl$t)2hHICK5X?P_=Gb3-{3~jI8C_Ci+!_9 z1@yg1BJKzJ&LzZIR?o(RK+o5M@eokYEjSM}WMb||jUT+izCeGgmWU&8 zuK`vM4@=khamsMC*6Qn6|Df^D$2~yzgq}DJH2-v*Vf9Sh4|I7HVd&yX+r#;>e?(v9gLHD;hEY$NE{v6bE z7$33v7x+u7AH_ob$8bGpoCf?OXxpD~3#jKb7OMY@BdZ60=3Ig1nTT719(PH&4XD2@ z?f@FUBklwjBqUtf85e{8j;jQhg8IwwTF^M_@Osc3HsEs5XPy;!BdBK+t_01Y3U3GX z?7%x!XWL!)D5(D!u2-G@2Ha@%CLDqOUx>k9I4*F` z{wfyge+_T2`s-Mz{stD>wj6I#W}bh>LiNAktybTLE3ICI-vgb`omjYI#Cw(5b{{@y z^+WhSp#Afhs&RzHOsLFcmx3-$kqg~t2|3vJtsTa@WJjfHxC z#zH+27U~JMkSp!IMis}heYpFqY!|M4*S|NZ!quS9&}wi5`hRf*?~!-=o?s7a5A+@+ z3AX`#Z`&5P1HFGq#+^VtopBdXPgmRx)YBc8f_lpETC1ImPO!+pQYqTY|yEA;fHNQ)hOa}K` zA??X2cltS`lDpmM=hmH^WA$9}P}_DG`F7j(4)UGWa~FA})kl%@?hLOzhxgt2W*SCLDtr;Pln&F3}pdK+g0`F-p8fV|u0wugMs#ymtmZ9PAe zBkKw7;=Six{&?f$(!2b5C?o&zuJFUNInS?<%kT1Yt031~e*^jZyZre%NsesWU?k^! zq(8SwtO%jP(1ukPPmecOt{5Nv(bpbS9^a^uMQ*O73DkUC9}?Z6+2lc1A56}%dM>%h>a)o6ZJY(<;?e$hluF1;tiF`| z{Ahn}Um!2D`f_rqjZ;QmZS^(ewbs9m4DNCFDtWyf?*{VgR)2$BZv7SH&7=KqU2P#( zj`qLVR7Kuy{X59-`g0Y$N8V}mUF7P~em&HX_m1{!avwReo?r}*_c8wbr;;vAoJaUX5e-t^->iOh?G5#0}$Ak%>-!V+YQPCJb|5@bN82>np zlZ$Qq67uFT{;{@&oRVjA%j0p8=hshHa<4o;es6N0Jo}wKaz>v2jj&8|KkEs}S$Te* z+2jFMA4ndQ=hxw2@=&V}BM;B>Yi0y_q-{HjoM%1xF-_O1E`50hu-`SUP`9Lo#W^BaFboLp+#mXTNI`FqhC^4dIqFIq=lZ#^5x z<$3=1o+`+j^X$Blx7fb^ninQ)^ZQD~5x9N*om^#ec$>V_j%ydW+QzRTgL@A8m<;Zo z_6fPx`s>J%^#}Ppmh$ffz=XBwxB99d6rH~H@Ho7wCuxQFkd?(t)`B7^&#>odqP ztH;Te!-btQKj>wCJB)5h94A@>^Ve?PZ3Ib*E<9pp@M&RBnp zx#YaD{uuMg1!NsdAsK#1Va^YX4O6C#b@NZfQIXYWksq=-JWK}nd(gAV;C?H14moD^ zIJwyNRYG27J+Xm9kQQlb#W@Lg{}3$Wp%i8rLULa%2mF<3P+%E zf|uA9)Srs;K;z`&7-;-Bt_1a0;aaQL;Rv*C@G=>+ZBRNk%m8hhi6d}5W#qMX-qw*{ zwf@)0>#b)4x!jJof?R3mq>8+KtY23<$dR3&U>tdzzZSv0T=#qZwM)G>%mA&WOk8`# zy?%}1(kp$v4A*wEI*!1tz3${5_xdq=k~8l0*C>;mXXEFSAG_CI$H&QY?+x#n&tqgB zxzy@q=E9)a_$o{z_Z*2XwI-s%(ZbkMq*fn!#W z<6_VpN^r_$wqKkEnol~;uzDsQ3VI91ZsS*wEB!o!D)M$4a|d~+ zUH4t&-4p%V-b1do`PYzZCx&&8^H{DUAGJ9gBiCC`1Lp_a`N3(R^`DM2PWgH!jv_m* zU=sJbN&Z;okYkhlV=YcDp5!01CFD|ibYCqamrwG?TS4Az^)2LWliYrTzfTGaD*ZTx zI0APct|C|4m^I}6ll*hR0dlQvTSty;KEY(J-DE#zDmgaUUyC@oc(R>;aw*x(ja)w2 z=0@IZJzL0Cll^1rZ8Es$;&;fP$4;=F4DPOHKmWTXhcVFebsX1%epkH?XYBU% zOdNsxz4blhY8$hLyw~QikGy}fe~vpquC;m{`KZnR7`fi&)J(H{N_vg8WTzkKN z975aP8;5UWZc-`~Fm%cf|MP;}~e1I8Hd~`x9{I>W?d#+-a&`Kb^@bQ^Og*bf5$lR@|4pglRwdeX^P7x?*KL+(}JkG(hf2CLsl&aiqWInTDuCy%%N zP9RS#@N=6)hKE09zmv(}&g~R(f%O!UiwgWbZ5BCJ;IBoT+-&2wkfQ>BZwU%Hmcnq( zP_Ah*xkF)i|AV}i?nq843{TA0Yj|?E!fhy~%wF!|cP{fBKTajei3f+Jh*^) z#>vk-;Lq)1GPrYFOa^z(OUTQtzMNe8fIqio4 zYpq^~BXH;W*NhKZ1F5(aH0LtB6|~=NxYFuXxEj=7gBz{hgquOvu?0s~4}Qb=ptYTf zOTmqg%R%>|3fb!0aHZ9&a5duv!{ja zKKWFtNgz!n+rHxK4Y=29zTO)*miu}WZU*hQ1!uhJ z>zTM8tl<4)h_gWV#%w$YG`GQcsMUwzy>Iz(_Tl}Yo&z}A=(i0vF`vKqo(8=2@4jan zj{adimE_3x1i=i>^9;L>kuzra$5bXc%j((W9INM&^Je&aT|RlD)hCfBTYU=o5vxB+ zj#)iUE}dcbF>>_`zs_sOduRCdxsSYmM)<-a?vn?|wboxpuAkxWX$|B?8?%WVSx@jF zYx_ZeUn(JQebC=;w~_z;V7PGs_oaW3E3IBdu6@w2|2lI0gEl@nvYucjpIy)N&r|1< zJIr*~G3ZF{G}E7l&NIX2%Y9D^j#8{AmE2>dKc79xzqbD0kTa~FN$zL$kPPmgb~72= z^Gknnj@5I?1vC9~Wg)p}rl0>T^6Z)Z+|D7#Y|J=$u8lK~Jl}d2ke6A{@|j`6NOmbe4zrOk87+J3$;^fjIe_hJR|5xPa z{3r6-B7YBAN8V{;?jlzg`DpDyzE zx}V8Wk$>(BW^r7z!XM9Tl@TP9Z+OUmK78Xt9Lqz#o=MJm$bFU`}wsl+41%xmU{{paUN*{mxzy@qsd!GkNNL|D##nH zzKOg!#=p-At_!x1_gnn{xz@(4BS%&b;>5Z{*-W4 z97q2b569fkbHSg;Z~A)h7J0MPw~#BXUPX@LVfd$ni-X`Xo)aGrC$3BA8e~7tz8?4W zI2ro9mhkJ~F*4L{NJtMJC*LvG&u92t9@lfj_@5HG2P4RjSp89Q?OZ=j9XYakFpu${ z@cW8CLH!Av!;|DE!;Nbbt_*_t6#SV~^D*gsD#C$F^nDst&!f6p%?moN6815}VJ*;h5! zw2Hicaro!Qd0ZbL*Dnq~*q?Ak&_Hfn9IoG=kP*u+(L#Ly_Y#n z27P`T{7jClKPcw=reZ&bR%CFWt({TKze_51@7d!x0{8khfeh}m!9;SKV*i}dmVB=D zoJVeFVT%jM*hV*lKlN(R?|1sUA&UP%TwW*0KJ z&mOyyVeNd*^Ht<-Hiz!a|CfHu&Nu}$W-9Jt^{%)Z=)FmI+{5ZUahlcBaR%tRWa1pq z9CC3U=rv3}z8lnY4;~L1a{`Y2%GcvK0{0l{L58gp_^zZU8Qih_nw(bbKYK|hUsLQq zN4k~_uIG1TaOdGVaxXjH-sJ0T+uxJH_4grz>+egx(bhl)8QdDkB!fH8H<7_@`v-DA z8$T=#6YlZbCgNzU^^YTuw`)3q3~miiB*R91o->I&#rAtY8C=g)a)HgQkoy zeFphKI}bC-MK;bX@@$*i95T3Le1r_{SRN(EtS3$exBee14x2&8-hv}=^Ld;+*LvoW zpRjG8B!e4&J{es90bgZnP>buzf|-ynk)Ax!Z2R3p26xW?S{(KPo%6nUI_Ta$1JAYkJRDg)_#63M zJGbwVciNb{SSP#v+*)u1?mF%vgZrHA!{V?P=$!P%5x8Udhzzd3n)3+*p5*V|aRlxh z){w!ShmXnN*5@Z=aOZO`8QglM^+Dh zVB7!s>k`Kixa-@16B*o^X(oeuf)>UFN@>>;4!*{gpZREVAz9*kt`n<1~JZeZlwC zk)s#QV5UpcDCG-yd8;?y)@Fa0Y+>+>@Mc_1}`g?e}Uj zxW5&=h74}}YstU!a|o^@_p$!IXE8z-9#$Mv_+1D1ygP}GLsH^&hS zI)nN^ju$lNd^{d>EE8}v$i^SMJWPS>&gSnkaRhFjL&(E@Js7b(tRCa*HMkb^_px<2 zvU-q526w#qAvtFCIQdDxZ7`p_#KvDrhC>OQ!{^C6Z4SH0hpqnzxxwn+kwMok z_@3Nhg`acB6=4MKZ;vk^gFBWB$(>gC>)4qL?mAvX26ufgCWEVALI$_(rQ|Lv{Bd<9 zL#HG@AGnGP?z;bi+{gO+k~0`nbIT<6vu#82!z=t}CbP+)a~{kg$86g;xpam9+v75F zrOmC1eAMQ4jC|bodxBg~PXd4U+dyty;m=_cIa=Y@M(`r*@I^o7)#TWV{#fGV(iio2v+hKU+L?qE{rv;&HUf_av_h zV;xty^BKoc$|@U^oVLpEE1i6e)vqP@TII*-P5%8VKYkxFxbxPRoMGE$lKZU+FKokk z2+3J~UqLoG$F|KSgS)1;lEJOF+sJoX{jOE~KeSi5W30lpple-+BdZ6a$Z(N9XB$lh zx8}#J3R6Jir{WCI8py=8RpB*ai~JmdS#0~L@2SI4%#I~a zo@@J^N8W1VY$I1%PZhb=&QBdVvhx}5Zn zIJxv?zsAbQl~%7JN7f&dvVKZ^Pb#^z)YdS$veeI~idQ&_EkN$I*;1&8`35QJNyt z;}?>_eIE6||Fd-FaamRQAHN7DDkZMqQs9!{3Zb;m%AXA1Y31An-);4r0+(346rOF%&VkFUKIQOyi!XqYo7eFo{Hnz( zVC3SJaFz8{HC(eWl)A&q_G;l})^G2^%dHM|@Ouk&&c^%j3Tw+sc+En+@3a<azomTltOfUTaGe z+-&g{_^8#b6-Iim4F27=?=d*Axc4U4OK)mhlHr0kbvqWq*Sx89xE3D&rjDfvaM7DO z9*W^fZ|WGB43}6rrSN?g|2sU@mYoLQ|E7+^2jJ;%>R6otSG}q8MylZ&E2kD-Vf9%F z*T1RbyaC>7`P<;Q)u$2OX=VNh@3QsohJSif$L$_?ueGZQZnpAU;G*A$X=OI}1i`d_D{#H%H|Wc(&Dl4qRsSEQjZ_E}0v) z0IsmMRKl-W-Cl=ltj@LYGF#WX@N%n99sHj4)%)-Y+ZHR~sP%sguDA6zz?-d}U%_8n zIa}awto(1`tybnXIBw-M!h5ZpCb-$!)dK%)>-_~jY<+kH{?*F=4L)l5t#DxN^{Uv{ zs&p(R!|khdEOmf8R%w5xz*$u~X0qX&Djfs4@Q5nijw9hwRXWB-!xz}He}FHn((QN= zd~ua--%H@UD&2qc;qg}H1h}Zm#ua>vt@l=VqLq0Ye7n{84tSE~OomIW4yEvHD{~H9 zR;BwwIXvHT7Qi)DPA&YN<-89gH@9j9jNJYFmGCO-pVjahTkl$UU6t-T>)~jX?mICU zxpDphyusGH5w5S&<9q|W)!Mraj$54@;hol3Kf=4L?YrThY+ZZcy;g@NxY_F50w1+< zTH(Oz<5h=(Gpcp_c7i)sYa6@3-KzOt1^iy<4yRc>9nP?LCVXMFZug7eJj=<4i>mcr zTrqriwQk=j@V(W#eM?~E&UdA7xH|OnF3xcgxXj8ahbyY}*i{KftM$1|46d)%`+f~@ zygGEz3(Spdgqy2FFU;llehVB_hn|~}kl}fYx%OD>=C^pMaOcHZhc0l&;?N4_$$Ob_ z&SHHwlnYphSN z99^vUF=BB2Vx3>q0LK?=8yn%~#kwt8;9zkmzpBju&s)Otpe0&P0^Dhd_J1neeTnXm zJz(U=ybLc5My`L-;hszM_|^+X?wML|7`c0=ePHB{foHK7~KC{`nlPw|D~_w>mV!%~ppNI9Q_F+FMG0F4ewGg)^4g*nsma zo(~r+4Xt{Bb``=!OZ8q~F z1P>~f>UpXXu34&etA(RW_1r(Z|T@*goC$q40vzD zH5&J7nOD4wZ#N|N@j5SKzgQN!EtYt$*9Asbzn_@pb%lFaP8y6_UP{RE(wBw8XwrL$ zSrL3Ll5*zZAEAp^CT4w%2Nw5w!st({6VLN{!M&G-J|V~J17}$Inef16p?|F+o&_UU zw`|sh`h1j_6TyQ)%R&cN^6YysJVfK(PzYs<_>sZ${F#7MZ#KGRRFml`IIvBaWx*i_CEYx{r z;!tk_{I_MHekqiH1B_hX-nfkaQKj*fcz~{1#=35T(HE=8zZphuT}9LlNjWF*04%+(4*~>!DeMmpdftOnUzXhXy%jmbk>q<{!f4ZbY@>Sm2T8k<@S{lbTk!zhwvzsA zfVWzEx53|8|9=l7w_Ucw$Zhu@VC2Tq4j8$dIE>sr+Xy3tOpSQrso%e5rk&91+Z@2RAfTvje z9{661m%zy7m%`Jno-<(N;t#^e^~pmpa`Blka_gN1KVoHuVdQcm@bY){y0H#k^RAwA z*TVG{Z-9?lycG^C?k#8AE!Ss2$#BQz`n)Cu?zEim&2b%=3U^%|y1I;KL*3xC<$4XA z4rf_THauu~sNVx@)4?$M?tZR0hrq}!I}{#f@!@ceEt?CEvO0{0FSI&b1S7ZX#V~Tu zo-Tp&mWPIy@mxC}9%Ju9S2{rT(3{Ags-wXTn!gkejz;GawfpYJxBX1 ze2dldR(PT9+_TAXiQaapcO!gXva>8N_E<91lNi%i;lYWj;b2NjVWb2-~s|I7;1Qo=FUjFV}su z5pG_t*Q+gXu-qM2J+F@YCv_T6g4@>VHP~q|a?df_!N@(YOolsJP72(~mQ97b*6H}{ z1|#>opgWA*`!zk_v^u>WPKSHjvVGt)ZP~Nn3|m(w+`mqb8v|hE-jO*QMsCi)Ksd|l zlMN54(`);oFmiL`hQY}F{u&PFSUeXVQK$3XN5Z2lJ{rEj+WrUlLaWb3@Wpj{y?P0p zXLZPj$JB)$c$nV^A=t0e-%yvs$o-BU3nMpwV;uZPE9Xz}6;{rbFmi3Y3P!FEuZEF( zj$Z&@WBqw8e4XWA509_YYuyR(4Oagf;hU@uH^W7iUku-3^|=+ESf|h2Z-Z~I)8AHi zz>};`Cd2pC>2>wJa7kV0&TANBrSN@qdaeF;2k(bYbx!K(c`F#hD?$&yz%%7kIAewOVJ4ijBDC}c z-ucRf^DLeZ7pw^V;W>W47s5p=LT?nn#c+k?RKhhY>^?ReT@gC%dXH!8aQzD1_Z#52 zmD30}TTTmn*y2avqgH+^eB8=B0S8t$Zzc6#sbeD*&RMDBGZ!vcseN7uSFF_ix)QD- zF7x(l;pj>olQFn{rOtnAfCDSjTScF&((RSGDiqIK<@&!750E=g<-AL`v;k#F9J*U9;uF`dttO^w%8QX<;7|A@e2;OY*7Cb+oBv^gV^Q;nfyj10(mI<61as z@faLmrTx|j?_H&1z6nO|J(_)Rv&CEB!?xZda6o-zU+`Abx2vsh;k?z_hxu^PY8~gr zaM*Gp@ch-+D@HI9O-na6Q)*>vcSLgD+mM zzMf)T(n-tOfg)tUdKi$Jl%3;zz~n7@cmI8{|~^ASeaoMxofZpTxQFb!xd5O=Sn!ry4BdQFl7cZz9WrNV!VX@C9+F0h>A($j!PeCnYnO@#Y^F>ALx3w!Fw&<1UFlL3mjOE_aXi8p_Ung z;~(m>jc{Ob?<4B}k;YTu=tq_h*IT>+M(#Tdn?DMLTQnzv2d69^zy%-cvV|YBEk4#V zE8(9l{tNuO#gD;hpJ;yiC$#qy&Ci8LSbQXWg~hLg3qH|06v9(2XBs@+;xpix7M}$_ zYRf(b=WNh*&g0;~;@&3s z3tRR}`lnv=3+vgx>NQ>rhbOaho00IS2Ai)1kF}g}a6v=p?Ni<`uMobbLFW`*3twkB*TXkh`8UE3+Ik;? zk^2tkOn9#4&x6Y>zZ`zn;?Kd)H|SiT7vT9;w*~NP4LX19b@&a-SqN8IeX8N5#AS}q zTk!i<<_Z|Od08vrHCDH^@OrC56#m5O`Ck~h`CuDh>RkvmMw>$->mI=0iM5E z$H@X1xjB$ZCfUcOn!SRK5^*1Hz|-0Hsx zuD6^9`0LF&-nPJ7t!~@k?>Fllw(W47xXin2gm+o~Zg}tJ&p+2i8B{SB#CXw9Zi&xw(QdIR2H^zY#w0m2QiJ@KMWYg#*j+zJ|ZHZMTJE!WQl4 zOgL|g_H8~~utm35Asn`N1g;=1+pZFh+Ojb?4$GXqMmX4_{o{Q@`QK=LGU2RmbiLW| zsBdh)hV#DB{Cv3J8?8?vJpLPP?*zDrxRhTEPx?mtb~0S@jc(IYc)FD{0}hiTb7doN znUz@%&$sn1fNQ?dF;fe#_(t2l5?*8LS_?;4>wXQc zvieuU$Q@4>!%J*kOJU^VZ^1QI&ssQY>x#i2SsOowH*C}Gz7hW1%Gm_h+qxRyuPtW_ z9JicC_>h&;3?nxuzXcBePs@z_kG}e!Zr^e^`ajKy!Fk`=nEa0I`e7ojHw$ne`HNO%LVCgIG2XcPU?Gk}2e$Ztr;ph*VAA{qtI}X5s<$F7*&kpUk ze0an_(D4w1Ki{Es+XUC|&^9)}TPa7@wGED2nT;^o)171Q zPI#~7H^I$2^q9~BAGKv$;lOgdIQ5C^xQf6*-1hNCxKV#Ac{@3#?bP2&ned36`a5DI zJPMZYeT|04?$m3fad5#-`yB`0VEH$~MLYFgbTK?>r+)iuGCald?}1A!UJ6g&slOLy zz+o#t0?)Sf&VlFd)ceEpVC237_9Tqlch#PP%XaE-(sFpdExQ1&*s1qCE8(i0dhfIv zuCe@DIBNBe!Esx*5e}?RydSy7`%&AT3U~cc`=lG({YR}^4>-f(nedPwb-hF3;Xi8K za()bDAbE!?6AvT#?q~!LEbisP1(sh37yYQ;b}NR%R(=Eyi1U3y&)dZ~+@;$we^)4P z+%ESG!+borVwdJz2_yH6;3~Lam(C9dlJ{+(dt<_@L88N0R4nQ)#hn-3RRela}J za&Chs*|L*iD$ z2R~^&y*=db(KbflSN3Q*ufi33v~HDf%^n>CweX5P+RrQDRV*v>R9D06Ehh@cE#3(4 z+oRva-VZnL(fYLP2}OU_{22Zbl70MRJg~U;%brlX!+YGmlZ*$*eOvnoeAMdD3J10> zZ!c}!t8IzF@x5BlMmQiY_4Jw;4^8?TFca?Iq;uy6z(~GT>zxfF_f5HhFmlg&vS8%q z*JZ=VeK%teoMYwW!g)=49LR49g)eW?=YV(xlIM(-cofMq${4;E$+N;Hycs=tKmRue z572w}^ILc<<&4v1BY1GL=6gjjl5)IaxWwvN3WuBYSz82twn_WpIr#Y|9WyV$3!3y9 z%8M{^`_6x0x7r%jG*jPF5744DY#-^Xz1hI|F4AK-lz8r-+|F4dDp%MM(!C(EgZFS zVsPBbZ-j$=dQ9{7)873$FEJC&+ppU_A1>Ih_xB3nqWxO8VmQ2C$7cja?tSWiz{s6v z{|O@(e-uV8{uul(i$4y}-mmY^&VlFd*ZRzZpS1W>aM^y{*UI5%_v^NJ4xYbXpHVJ= zU)rzFG+%}*_UpGgE8*An>pk$-;Ww67u&K+;HCRR zKg*n!x8NG9Pc6KBzmD@d7`f*%@4?7D3w|G7VRc>!Blk}FDj2zQ@oE^k_lVcPNZt|l z*23$o4(s8ll^=uAN!|_jK7f(y+Ye#n%J~RJF6U!-gZ24FxPE`=AKUq6P6Lcw+c(2s z@7M9a1>S1y-3EVeZP^aTtv-$LUUFofa}#{P)^!kW-XA*lPsVc#eAx1jz(@D%vxZjq zxGj4EMy~!RVdTclDHyqW1~78{=^fy?)dAh_5@6)sg>M5Rcg#tIk!yPrjNCg@ZDHh& z!>7T>9XHy+$UO&4J`l=663@m*A?csdcwlj_J&fG5(GD=0ay|Xf5k_uZDKK*1mOmXv z?!BioVC3cnb%K%mCP^xsalr0L!g*HDd^l`%i@+5J^qgA>*BsD3sfD8lbly%3jvvtd zw-F8w=skSzAY~r3_u~$RI*mQ(zGak(r=jQWOc<7qXIMNF&qDGZUp5{*a8Tcan+}IH z?nU6}L48*)1_uZAJwEUM$oW6}&JsNP|3amIXmhqV2QK?R9dG4uU^(6)w&@{#UoQdf zbSU(TeD^68&aikUoO4LOzmyA~b4ZVM=N<|bjXLDUTQMF+@-3zao^i3}Wa4>9#$-NT zkf-rNd_0o)1Uzo>M!XqGIW2gA+<4B1iw^1ex)?4w6goh^d8IIN-^jWTF0*=;!xffO z2_yH-tJh%UzBlzcyzr2|llUfFW#v@EHHSiXRx$sf7G7t|u7{(C?7c|%vqQQ~KZg%l zycuq>_|Gt^JHq>qzre`7UwIh*&GL`JCoFyvK4tL$MlRoLrXQN^y-v8WS?hcad~375 zUpWyDH)}sc;Go&YLkrvz`uHRHzSht1FQK_FCk*zy!|-8?AAx@jMLtU89f#lGqoJf% z0)5&qP2K7&8EGB?3rSpJuA zz2!8(U$^T2yV(M7wYF@7zqkDDaNP16;btqd1wLy1*$M|1_kQPh>+iZPdcbMF>%Fpc z_{`t6&(DH0EGHAr`d!hFrg1@%%x4=JG&JOq|D{~LL*WyiZ^Y8k9qgvpfE&dC9)YjVy2Uezc zjPuJe?f(=w?U?p$I^6S^_Ej&qx8?MK&pf8v=qxzHax&qwkLmUr2Q%mUAmS(bjt#Jjvpd;gVx|FRK)uYRgW8r`vjGz%!58_JSX_ zavp)h7LUOHvbsGE&$akG7+tWa%>~|*Fmn6;Q*fEpp&XuXWiEhUwSKFB-?W@X$3o$i zT7Co%RvmNS`tVl6QCn{e-eBc#gzK%$2Keh^dOvLoyw%#f4gTKB-wwxZ*+zJm#dpJd zt(+$Kfc42i`2Q^D5Zr7zE$~UpIRyt+rgxlcp5wZWlHhj7b(pjeDIOn+be=a=gxb82b;R}!J zw<|A#^N#B`QS;#fE58sfvSo|mNw(}{xWwY6@bu$4=4ZeU+p>?qVXJ=xMw#+$mVdyr zEoaX0(Db=lhZ%Sn$#+>Jc!0*r_h9E84`m?vrfVjiha@K-A8YY(_zqR z{{$DD&~aM`kGFMAfQu}r7%n-X`&21B-STI^4_X}_f@j;ZbKo+|DTkl6_;c{{mj41g z-^yPAzhwC@!xgr!O1R46)$n4=Ujo-#ISnU5&wg{ljfdy(`AGhE-U2+>s&Q`{96zDY z4jSQICv<<`4ezybn&1N`^g8DteAwbg;G-vWUv7mvowVb|Nw&pF{dRFW-20^Nn|VW*qI=;I%PEDY+p;s@nU+5b4qN#Vc=k!H=N!1q;^pwO zC-vFNbMX9=_DmeEIH}J{D&d-wx*cobdRuP;9JhEQe8B2<5I$--ttUfyNWOuSkB>p} z94ds5Me@9F9Ddy5CnSEt;&}L!E*rsvK;xcwisSYv?S~||-6ZqPw9Ag0-kH}d2pF6TMo~+epmoUt!^>+BP;V` z_!G zAlz*AX@L)0&Jp;iE!zqQr}TX11>6S+beo^KIG3UphKhA#|s zJYNLo1v;Md;jw}4%j4jJK#!}1@O4(s_3)nq9an#W$6I^?d_$oBTk}S^DA0Nq!zEUq zQh2J>VH$jYpxf>N_@O}iVJ3{+_4zC~Z0m}^^R1i(LFhP=@2j7{gO>w6&%Od9iF>aG zp+qF-vLw76l5<=#9#mM}D&aS*J`3ThK#$?o@G@KPyYOg101*Q(g^=(`Mcn~mfr*)2=o|u5N;0ixYrVd_8!%E6W)xbw@Wy`1wU%>Ry?q{ z*9r$#H_!8fu;;rzjKG2CyYJ` zj9h*@@{yDi!2@(s?inV-$mO($J0$pS4tYlyx%H;N$UXZz9Y*fn<{5A&D<>81Z1FB| zS1YF*j9h+q7`gI$!0EQ$o-lGbz2GccZ#IlvJqN+a#ubMlL=KMlL=a zMy`!H@VOQr0V5Y52_skjc`$P2oDU-x9|d1*@k?Oj`X>)YE+-#G?zzvUFmm@5FN2Yb zkAac9PZ)xci~BHg`Ip1UJ--+WBbPr8M()1lA7SL;e}b>F_|Juq@Pdtv0ZbrXzSd>{K%bAm7Tdt-QT!r~`k^wod7A>JuCu=2e&>3}%yFO*A9JO~LwLqjZQS_G#Pg7}F&{5L@?4-0FG4b}yBH6U8_!p>Y=N#f z6YpB6Wp=}Zn{-{?&2W*H=@rAbw{d;t-2va-M*DdR{CA5_g^}z3X)tofll$SYR~z3wPu~siZKL~36WrX!clX{~;KOZn zyd8m$TD%oL-o|&|%sZlCD8 zXKfwe(-VF7Z1)VfQ=;x8sc>4N?rZ6AMxyV&x04BHC2AjL!-K4x!SIko-+fbVC_F4t z$JKB+CsEH4x$rqw{<-i7TklBtyhPtUPdOhRm8g9(8qTx)e0YrIhhX30m&0QdefMl) z9DEgRlsPV5sX}Wi{VMu50l{%YkMg?-Rdv{ zM(+D955max!$a^)Yx^wtVe6Ae;IP##0?)Q`=D=lEemOkf;tSvktA8c@n)So$@Eg|N zh47oUu0?Q_hlh~!q&ACj#}Ge@CK{TM)*^!^Jnnqw%s?u z$Q@U|Nc6)<-YbdV0dny#;d)zF1H9GZ+u*&{w@vU-TURUmyVdy^eBAO+z=4(HB{3$G zbX#Y_IZ3*o=E8YNzI*PL4;NUx5H3p6aa#&l+a^aC}efM36^I+tz!On+AS^j7kx%dSza?fS{ z03+8w7sAM$Q!av$+g=yL$i**#kzPN*c~)jVT+~+UUksPD)$?g79B%8o|1A=ME86<* zJ3N(ew5@Kh7#z1cG{VhoefR%=Ti~Fro_D;{X!~h?%Qi3F%Y^ez^Y0wqrn{F97o6sg zTSwm(!q=Uq$F%F=@uzA1C%`wbto-l78{wNy^WFT7o8h9<{Qe;?!z+fvr|EczzyW2- z|E%=dahz{n{zb*ytWbsruqn(XCIIo@W-v7;qkvlJ33Kz7~^Fkq9)K1GU zhD+M%^j-p&_E|0m!9a@SY0VdS>U9Qfas{{&oS@pAa3c790y z-_6T#g~co3XglA14=M)7+v%~r5pHg$$F3Im=XSpPmclPEy7K|%*c@)>hXajA@Bq2E zmrUD}efM4Te7Gc8kKv_oI9dBY0#_vKzE%m>Bx~Di;b^ke2i}nEyYGQ)gpnKDpTfv} zd*riZKkxHoU%o4nkB>o;AHoCVzRj{J*$*T6enKwsWAjw&Y2S{?f@5o2jMiYnT z<3&jFi}6WF>O2__TRehCk<>Yc2Nw6fhmrf{%yt;L_WnTqk@R^c9v~^-+X2U|4;$f~ z$-eux)sHZ8-%Z+;>^CFn=N3FbuCI2($bCcUCm6YJ%j|*o>bkrpc%PNCA4YE31Mnfs zZ-#%iZS)I#*y2ZEtfOU^GSMY=mLt z_R|Pl(O!?em2lM76@x!$@9&py@qGx_xA)z5`5NHwExsN8!QwmMczeH{d=t14-q~KS zMSp~MS^jSLC(GFb@3m!{;C+^}AO6{v{RKX3IY;1M+xwxHc`x-h_;-sRgOA&?C*Z*1 zUI&i19qe}soY6tA*)rk04tjl_4;OW?b2=RE;JfcpMBs`J{{APKJ68$UbkOrcExf#g z@BZIY9sFJgJqErHuj-)Zk=5`Ti?4;FmLG#Z=%Cx;Lm0X5=X?bJ&*I;~$i=^h;}&m( zn>+Y!u3!s{-0zE@;loz{Bk->s^nCgo99Z1z$o-0r{yR@4^!K{J=z%h>PrAa$#k;|2 z9sNh2;`vcJ+|%N{VC3?9!&w&3hI1^Q3nRDeIdGoknIT3hvM;#|~ z;D2}2pK^t#2dnDXUKaBlo-8I~_h<>*k%o_Bunyb~4=I4E-I~5k{`P zDe%pfQ*?$OMiP(U0dixq7_PUR2KXym_G=iqeP;`d+&7WFfswnn^X(aaJM_ckgzRLz z3`v>g_9)>f8bcwyc-R_)OJ(HUckA)!%V% z!N?s$-iDF8kMs^4P1P|UgM(Cmz!90_*O_BcXWiG@!0kHg_DY74`yJgLMsDnNfRVd* z-4RCa{&Nb9+`3MOk&B-Jcj~P5Nrk(1)?-~axQCUK1|v8A)8XD0?*pINS?@ue1!q`& zGGXNUvoDO?di%l1?VJ7KEL&GLj9kv3&VC$8yBhIkB*)$sJg~So7#`AD@0$&UM_8F7 z;q$Bx=fk5cJ{tamt?NP!_!d9GYLb|@!sfX%I|~sM^gR(JPXNsv+?kMblC`= z^@`?a;{j@SM$!oHRUAnjlJSm6%1pt(w)htOu*HwyfyKRw&i>3bTK+6NK(38z;i&eH z7lY%S{U^Uq?Cv$f0p-j40$vx!WEZ`cl@Awn(cjm_Fmm?_Zhv`?8?!JfQ8Xy4|$+B(mwn*ObISp@z(ci*@Zj9h*y+_}46>vn;=cGv6qZZLA!f!$%`&ILW_A0*fC z$#^Fu<)q?iNXk#gvykLx<2gvSMJ}F)+8?h7M#P2LagZ)0NsjNEnL*)Vd)+kr50*OOT=a($Hz53=$H z!$YiZhr-C^41!$=spZFe4wT+aFMC@W_) zjNG~|fRU@iA7JFh!-X(%?^Rs{BiG)G;Y)2hUIvfpuGa%0*th<<97gWEFcwDcH`+KD zx%;<&gpn)%Pw*91&nsc%`ur*wxiND!j9fhnVC44GLiie6*R_lXB+ncpc!1n^xDH0H zAFhXy>)SuW=%D=e{0od^EP3N$wwr_-Qvh98|jNCc52u7}+ z#qce*-dkbh;uB%y+I1U@Tzzhbk&E8}BllZ!5{%roo($h*Id{Xz_4yPSx$%4te4pj~ z9Y*dq@>CePkTkcwv@sedNkAIUfzfM+4e&&G!c^9{+Ncpj2v^YO7r+B*&} zK$2gG&qtE80I#rkC0=FmYP<$XpVZ<}i^uQ)NjcsEj@3xYNyf(_Y414vS&Ki1&quP2 z7T^^~aw_pEB+FLg8<6B|#N!rk!~^8U;ftJGk!*_uJRix}xD*%3Z->k9aTfn0UVtRO z5HCWqu3}sy@mugoNXnUvmmoPdmf|y!q)hKWFmlI`mtf@j=Vka6+b*xd z6}B%|!ci^9i@_h*@$*CYBU|=kc$4kRU%<$%>q{89<83{R+_|FxM(!B38AfjZ`U*zw zeEK!~t*v(}jNF*n2LI2>{|-iOAO9Xk?tRbgFmmPp0PnDJ;xKZ@s782~)qgj<*Wyj^ zKCAP77)c*`2Vmrm8wcTLt4|C3vn~4zeAw!C1pd{Q{SE%z+IS2;Zs&p%@JT!VpMnF+ z@p^DQ+{1tMCGM@|!zDfZP33SY9PZ&~oaFgq1b(uI|JD1vANN!bUvycQq`nEb=>GQ; z`?bME6T2j3CE|V1t96N4XX2v$t%+G@;UbA=;G%-|Nm-e==)4t)1N!2kC%PmJ?uUzH zUHx&9#0TIasn6NC=-QN|tbw?w<9mr`W#L1S2~zu_Y3+Z*s=B>iv;E|Pw@6&Fc;CgLJl_BQ+uB+E|1MG~Kki)6ib;v%WrUHIJ= zpMr~|p7-FQZk>|`-;0Z6*%DkN+p!cE$#%aF7s-16j*DcyQ}O9YmYso%B>zENB>4~F zGm+%X!bQ@qhjEeQJR&h9IgjBYDd%6fNVe(Y_-rIOb8wNA^KV=v{rm(jlAO7?NS2+4 zi=^#O;v(tur*P5tU6KZr;ZGy!w`XvXB=M!VNb2(zE|T)!#%qwYw-y&k zdzaxNsn5H(NcOem_6w%BB{?WxJcrMago&j2riOw_$w}we)|m~^9nW4ljAU8wX&A||(R&7d)^eVMpVzVHy#UYGGQ9;o z{4kO+8Nq`WE&o68E4nW4RdSHa!GqT<=XH3Im01NN*}uGMc!~Cdw-iRwKi*p~lK%1D zhLN<(dk033(N|s#j9k1He%H!e4kNd09lXMFR>Es6z7|HZO}%w+)Rv9GTYLC-J&`cL z+Xlyb_!rl)-bOgExR=I#gEW0clL=>~>FowlvFmlg2XT!){ z`^|x$NY~%ab7ADZi!u)`vz&6cB3=8f5{{DxA|(=MUt<=URLOj9i%`;ZYVJ4d?ar7fj>6aXwtoQ|GxA!pJ=b zyaq;cZSP$R7g@X*o@mS71|#?E;C2|fd*FA#$i*kYclGpF{iO~6j|N6AJ_SbZx9~mi zy%sNlk&BnY(|c-v&Va*KegrP-sn18sVN|-_8|*y|SM=29ER}GTwYM6sv1M!FsKsOO z=hpU3FmiJ#G(xu=;qt7?ZtpPEIC_ zrpSDrzA)1JY;eC``un{W)i6A!``kH8hZwErt%-oBe-p9$ym*71`I=k?a( zKt5d5TenLw9PX|2Y9eq&Z@oWR30L*jduY}0;@;Z!C2)`qzog(I$vGVt$^ZH}0~huCkC)a77s)=D zig!j*P8VDxb?b_Yr2gG-k(A#Z7fD-s;Au$iQKaJ{DZeK!lKS_;MN)^}xJbrfA6z7L zI1?91ozKEW(&rhtXes~0C=>6CB&Q$VAIbI_fQzKev+-;sIfHPKlrtC?$+jDUi==Kt zagnrf7%q~w564B)#vEKEZO_F;QvNx(NZNZYE|PkVz(*pjvffm@E0SYKH@rKN{iO$#GOxw2L$a>x z@joM}|6lO&NY*t0FG8~2i}72KMb1ZzSbBfzP%0JiH7^ z9m?_Nk!+V2@cBr#%L4o*B;)60{1qhYdKIrgQlCov4J3WI5U)ZqW~%X}NZR!lUW261 zYw=Hztn0t{1|-XF#6LxH?EMV?97*|`@OmWq4fxkca<<^#AgSlK_*Nus+=hRTq+Q$b zACT042OdXqt=@?5L{hgOago$*7cP?Rz8e=w-G0JF(yl$YNb0i}7fGKq;rozmm;K^M z`u`v57fJjWE|NYu zj*F!JC-9R)7y4z=7p>XEG<}Onrx_4U879<(-;D zVo2VvNx}p9Ti!EDI@9ln-uy9fXbPTz-2bP>`y=^3<^%Awwi-{z`yA-T-*8=6gfnVU|A}zS!cIz}H#)diVy5-$>uztnnl~xZUD+z?07O|Brjo-emah zGj*=l6nLukl{XEZZgrReS6NOqy!1@p{g3ju;CC#)21c&!weT{FzY8Px?%Q(egQOpl z@cu~R1Mn;)V;~#PL6Vb;2X(gWdoXh4zYnjm_*xjb__{Owc1X5$G9E-NCkB6RZP^6Z zTVFN6Ut6DSfw$7em2AgtaNOdJaA4(oXYo7nEPbvTfoGqk_wMGvWoPMqwsN@UEd8xr z3$Hj!@0+cJqi5+{{TLjarS}rO4Cc9I=>63M7`gksZQ#TVcTd<$f|0ui+ZI0Ea?XI! za=AC#2}Uj_74Dqj@93D+$Lj)jwRktUyDi%TPPceZIK$$ZaK8+_*V-RO$95-n^9I1k zt?O(!*K*E*k=%#(&V@&0=)K&LFmm-d56-ik{0zS*l6Ws%B+q4fFuL(Cd}H=sFv{;rUp)>Zx#sa^ z!^q{&f&ZQ1?%R7$z{uUVnF}L#4}2c{REB$AC&xj!O7Vi!Xw!GJW@+Z#Dc*rrsZ`fsvahPz$3)?j9mY8fzvFW4rlar=TI*b z&grXV=E9@;>V7dA9&0({;J;cqe}iwZoEzbr`sz98X1J)Yz6VhZBR6mA78tp?4Y$IR zEIt`7v1Lo)`}+E0@8Uhazr#qbZM>;4a`m4E-*5GK07h;;!*saJ$|;8{tZtQXRbRdT zSq<0p)q7~QFmiK;mcdagKL&5;tM68CgzK%Z8sM+3{4MaeR{mBPx%V2j!EviwBfPh- zyB6}A;ASho1wL%;Isyl_F0UWQfqwd)X)2u2PtQS_aQ}Y#e&_%=%W|^eoPIjLHy0k& zPv3hT4d?aKcWLwCF%}QOV=aFiJl@Kg02f()F+8cC|EW8_z;|06robh(Y$-gopPm<{ z!PEP>;R=ga!d14eYPiPMRSU1Mb*+S>R(=fLU^yG%dRtcm{I&JT z7I>?*aT|=>_00d^ct3q#xDjr)`n14@t^6bKQCn{-eB9zE;FJAy-t{RsuyuL;d6v;% zuO|!P@%?pNO@NE~>;6&GgwU*}8L!Ylgwo1bDn(n>gL<;36(R?bGa zzQ4{3YJlVY^`2p4e?RA#mY<8~A(>N}j|YLR*BiiC8sNMC?~n>3H;1P)jNCJbE-;ec z2wqnhxp+4i$?p!YJKV#TO@lKmClk&YpvR3|IB$R+$MWH#0lLo?!{GsX%#6T~TYNT* zT={e0GK-hP$lZf|8bklU72wIfjXadz(7Ca?18QiGx1;`>yrP+odqNJKXbF;LALB*c*sD#1{(^W zYdIs}^KIEtFmlg5N5dCeeJ&a3-+*Mk=#6+0l64j1VI*~n;6a|%EuT1&wnXp%xwc#i zBiF{u;4xOW5bRt0a+XD|OgtFN`uGj*jf4Ma`G10un^$}Ve5JMJD*6P;w#&pnpQ>%y zga^~CjrYUIeHZHi_z_!g7)JWPhT*b-dTuR;D+cPdL?v8f@mhGf#p~eufx2%t!100l z+@ui>EZ@sw-_O!xS68@4mL6x);0%jr!g*PGOv{IhvUDFWhQnDpUpfL;Wa%@kN;qoy zF*u&3$ALz;IZNx)0tXiNvRPNQ_J1avm2Kk$&dJuf>$&i#Y@IVd8m`IKF;fd~u>6g1 zeYV!K0p6PJhsL+*=WT=I*?K+S2=C3-aoYqp+p;b2F)RN#jNBaN6WM+k$#={mco1ak z^}jcWeQ=QWLn@pxNY|SQBlj(uzA)-Ag87R5;QoVr|4qK_GXO@PPGkI>4Wl3Wk~0uS zuf0M}7L43+FME(5Mq`ffE-D@jvGopxM`+v|36C1&&wQTy9;0ED{yg8bxd6U!kbi2v z*WJ4aMlOCaoM+|d!(#{OF>M@NFvxfRi=hxM8l>liVmLfVw^0PH7^LU2N;qmcF}Qw^ zKL2fis)x$U|rW}IB&4t)5wR52J4tFhHn|{yZ%M-(bDw+z&Tfyaf&{?hT;^bKMBCd4HxKcjoXxdC3w(Hp{*F5WBY(A*=KTsI_xtEKIIy@kly_T( z`tN?g7|Vf?%g=>J4D}ybO?)JLp2g3HM-BCN$lQj}aNbbAU>$P+^5La!N!YWdsX?}z$ttR}u4 zj$3;h;pUH0dSTrn+@mKx^m$W79RVYkjE%i8ihGH_UWQ*8?(RQ(ufoX1D`4dAwN}DWt8)zgc(@)DK7o;Yzu>>{28(ZmzZkCb zF}{TBZM_X}+;SS>UBmTQu^UG2n*1jix%KXWk-ML;7d~L|gYco@dT*f_MsC>_I2f+i z&t4AWJV(#P$#BOUt!E0{DaX!haA%8mfxB9~8=RJ-_a)Nd49m%cv#iW)ILG3-@Q56p zhc*&MaBlo-JE%?d?Pk4gslLWYJuK(I{-nlp}*KgM@*MD(A z!r94q7Ls^2J_N~p&Y^e?lAK&T=w!>L!aZ{Ru?fsAOoNdtGaW{5E@;nOKa84|CuT?R z06kWh*o!Bwei#+iC7vC@1LWepVdR$W1D~bq^)g^oGoSlNnK1hAa^{!zh5Orj2fzdW zpQUq;tD;)}@E~-ww4k)~96iBFJ6c+hns}l1E}gWrz|_Drp|rHLpwmS=+S%JniP;HK zOY#Qg1xgc2OS|r!T3TArRevW7N=r)%N()MBe$RT}_mA)A`+VO0&YCrA*37J#Jr^sd zdxoEkT%A+!0J%DNJz(VG-US(cDq3(b@uD<5K$8yACKtj;>eCZOGT&ZsUz^vZaHf^h zA0A-wfiRN%K`@dw$$~GpGD9$uoG^@}K3Bk3W$1mgLt!NAYZ#2AO|FK~LreL#)HN`Y zX@|ojt^DiZQIBEvjCoK5mJ~SE;%RVtZ@pJA10K{{ z>yQP9dh0X4VK}?Dzw~teJII0ad+R=@050sU$C@HI(p&dSQMjbH9z#pv^4?m{3OLr= zuB*fKz3mzoe4w{~^}`$&4#LR&hwgm?Bl-XITlhQ6`5s1c&HM-)^wzP5*N6W%`{-CD z5k_*XPl8Xe_+MZo@zyYs>l;h>M+bMEzp`)dF9 zE~U?0s_k3@zjvv&|85w`z2$pgB-dEphmpMF?gO~ia_ZpvOZ9qP1N_sa+O|K#$lWvG z9fSY4RF~yXIItYAAIsQJ`%D^~-cPrS3^>$J*H;+6qMy$9N_cQTU%vl11kUNF%R3St z)ld8RXc);cZVZeh{|5L*D`y;>Z}9^7mVVlv6X8kyz7245KV7FSa9}xJCVeJT-ve_RjARVf7EZQ!3Y?m$?VkpxXX<%n2Ar9x z>#jeHrg0yIHvmS`&I93W%gKRrGxeHh9-N=4+g$-%n5qA96v2^9UB6MdJX71b0S%DuG$0#nSSTT68d^xf7WAv-4})7NPo?b!a;vM zulEM9>;rUPmjb5`&~=e9!2hHF0J(PeC+_6l>mK026wUNOFFJ(OG9C{=;j8k>oVNNXq;PM)IDtpJ60r9)ppTa~y8Acngdq z{u_*>oZsP-mh%T3*nGW#{AWE-`)4wYWZ#tncOIzcbY0-ofjZVrgF^##I}O8w2Wp=j z0{a8Czg-0n9jN>KVes&Qx{gM`qbz?koNGCGaK6P02Ko`?-a8b<10?S$x|uj~?)dTN|4sd;@7oKVH{`eqt)wqOE79O&A7$1z> zJBWth*%r^ibCJu>!-GkhT?ngkSoW#jXEQ@EKxi_@*bhdOp9b% zyft#=x53*ZH*E(z6}g-=yeo3c(hcv9Tuu*sA#yp7;w2U@#g`*j<_f$LxtuDz+Tu0% zCW~*zUqi0U*YNrSnI54SUj9ktqcwlkwF4_&b^4s9~$hCg~ zUWi=zMfh~&a%SKWBz*}FkeioRNF3ed-c^OqMQ*0Hb`EO+ce6!`;0#CFuC&5Ujy%k1MpWEOmmUBCNr_JjwxX|K7Fp~d+ z?uP$m@q1t-b+{M)x0OE=j#z#ajt$cPYvOSIARUu5z+c(4U&F}Vqw5`jk&H18!arEf zk8ogdFN^VKmhQLDg^`RUQeh<5l+xf(mj34whO@K$UXSwLo*Z~&miDXbVIHp4Gv>AHIv-jb!)#J0k3Sk9YpEKA2iaTrNEyajL1()Qc|BZUGXwXRhFMc=64s&@ z8uwO^zuNNg)U_HvR%i&x+=i^uVx#qxh6ep2(}cxs^WG(3W&96V<6I38Hs z^Dbu{U9NpK3I~_#e#Q&2ZH9E5oCb$NcC7%;4*7G&x9a5Og#3wPLXtlTpNzK6Oz1fU z@0hFcPIzbZ@*@cscfqSIUW31eT>k5L47r>*9w6D*<%Rr2>qf6TJ0!jkm$4BNv~6&$oCnzR=>2;w8u( zPfPK|7GHudMXvlZJg~TTQ^=o++`G%B;myb`V+(!)xpp{-2Nw4xuPHi`%6f>B(fD1aj&Jw`|2@{ry?RsmOs^f+4sZwmQ;?ZC68o8c`Xzki3Mj^0){ z7V;;2$Thk+j9%s%qxTm4c1WK~eFsJo-w7jm9)A~%B>pbE+v0oR&u!ZMFp~cYzkt8A z{CXHkISp`QNXP0;@K3ZU<09|pke`g)cqRq!j9y-pFt7`L9&+QQuK3l+wPa>;MA~gBWZ9btmpe-I6tiC z5e0BzSoiZqa3rk9&?r3Drkw|ug!LFy3L`ldKMteQKjnD32u5;jT@0@b>pA!;7|C_N zau`WY1&rh#s;6PJo@W-kXJ91p)i9Fy8u)dKzX2mTcE1V7SQhvEX&kN(>v5+6ZVc-f zpb19u9)q7?H1!``gZ&vkX7S_jFJb@0yZlG|D~u$k8AdW~3;bJHzf zDhy{2*8l!;;QYb+)8>vB7p760RMr+d>^& zKUn)r102}Aydl(Qh~BH228V{|y_#V-e~8|bSpZKSV)s(Qg+uf{$s&0A5WRnL20U|! z-nTgmjttTJJfm>Am0tl@4$=ELtKe#zwg%o}^V$l>Y}z=y)5_ch*IFIw;JsFdeQ>=^ z+W@1cG}L$<7=Dz4MsP9l-S$r45wN= z4Nmv9tuo+{uWc2EvwdC09C)&C?FJY6+CD|_bl>hZg(H?9_5H|PEkBCKkehED56W%6 z74T}C?;5z$_jkRXILNDl*IRr8Ty60hIA(Q=!#jOlU%TKBtPZs>djCzH#i)bpEx!T& z%GdSyHGIgXJq#oHj?8y3lJ@x?ZnSt4{Ik{J7>rWfGbzX6U#v}jg`2GoE$|7O*GV|A z9PcXlD!V2;lc0Cpj4b^dYc&Hz`YN(7i!gzq>IisO4l6UnF zgYz}VD}W1!>NUV3I5JfKJBY&NLv8zlD~9@mmvT?b(=d|b=`-+Zi?4x^+@HA?MzVii zH`I?+X-*su(2^PK_nw83yf^PT7)kzmxW>wS0Y);f7hxp(@J%q1`fP?@viZIYBl)i4 z78pr=w!%pAUx86}2mZ%=6@G1~UY~y*Mw0UejHI4#!ZC}-;aY2xI=FtQ?(-YqV5sg( zy!D?be9TYdo?8K(EwMd4tW9?QI| z{j-rfXFmt;jNJ8sE_iT?#=XD5NUj^ShLN1hw}FwI`(Rx!$|T|;Eq;K zC-|=x{~J8g%DEmMV>vg#d9Zu;=2&>V<=h0{Y&o~UNa`>VMsn^m2}V-qTVW*e+u%EG zzIVYzHtpT;JvOg#u)AJWOR@*b_zb- z;xq7>$c@Qo;jvblAIEnhH{RZb??x_X4}QYpC-DHeal4l|+;2?MX`ArezYLfEFY@pR za&?H}b1gm(pKtMEyac&#O_t(Ik=rMf;hQYJ8Q+3jIa~49kepB9F(l_xc=y(t(*y5` zT)Y?F$KrkQOys`L(jT8}@hNyAdhC&e9!2<(v$UL}cq4M{)`T}BH*E_ZX>ZGgmmn7} z#g|&V3@=Bno)vh^;&HrV2aR{avj=H8Iru0vcws`1(Ri-K^YDD+$|=ALk(*Z$ege5R zIf(~I_N7_F{np6E+u+H_O`C$ZM{e2cqzUVxqelKS6jRWk6Ap9*IK*|uSaga4fr98AI2Mz zn{N|7_;Q`^5PT?d@nLwb#q;odTc)sNq!wiDuJ^?R>=SOmMzugM%nxl2-249q;|M6W6Uy`Hy?cOkw z{dOO?pG}(y56saz4}wD$55w6xdW_3~^K2?@RbN_MQ0V5e_PKA+_ISoc~9sW)jNjZ1H zNaj@tBZ(Km({uD*{TXm1$F9l1QOf_GG0$vxjxGCK7|FfC^WcYablmkYT$1B|`x^Bx zh0CoD6>zn+Ne#Tk;#=WYi1Yli_bU8Gj(_@g?l*oDj^*gMG!B27qt^{SgORlJ-WkE zZ+7>~^?=hy>iuRJaPN`+hweVKJ}{E|@%qA<7Vi&-M*44-B@FPw@Zgbp-`5cMs*!pR z+faC%#mB=pjr30}rEU}8a*J2M&srUxgR8BcHSiXj?^gJ=k^ZnpsPpS^%*u(6^drdK zZx(gDZKU3dhzC2Z{9SPENWDL;ZlquS*+~Cx&IKy)7;@9b@nG*ry;p4?{JGVCKip{L zG{Mc*ZY^+NZRK4LkFx#MXxe$S_LCGib+q2|kOrrZmg}5e28`t1wo70n{i-+I$Kriq z^BoQ&`HtrZINRbmFp~4HkuZ`zc0D|5 zw0#=_&b6F8c%0>ohi|f+32^>s|KbH)+bMt}qjkHE!jFvB>w62~#g@MWF1L6ETs>O% z6*cgd(b~7S!m-gh-j2hyqy4iMx_5fO^)_t-+&Ef~BTaB%_4LNj4rBD(Dh!Vrqvw*N z;oLFW&Ux_IFv~BQY zn%6vy{Q}E=Wo#a zS2x0e#l2j{@VR>JG!br{tL@naK0Q~@$IpN}So~}l$+gyV;64`b3;ULT6^!J#GZda^ zIg{W*%PE3q=4w07f{~Q@ARMv$C|sVa*H0?oSgxIC!L^oC2P65O$cHeJ=fXaMKhD)_ z+MmEkj%%O7NUl+Q1|!*a_QFWoZ6ExVEr6xIR~pp$%|juJ*Ae zIIuFkJoX`Z`fO1eoSvtBI|Ck+r}r&n!I$Uh_5Toz+3+Kb{whzu|NAxkt=01ojAWm47!EA%jpf)eR{KB-oH|z9Bn?gorhO;f61Ls>k3*dV!=Ux~|o$rH@)cJlG$$LVk!$`)f zGvJ8TKMK#cX^Y_!n^!4}WQ_edyvX8kITj1YpS$>C4+^GHGB#fkQ{{aU#YTx$8 zvFzjYyB<+E7^m&#jb}eUUiXJ>;8VxzIofG(+wt0-?O-I=dryav+zWIDoNUvkz-Ny4 zFL;Wv_gQdzE2jf|_IN#KJO}PLUdK_L;BHpV`7n}if&CNiZu9B^Utr~52=}z|d%+i3 z&c$%Lm7f74InG`JBk2#lVI+N^4}9r(JudWv2U_`qU?j_x1rN3|hrmNEJ`6^(j90@* z@~?r1Tm47CNWRa0EsP}RIyl?vmIEU>HjRXl)cJaNjFoc(oNINXQ#6Y4ZXY$(ZD37)kyuFp~U-q;6N%=p*NZPOwMzT(u;Gb+>Kf_3t>llnA|2T}KO@4uq^q*hhX3KAZ zf3tFahmrJw6L4U4@NR-{(s8CYfqm=*JLbZv6EvO%r%&+ze4YOnGT_V!ItJ(u53>9$ zI5a`W3}HBXf*<>k{c{eSZ_^gQg%kY7QQWss1V<+LP5XF{K@={Z;Lo4K_52DrHbL7V z4kP&w*J~Xa@Pjt(f8a>I zUPFk&)%p5NVhy~>ayG+Aoo-;W^oJY5tIki=hxw^%t_;h2>Zhtc$>7-PQ$BYEa= z8@$u%whR8irmfBQ6OqeF!UH7NaO&Xte0^rH0dBNqY=VEWGJl1eE#3nEZp(WDM)IuU zNf=2T{(zA@_xC3pSRK3qc(Pp^nL?kO;{WeY?-DNs?l{H&YrBLjuM>RU9UAX?2j_!# z_N#_6~o(M<1?(>n+{@H(K4A;NT9Pjb&cmRJNC?{)w-- z-zE%aPt|3~fg@9OS)y>v;&J#(i`TluaT-|0san6?-$vz({k@;h~26>#O9+6SuOTFa?} z>#dvyIIy^P7wvzSmY)Kr-lcsY4eoxImeT|7d6(9w7o2{V|6n40DFg0f@xE~8UH0I4>+B;TQ3=KpF&;szVHsqc^gKuExZHQ zTD%Va)TaFm{>|dQ!+#X&y89F6h9T)oUJ-ruZarpwayR|wZaoM29&WUF6CB*F_l$Y} zVq5!{=I6j;{-yC7;9QI6!O8b%IVty$e~;zEg%&S@AF%kp;fTef@O+CG!zC6kbvgHG zInn!w->2o5!jD^g5&VS3pM;m*r*$iXms@-Vyw>v9!Ic)Tg6l2b03Whx55tWXZ-N7h zd-pR|zhCPx0iHfX>o#Ksb(>*zgEv`xGrVPn)@LhRZ#fO{;sN`&H$_MsiIl8UCx4|2MdERL4tQ;J-)pKbmvlRLe<&yGHfeOE>uZs9q=hCyeA7 z*zPcrcUkm+ds-cO!53LM7sKfm&w!CUi*yN$WE|BS&a|BV@Bk}+AUue6aQDn)!6BPh z7#?mpBj9VT%!AGZ3>hmnl!i(w?owE#xaCXYn@7;@#r@c>CV3*i#W zFNGhsIxm73+q6qyB;)xf;H9=KWiXQRpMsI(EQ67Z`Io~hZCau`XO6;VGGxoOkzbmYeN8F&b}d4=(8^Ku3gZEib@2i@$o0uI zJcQi(3ghFD+t$Y85y#XmikBmoUxCMvD?g6cBbU>F2T1x&R50K=)OdPp#qIiI$ z9kvihu6?3-fFyq_{Hm@C?=={?GQHPfB+s3_0l#VG#9$=bcpQE!s`ngjgSXp0Y6rYC zs{hmNf@`S{?-cdw;14OEHuOG%Keqf&;7@J2K7;pK&OW%_`g{Y7wa!|)O7OGn{Gn^zNj%$DUi{ENkZg_~{v(-QR)kgI2^H$&6eeN=7rq5QYTmsfzIn{+{x|VuEB4%_$|1TTXz%j8jHVxJGo_l5qEO?giZJ^+voL9zI+0y%DqhNcL>$|4}?Z(r0quQI<0rM*98- zc+6})zT5yKH(xIoMzXwl@HmT)hi{s#{cQq_qcC#o)cY@tWPkG5 zY`|w%;1LZMF>_ zykX_M3CC>OI9zLORR@1;b^Zk2J6n&5`&cjk)AFNufMopeIdSCrMidW_{D-w4{=#y; zgzK$t4e(c1{?{;)edz%hNgq21Bk6nJz)0@%`4&E8IfvmRR{l{K$+G_dH(I<2Ml$VB zw8PKZKilBR$mOTtLoGfG&qnTkj~qM~xtu&aAGxtp0X`YIoGExAa&<1kBS^++cnNaT zmg42ewN-_4i&x=WkjvkSrykRsG`u@<@g8_Oa`n%^L&%jG#)l%8GYrqRcn&@px%y1O z=OdR>j4ws54rTaqxX;rTI8cwlkwINYq|cr7rJ{`?z^q%ZvrpRk;haA0w74);#X(S2GXjAZ|r1h<}} zeWneJWdCp~jHF+k2Dh7|`=8TcB=Ixm_z~oeJ5fAv?9K&}i6ggfiQ)m0{Z9&v;nINjxPJTbNoc)%1pvjkUOTFiC<;$ zp?Hw0aW4)2hb{Yga95p|*A4D&b?5>2oTJ-pFZd$Mxfo8LqyJ53z?WFOH{8dTr7wJ` z#rwfX#>1H~l5Mj;JZO&YbFyG0+xulOlH=gzFp~XJ2u2bQ!})XcxKIF3o}<^ar_gS< zYx_s>07*OF0Z+BMO@j;P==J;}_#Ugzz3_c=bYFTujAYvBFmmhHn*q_-xZ5YS1pVPjSgXbgHh6Q*z za_1Kncx0o-qj(8&@lw1TxiTy8NVWEvC>|h}tpcIty%IR$t*l6@2&L$V*h10?g>L7B+ylcRWm+&;m38%9#*JLDjjAH`$H<;3v- zN&neN97!AxklSx~yI>^cybB{)kMF@q;=5ra{|)Vd-?#qx0gR+RwR3#0PV*CRCs%$e zJownk`2_yd@;`(3+P1Tg`u|Vo8^wdqEoVPmZ}Vz^zp`?^h7Z|t9fpzA^E((xeZGf} zSk6(n(U!Lf4lLiB%Qik&`&$~^b*^p~-RAlcwZNelU`KU?x0Zu5PCT;X#&@#e9+5uA_K>qz_yMBi+W~%dMOc zjHLW9JXGuK4TG~SCkM`-tL;+&7tYmvU=fUDUvW2#WWE0jzQ^MC!qY8(##}!cxttU{ z6}kGP;prC7z(dH5Kf`#o#dGioa`lYj^~fz_10Kw@`OYE-x%0#*9w4dDgT#?5Gl~aD z+TlNQ{TOoP#PI-0egsA`297cAAo5wz6p8kgzhl6?gpQiT^ZT^rR zFJ{1zhqP`{c>Y7$ABy4fhwQ#7IA-xUTx-+T!NEiN4hrvK`oP0FuL3youudC=>mSzp z=F2qRf}cPxeiBc-T+2zqTO*kkZ;NDF zysO2#;oU9X1Mg|^Uicv7>XU_MTRaCJW%1E?uEq24amcmFc>ErV--}O2ZoV_{naJhL z!Xrq=lXx)1mfeTTwa#7z99Y~dX3SaazcY#VZ=}Gf#s2@@45z`NV*i(E{I4B`uPpYz z&QHkj2E*vA0^&p9{9-?|fd9D);KE}678fsqBgOt<_ukPcJh#|icq{RF@WNt0=N_Il zcoZ(Tcm=$+*ne^o<*$P)i~WhWGHn(7g4OLs_%+LU9e%^&Z^ALlkHfWA=Q{WctJ{}w zz16<~K2)slG&l^SHn&m#?_ebFI`|$&-xN@XBQV-fkTAeI3O8C#6CBv`dJAa71=?;Y zaOwj8jmfSJ;m`stGYk)2;Qv0+wHrKhf&bn_mUk8$S>UHmA|8e3EYS9x3nOXgc`%ap ze+VwIoKkq{0NGg{5uI-ee3s?3hdV!_({_PVEuIE_6h4elyR!Tm>Up7enFUmNNn#Y4y1t&b4?RjAZ?eg^{e&8(}2tdK`=-J|3Q6 z@q8G`d<)=`M|Ay`!bsNR<1mu-xCnmA;>+OW7GD9cd_>ppDi}$AIgDhzSHOYI*IUT> z=0fcQNpQP`y53KRk@SZ%;P#f&0Y2Mu&ViBSbc9naCk+lQ)cS|vp_VfY&bFK!c$Aeh z8XjZu8(<`TFBi_YcmaI#LjMle&u@VzF7y{oW;>b$7h1dseqf<4@4w+W3$@+m!f5R@ zrkw{rv{3uu!wdaHd{rDl|@(<&U$mKNQ$1Hvv50LCLi{S;fERQVo2caQs%USqf zEAe;4|x z$SqeI9zkxtQ9MB3+(A1(#ypXmwm%+0l7k0mvHMnF35;aDl(H_6+y5uw?UCE3b-))Q zH|?W%3A$`5?T=TZTlfY+4Zg|ZoAJQn-s21X?#LZqdf=0hD`yHm)8e!6h{dD$T(om> z!iDqj0Li*rM9yL@CyLKSu6^d=G33gO? zxno%;JXmJ&<+KBG>njNlkXygr3fdgKbVou)8Xh1iXC;iJ4OcDnlaV_nrr@dNT8A_| zK$2fU4w`sd!bK@~utw+Qt%Z^7m)0%xn=7?$EqH)r+A8>2jeF0*>$QAu!$Q9Qu6?*2 zo{U`kq~Mtr?~msrS5AS8S$q;c8M*u^_*CSM%hT`}a`|z5yTy0lJCV!Zh3`gg+u4KH zTD%TFVDW=^{qtH*10Eok?`@=yAy<9}Jg8S@Vyq_hX)q- zUZ8KF_uV#v2S~;tFT$I&p5A8o4Qs16$w!ipcaLd%_P{5#mfsOHqfo@w|_ zi|@i~kt{EM$l{0bM%3rFgp4MW#pfbd<~+O_x%R2SLx(jU z#)D?-lPw%yPU!yaI36Ik-}6qwf7rbKgag|LdXI9S%%i%0Xb1OsRJWJDFp@FPr7)85 zQa?D;a{9waat6Ri_A>+Fv6gcqJkjElU?k&;TVW*I=56p~%b5ZGKb;W7SF*0x%VTL;^oMdUx9ByE@vwqvv?e@MQ*-zc)i6N@Su+^OJDd>tA9T@lX|#! zH1&r=IxjEGav?XbG(14k4p+da)!F1JY^Pi+lAja&fN#{#vK? z4!}s_2jOol{w<7TzK7sr7C#O*Tf7BMeq7gA%HurK^thID7TnR|o#4)oYdKxuzdx?; zn>rUxwfr>rpO)VpMzV}O;E=_`@L(%v2t3i^li*veoZH|jmUBBi)pDl6^B>oCE{0#Q z_=_--d2NC}uySf)B=I`A4_p1eqder=EeFpob@4rX#FphKe9YpY*T>-|5z%FT=`xa+;x$*e>eDioA#e@_eDCd9`FS=?S=65 zmNN<-W98fcBdJ?1jHLWL_+E?O2P0{d`(Y&c(_tj>8Sq@2b{;(6;>GZCi?4uJT6`5; zZgs1GS6i8DU?g=|3nS@c>tH1Ft%P5*a$aBLw~cFlJ3JY=oD@9RZaF*Px2?=~;GI^^ zE*QzY-i3Etd=LDw#Xo^RwQ@d#_gZ`(jAYsW4@OeX|KQJUx%R{LR%QeImF0X5A6TUQ z>LC2Rh4_1g6?ID4`G-d?_Ekpquh>~}jm zsk?VQJZ7=}PkIBKYh~ua;}-kF&rZ6?8xQ9%)@Mr#;KIfJ`n`#%UJ)FzGNbV9#r~6V z-kmrHM$f(q&xO(RTN1l?^WcY>mwRW+e7M+h7Qjey9)TBHIgi36mQxC&>t3eJ$6>Vd zEqD>U*vec2FSYzK_$iAogOSv2Ib3e>3K+?E{ho$jTdeQ9cpXL(e*=zLJPy}W4%eT( z1{lfn<6pr@+Wc!6$+O`H;DZ+b21c^JzJ-zGAA%2C{&(>A7C!{vVOZ@vGhQCS`EB#Vg>-CH}ELc*ds+ zu3q9FIgOkeIA%F5Cn{Zpyi4tS^4XBS*+b*O{Cu=tlSl4n5bVI<#^YJiX0a{T}| zTf7B6Ve>i(2Ubt-3EJ%mZHG4S=}+i0FK58XPiTEo;EopW1poC3ZJ)ovouBYePomCU z;E=_`aN!eLpCb64C-fPOd*SI%=<`Q2;Qw0wWAO4P{L5z~^zl}}oE`+g6`<;GLGU3x4+rT`%v!NY?Le7|FWW1HW(iAHcPiQwM+ig#USa z>h=k|*W&x&`X_XqHo%Qf`1iM>9h%@~t4|Aj;t9X6Th}Myz{>HSq|KkSHiu7rQtNXX z-1bSGS35Y_;wf;)C;c?{oK7b=^+}yq8hpOx{1fhOW%hv6pVaoxfSR!X zy1YG>vTZKaW$6W{FV*rh;66)ro%V$XTK*t7+j4T?e2W*r)0b*H&w!C^3lG3Z*7d*P znM-xqXTc9H)pq_5j3g%lBUxWjxO}OuqY4x$>a;dgY72Ig^ZGr=v)+=Lu zm1%v_%KSv+o`*`p3(qT)?V<>8L@wTh2i-O9^?)xZ(|TSA_bk)8^@7tao&krf{4jiN znbz$(IJ->SKL;LFrtLWz&b4y#;BjTz=Hub~GF=x1@I)(T5?pTOSHP84P8GbqOuyN& z0j@67{YDME$?`YDTdbU|aJ|j90S-N-Z4!Qp`_g?tEr?egJ zf69+VG(V09Nb;j_`BS#O;HRzpXW-ROX*;Ze*W0`{z|~Lb^42`%N03{mQ9RgUWp0II zR!$tQxAGg{16H4d@HbY^Z{b50KMc2BrpwiC8QbzQtwRdjahbnAkz+?EICYu-SND8h z8r;?LyTRR;Y2A9j7g+p4c=9rBw<++{WxDRB!G)Gn1V@%xABN{I)8_|^;S!s+6kfVa z_a|lWa;w`4c(vuMfvcBkd)B})D?bkJT&BmqU2v_j%_Fx|Q_6P#-CG`Qz- z-DZ2i=@!p`Coi`)gv*y(pIOecEt(U>=OcH#F2)0kd(Xg?%XPg}!PPe38hEpn`4YUv z=Cu`mMa%JCgM(r7;z!|QmVX@nWx4jNU*Q(Z z`3(-NZr%#oZH3>I#Cw3-z-?FfIe&rM!O1K9d8fcBaC?h)fIF`6Uu>P&&+7ztUg5u* z1b2Z`SNN%|8Rw_LT`k@X?!LnRzwarh2i()j=>?~+@DH8Bv>9+8t3zKn)AIYngKS<| zaLCFG!^5qd5pcHEGY1}J<&1`NEk6$)x5D3Y3UwO~=dbX`o|4Fa{qR(qb{ah0;xpix zD|i<$b)E%BEGG)jwfWA2=Ue&3@KURD8T`4Gvmb6)q2CAm3O-=v9E1;9{4jiEh2O1_ z`W%IkwD}LTCCa8f)9?^-?HtA<$kjiJmm`;7fydB)?@Qc>UvCp+pp9%>;QLMsq^XtcV4OO+yzdxY181Y zE49ybgU`44KjH2xwa@f`d#?1qKax1W>jkH;w7vmn+PwP1gRBl&aA>9W+b}%X${Yd@ zwftf5aEp(Cvse1x{e}LP1CO%$jE2Wq{l~-kD|Oim;E7hwBzUUjPlF3r`d7Mo7Qy#e z9qxsvTh0u4=1Tu%=|6D9>JWwJ+Pvn$^KIH>o6>z!LrvhGW<*$J&t(~jj znB~M*`iaPGn@M;ja(%uEUyod$*?MH3gn(@o8|O%X?3fDQM)6w)w6K5l~V)1X8EtfF>9YVyxZ!$2mWA{ey^c+74Pm?CEHgL z9voVw>;3R5KZ4w`Ac_Y_+U+~Id6j-&pan+qKG@%2B;SDe9Y(TWJ+aD9MsEL;f~TUc zM-xM7cnG;N!}wt2_A^89p~&S7!?TgALk=ET+&c*)*{A&h2UcgVoW57C^G$-=mTR5c z!O7*?mr~&N<+@#WfO}d_FF4bt?GF#P_y{<=T-S9DoNMts_(m&d9E_wsHak@aI;}e)x-W-Ism|*W0`r;IFLAui*nW?Lqh(YpZYJLsrgVn2)CDv7mx`K`ZrnH(!4Y{y+Yr+m;r|>^#1BFoLiyyOXtDkD)c>aDUfBD*0 zXM0h2c7rE|wKl_VROq{)--KfpkHhs=hX%N@La%o2Y>jq zzPsro_=~6YIf5_YdW$!}!PEMFd+!q5HCj$PIC+g;A5MYWuhF*c0H3`^k0a;69oJ~T>I8SToGx&x z#na$_tkFJs9^7?}zKgOO+}+|m;GS!Az4wAITH}BA3GWuW7*1cK?UMobv7EjzlK-PG zg+r9%zIz^qkv#K$1&ri6^OZ1?=e7pJNa91_tJdi8aVUJX)$JO1xaE(4k>pyf2)&R=4H;aLD3eID4(`H*(^;ogKOpgvTk?~v3L}oy;j%V9Qet#+OL+vWfp%5j#)eo@3lJYqh9}~ z@g_V#n-+5a;s4h9Ly;RJ4Z{P}`;LUOz0cvm%JJ55JYA>ziUb(RcGn6<>)m$)6JaFr zBp6A5I0bHP@iy?O>wNh?=rkC~v7jxCWZ&2hPPTXooVrezF%1r_(`Q@4aQ-@7F9q;q zD{~5r|aXdn0e!JY8#b^5OLJ#g(hKfNv? z)vJR)v^M+*{&<}pYd(QLTc_WW*b9HLPQPLCCET!1``B0T@pbyH-Cy9qru8cMUR9;G z?O$Ld>!LN>wo>cR4(?#_v*Ev1>VEHU@OhQG&+G~#nYJ5@3^-J&$BQt0ZKZz4^Ex=Y($7AX|59^c^wG=wH#)M?kD%WVCU%J8 z!6=K5hR4{nH&pt6Ow#zDxYHS161xYulazBSjO1IQx53jZ{X0{Vx_C3-nU*sPM&Gya zf9QiSlKlU`NXm)8=xg_XZWNAH>NCr6IH=VAz{mN5u8ZLk%PED+EnWdvR_QyRtKjvPvjMKQoEmsbm49&w?^xIhzhd!M;h5#e;kT;v z+p^nWB-{9Q7|AzhcfdQV^gE}!;CjnxfRXf*uV5tak^UM+lh-l^I{+go^B{b{3sqnYqxmk#qj_opTijDEAo;1 zwp|#Hpi9n4x+sdrP~VrmZgD(7&%DIg;A`^H)q6Q7#UrQ#Wk&HBy0cTlMR7bpQ(j@r zbAWs_;hd!N!+6B$Z`|vS$552I#qj`LF_-%u50a10`D?;OVLXD0U#9+e49%r(aXdgZ z=Op#;z9An)*CqA{;}LXned2jhJciy|mw0|0576zEyo>%@^3gt5A3TE2clE(zNa}+J z=nv-Q9U>oH*fHt6Fdm?zFS~EMz(-gw9h3g<9VG{Oof9q$;}KN<3U$TFu76I){0(sMoIXG6t*375bsrms z2d~%t{}4EPy^ck5;N0~(KFNdg*Xyye04`jw`-CDmvR=+Ny(o<2JB+j8rR#P7PzEns zugBcwaJj`R;MjWqcGu={7|D6%Tk!VvI!@jJzq?+Kt?$8m*6X(UK8)mhe;>d|&M|9Y zyt2g&*l692bSY)VEnT|mp1`EbA$gxE&J88;PxAI zf8GJ^NRB&q?ganS^1E;F%X?^k1s;Sp=r^^)aQ+7Wa31}$0FG?%OZF!G!;8Z6H)uN) z!zCMZc}wBg23^;2_^l1P&)EiV-=N3z9q>-e*#*D5LEHa57|Hv7cf&~f-X6GigRbj3 z_=^qN|G$Khe9NXDMzX(cfDc&yLHLNpkHU=>Z-RfaI{XYD+o0?2IQ)y%^H;dp>d*rJ zwn6*e?=X_v>ZWjO4ud6u9;Cdam6DPJUj`qf_7xmVY*k zQs6Edb=>mzjeae1p zmu-`}q~QTNx|wlZH|l^Uo|V+S0T0liPK^D|-{_~KTRJ7BX5g7_I(|)E|!_w~TQ-K(3zN1u$CODXD{ZA@lF8 zIdgC)H|< zn`s|!AUw$8S#ZdfB@Cl*d+K}zjK1syUkMMk{2{P!ZGIJur2L`O2f1mZcre`RIReh! z=>MZVZJ4vsFCVG-6?ipr^{l~T7LVfrl4ZOe9%XGf8bx*IT>+ZrrHj$tJjY zqwa58;1iZ}68>YOjx+y+1IzKMsZX`;Govsc_LhCMSHpU*(QCh9_=+0c2VM#LHF~_b z3P!T89ttD5COHhg+VZb~vupJHD+kW6(Xm7Ud`FF*FHeP$jKinFg%&S@BQ<&)jKbwL zdhSyJ$7=L^IS$v`v<+}jW8>-)2s9@}izwMd8?sy6kZ{cu~J0;%(x*X_KGnzC}I>p1eu#U!4L^ zg|{ZAd(+_Q7M}sfHtDz8Rtax$nR`H|w)_yWsaX`|jB#?*q8j^6TKemcI{fw45fm+2Sqm z35%bE|FHOnG`_~Fie90g0I0YZ_#)ToNMtsc!kAR!hyxT zt?UzGx-HbixNk6~=aMhNn__ycW;6U!OveTKo^F&+QM;oVlw9vI0v>H9E} zam5EPlK&cNVI==S)WMB5Z4(^C{JS5epLlV$skpy;9^VE{fKkglFT-mEpAz>!zagQ! z_ZJx5|B%7Fbyt@`$_k3&Q%0Q;(nJrI0~28w54!)+<$bw z_cyNsu8#Z3ZoE+g$E?gaTpRZ85lY{V~xL-7eb~p?l zvG`H=hq!;$xP*}RBiv{?O>kiC=Dp>&4ZkJpx*eX3+&ha>@J!_Xd+LujBe!pC!CPOU z@iurel6-up#dqPg$mQ4JA6xtrd@pkO`|!_^%h`_~LT+A%@kWa`;mye9x8SX>wE5!6 z=#~WusVR6zi+93Pkt;I||9r6K@5k$ri#Onhkel`}egwJs9>p7nYEBd0j9k104=nBt zd&^Hm?we>yct_-NI^n5kcMk7x#siCcSCcd$dxiZ_}smRSM4bQcB9zNOPQ}C(CE!Q->1i5lb z@x{os^Adb1a^;lawaArUhwshS_&&T5xp))ajHJ)tL7;KZ+s3|Po1U|@f)lstaWe@% zWt;!%z*ZM}e}U1K1N`678b2Sz$!vD|G*~eE=UU__wC{eJ9LM6ycA_*o6H9^n>0TYEgpi&d76?|zE1q&A1q=gC= z+Itl=sjw!y&_WBEw6KLPXtE0}>_SaisL2+(iGn7|%e@MkR9K8!>_htd zP7a)ZNc&a*BlmmLU57$pB)_>t@Bn>T$+hC$@GQ%j4Hs&TR|G$BNbgsF3;y<@&|m+B zYr==&xfY*yC^QgB%>+C^Zd;GAEhP0Lc!1n*J&(f3{RZ?HZINq>2k40i|3Bez_&b*W zUAWldC2;tVuB!-Kc}S0iszae3B-`!91LWRI_^&W>_uu{vUT^UYFuGB$Z-03xG!)7G zkYRX$T>pOsBiD8#{F=3Wo&7=*kKh54|6}RZ!pP;hjHZ}9>cx%)78 z!B6~6@6|jBBNv|!hb;I-}y8#Z!k!P-YZ*pwDsrR*#;nX+vyHXmQ`KJC3m<501 zO}(dj3!H879C+%Rp&=oTg=uiUwJm_}dsF)}2QIYwMR4hxx?g4RQp;Hehu_rii4pik z%PEJ^AD`#9-HJCuVI=Q)kKn;C-qd@ZFA+yBjt7+%uYxyP{Y`N7oBI284ZPFp?}CxL zclsKP+%ar#ewS$>{dLqmFqS9JTxyj9ktK@M&v% zhOt7@=LjAkH=Z96N3vfLJP0iAHNi*pGt2u2^Y{<_eLM}$|A)p4;P5~6UUUQwnk~PD z{1$y@QyQGvqJPJc1&?nD#joZ)WfS0Ri|4=-TSDpbKC)ZkNfw_B=USaSxY*()@WPhR z1D<^MgcrAj{wQsiz@=8F3=Ug<1g^C0R>9SlUjs*5^gCk={=l~NA$;26XW);l=Ercm z#XI0ms~?AZTJ-NVdf~nn{hOD5IB3zoH}T%$dh9Lz8^Z)R^)20Q8eIIA?t2MbZ}A4W z^DW)SI2>4x_cqsTZ|mPQCB7XRgye6&67f_df18u>AaT?ePWZGDFG-`4lX6~JNI%e&zsaJ9v2;QF_<{|)pF$@}Kg z@BkIa->&`zZnXR+xY@SV0>5QBZ^K95*0ppDZhc$Fxebn5JO-bBTgUJW9N2cfqxAV` zsQ4<@MjD)cRQrC;gbB}5t=E22B^>1}c;Q2>&Ulzd6 zS=;B~@}oLF74X`l`gdpR;L4++yRTr~R>2#s<|g>pR_8bHW^20ze#LTLg{v*62Clb0 zH^6^6s>jq{;l`tSEHuIYYw^Fshb?{tZnk&}{FZI&Z8&Q6V{nh{OD{a=n2uZGF@DQ9 zrsHrGoO(>hCk;+N7CJSE`vw_s;V~VPqGO>>B=2sE<2`8kV4k6b2j8|j55sdUe;)kU zF`bvk;bO}vfuFGWlkg8L|A%m?#mnGw>rVyz3v2rlTxt1L@Gos&eg$u|oK5g{tFr^H zwK{e1Ud!1B*IS(i_%BxHukc}uA2}AvZ$9Scy#No8Tjwos>oHw3ZSZkxdjdXrOy}zq z96hG<7=zo7h2FcIdvqP}S*vpnK5uO=z?~M4!#&ov7Y?ld-aC9Bd`IW&GWg1ObWL6b zC%vP6ONK|jqhme_PJKt`It?CgZ70CFmY)abzoY#ufbX-mbKpX2TLc%sqidrC{*kr) zG5j;D`Ez)+#n-^)*0us(Yc8wN?Wb^` z#rxsF^1XNYOng_zCkr0`uJ&O9oc*rOSI)bkjWgbL`@0Dbe)z7=Q7OD!*&{u=m&cXi%hgv%|b0^Vuc+6C8IP90otZ5!a|ySg4??}kz@X&=(?;PO^o zKUcJJerVM`C&Gg*J_Jr`)%{9_hqvnfrobaxb#0G=Q!Snbk8jm&O@Omo?feYqTb%;9 z(DIAmV#_aqe_(z1AzW&GD1(=_>b@_7ms{Hv@UxclQ#fqfiomO_<{J0~i@yk$TOTUm z%2xdhs)ESy`}cw?)+BXSeG+1hS_tF2}YyuDTDYX@9weW-)$Ex!S7wtlw2t=6^; zj#_>U?zH`l!-3^{ZCqot>Ha3bgWBx84JWnfcqYR`+jQ=R!P%Cd1LwEtJQl#k*0uzm z-=^=xTmUa@)BRlpFK*LuSOS-}>2od0;N@-l_o^%4u+@pcmA2g~xVBB#Lmk{{@i^RN z{p^MVYwNv7-`>;xDu8Fbr(-x9zVAI_zNdeaTLrJT?QVdptxgU6XN$i9H`}&a;HcG)!NGgFkKX(I&i=lR ze=3aJwQCwY?tSg&jqv#QwVxBVf>lit_;oeWQXU-x$!oNw_0_%6%88=hr#X2Zqr zYadGBmA2hgaM=12fh*tFv8{sZE#3hC!)pE?+-x;l-VcS}df%P*B6#@i_uchO1P@v@ z?zO?u_jNpD@CO$E5I(K>-Wj;v;vMk$_jS!&fIHvUbrpv%S|2`zyQ~l0aF4}%;Xd2P zemJnWcbxTqT*o{SzWTV1?bqO><91$xhaT7Q83w0XJPpn~u6@XY^N;I%6~HqrXC^%B zxUECD*y@+SPg%|H!HbXU{4Rk@kLx&>!C}jZz^kpFYv4-TRux=rZEN7|$Mv||0oNYa zzo)K)_u6*%!TXQvXV3w-{&;9sz;8MYaMWtX;6CefKOES;cqdptCv+U{J`oDvbHbgU zBY1GX#S3BNu1SjEr%&j9eINe82_4%X!lf23gIAu=@m~dpPuOt>ms?H+y!M2S;X1g| z;#Kf3Pw4g1ui%X*^!Wpu;OY~)u4>@l+ID{j|H0b+2V86MI=I#P&<00OgqB^)??f@U z)AlP47oOC8DLTpZ=Sdxh$Khg&m%s~8>UvlNm!8zm{W5s@NgeYQ@XC|=%z;&K_@wqZ z0zY?Bp9%0hTz*o|ITdi_N!^z!c%$WPf;XSkG1&rFpVYNl1J|F_ac+PQTHg-A%_nti zTi{mfTN`}*q^^?_aMb!AgHNB-wR8qX^sjE*pn#xaXwKdoLVVeeV>X z^`|sG1Wr1oK{Gj=BNP=ko&&>7>wLC_T%t(PU*OP7cQ~*6L61hs}~MV=@@!ZJ}aX-4his}sE$J- zJTj^^N5QF4-LEt_JF0DSqM`EJqplAXc!1nJja)ci<6Z$gE2?W|He49hXIvD)bEA5$ zn+F$LA4=ebQ5~N}@M5dE1pblL{4u=D`t}oeIsK6P9xLFL*3VUN*m5H9|5~5_4j;An zG58&8`!3vS@isVW{fxnZ^~Z}bzcC%FWO!&y$7dM4+v0oR`dDc4H3O!34YAPF=RS1# z)9_hH-m5+v4;nS@HNmYK_uAm((^~(U)BInN)1fcE#&LQrJlx_baO!D$4hfuZ@d9|( zX??cFY0QXqD7w-E=kCA>j_(+c979DE#F^U`G*p4ZMgY1g%v0*Bi* zCj!^EYfb|kw1<+eX5YPzQ2VZbx||NY6Uq9Fn+{@2cOt> z&$1@ZYJM7=e>QYx0PDX1F1C0H{KQ#3UY>+koz;E$8638F1g<}8{e+vXZ3`T=nlZTZ ztgh8K++}sT;hwWPR=sd=Hgx&r++X$1@h*vTI@d$tspqtx)8N8$x+aU@VvCo+3(whS z9K6`#OW@LTx(3SN<>&NVy#fwfeguAjZOQt15w5njHE^wMs}8QWcmsUU+8%-%&*^uE zCit-B9D$q9>G`$=Zat@;t!;3R<@CZ|*>*3%gU;(dCZ6YfbzVQ0li}g#b-z;Jk>~B) z4rf|^7My)v_bUg^w|D_Ov^UHK599~;Ncf^-%~E|+uQ}MGY0;K z#czSLFX+DKz_}OnT$%?@wfHpnFP8sTxY6QG7kIY$1vj3F_+TXGpCR~Mi_gO!v-sn9 z@ORDk4qpg`|DpL2JZQFf3;fmvozu7BV;4fh6FGL?fmL7V$S_BVH zTKp6o)wmaf+b`(6bilctIwpCY%xS02Zvk9v@e(-PsdEv5w|DBfYX^MNa!$d~PCce# zFp_hH_W|5)IUO)^bN5dey?@D@=zRirT09O17Wd-xAs%}C34ZG=ftSbi|K_cL!*P8l zLIf_ioCmfP%W!4fy-&fbf;YzX|0`~Sw_46N7`f-k|2vG_|3&;g zyxrRFfRXFZAL5~b{}Ff308hY!o#eW3#KZ~X>8Zho0-icD+INpP#W-s1{B&Qz_EbbkH--+x0w|p0Fwfb%G(AJaMb{ifb z_wIvJFmlh9kH$mwNa{D>0dnIIgHOlxJsoG@k8J!uhR<5gIT(c&@;mZ*7`d7k=x3+a z?8gJ-wi|~p#`U@ApTb=>kKOQR*8k7p9&PLO!hwygcadw+i`t(A7`bQQUk)Spu7NAy zK^L_TiSU&d-TOhjt6=1E2E)kpbI8R|DUxT)m*MS5o)6!FpGEQxj&pb)lAL}#K<*jx zSHsA?$K-1;a_Oo9$4H`T#V6xS(=WRBUo69;NZQ8m)99(i1IC}h z+b!OKpGES%jB|J=lKOGH3rX8_d$5$V08Ttc&F8k^dCu10zMeY@jC=h zvUoB+9LakbQtgPF1LXSiV;FtJdr7>dFmm;m!9TGvd(zcD;OZXQ>_$er7tr7d!EfuBV(p6BpRBWCJV4LNI{ztcSK4~O zgH<+nKZB9`tob=PNctJUE0K&z6~5Kt+wkoc-+>3KZNJvQFW6kX2qSl{D2I_dS69Gm zZOqrfl{UXs@V{Dr{taGl?4xC#qk~_Yr7X8xKZmT;4_fKXX3LgJ{u1# z?rnlM+jh6W)wGrO)YQORExwI0L^4PHc<_7M$L%n3^ScAyX>E7GNVe;}1|#>m@H$*) z=Z*h_ky|tW1@E@}J@8)J$9?dA8^Z(41#<7)!GkxfW<8ADIjsRcXni{bzhyaZ!$#)B@~mu|Sn#-SJPvzq;IV14#J<@?d6`hL1m@T^a@ z{%p9=;zjU-7Jmr-w#6TY=URLoyzo=KCR_wRZ8_hEOD(4iUT*OfaMUkC6oU@~)73ht3snQkSl) zWO%s6Q{WL6zaAcG@lkN9#na$%R`W)<(Beh#gBE`X{3egY zfstG1%VFe>>lN^`UHV?3pTa-0IzNZQmLGx3yFwQh@Yz%WukX@po(=G?yY#c>H}GbQ zZ-HO2_^WVrmyTx*yw&2{;My*|rmchPt!)E*uuDI$55bLH`gc!FaC4V_Hnntx!cpyi z1P_qBTgr>UA9m@yoQB)UkAZX0TzhouoEE^dx^+xu!^Pb?RwZz_ zTaVcYT;Hwx(f}Xqwtm8gyR~me;O1`aa|`?qHKh;l!qIN+TMTZuZFRt(bZh_5!kre6 z!-3^{pK<;6nbyyMk-MH52WMJ53(mH94xDfC0yzAcp1UG&`DZ#`74X{6bRO5i8$Z*z z*aW{~@mJx0xA^bj?bdb&++#Vt@E4ZzCERB@{cvD8-sc=6pX=vf0(|A?+W)IyB-d2l zU>LdgQ4WExw)ofJB+E~Rvn?kFo@hC@!naw@?J#mRbKxl#zXP6T@#!#fV|XWgm({!* zo?-EsaLDp~7`eX9f{|-G8!ohX5&WR#KLjI}|7{q#{yYpL*LE(9Tznq*zJCjvkBxvu}`;nkn(I$Q();&WY}FTvFo zuYr+Ux4(sv`waRWjNE6?Rv5XQZSZTB^E$lW;s@YATl@{U-r6?6hd3_n= zt%3i7k&Ew!_gMUo@ctfMKL_AHTh1FWa_g!dMy^f+9JOu5;K269>xFyu+~s}2arA}m zS28^G3;p~Z1~0YvGWe$!UkOJo9)mkA9)|;qdtdT@3BJ_x~hz&y>mV zZC~nV(Cu)p#q;35Tie5M>zDeu*#;-|+2>{-pOt+YzaGxFcme!OpKfb8{H(=)3a_;M zRdCpHA~15Feb2$=7O#NYE#3k5SleDWupFNOGF+!xle+HzTRjf*(baa|~~_cpHA);wSJZ3UNOwhId*#jt9uCy;K;v z?^bF3p>RgO8`}t8iQM-NJc{J|P7Dt$?u~=!hZdZSp+{|ZNCLSXk+yd{B7&c!|+_43vV7=Z22Yd6V|sU zVdSnq=flYD*8=z{TmRpKOKrPl{h`4~?ynBPQ<02M8Xo*e??Rn`%bzmb0f52`Jv z2L7#W>vu46_ieVqzqgv(VdS>8qdznVRV^McE)frQ+Ia4Qk(;mAVC1g1Ux)V-m+#;Q zXp1B#5g&}?I2wW{A?bfIKHlOJ@WmEig75yb=I_A+G1plwK{X2}@dG&CAXgQK`Sb+z~t%oCUv*onF$gP>T`a}6hes?IqgQJ#z zjPo9H_rCA|xv_l*My_w~!mT#%ZSZmH+X)!C?Vf~@8{1QGl)3yK;~9fLuzCCtK5aG6 zz#rMU;$x0+B*#Jn9w52r?6t$lokKd{v$oxH{h^Ua&dH3t_ghRK^Nu7x5g&|X+=k#`i%0MPx%~eA(2PsEt(ka$+_nN3xq0-y zVjRBG>ysFK@hhE+PvNewv`#l1SlqkBHNzzx^JF;xlAaq2;9`rHz)xJ#bNiFP?s~xU0)EQ~^q5M5a|4~< zJUBnlYoP*ohQ(*Xvn)OvzQ^MC!o^mn1fC!0wa@~1p~V-$Ph0-?;iVQ|2LB|`Yp`eF zW{bDLtyZTEj#}Fo{H5je!GYy?o*x9BAKk)dhc^Ho;P1UG;bzaf3?AqoI>_^RyaYJG zj~wK=Oy1>w5WZaF5jeQqzwVO6uYj+xI)mUrRwofo^as2tIak70`gc3N3cku;yM^Zp zdV}G?wyh!X5X-q5zS{qz%lR7oHUG&=ywlK2@`KxxeD}=ZTsV~EyT5(*;V&%yC5&9W z4-PEuCHp~YvcG#f`;`XgC;LzD7?|M|z;`A4nIm{6{M|5;zoYkNz%!Hmyv_Vwb_l-T z;)O6;R>gBFis0g8|M@!hu>^j?a-M{LknGFf*Ly#NOD$dohm-x8zaMzL7lEsj{eg9S zPpN_Ht#1u*)be9+knFp^%l59J|JPXm;p%I&P7PdtjW5qy^cvv6a=dHV$7^jL;ow@$ z_lA-`RO1bBFx3C!4xYj24fBJfVSY&+u`k4lg9j0TF4rdP2vC4vx z8^fF69Lt#qBR3AW!pM#1q+xy-$rwiP0J$-r3?r9w8;o4d+u>ZRlLy~nIa8^FBqxFg z$hDmY=UdGJI6O?pCjze?renSa?zQ+AaA0xo>wfU_ulwtF@_vdijK2GO#v}po9Wf4Y>|R?p;X3 z;S{Sg0-iKN_iHjd&Du_fksI4PVdVOj4;NU@T`+QEem9I<{tOto`I-qM*Z&ZVT-=9| zd+*OIc#g%t2_x6%`{6?CTM@iugzx@l{|7K~bNWLVx$Tz1$jwn1jNCl_2wrCKpTNk? z=`%2LHJ8K4wOs)t*Y?>Fe&0_urymcH%UKB{S7#L*ws-{IIKp?&H`oMk9^t#c>)!&` zTf6~2KEij;5I6xxtq(C6xqbNnMs6QJgiqV}oPm*R`w@)X*nSM70rK9Eb{M%j9q>Ob z{t1j+{49)I{y8{q^)JGoTKz5mf}!N`rnB{;CL@~-!T%dXe_fiQA?OMnMm zuXCLUPr6?FFd3d|`P1MTmOm4ob-k{u+3{`oN9s8$ z56&N{V^sjp8tJ?DzRiZ`T6`W{JW`MA5_rDVUjQ$*{w#q@N9y>O!AmWF8NA%;tbkXJ z)G=QLhplfBc(v`z8hEYcuY)(+wzk04RZ&1ia>w%)C8a($QsBey=k2_skkei*s!7Qzo%+i%0j zlzaHYko;6IJh&#Ap|z2!8(f#rCk{b0ao zy*9WE9ynUZEdd@h+IR2HON0lH_TBs4hQLXqwQtGr(9ybI!{F>AoxO9xpMH#%*@|VHOEoTK> zZ#5g>gJbkqI0QFZya_%$M#t(1+&o4!1bv*Rt<2FYUkTD#xu>=cd5WhX})_WR5F~J=3n&y-&NCKJzrla& zWyZV!4&UIr_ZCIq`WrOA0dBlO&u>le;TwGSo~9%4I~IQzj^3c31u?kC;=OR+4LUFV zFmlg-`wB+x8SIzf;09lx13Z@XFxG!*5%(^V;h|%7oeYCVj`iL1phm%?$ND!cr_W>H z)UmoA(%{UoT0aZU9_zdJYvjOai982yB8=Qz-wGr5exgY*da|6~Unax1*|u(nQS-@x z6TMtG&uUJAk$cAJ9WeUWBAz8U6-I7+rorfnhrF+Q)8RYE`soE;ikA`IH;nb=9e>_0;Z0+G_Z-Dv!@se`Sn;Qdzr09#8z3Z?H z4yXG|o8|egaAmsx_u>I5UKLzz`89BDx_-Xb!S(6>4}L<;2Dmxh|16bt+XA$Smq z>HYvD*AJKBnMkfZvhbTMels3e+2ncWoT0~N3H*x;9mAL4jTt(I zn=<_H8yb(`0dmg@t0#`C*YkgI@!+7fJp}*F+P(=lTD&R4Pesx;4G&@#{{TL1HP2-D zPa!$ye-9VQJTAn8k1f9)My?MX@IN#B#;i=TtfTOTgKacg@K{@mg{aA0w7 z9Ah}nFCE3XHx14l=Z8jduFit9EuI61$NA}_WSzjzSv8_`sm$YV zU{p*^Z!`Rg#b1Sy>svL9T%8(tyTy0FuUQ{nhxb~1AH08@-z@ue0Is*31~@v-|Hjj- z^BCMY&Og5rj>Ew?JGbA+nB1sqJ^}|f`tEt5UMAz2smEp-oSv!Y@C-OJQ`cA)oNe(O zI6qTA3ku+HrtjW~7J*;N^xd=f*Jk=*B+q<~-~n>a&tC^uT22+bG1GVNGS~#8t`P~h zd%uSN({la`-ks^cx`*eh?}7hlb^ZkJ⋙-y!OHMnZA1$Km*)tZCl`|#bfXpYx@z5 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 z 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 ur7&! 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%0AKFGS%1qa!0SNtif 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�NIvqoCH}mg?+7?Ch{}%*D>Z#$UmLzK7;!ixmmZX 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%0Ak^HdTz=dR2n0LT>(y$L5e* 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 z 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

    ORNs1 zxWblMiFb_DePJiwWz%=#eIvD<_v0$7&mmkrQu|2_K0Z>qqK+yaxQK&2tfx9|iaPFJU6bxPRfxBlTW)BPKGv35RL( zU^{l;E?bvw+-vLDhX-uC3}T-)5B4=@ls6DFO19%5rBCE~Fc!y;(tUF@9ydzYeLS8p zO50~5P8g-zC=sWOvU3SMd6aI)DLBpMNypPiX`N@_nWOX^au&`QrR|xCXWKk;aMmat zf3k6o)gc$pAEoCr3-F^h|2J@+P0z;#R-Z!bj?(ea!$rEjPBC6?bz6Z;MrnU2#bu+k z|A%l^yw*88o;t+au@C3j^nAQ9UjKFxcH^~8ym;?03C{nIQ2O8JZ-X}f0WQ($PAM*n z*Rd;vSKHsN!R7JV&TH|yc+Z$-;&t2Y$5rvVUmwDUKd5YG(Ufl22aUh7UgDM{Bc38&cKrsBy--s~;RGX3F);a|X^x^5naDGjW#vZ8n~p)&em;A$3YR5$ z3&-(1MhKTDd8_7AhqZW}t?zogA;~*m%JhwRQ`P`Ax^OOofV;C-L1cw3TpWhKkm zj$gI)eGQY(AL93#cVLozk!P@X;$2Cee1Fbvyf4X<-@n_Be{I|AH~4_fa}ZZ0dGbAA zhwx!r_anI4>RE%2+q$2?C#}w>aBY$|{t4<|hyQM`bs7_?&l&uWB=7w>Z0is3hc^8q zeBP#Cz#k`h^7*EEOyqAH@F!NEPchl{dgQ-37cr4}F5yPoMoqXk$-AS3`t;#}ByZUQ zw#y*)le{61vyV8*yl0xMeKGbqFT<>?j_Z>^<`` z_dQ}Tk!M;IICD}{e%rj}J_-?E7J$N$9X=eT@n7sQ-zU%K^oMx|^j__4=+vDF=`nuO4j|c7%#W_ufR_w>$p*ZiHxzOxGY)6s1PR7 z-+qEuTiw>+a;w8yyur5nM!d;hYct-G?0q-HI&Q_=lD)R_U|+@+^qJs$(JS$;WE~%N z<2}}Hd+|PN|NXei>UIbdY3Fxvwe^!4d^Fk1f0;4=7$(xrf5b%g@jv0?$vU2&z_rQV zJ5SNhb;(`^3D!N6vW%pijl45NSz*&FDdSJ;YmKH%Ai?Jx6DbQwFxC}PmXTmNAinIeb1@$L$NaKG}PJJ>y{mzG&@y3IEIb-epW= zpK8S9zUSCqns7MT`|T^ieJ9+NtmAw)?y)w!hKU?IdNDcm7oHpJ!vo2Bj2OheZ5QV* zoT7cnNu{5pdR-HEUMPh9RPX9U?sYqNv%lQ!GW#|@ACy1EOCUj;CsLLXSq^0dxi2B&o=VDU z60}tfWjzW0wt>9^lz`6O7cM9K{Ex!WV| z$)qeG`E0vF%Cg}9LHkfvkf7ZvDXU4azBQEfMB0baC(>8HGsTN1LET1EW)Nu~${Z53 zLoQ_j3F=cwSww<%D5fkUK|6#fH;|wmHd0m)*+!JrBxr{k%G%)nta}}0Jqgymfzl`M z2K!n8^&vr@8BLi$g7rsU$Y zlVBa4Lgpbs-9nTbNU)9@DYuZI4qGX!iL@c5|6N@#=fCh{w%>gZlb}A1i%C!)$HOFO z6X$VEq|ZFTdXZosNuUiK9S{|XF8E_iP9(1|1U6|$o!N(k^SzUv>^$$S0ZHw zkv60(u<3=AWhAJ7h_adl+o*=pCqGT#JmF*hmi+zJ=sPkg%SdxqRC0*2ngrXZhSDd} zf9jcsNPQ@MBJ19OFWS0X!d*7KoB8{+&LPSTB$$6AWd#ZLmrBZ766{BHls=L6@8@qx zuw6owK9TKpo#`Z)Cq(HJ*+v7{w|Sg2k*73HRytnuv+)N4MdG`?P%$afZ#Gi3@Bwg}BU?AHo&)XO^1?Y+ol56KRtuOr9Iy*d2{y z({x>iVIuPn$8k3QNK9mzqcD+q;&Fm4ClQliUvuujM7GPFn8?Q}fT=AVU0(BGWTV-oZ? z=L>kD&9ev-84tgWiHwKe!OLx)6`06&e-abfFP_3BHcu%gvR^-qiHsXR#^mJ%{PxgF zyvpW(1{0a*Sxn?uQ-+DGZwOc0wyVL%)4ZaIj7ukQt*v_<{+qSQ-|^`*8B3ir_#bIH zo_v7MrpdVKoWn$x{~;!a7w~hfG&#;X4LEGut^*U9|0?da<@90SraS5M znRI=>AQ2P!EW;gmQo1+rDbHgk;S`&mn(k#xOP70!X|4j zES-6LRMpwXFN=jLnp99yp>I;bLSJkXHWStv6-^W{L6(Hg83oN%kVIJ$S)5_f#DY!` zG(pfA1xXa!3~K@j%qS>Pw24a#R@=liX{Alx7i!X%=zYKUJkKA$&-48}IrrRip0nI@ zm&_?illPCM@Mb-B3mn4lek)rBm+P?=a9Gns;7To96+Tivyc`n@ncWNBEU`OL%jbyGHDbGCn z!U-cKR*56+*uaq{wsGuP+GhLiQ!6nNN3iQ8~Eb)-D+O&e)n z8adL$xf|Q(rje$;eX&lu_^k|h(nyKVWEg#W4YBpW$h?E|!kHuG{b?4Qt>w>wb4N-a z$b)?&ZSzfnAI={s?|N*wK#whim+N^~z(thVeg0ew2S!TFgK&7H^xFtrIa2yY6YfA- z8YSf)3@4A0_bDmxuu(GZhQq0&kQa4O8S)-&KxD(yt=$?okr|J#eL#p$e|n^ijA*>s1TKwC-{E zw3fdC{y@v{$5D1Wa?8+x?L_W-gf6V3eyb5i=6zWce0G%d=W}rLD4Bm+;8so32DfVr zJK#?BcfprN$$OA)*cm17L9EgAjnPuyzHq{5dB>dy4;(G$N`jL|OW#NtZI=uiZOT)M ztwiqkGgVke{nl_eb+q)8G&o(-TN$utwDdPGe5?AWz?q}vyUHwhs`{tF*^gA5>#c;mX(S{2&|3Y~AXqhWkz(rcN;?ef<$0QCb zumR-GKS6A}`a7_l>hHoj>bF*tcI{|0Ue04bUMKl{f<67Xi}8raxD~)uUw$M&TNbLoHl4TKZ2t z9Mf~f;gi}2PQjuI|F)8wEDtVjFI`jADl2oVv-2|Y>d25yc+I5M*7kK7@7a)x@L^Md!YFD zU@MX9uX26rzliNb?spDdSV#R<68`^^@^oPxVsrc-R=d-oYcr z$eej2oH|D4%rrP%kIjH5jFI-52z$op8V0_VJl+2ZngVBzk@+(V&K@K4PY#UCH-|Ie z+%eLod9Y8<<%jb%Pa7^6BjdLaE*c|im}2;`F*06O!zB_2s}!yrqt`gNTI&*pYpA0; zj%vr)CCI(DmSRK5{kE_STc`edYz(>ItH-g9`mLj5?C^0(AHgP{kbF|G<;YE6f$fZm zzYFUi^WA$KZX6@;nw#KeEl&&l)foA<`D?gU^>3uENH{6)A^ z(|5s+#@`xCpByXg*cXoZErZL)O24Xr!&-(2yj#j??SU(`oK9qn#NpFp zrN1@6ndw@`bn2Kc<8&IFoi6ij4m>km@|gwarb`U-U|+h79Y36(E_Jli?Ow=T^Y?c7 z!E`f@dSfpYh`$@_Aa}iL6~aa7^3J^&4sb4adbZNU%IFv4ND}&3^Wvo@e;dHqU zM&N2qABAhQoV9RF>llYm>v%+WH*aoGxwA0=H^DZE$}U+F4Cb*686!z>a)ylA6nI#M)OR>MB12+(Bb=EbeLE|| zjv;q`i({Q>88YuphqLwA95^>aueq>~{M|K@AHFw3+V?(qQHJ#M#c+Ox)YpcW=y{jI z1$y2>czK4b!B)UU8M0n2hSy}s7+ebnG<^^*$&mg~3Wqe$GPs<4-1e=2!&>(UT&ZQK zf~zy6Pe$PytxGK&%aH3-96qh}YJeNH?oAo?rL$6=Zmfgk8%wxZ)3m^?dfqm;UC-MA zcV@_((*-*j((cwc=9Y01!@lqpNdT%8E_A1D87KL8#$PTDaEP97)uq`3igeYHub}c zIG6ja>0&s4ob)9dF3>y+;i7TUpNrwZIEh0LE*U3%wGzQ|qz|4r_fQ zaHZy71y^hSQTX6E8T*Iev*V<#&%wXqmVD~5G4wkB6CKB1Qhztr zLGsNH{%_>iZmffh|63TDwLvS4%>O~O!R@r8`+T4Sb~HZLc&;zwrEI<7KI0|Mec^=h z(x!>ywrk*Zu%MpvUIJ$o$5I4Ht}; zdAJZR8ZZ647!Hh=aTkP3G$y5RNY7OUms2)(?NI^m9545AyWkhc+uH{4PV*%=to{gG zsrgjF)f&SnTr*zAMJ*iDJmc_5O@9hLJzmPOy6+_qQf`WBVZY8^ylZ?-Im+9@~ywe+Sl4zm*6NoFH{if(K2IId(9d zJVE;dJWS6u98R4e|09+Lr%#aal>vJu$Tims7fq0UQVg%rW7oog2{I1{;gSi`)}?Sr z%4wCs<(j?%-Z?>HwF?eUkp3KjV-xh-VCo*9VERCBtaEyT^xFowae|D~rU~{&WWIsNUPA7%-B?HcRtwxJWwYAg&IvM3yWk&aBlkM^BkXXj`8IVT zePE)*xi6eBQR}F1?TFqd9Y8@`{6|sWzJa)=TDS*#)g+n zl=fN*7fh7$6v9OlrOy<@0nH}}Z=5LOdJ|lt$CkpOi840J;PQ#mrWNqci4y-^aCoB3 zArW}D=D!E7oG5*)3a-|3Md5=JWv(~`*G!bTq85%#lzA@>pPXpVyNY@86#Vu?nG@cD zPpiKHZqz)R;ImrCb8xf9tp#q?xV6EZn!XEmw2sy!;xI}2XAmx#ByCX&Z=NLe-2#Uu zN!iNaa`jihJ15Eb+69LvNgs&7m6}f#yl;}sdvCzilcWzs;hIU(*0peKlCC%4(|T;f zBzq%r=ekYU66F3rPAN9z`srh3*gEysV`IpjW8>J<>Tkd{A~$^#_LBO$u~Qo*|7qB4 zmr0X@b<}S)!DlDQJb4aoo+R^j3*5@_?r-L_!R=b+4!BeDw7OtN^0chU%tezWeHxrT zS^8uKJYllLXCmyGEb;NenUke&WWm{!rN8CCNbY&z+{tXTBzTZV#>ike*(3E$frogcpAUtHd88eO!>O7k4Nmt+du6~AJlY>%k4O6h zoavD^%7U}?*c^DKNBYt%IM*ZXk_Y=d(k^~DU(?%gfu5@nUha`~(F(Xo&s7WuJh~2n zLwal(T<(#1y8;etJ`uRmBj5j5!TUVYzHh+Ql*hdXiF)i9a@SgM?9LjA!!B$)a{V3H zOX}~&I_kG-;h3H)4xiTYG{B7>y>7y1wQT3$W{p(~{DmI-CEV(f^->$$uK9GpotmZ# zc0AJGEHBq7uYG2d^&2Y@PW9UH$LaHFaJKq$-~zAx*&M!AD}+N{dvXcil$OC^O&@`) zz4qfz^4(?>j=>A~#vl$idhH31@@~2bZuZ)}m-Ftp1#b7+Kb_5Y7ag$UwW~L9Uh8Jc zbF)2S1K;{4!pS$==|PL%euqX;g?%^McRt)>faQk+H`{5CxZmc% z;hXLDS)_@;v77C?o*>US+{Zr3y&uyeDWFpKh7w{YHD?3)XF{Mt%^J-5ht zy|C{V`>G9m=jn&OMcn0Cnt#;QYemSlT z4&Q1&HHY{|;MlG9<#X8&B@Q>=YG3sz`Lw_e#|ACFZ=Axprr4{VfKy=46#J&xJ%(6b zI50)>48ku?vD3$Lu9x8O6no!T+B5>k@Vjjkha0EZCpTKdtR}d5irpRLSM6Hh)+zQM z=5XFN*qLH4HgUd<^WG+HodT!cW^bLvcim~Q=QfFh7tYo+IdH*k_J+r;WUCMk+$Q-1 z;m~c;c4ct&ZT2H`DO(i&Skr$3pS?}`@HzOew@J+Z1|!p-n_*yRIi{Zy^w|%*^^=cShTmY|u(E>LPYvFab+cP)tYk-f#$c(Q5 zjLwwO$AWP9c8O;Me))EL=qBp^3XIO@@*UT1c+c$;w^w0g`utuP?X02?RKm!_whBhi zE@TXeNzrdemO5Hz)n>9@f+?px(+$nQ@&7BU9!qcxslEVH!L=%dRP)Pu>M1Gd8nfWcq3jT#zMg zQ3warAB4AQ`t9(JEQ$FGa9I5jIHvwM+^qf<*vYad=P^#LJNUnhJLJ5V!N|;GKY@`c zLmwEKaoQKY@(zi^RdB)`a;-^(Q`MgaXWt=l$bsi-nt8DA4xK;Yz#aCN?mQoa!*@u3 zh``A7y_aER=Ga$YWa6_MMrJJRfh*Nt1y^hSQ8;#o{g)u$pU2_GJ7i97f}1r>3*3H( z%#$6kqj_3)@(l1!Ddzxq;GHt|lVD`7Q$L5%=>T)Wb+G47X=^WxjQ?gBnQQJX@U3^s z^=Jxwo92HzjLiI#2_rNAWWn3+w7-9xYsz*wb*ju`X;WE`O_h9R!Lz5@Ul;Iy5Od)9 zQ|-F~tR)t}zNvO~A>UH^;eh&s@XP9d1xBV#cf-hx{XKByRH<(jjEw&^81;46A+N*x zrrN*W$UON5Ts>9#UKEZ^m2nz}n>m-eu4sYV)!zYMGfncjb{cV;CUx<`foW35ARL+| zWhjHIr%8W^!pO{-`(b3})dMhEH=FC@LHO`AxrQErk=g&H21X{fweaz267v&qOv@98 z(K~tcnKxl%)-!Lx=(1(3b56p@tYJ>UsPiqpPktLlX1u%uBNMmNaKki-$-6MB3({xa zgOO?9GcYo1hWBA){2#!7oMzwe&h3pbGHIG%RKA|yj`$Ep-v+que*}LrO~%omU}XC0 zpJDW}d+k08qcv_nIR_&%hkpwHWt#M#&tPQMPM^bnn2lr4gVCYKSl7*k=S`QsG#^IBzW_#Nyex!~Srgs^qYLvXj}Jy=kFjR( z!}m^?y59#QvyNH>BNKFm%UgK=|L9OpYFf#M%5*V5JZ7Gb5|6v#z z|1!8x{g1$C-E!6&kHW~LSq>xPUjZXC-dDoNGfJ)pIcVoqO$j9)4lE%MV06VJ#Pdb?<>@k}UV-;am$~az7@6zr zUKnM#eW?;gyBAQ-Dj1pedJRVATKqbUO!|E=GUMwF7@0Zw_b@W~{{cqk*lHNf&m;dR zynnj=(lYwY0r((gbFZz3;QHzImJ-JAaTu90oPd#ue++(0{U>2$%5VyPd%8W;J@y^A zVY*!~k9xfeqhGmm{(CSobJ`ggnfdvB_(Lt{NASnfW&ZgDcBb3I*Ykgl)?KXM?vgsD zz@EFLY+e|dx$9;)^Det(Ic<~$PuKK!!RWgO@n^$G)+%s;rYVF2cgdU(gu{2)2i^Z& ziogf&k}-7%PR-W&A)9$1TgrbojLiM%Oc+@Z-INw zlrs08$@+7q{f~{@m;D5uF;lKbcf$*3$~EpD7@6yf4@PE9=!e6aCIVN_)bha1nokSd zuKo@R#98Ds%dT_pTm5igmK+;|L$jpq%HVCYB!=7J=VnQ)o`;d?OXV;!W1#}x zF-xwYFTmf-l56_6@OQJM%;(|uS<*ZYsafFGJSq8TshmmeIsjwD){%arCt62S8ExfaBQ~J zB@Q?1d0XK2*)kt?z!&tq7h%sF$;~;Mj6~^P;t0VbKpR(^oJlE*7OlLmMdc_4mWE0Cb&IU`f3O4 zRt$M&67F*Ss0n?@-`TmxpzBUo+ov$fOqCeKD*#>o~(r;a4b*C8HXG5 zYegLDtZr~d6N4RmGjNc}>U61X6 zoq1AUYd&-1e3{=;;MDojMrrWq`4ayzaQb|iTQcBr^QAoFVb6Sti5Je+V{>5Ne4QWQ zfTjt;ugGHb>EgOe9X`BN5f|GU7xs=N2~*6nb?0;x+O99kgfDucHzko>p9I~K^j_$LcxE!qc0W-Z+p zPF^T^rogESrO&6qGt_@KJaeJ_*fQp;S@7J2a_>10p1)A)wE*@lly#RM4rrPn99}5v zmI(Z|=Kl_SM$^0xH!jrv1GlTc1Ag-!@xOHs^NCMlo9JWR;*&fFz&@Y!VLy!0x>?WM z3nO#yd>ZNeoZGsNH?$AM@EgklP1( zVtXNXjno_KATzhb;bx!A)h%$lo~r}y^vN991v`3P%TL?+Wlrl2|I{z*qRU}q`sx+% zm43k`#jj^m%97m zfM4nogkM(wD=;!^^4)NiU;58$Ff#WGufwVL${IWEUdnT?{j;aIzIb6|)?GKl$mDYi z9J*J=R~a0>SFURjxcXixLlmylW9#AAy>g9?!_D_fe{O+$+$a8?_wj#=_enmzU}WxV zdc!}xPu576!&lrV@$3gD+$Zy1BAlve(%^#oB>si)^82Juu7FqGCuLg&Bhy|*Ff!}s zVt9?_xfTwnKM05J(={g?)?*{^o0{e=7@0gz!pO`&r{L4~Nz5DI542u?gd4RyO>pyl z66Y4UUE|OJCoGaUBrf7v^dc$$2DoIAUDMe+#VUn2FOp-oz{s@G(=ak^_Y91TKLjJQ z?ka=Bi)8MKz}1W7om3P)x=7}bV{qLfxo+0OUo4Wg_!3T7ENz##nD{T27^cC2#d6*t z{Mus4|8*FdHS<0gnfSZ`SF1k?#}>=8i#Xg!{_eZ2Cb)UAl&1xD7EAxJ?xzg*%k?f1 z?tj0e82}@*2D=7EGZt{ab1gjRetB*)7*4)lp82G}9`$?Sd)0p*yy$+Z%VIeHewj;c zxZr+?VIds4U!KL4!QuNQh7mY+zl`@d+@$G0gprwlK7v2HU)tq!7@7I-uP`#}`M<$m zYx-|sWZLdqxK;ga@OSDz4|^VvIm-J0^TPuYe?J^}K-wq>KkXILAB8*A|35G??@j&}zVLv=)x6Kjgpqj{nFSZ*%iLH9?^ORT zIGitQvj|+BFKrry+ceGJVPyKxKVW3W^>;8b>-qEWKlA0e=)d6he0jgz0Vmj!f1=IW z$+pitNo>c!>9(w|GGJu#83!X1lkqSz=b8W`b6+_T_SkY=^TIyzbl=ze;R0Kp?G(b* zwydS2aHB2tYJxA=_9^#W^F{dIw#(+xYCkM$rie^8!zrogEW%DK{D z&w~bQ3Q@XBr%D@C)Ixne)}OQ=R5G}ha{d2aPvbFhZeZ~A$|V>k6j}3 z(oIW<{}Oo)KM|g^MCPu^uxE*kSugCGAO#7~ci85&YQ_iPh(Dv*yzRw=a=<^A0#+sia9< zO8;3ZaY%uuFO@!d7o4qWa$w(5iKib9EY&#*4lR}TErYi$l{t1hT&~Afz~QCx&LslJ z)E|d``mp#ff0*Alcv$LtC5+Z~_fE5}f=53r{do+G%vxwHjLf*Z310ZHl=&Xm_ptOO zKOA^i#%~ZtX3kj;BQrm5fS=Yh&%mLFwJz}Q)&B>$TFVxN8`a+gU(oay;pAnKXUa0x zV9TV;x4@apWX+rfXD^fMMGjn`{zAB9nVh#24lR>DUj~PlNk5Ok)yrgVkHWEK6011e zyiD4n1#Vv^{l5b)D3COT1;nAiextiLzh?zE7DySI;ExNWO+SJER3Lrw&+umj63@@! z<^s(hW+F51o2)|CgoWbo3HK?Ky7z?>3gx_saH^(BgFS^(HZSZel(zH31%)za7Q)XJ zN`HPH-dQMd*ae3R<^692julFq#^J_7>9lSD%O5wJsfS!XuJT;v=;0BRWRl)JLQ|X>hjsbKv!lXupC>9+7*iQuygdq~AUR zhaQnWUj|oenkd|;X`0{*n&u+h`G~}`3;xd|(y#sxM&=#vB^a4^tlhBlh{V%+l$bv% zW%k0z^!b}%WZtLW0%txd@yUXxKdNIN&VE$;DqQfWwh(oK-rvRH=11+Shxx9l1$H!zwVe1b7k>&oWVz%s6h>y= zy8%XKKKvDo%-U=ijLbS`I6Pvx%(pkf$Xwrl10%EU{VkljT-rSi_AHma>V>nHOB`}w zWZtLDfRTBBbT^F5_jNO2WajW$aIWT=2M3l*TLj^-mLURHs=o^U{c?G?_y@Rpxx90X z!i}1y32xUk9dQ2@l4igP%D+O^+i9?8g_PL~`&LLf{qUj{Qpd$GGT%7e4$zIs)|E1cx54czbsmO0 z^}JoMvr?WVTC12pS4qr!!o63?v6sQf+ynjuMrO?Rfl+ui?@9Z@{Z>i8x)Q#6m0Z*N z!^p&W06cJ&)FlZ<=AGcrVPu}^T?Zrc9qAxASLkVWpMQ>xp#}ge_ADN z_hkXt>f+R9gj&H-3d>9O#0+B zIQuc_dpU4{rYVHCsee0+t_<=W;BzoCbH(#;`C~F?R=}~xR@a)x+&m1^+wX|Ix99S)F6of;o3k$Qz;WMUP8V{0V-akx>_G{GOPk=T9&f3`--`8nLYMy?Aj zu(L+$Wv%5qoVBt(=>hj#EAi|FBl8}=H=LmUL^ye^%;zca$hDH^C>WV}bu^63b#@Fq zcCE~TH^IpG(_v)hs0?_59y<~Ctd;tDVc%LQryqV${SU$6wX!~mz=zk$z2_0QZmq<* z9`3PD%Gq-rby+9V^PL9oiXRMR_?}lftlk?7kbJs~9%Y)~ylXr*b5p#AS;o?WEDlY{cRz8)Bv z-=OxwHwWdnwQqrM3(9Xt-wtPLo>}l6LHUj4JK?G7p9UjSp6M{ka({RIE;w8B&w+h< ztRF52+L;gWOtKITs6PlJ^V{9)VPs;s0Y)Z<8)3BiL%w_21S1oZCtzg!Pr}H=p#(evB0LHW&RYd!sHy_A12{LA&yH?D_=sDCItY`q*i98O;^@yUQa zn#K#yTQ6mpzne}O!)`KWAN zk6+l>0_3JC#Kw^OyYz9aqkij!^>!+9f1f-J>p|{*0bXo2a>q*!HWv*W*yFl9>|@AH zzZ&bxO}_?PqyAcK4E4(Gd3_w~sNdR2-$3qo31VZ&9q)1MS7^q}9wWZSI=i$TUxbl+ zUh5?|yx#uRI>tx@u3Rs3W)=Lp_J@5iGUM?LxLVsi3Lji=|KA3_?>z+95F>XliCVZ$ z`l?kA$Mo1Z{HFG+x8Re~XRK53+d4+xflq7t2KZg#@BT*md+?d{vM{?}dvt$apM<*QkFj9Nr+~F#^ZbABUSYeGA;K z{tnpD^wvhk+C~|tK{&io${B$j^;?^GKe);M^n0!;{b2MT_x=8rF#65+#PBK@8Gizd zei+2}qKPoN?@GRx_!*4;_Xd6={c0G+eg*f3k;#7mjA{n++p5>VXwVNlSG*SX>ACzc z`t_BR;a(V-bKM7{sXyRf1S6AXF^nE|{rAJ@#g1Nstp{Kf`hha!!^o7uh70uALKxk2 zeea>xBQVR@)j7G^iRXcwAV8*>Tv_lIYTfq=PHBI@u9?dE4*F(&%x;Mk31iE9!CE? znDUgvsO?97pT7b|y&e2JU}W0j1sE;AooD+yVPxXD3r5EOB8)!&H{buf1c%ihfsrZO z%P_iu4Nt6BU^M6k&bu2%CeC|cWcvK8F!Fcu9ra!qUDwGts)W&<4t=i*MqAxDyavCn z=h_FO88`4g`VIIGntwHnOnIU(GWqX^(ccCUw*xSmU9)GCjVnFda|R}K&uW$8{OE}!^osL4kI(JPrxxPXB=+OH1ERiss9X&t{zIC ze;@u}lfB2GpZpPS)HF>nGWmZ9qo)Q_mycj%`qIbnCpxbG1S2!9{|qA&|FbZ9u%p*6 ztaC6jX+DLK$^S3#mwMi>VDysP_r8Wv(ev33}l^LD_Fp38cId%7p=f4Xha14gFIJ>gzYNMGs=qXg@+(bi=!8vQuq{UWlQNzVJ_#|>3{o!OylL9xF z*nfJ0KHO45`Ag)yRw;ANQ?frx@F~X2Q})%HxrRpI>Zk0_N?F%M;e$`fz9fg>qfg1c zGsobw>OTj6rvA_2X7#tg&Qr2BwtmNTaI^jJO4i2S&CHFPWo^6`4yZo}hc}ybh!ugI z&1RirSzEY%ZISzke(=C8vgS{MFR8y9cDBeh)Os3z+Wx}b55;j*8aTpo@o3NvPD@6N-WbN7;?h}&rb6+??{fY1|LUvs{ z_f7u=BXe(<3?t)DfzdZBDCaL>WXf|rJVgCN;TuAB`%G(~^(z>e@(hEKNk1G$CZAu! z$fW;o7#aTv7@1>lgnz64R2Z4`X|N|G_my5aJ0$C|9Qf{#tYK!t$i#3KjLd!RY#5n! z(Ht0=vgN|aIw%srhCM!D0uU-rWfhGd=d5RA-THcMb+ z@>vQabKmqZj7*wkFfwThU}Vx1!hw)I=XvWID+q_RY!P^O$i9CG?Xm~14A~FtVr*8y z`$95a-hit^W=(EI;r$_d$3&hJ9)M9L>vroPjLd!RA-EyI!p_nwU~lJzj$r04n&MrLoXk6>iV^D&G}KA*tnv<#oZ z$oT&PBa{DUFf#dn4kJ_Mzrx7m`8ODuG|e#jGxthX3+!lnS!HmUw7a#Hak^Fa`-79W zN`Fg%Q@6^vPJ=yL?J0|CM=zYcRrc@8foE=&{orQ7xm#t=zC3vTR%zb_@WQP!f8GNl z^ZdjIBeRc~A6~Ro?j07x`CIK3BU!)M@RF^vf7VjCV5`ixh4AvN(q~q{E4RwLx(Y7Z zYR`A?i;LkkTV-#!weY&F_J_~le;h_8O#nuw3_&>>AM2n- zcaMe}I2O5kBE+$QU+J+}&oDg}8$j-!1wm{Kx%&~sUH-L}0UH~k`Cy&jNIuqY;WWv| z8c7;t&V>z((sN-wH%UHTYz(>QienvQ_8>?nJ#x<*#5&0MGoG~vBDXF{*i_`^pN0+0 z)cmmya{bmU{J9c`Al37Rwe8qWy)zSjK% z_+#~d0wZ@%BI{2uGW&)789t}^dIRGEtCVNsGforx&Y-{1;n&t%j<~G@f;w|{3 zra1+_tLJ(TZq)pn;Lr5f&*5fG-?Gj2A-BE!*x3I_+2Yv1|H`pJtmk`4W{)T>aT_C)L#!HGq)dy&#M0%{ONXC+x!J?Reu}&Pfhp9lg&qFmdl*h1v{GFs$hLsq3c7qPlY_2?F(O3A#30S7@2u5 z5$<0h>xuy|T4Y`JYwH?#V1+%SU$3E75L;2jt}klXXO)@c|Se*^rk=Kmgy%(eauj7;6%hZ`$w^NhC%{#fhv z34B&#bq;RUG%YYP*ZMEuFDqni_7#kJtYZ!KHT<0(dme7DkbQDH;0qP97wtv3Q_I!` zU#hU5-@-bu8+P_ z9Sf)LkiM4zPuL;xnFxD!*k8=yUc(FDxwXdojF*_}Hw?*1~}u(*J{S$qswa<2{nBQaGe>D1*0Y{@Y>Xz8|rkgOTZb z&%?<0%VA{3Q3bqHkKF}_cgVUr0`J!Jd*D~~Tzg?;@~niB*$cZ0-lz3_13tb(#^wna znZ3VbFfwB{4xiMzpMp>Ckh!-3KBM`+4>xMrn&6Lj$Q<|yd{+D0IkpC^m-N_f2uEgUmJh3mBO;`VvNFuKNl`W-sZl;a06n8~k@I!$075?He8Ng&nrp z=lUYtsp-4mOFQhQD|;nb-LSL6?pI2GwqAf=kmp_2PTF**JfjZ6v7O?N!|glmDc|$V zwgYz5Z|!0{?vnW=5l-GEV>Sg&-6iuw8a#QIj9(9oOn>w4vIEH7yE%w;keORPGIr|gnFf^UPfcS-x^z%zD98{G|~&%feX!AuyLel-i8t!d`Kxx3^!LmrIE zj&n_!3!`y+;dwAJZ80B4rpyaqWctiP7+wDY*XVm-WXkV@k-4V(;euV#HwxjvF1aTS z!ZFP=4kPmp>rEJ$z1`n}k?9*JVPwYaDHxe?`ZkQr{rEdDGS4wi!^o7m0Y)Yc@50Dj zkKTik*)#nN{J!S-0gTM^hd;u|)VC3C(lj5!DAoO@;v*QDSbYp5N{i+_<2VG8!tb^QqtYM@$b82${_QNJ~ue30w+ zVgtyO6YC&TmtVukEra#naH{&#;B+l>2KgZOSTEL@plK$;nJ>v4k_Asy|1>yX<7UH; zsQ*#QutxF>Vx55cgZQ6#$v(K57-Ah{%Jw9@1%ENmYMzF_SAQq$XxXeVb7olXH4V>u2tgzerlX|H$T#;{y#n&7jV{v7;i zSe|qK1#VV<3+#mTnSX@xL}aWb!szlBtR(AaaQ}#%@+mw3z9wS7`U1}(uZ58rn*(8F z=9wfoS^X*S5cLm*hec!_8xE(cKMnRo$q0tz`lrFQ~YosBG;54jLh|Y zJ&err=M6Ag>OQ012qQC3Zi11Sm!5!;Dd&?gGHaU>7@4}1!pN+XpMsIO=Kc;wW`5ob zBU6SgFf!Nor(tC7cbM%@ zsIMFU=V0`cSzOnihs*W66)^hqC#=nOz^LS=o>yBhz{t$KJ7Hv=&+mefnPXpsktzR6 zFfzx6BX&>Z*0C4Xl^f^YSXZw9GOR1t{}Ze$*WU;0%596j*nY@uiz~6NT>n+rMD_m+ zdo^<7-yiGBjsF1bb;vz-5Z0C37K5>_T>meyuH0k)3+u`)Lo(Kt+g>SHSFZn;SXXYl zUyr?n-1S&D)-=wEWctjvFmhvMwZh1}k86W})btLFjNf`0ep&8!tXJSyq|aNs z89Tf6of=%aTjsr|;AeKr+9?D(>bLg5ugZC?z03)F<$fv=PTp(Rd`16Efm8R|f7;yR z8Y>OY zDQm?<_}WUlWCQzX41|APDfwRq4_5y#;AHiuz^Rooe$!x2rOY8-*r#dyaG=uud@b=0 z!pPivu7{t{^iRU*OCR56l)%Wm2P}m{mG+)`p7WH!$i#mujLf~~voJDq&NdjCcHa&o z^RD(e7@2YRJdDi!csabYQtokf!TZ$z27Iv6e&T4aVb&oSnKB=S(W8I2uCtE7$egzZ zM*lm7xwICp(|qb-Wa@GpM*m#H`u_xsOc`P@GX6OHd8N#ae}&QHk9f!TH~3rix5CJ* z>)K#s=F-2z|EQF2biad<@t=p0$>*Q&59UAevP$ls!gqK&z zHDv`H&@@5Vsgmo0^&0Qp^b2d$F0wZR;#-Hgdle%)vUnUbA2Ont8rA>5=({5SxwM``jF? z51lXRk>bbZBlkYk#x6l_`lZ+caTQ4gSPL*?6Y4Avivo#8yB>7vDVUPN~a7gnh zgSV>xSs0l-x53CQo3$NArtdumqs4q5YdsH_OF69yc&Eg{+65z%&x>$a{Si2(<&488 z)qe_p`!)MZzQ48Jfg9BSE{seW-h+`za|TAHJnzHE%%2~?f7J6f!pI#9RulZ8=J^r) zv8MS1{*(Iu44>6FoP$5r`1}P%Zu?rF!N{EJbGTXic?<05vDWMG>oO->`?%NJC(qCO z!N{y9uY|AKCu@KN81=i2x+lWPu=^|}1y0>(`hb-NqbFYA{%9nO%zeQqc=SHG7aIfL zv`^L#>F_vBGajC-eh-Yyvjs1ly-&)S10yp}&VZ3wyWS1w?vwdH5BBYo>!}|u*r)R+ z9M~r@3Bn<*V;LOYC-ZFtMrIB9GQ4}A%(r`BWY*rV!h6+U2_tj8tAdePGrR`x)AVn^ zF-;SPk$JZBCVXFRY{EA0lW+c8 zU}Vbh1&qwK=}Y*Z>i-wquKo_#(POPQ;A%P6it_w9D*Ju(g%hH-*|$9r9vGE9Vv^wG zsO;^M0%vRb95^>Bdv@f(K0VeC=SO94EE|3(D*J{kiP{Os-4iDfI}o}1(^@cDtn96!gW#Ed!-(ZMP*N=ID9fH`{SH~ zo1?nV3;dOy>ub1`^0@oZwZZLr-VXReRQ5Ny2zN>xtS*P*k<*&U|W%!z75;>GfCfs zJ&WA*=dc&le-Yb>-1J@8E3TIG{jdqh^(SHnBKO!N>;>eO;UczE{ax7Q{l&im8$fRQ zAlA7?{MNPm?QG=wbFlfy&ELje7%2XWSSMNhRth|1zx4B=@UZ=|pW1ME#D3Wu?nXFu zzw8~82B+_rHqC%N`(^(cFPynw#zhu^aJp6BlTzp51f*VylnTi^3oNBve6T&;1A!ZjMVTDXofyZb%W z!!aq36^BpnmpzFZ;70W~!Dls}bMR;TWiI+0Zl*8xW&h|F*x4^*(>lO7Iv``GH{9od zjH$lx6$hmM^n())NcwjFIF)^uyV+VB4HTblqZ-5*1Tut!D2V{S}PvGzLT<78T1G2|-2i$o;+P4dK zG>vtT_ByE7HF(%TGgnx{;Z*gf!RZHOjAy`}gVJ_hIP;*CEep;*DD9O4=W3cf*mqFQ z>xUOEe~o^VL61ruSzoM>J1q16aCpRF89O(^ zztQx+g;Uj^2B#mE@sa_14(qsvGY`w0oCRkemU%1(o_SbeG7HW% zD+xwseg1R)KKO{4OS7=;$>Q(8UO?_1>ld+(`mGdr=n)wgHyp9^hjBdDeH-f_vnTR! zc*GGI%QwQQN9>v_nJd!Z^dmA?WWXNH#|z(jMEd^}I8*&ua5m-m!5U%Zz_~~44}Qw} zHV^h`{(iVX>r!~c?t|R)eX;4tUBhQ!eaJo5k8NKi{tm2zOrAwY>;mMbFT@rhH=knc zCG~e>9c0oM!+|5xw}bG;BfJOiInLSymmHD4R0@ZVNIxlq%PF(FhinDBQ{%7;4j+-Z zGy+#@U8>+}jYAZ!k+!gE;h5$Vhff}nesu~yeMI_I1N`n0=`-)a$X#DqXW&NlH^FB$ zhUegRJy!?ZsWI<@`_xEV_pM>wQe)Q1RzEnQM$VN853JF-5gt?{bHZRaxkmbb3OuYv z#^7)`Rr5@P(`zIq8L+2D#}u4dBlBbyJheu~_%t|M&y@rFG#@{luld;Uk{W5FrEo!w z^q)ewNYfO?>4Lx()`QdaxFsz9M&>K;N3Mcr|p3&YotF^ z!PPY~|3u-M8kzrV;W|xU563iyarm^BtpRS-{F`9(pR0O!tPkO{TAp)ovzEUFZq+!q z!Qa)$oOT{=*E~DmPCd2@b~JyhmiDccbyVM4dk}K(p$21ndWoUQrfz%y%Q z%+7*y_1HXkeyz0K0@zn8ebNu-Yus#jxt4haTtvOxd+=g7p!EvE$jrCv;Sw!pDI8LN z8T`DKtsF*XKimrVC9QiHM&^Dk0#|DKD!5wD6@_ag{#Gp&(~m3t-<- z`?6xLHGVk%sI(pNl$E3_w{HR^>w#26toA8drClQ;DhFCp*n}PKpcRzG5)=|H8 z`lua7?q2E@UUaj7Q^8Y$E2U! z2&W#C>qQ!zeoV$!20Y=ITx%x6o?~*Y@xr;9e;z#Vn9PmyVc#+7OMW>2n5>;_xJc6% zAG4d+9y4=M3-;`~V`i>Chy5-f{`1&&a?@B%@Y!Q>Jv|3EYaLtQuQWbi!>!tOZE(BBrvvUhCifRzaGyF|d(_eQ z>ZJc9!UOB%I-3M1*J*!)hiUrZ@Q6B@uWp1>>tu|i!ReYN1NPKuzk|o;L~~)bk#KYwBd2*21T??hSAwdAZM9 zn&7jV<{aEyCw;O7ZmpAcY^$?-A$J|p8yo(+haOJ6cYwp8L3ZDO+#2Prb|`ePLwQ{6DR?6E3f}SM}_1QzG_4g7`0DJCQr@bzvR# zTZwT0dg(I*;DPnBen^6o>m{Bk@GtA7FI^8KGdB)_hpB%!oGSTSY4vs=r2E2(#0RdI>j^dixS`_pk59I>@ntvDkL%pnX zeuN!8mvx-}a9rkrzHq{EiBBRt@VKmJlHlayQnnP>b6m>fg|m-K+;ZUD<8m#?gXeRs zd;hfn_8pgY_rnhymzd|n$gI)Hf@7{eL`aX-zOM%C!`(I;L#`K zo!}Ta{ej~+H zZE*Vu>8l-ZLQG1=GoC)*r)0JaK7ea!v!%JM}_bjJ?~mLpyv(3 zC7Pxb4(Ykd;Brk<0f%F9EsnsIF=_WIcwbE7^9Ee4F^R%4%_j~w$8_G~JS{PE4a&mi zBX>=1V=KQ9e-$?W8}(zezZHKDwx(75wb%>Dy_Q|XI_kIDV)jPl#&8qXIj`maXUsnR zFYz~E&mi~y`hD!Bc1hEXbzFAi-vM8U$-U1-xHBgGzYD&kd3M7N^>ObJtT@-@xO~sh z8}1XA|JCXXC&cZeb9xT965)aHD!%1Nf(OOreTTjLh$h{Wpw^e*}!o{}$Z{r^e-5jx>05T>ckh44kh140u9ZzK5I$BlG>qBp8|R zmM6m=^?TvWxP1SR1tas#>K!mL-$L98BlCUNR2Z4xrJM$5$K{*z|7YpU!>g#yKRyHk zVbR1D6f{w`ut=iNf`H~$RIs9nOA88;wAykrpotrxqW4;Bp%qQ~lL~c9Dz>03iGs4~ zy#W*yG*M76Q4$0pvL#3$VaxnJ=Y8KlzR&x4-se5oeU#+-X;uBiR*iRQ{jg!X90{px`^jL3*kr2 z{}?>oj>QZ(g4{D6QS7tUR)2xfR`-n1b1;(c%l#FeWoYlBg z1HWY3ErOBwi{Y2!;ry=c_}(l$&-Q&j{HnFpYcTpll;^l!hfAzYO5p`@eOCW%c%ju{ z5xh9A&%-Q%%i`hT*YU06a(H=MpAB09uZ-*SQLErsJe;~P;R-JfZ?HOSgg=SvGoPQr zNZys(1f#S2c>i%Tyd@r%_fogQmA3Cy@DAkKb0@aO#>MyWkJb)*U?lx*FZ@$np9k9q z@3-yN!w2K~%+eva!TMe!d@QcdjyA!~)($Q3sknZd=roKL&SI>cfsu@(voLbcV|%SI z5`O?AId)zJ_iQV)KX-x8snBP!&V`Zm^JEywdvhspSMzs+yI1IYQaxZK`7eW!JjZo8 zjAV?Y!bqNBOM`n>=>GPC`&Q_))9LVl3LTFF;fx9$cbV|e3LWFaV07=RT$@}ABYBQ% zI6T^Nj)8Bj2+KD!$HLiGhaC8hitv2*-Jv_-yRFW@gU40qb6?}(do1Q&7=7d=_V*^h zNXkxxbFCfn;QK3dJU#$VuF&Ux!|;>}eJ5oqTwwcE2tQn*?f(e;Xob$DkHJXV>Twv! zv6}`@uh9N81AeMP->aPoKV$v~jO2Jl;pZy!`S8EOvns-$6}hz~{P&9R<*lr5{{bV3 ze*s3atvPU!wMjAj&kB9s@Bd(=&tStZTg+T|UWGo-HXnYiLZ9z_9WJr_rSQTEo!=J0 zi!1b9ye06`3Vly!8C+(^u^dM7uJL;?k}>!`jO2ZdT7uMl$EGhLOaqfzkV``5&dVFuMLczD2eUj@iD%;SJU%8{ti~!v*aw@;1Yt zRml6N-skWZ+tyaNvO>pZ6}+uN&xzaN9Tnm1dAxhF6Rx%Vbuf~#xf@1O&mUnV{yi`f z|6X{%m92*lTK_o&H`rKfgps_{bQC^r?R)}8;%|nLjH4F#bcH_mcm@uvFL~>kAJ*$U zc`l6PxFo|!o|#X9FIXRzcdRaiFIlh0+yT z-TL857`@2*YhF(nNlY)wqOrX95yb|5%-aQ!O->k z&fPG0gvF19v)1c86M}Qu7SDlud2nRCj>jnc+u`ycErnz2 z^?T8Ac!T*j!k?|TcSzyS&A$ak@@~;q_zR2q5=PP=Dq$r3p$gt+G23Az&+C2zBkAYg z!aFSgP8j`r7wfw3V6@*${IypNBbm=@U?lm!hmovLet?mTyInAncWr86B>p-$YlF61 zXan=u2F)`Aj%?6*G77KUpvQC-9Bj~j=xrp=M*TKm9UN@b?}d7wz@OT?)ti`CH|e|8 zg>Yn(#zf&@lfGN+ZDx(SS@S2s$n_boBb;ph6u9eVty?#^`(~X#d%&rib$`>~jLmv3 z&V)y7);=&2zHYPb@AYt&`9m<0HQR4sB**Ip7%g_+LLUYHmioAUbt{bI7>$LqH*0^$ zfpa(OypabNY}RiA6v7d5hB&`R;aba62k+S&K79$_9oh?{-j}jI`3Xi#Kjht(eenLx z;fpW9Uk@ML9GF}}5`n`fC7|A?&9B$qmp7I>`np)tK zo5RJcd2j9%eA>#MfsxeVER3WMtuT`O0gR-q_Ze;Yne`bs^qGG1;WsdncW`cik(?_> z!8cmWO)!%0iQNn%`Ci0m7)ksX_}0(#JT(?Z;=c_>QucNji9Z`g@}5x+jN~1bJK#Gl z{w^4~cPPBO;c>Rz@$fyiFZaR|EPf)4q;B`YlWf0oVI=wUU?g?;1B_(f{|Ff1Q(kBVHioyM_?rV_EGpT%lSBr zB+oQ>y5*SxKWYA_;F%WxG>jzYGcb~}5g5t-M&aNyz1H(Sr=M@p?bdCfe{Rt++Xx3+ z^ql2wWv#MR=a83SBc;VLYffrdLErQ?Ms%y6Q;n-F^ zm&M^qD_aGBy;aW_+qQUZ(XIac_ zc!T*j!UxQM5JvKD{vo)*@-)JM`Mocx=a)LCCBdD))HPcdIQdIGE-7$Vi|GbWu$YPP zbc>k*2j=%GnQtq#f2P61D)m@j3ujg8dy63$$@dn110%V%x&cPw9|a>>L*57@`JTf~ z@XeK4=g}~dK0F3S5_1cTB+qYQB;Sy{6-MG83nO`__%;~Hwr+=!zBk@mwCtCb{FcSYH z7)hR77>Pd*j#TR05`||~>bY+=Tx9KB48L5dV{I-x&+0!Pe$CqRb-2XpQwql_^|~ou z8IDv`$~rlU4UoLgyB_|cQqQ4Z!bsk!tb~!==c$6fviPrI^owJ?(SI{09v-m5tTH`u;3!pE!~n&7}RaO7*v6NO8@mhV7%rErBIQQ~4y$Z3@k^5fX3~a>wQOCWvOFg65 z7?N*7VguyLdVS!lw5&IX_zd+&u|cN!ucqt}D~k<~l>HSvRP%eoVD#A?tbeX0&+zTC z?@?@Ig!-e{0J(2tdL!ZB8*M}HTlW21^+(~7Z^O^Ix|PDQZ}m9F;ow{S-k`UGcH5yb zAvm(b%EG}8{dS_alQq(JI?uFxhyOdB8@+1g&uYCFlmsVNYadI2yH@Lct!{8?wXPx4 z;GWgGChrCJt=63B@PKN&7Yb)o>o>JB;i1(!euu#$s&x(-38P+F3BUHPgOS`HxE@Aw z4=oEu5)*=vd(YJS4LqtkeAIp8_eS_;^N)s+_{YGvRO>kUEqrUWUhj{Ev#WK@p99}% z@pr*U^4|^TR_nPt55C{(`~du?YHhba!;{S)hS3=JA3ganl5aHmFp_y-3XCLXD*SM@ z&b^PoNUmESg^|oNkHOO|W(JI2nadjc3HT{%^O3hVw7tkHhnH7}FKd(7%Ue+$F8e@pmSbbc)iaK* zMDCsIDr~L!>#zZmdF;dLa58f7DcDrx)>LWO4CL+^W@01A&2>@iEaa~5W@C$xdr!F- zTY_B9QtUz`?-66mkh{-Tj%`4$Y$LWAxw0+T0Cg#0{j-ufAa~A9!}dj^=C!#r9UGY6 zTLrJK*7MOC7|HvsYhfh!^wz;KI~H+xgY}t>Fp~4;Cot;7yTjh6@FsG)Z!>O&KVv`L zHxNFDD{V|w!P~0C@=oz~c!wRkop4Qccw#Z%Vf!Agt=98n9lWPn*D8DA{ndINsfQb^ zuQtNRs>7e>Qnm?hwtmtA2i3Z6@oM-_v>L5jTNufjq#c}CqvO3jjHLb@U?kV$NpR-wp0w6CQkS+reHBIJHLWmIn8&(fXvr18VfQ zjDc`QjsE_U2@kgV41s@Dqy72U@KCGIFnC0bt_?=QSv5NUgy2y%Iv#I?N7raOkAZKs z?T&?StI=nIUU$F>YY%xpVGOK?%{GJ_`_hBUW?v}$V&A$p>Tch`B*TFH{uXs&(;RfB8 zMcBp2)ols3%>3op7;@iPiem%wdmG_RH9B54!<999ZB+&DsL^%rPPnE<=d17G+M4k6 zHi_4Ib?_eRGkakqYv!L|B-e)fU?l$iFp~YMhZ`(sBaGzu9)+80^m?-eK5b*_41Cs( zMJtTtIy8Wh@>hmo8*IjxY@jQ&=e&gTZ z7c6EDjO4!ki!hRN(@QXtYmg!s$$tkF!$|V~6Gn1P^nWmt{|9^-MzXEBFp@s-FBnPL zS70RnX*dr?5;Gr0vfY2fNb2({jO5#WufeEii0?$b4kP&vz#H(JmcIl>axb(Lj_uNZ z5{EbJ(z$LUjQ+lwZ`^$X|6u-IFp}%mS{O-v>fr2JJzhDr%zL%E-SKd4t?pMITu`gW zx)6?7OcZXmvMq2>8}3lW9OBh+tn2i8Dg@tFr}=M(v+H!GP*yY+Zw!dVs{g0pw)JedPe+O2J# z3nRI&o(Dg)Tidw+M(4Z#J}ZQgG9{H6QC7c}k*yKn7Yhz(xeukmyD z6SH6ZUMXC*Uw^YJhhr8KhlBn49D-L*->cWUrNKSxwGO@D-t~Hn`oKu$-o7xB@tzK& zsqUUnKNv|&e|Ui983&qnh;!K@uhIAUg!Tfj3j>rTv@Mu zwF=%*uj67TjHKUw2P0V{Rl`4+e;17899jz_$yo>Qwmd(=LA{P;?`P`vv(AShIP!CN z_Zwb!FAAUjS@-=69Q>?vyLSLSpuY)v2g4nZyT6@;?Tp;|zY8`Q$+ZkN1G%+&CN>MX zz8At~BNv~8%|-6np*-yU$d!EnI~ln(VHjJ0-27jNoo@aa*a&iUh+>P7%UO&qL2kRH z*fQkCQ8{)ca&58-8$<5^S7MJ06>h-2Uca z3y|B#LTnjwbuPzlGXG}mHstER9lHa$oIA0#$bD<54%=YPwu-SONa~3#LoU7?8$&K8j@@Mb&Dcuh+MxLleJA! zu)!tPe=en-$i+voMaZ>7F}4J`HY~+1H2)&U-L>o@Y#DObn2#+%Zof*gG34qT$5xuZ3R{a@{yOX)^Y6v( zM=pOowgE}|V*}*c)4QBDL9U)D*sjR6c{gk-a`R6bHVe6Z3}Lg8+g1)XK(3x%DvV?v zNP|mk&MAdsS_dxHt|8ea70wY&v?--0+J-sIQxYg$b+-!MTVC34wI|(DH|0(#iwyHg!(m;AB*93oeLBLO%->f!LD2f1cRgZo-cI-GG><^(SjzWT7?2&x5BR_dV6A*oO}5x~l+oa{fYW z-ljO03H zDU8Iw3`X+2aT$#A?@i#oF}&7d*1;bg4u3wE{2#-p{lB=69fOhh<8bX^U6G@on^oEiA*476`($D+C zDE1ZCTSx0n?%!XgEvUA`f z+g36BvTbWFJkRpXhu=7&pgpst#Coqz0kWb-l7PB4x=7`?g z{1)C}`@R$Y&SI+J-PWEz!h4SBb=+PU$@S?^Fp_QUgHfL~UaGerM$!-K;h&G_z3T(; zK`VO*M)JGuVHin&I|3uQ{%U}cY^xD&w&T?TpEmy)I5-k6Z^M7rdJP=Y2JHh;xTHbr zRtm=&w7WmMsjYt4@U01>`j7^9E)5S$@NPf9I?7Z;gUxEU9S|5HR^be!?lfi?Oz8YDZ3j+ zZq4BR2=8f>wTibF-f#YT7|Fi>3?n%gAAk>9{2>^L|1gYXo;d;|IafBoNb)qoM{U1; zfsuUE^%&e_ZE_q&lIH}BBu_JpmsieMv^~( zksNF9DE;B6wtqXg^HDulc7e}1s?VgI3nRIgn+#uYRC8Vkqi4Two9QSwK8r;)z_JaE!)wwYp?q_BD!$|H$4}g*690+F|)i%k5k=%p28Xju# z!{8A|!}tG*bNxs-%gTn}$WeVhHVVg%>OG%0TzORcUKLz>RQpC9+;CK%$!vs!qdNAz zU*KQ#UWa##F>*}XEd@?Jru&ixXCKq~IS0-?7Vh&j^~rsK(6bI{i?lILu=Di#i63$E3D@#^3P zt6L+Cv8~>oqa&HR-mJ;Lc6qHE*!C=>j9U7kUniq(0}uNY*FGFq-1tg-LrQM`0`i0%e@>JNn70k-_@k&vb*7NO<{T0X*`^3`91DOcd{1f!|${&Qy-$-7-$ zU?lP9z)1c-{ahGHJ14_Pe#=XNFF3Aq-Gy-1<9hDy1|!**OW@0n>pA6eIMw`V@D;~( zj9dx#Jg#G>7mQ@=^oEhVlhOz7dtCcfI-Ftk$%F?V57)c@UmF4sJ+AFM49>EB48fz0 zYyZCy9&L3V17{!CF_i-&8OwLTNXGJ=@LjZX%;$65aI@IA+MoqsPp!S-t+oNM*T zgC|=(!|;^j+9#*N1=d!D@bu&14LkXraR&U)Lw` zTy$K2uPlaNwzirJ&pU482rjXGFNGHz*Ynid@WSJIj#~tmS^jc(x$V~qc%`+&DtPU2 z9bfC2qWnypTM75*-bDK|7LiL)pILcd0hWHuL}Ow+HePqWQiNbSF=o;W(@Vpb+hV$W)6Z$+uDZJo>K2QEOywLoM;CD`h48&D5b;$4DC7vsvre3r4br>OUTy z(5&aCi7=A&%zZGD^TH%Jw^_$*9vo@bb7d5MzByd^L))vpzrlaEvj2cfnsp6U3dfpt zEfI$|Sv@zyJDT;k+MRH%`Rm~3W}Ty2U?lBu5=OF~JOu~M`YxN-!u;8y$20}bXwfxK zCY)vd5S-nj`;`Odw&?mH55B)e=iUe4$yPQDPifIQOobzsCkhu?Ofg(yWlQ0*7P~(H z$81}1xYD*&1=pIt4sNiVjc{N&y_3}Wq|V79IC4^tX%t4XK71CQds5r~Uoev28DD{s zJj*c;e$`@LgI_8qZ?Hk@H#?h(pD{lTwgR@TQ`6~qf=9IR{ z4e;nw;eWdKFUG(~&MCLR*{3vT&Z%%2a{hAcO7tS{8?M5xHUBznfaLhzaVi`^?)XNr zMaY#c#=eYP%v|g|!pX?}H(v_2D{^_d zVN;RIpN7pq?td{du{R(WGYaeE^4y5M3Ay|?W1XCTH1<{};>TjMk;|Eb%{6}>HiF!L zZA7s#bma2Pz}A|-4x2kc{dw5Q$dwIaBgo~CVoQ+AQ;H4D?@c@v?tol9 zld#FiwPy5vYvSyMzS`W z22VHt3>b<32^h&*=t+3qDIM4I;eT7*UWH3e*)z;=>8bGJw{y?`KQNL!Z^20NEP#=$ z0p5m@`2P!+({}tno%bG$uM1<8bXMo%ibC;FO+sywj}1PwP3Z9gHMC z5k_+EYY!v2-_-$5Hh&77dRlX)!5OFZ+AR|vdRpr<49+^O?-PaK?9;mb$$^pFAGiZX zQ{CGBP8i9)+yx`K7QP!sa*z6VFp^{Odl*Uo90w!0uQeV<;=cz*vaNezB>5-6Nb*dC zk>tM*o@6n(Fp@gt!3C#v4ljg}tmPhtk^Bzw2pq9IQMkyqTMU=bZXa=&;$p-`4QdVf^=cIy|6NuR8|9gIaYxlK~^Subv4HZk0LH8v+k)4ex%FXR3$6 zNczmR@Ng?T0!Ffa8wsNa-F?yPU?lUy^)QmMSum1g7lLnS)$68FFp|D>BRslQzhg57 z&TiHFu{rR#R(*GGJe=FAeLD}nzg6!AJpfO(ZH3{2R=qz^*cxtwHaynm$^>jMy;YCV zjMi}K6RqLSAGEzZ4V#5d?QMHu2pd5cZ%Vj4>i9{GiDCov+{(87y{BOG_=j!z|93dj zs&jZ0e$Mvsukb8u+u8677BdGfYSr&e6~ixE{pZ5-tp4-ilGgB^Hi?70Qh1^H7r{u* z7w^Djt-4k(hml-&yaywh&)-#`_9*Wvk9ttKhY*I&Z9lW45h0yrEU^d2WO^ zwc33WcuT9EN4COWT6`spq;6I4wpP8byB*$PF+1VfRvl|~@c!2Dw>&rE)x${o|Ictk ztIj!%@G&df1UI+p@24&BnO6Oe$g?n#>#tTguy`+EZV$A7wu3taI-e)Ooddll?E)tU z+Luz`3xe>#zfqqH;fpQ4D~#k_r*3d+pzlnj!ARCcSHMWl5m&-U?$7juk<5*~;J)Th zhcg2EeH3ftdg3;Cw-2aEdFY~sCdp2V(JkN5@hyP7G@8O*IDqLd6 zs1#mk`@0B!H_-c;i{YhKb{Sk|{&IMEpx=900j~_~J|Vo;;@82kKQD#& z80Z>u4~%4<+zanB|9%*WzaBmq=sQ7&;D$iQMI+oC==E|7eA4>BDHzE-d>Tg5SI@vf zpzld}UVc!PlD}dL_sz;v@`IHr`SK3+Dma#s-{ozd2Z+NB=jC^qlyI@vcwT;xe187N z<9LQ4<^230_5A$BlM;G(X>i8*`9F(@V#;2u z+s%U`7wdjS;gXBB4yAC`rMlhFrNm#FFYgcL!I4YzYu&qqQMlyN{1@Hx7^QG(ca2Z$ zPTB7H`(EaEjS&1B{I0ETfOEU+e&xaUch`M+0RB^V-IqVZlPyme&hM`K;=>P{{}K4n z?ppuH;OX7-2P7n3=FNbSZ0iYlR`>kYduiv{@QdB^PpwW!^In3>tZX^_UibW;_VO*M z_u-hu#NkgY=cn)&7XKw&**$;Sq=fEX72II;Z-fJ@zt@94&_j`{u1 zAyX3q%j*K8585X7^Ui^j ztv)I6`BwG<7`gWGE~K6psXvO1p`Mrx_l-Q1(U12n+9c|c+vPjw%8z8B} zB`}h9xD?K@?cM>S-?vNb?cE6@sl#3DFM0}p2%C%Camm9*kjoRr2IlwfhR0d^k0%C| zwoAM!iVcvfk9QB8t9~z!806|7#RdhsEw2!cSUsa~5Xp~!!@Hke6fUtoRthh)zPAW2 z%dgqOc=yWT^8Ej~xz2kJeoybAk6W{Ilghz}P>KUvdv)xfFi;K>io)IClSq z1M_fnZh`On@*o<=x0n15D|^&$AM)&B_Gkl!~qp{wUL!h!ic zKkz(%M990sYXc*BH!T5fYyNg{2hU%2GcieUs^`yg@o8{R&;NXW!XU2~+}rb;+VMTZ zK5$>pzdSK9m6een46vAiaE9lfxUcOMUM4))^RG)}Yz~2kdj73f@;~*%;1Qnxr$pLz zB%Edb5FD}XMm;}*<|HOw8N~+AQn$p!9^PN@Bk^McB>v}M^f~d~UtuKv=V5fnmHiux zlG-O;;mv|kzxLFBHvA8Ze*s2goPQ4dlKG3^V$Yx4p8WrW(cfLn|G}?Y%o{LTDZJeLE8q{PTYKi84`Fm(2Xd~2k<@b)yxQ|KoqrAdk(K=zM&ggbanH~0 zK>iANy~S*RH+ufVuIwl9r{>=TZ}$9R7ylVtYyLVIz3<|8!zaw&45P1{zXd*H{Nk{==>!7UK{#G8$WwdLVs@{oYBV5c#ZF@X2PS|_(PKDOEDN0Z-Ik0{zqfm_Vv63`hS9dryC1ta3sMWb*jx3UKD;KLC46Oa7lvye>d}-WGP&m z;6GB}ksl5$#%t>b$!-1j-eN790;jgsvT1NeTg{&dk2e1p_%8F`4UcQ<%YB>iaBf@w zSC8}U**rL6@lm+M;!EK&^OwUh^T**z^H;$;+WP+(#n{{l*P6c$-rv^$`Yrac9&T={ z`_cjjmd9(ycyH(bcnxLK;jDIkspAlw+s?0WoCinR`4PuaxX5CP;gWX#tifDomBK+g ze^DkeULtLh=(imVr@>i?nkNKD5_MZqIF_jKakw(k@8#mF;MzppRvjE9`hRwQuRU$v zUi~R>YJ2sk!5QuS#V#fj&N6=p&TX&T%7Y8qYkdmg>FxcST>K0;(q8Kpg-a~H6pppG zy1|<)W;0xA`K#dl?X|7y;fD5F|3)~lZFwD-dpl^|lHjZkTK^E7-9g(e2hQza^@JlG ztUho_2d#4{9P429fom!-Q>)UWilK+_Vm%_0mfBt&> zaX3iwuW{^kq@Er9n<|J&f;)Hg|KZAZfs;G>iyf!H7j*QuI=&F@+EKUF4NmQ-+e(A4 z=%_ibgnM@M?{fKj!M!_b9s0n1JNo%9PdePMqt>TCoMUyk14go~JK^7%|M&1XtIv42 z!2E^q!~g5&;hMrVJLo9i+=`&pwq`}>-`z9DQbdiOyO#p1WZl@?P4*INEM zIItM63w^SSKjd6DFTq7!bj?r<2j}Qq=bZ~D%RYKu3jI07|DB7^fybrzBQ9fnjfaEt z)bE{7JDl%Nk~stpQq7-6JEZwvPh?Img=1;{?T+JcV1Dlk_)34}4E$bC`eaYP_7ShY zmjb8u^dEeL6-*l3x2OM4$LVlJPyeb%iOGbsd-@$8#h(M`_Vhn+W%J;Ip8hDug>a;& ze~IHLT+-9u@-SQq$9nq5AEs;^uC#4c!8g6ALkUA&9$-Vr4 zJ_M)0slEJc$7yiiUVfqDbhuwH{~X8t;Yct4T~{^=7g^b2c%H?~hZpqnx4HPY;WEop z4hL4&>kap{8GawhnHvoQ-gEx*nGn__W2Gfdk9q^`p=9^Z(e&oG>1~ub=;%<4G_Qe=dx~p9dH8 z^WSzch4A!#K8s)Gb9h!i{}bn*4Huce7@lYG^WlHYn5mvaXEM1TK!SBEFzr>qV$;S%$g!V9dPZ^H}CzX*<*KMwD( z{oM(FXZ~tNdfM4w9gfuv7fZz2#_B{mWnm-SY z4A6Na3I_xHyPhK68^{oR2qzEJ@sa{}9jN208=PS=nQ+!X9h)IIVlh#8-as9{ z^WhT9Qwo<2^ar^ySPriosN;7P95a6$uCzQ=@V0?ECv1n2%n9GXwH8wc2j=&#;(F>T zf5d&{9|>P~mH)Kk>tQs}aTYw^o& zVtAhAoDaWd`~EsyGDzpEQurM!`z~B&ZB-7hv^uPU*IN8KIA%HH@Fw$bhAS;k6v;a)1T^|kw}5NX8KE)vYzP%_q3e7;NF@3XDi$E@cO`gGyUHe zaGjVAXIM-oJS0=E?|ua%+19V&q2?b3BUxKs3nRJS91bI?=Li_db>c`kuo&-Z?)hBp zZ@tUoaY{J*YAu@skGopiVLY5?{y)G-^867F%+W_in*SKz z15bp}v{MOJdF^2&{tj^RU_Wn3LaLVnrw;c2JC5hu)8KjLpARF+`EU5u!T!oqT&KSV zmzcj4US~N!8tiAGL3enUg|I=){BgL}>QD#oxBT_+LEG*jxYhgtjHI645cpTN{`oaL zRNKlMMxBTGmp{SrO@p(B`DbUqAvkxKpXdB}aK!vkxMY~0Jcc!GDI6Q-9~lkD;o4#T zvo5|44lKsImi*WHYhBJXIO|&f%?ZSZ;K;RpmWz+VCD-~(T%J-mW-)QN_F6yY;_KkR z;=SSI9Io|DgR_SF-%Fk0+~HcEJUBAkf7+Fe!bQV1Pcd9#{!(~>m3npo9neqHy*^QFfF%ET_+HCD0Y(x(5k`{pKKPI3zaM_U{C|Qc+qS~6Z~iGTl6{}b zb{|rI6dNF^a{>IQ#Xm+2a@&n!10=`dad?`=Oox%=oB<=L=MylJeR&do+Tx#qk@U$3 zj3g!smyFW!QVIv7bj*4;!Z+#f7v9bErJMb+6X>69;9#`>)CAW2-WYg{|7AZn-fv+H z-r~QR!Si5waO4*Mk>9ty%!|UYTl~=(JQop%Yj5!%a9jrmxA@OG_I~RJzx>w!!xFiM!heVY~-otT%<%R31NR@S?f`rNAL)+iji zRqvm~;Vrl7xp*sFd8@7;s^HpNefb_>9UR>1XRUK8UE$_{{0qnq~z!boDSf|2AL1S9chz^La3 z%ww5s3rXFu0h0KuVI=vlfsvFQ3?qpd0uR@+-UxW4#a{=bUL6yMde_59@?^0sQ(wkuBc){T+UFtd5=6;F7Wa#1DCvyA=Ll ztjrJIhww`F%gu+Y;ML||1Fy9_>)?;f|1lghe;h{AZWS<+W4azjaxT~aBRLiuVI=3N zPvB22W)u9G#e5DUIbK^}BssUjUs`-6j3j3jj3nn*@DB6ugsUyS2L92G-5&TS^Y4R^ zo@gIPZ)aM|5137=x@nOvw#Rf>?kH8JqK8-MvHaQ9-iTMRS zVg6{By~GUek9v+e9E?k4NhC0Gx(8=3v7TS|5+Hxc3WX2^$%bqe(yHM&TZPS zu7O9~rswOCxA~Fl)E~tL*PA~JMzRhG!6mn8-!6s!bDJK!w_qg4WdV%jn7$1o*{}bS zAGw$)Hb4^dKX}n?TDNy#BzfM2k(6BwBZ*%EBiY}jFp`*MFp_zrjBUNAF;Q&rzU5yI zBPqLrm^JE;Vgn>)*TNrLObkZSZgKc~Ylk0TB6dN2de*+w7JkMgmx&9AVyYpin zJXwFQ@xpMvzw`mFF+HET*Y`8;=Gr{!c#2*lM5oaHQ~X;x@q0}vyl{&DsN+R&nZ=aD z!4&_)>)h|fQ<>+d>b=A~I5Ji5Lq?tdLGwR||3SaN-JguYf%(0MXt#&_>kqQ72*Htu z{L36i;gW~^|2Qs%V-NZ353+uU!?h3jE%Wi$!GV?a3OE)8e$>UM!C3_w6M}OKG=Cl( zDbPGoxTL`H!!e7A!|l4sI^+b6x%xI4ID1dWCGaP=A9zJ3>TiYK!|)^eo1^zA{HSirdklU|b9#@H z|8b3p!m-CSCJqOWTg)`-HcfMe;K(%nT`~&CrfGfRaP2g$PaPag(|z%#bL}}@^QXXB z(=}%Zj!f5WMd6a^nzIy+S$rH0EZ&;|KVkP7o}}!P`bth{@=X7Y&K!#r_`I2ZcgN?$7nuJ-xa&-R^Et$KgOTL91V-<4 z!hb2;eWw4HPUP`u7W+N}=WWA)q%@3;EY!#`V|127utj@LmL$#FRZH&`7S;bT_MCb-%1x4@?@<_vt+ zjzudRSiJW%`~I~3E(w=Ct-slo!?CCJH@i4o`LzBXS_RiWt-smT!TX=q-~Q_1hNt!S z(?+=YY5Q#s4xZNEOuc8|XY`uIi*V05;=h>6eV#%%67g5w>+UbXvm*WocduzSTomye zT}&}NFXAtAJRe>d@n3QAi{Ql(ztZ`az-1BtjZXZJNjdyp#GmT?@5AU)mvcFc#J>Vw zY5rAk%(fec8?0`PFq3{oC!Pmm(hu%`Uau1$c%FXvyx+HXn~S_KJjMJ|;Rm1B>%@oP z>E@pSzwo@@p%2%XbKuzXe&Q*2EeQuNXdZ74bK@M%p9W{m@t5}^CIn~C(U=^#V2)m& z7QzwpN8yq={_eiSm%8i!J98xNMI9UO!^W;gwc)6&y2v9Ildodn4Rz@h$Ml zBLDe5Z1)u0YW@I5-#fooOdnXF`yN`rwd4YApE2C{;E4I7@Lv}A_qcs|4n{9K z{ws{6FFg;xut4u!%z=v*_|si~D2D%QG5>=XF3@&f1S7fc@eaJ$$}WM+EWR9mZ-KVe z`|xs$Spl!Ln04^S3;dC;J~6n~>RAWxS)lv77yilo`{4Z+Uk?Wh^cZ<>bN^?dwn=0m z=d4A#-ENC$pGE%18N81(29B6N3I~gH-@SKe&v&dn;gWZ>Jxk%TceJ0B!^_{%JS*Us z`QvcqJ9@mT;9AR52L~48y~{c7UCo&ZXT7UALvZf9{=Kf9^WcVewGNHWzu5ZxV)86j zzqf?7_Y&RTF7UZa^q3~YNRDX=oM!$jU?l!4;hyI21rJ!_cXDk$5JqyJ>M9t?+%*W! zFn=aIbcyzjVekm^kAz2?e++!T<$M5sd5O+Bb73T7?O*V`CH|6hj>UW!6}d6^Zx~6; zt1yx}yavB+F>k?wEM_~5#QzP9B>r2t+G1*8^pC#WGyEP#GJb!6k?i9x_>lPz z!$|TRfsvGLfRU7Kgpq9bD16NPP4IDxKLMXK|0(#i^_eqputdkTx0HUkRO=9evzKar z%Yk#3>bS^*BNh{dpId742K@X|9kYLfXD!u!I2(RpsrIWm@QX|RR@ZJX!7neh{s8~W za=rq;wp9D`>+l;({VF$yzX|_msrI+G-~|@{HvC_!+y7uB_huKuNbb!pg5NR!yD*ab zv5R3O^VJe~=~7?Xb{V{UskZG3c$L*>HH_pKt%29teyxLJOLY#6!yA@rdv1g`Svzco zk&L^~;Lpv!1xDiE3L`nzU%=a}4%=ZQb^d0lA3<(xMzH}B|F`gu)>eC9B>uhd&z9!^ ze9&SJ!H4a59f2FHK874c?jHF*Z1tV#zndE$Cne>M!Hi%f+C|tD6&V9rbt3Qej=4!n6FZh*Z+TZ5E z^DXDU;a4r@H5f^sd>wwnV%~(2^urPuNgpnS-?n!CFZ|;&?R$G*ByF`9Msgni2}aUC z_rd$E&h_x&WjfZ5z(`^m;9!~dbFYkhK4rQtN`O0;X}fiSyOwEvy1}VsTF*4Nr^WYz zhnjyFJi_8f!dYc{ehk5*h<9t?8{yGq+74sje2eknDdwLF7g(M`_zCkr2|s1=GvNgm z^EO;*b*_TXTHRV8gxS@Zt|e$LANb(NomT-`$029w``c|b$8oi` z!!S6@{2}HRM8Sqf^4}-5?qx+tS@f^&&+{X7qzyhe{*7%o_&^G_ih zv7Ax(*)>|XzpU|3BUkneHbAb=c+bHx%Nd8aTiI`5B**$&c!zCkC%oTc>R}|;EI-3Y z+U)>*&|(h3Nb($pk&KrkFp_zx0Y=gf8(}1CkE1a9*sZ01fdk9wt>yRAwf+w$+Fk0k zfzikBwd>|3z&+M#`&DPBniTeBD|-7T3dB_+5Vs!K2K7BRqPo)@=-&Z816U zILk90F0lAQxYqo2YyDj0`a_=M-C8ye8$qr=M6toomh%97aIGGTLom{|f}1U-1wP3> zx^_4PpSJCufzMh@D~u#2fRXeWZyo!-&iWplu};r-nQ)f*LvYDDZMRZ5w$9ISeIpLn zn!gTiSm)pB=88r*SZ8zlN3_Yunt%Mq_+y&Ki_=fyzJGn&-d;WYbKL)-6YtXx}n%2Rw(B?|Aa@Vh&IJ-lFp-)1rV z_6F8$8~nD5+Klx62QS>Ky&l50LE3voN}Swdozj21wff zCm2cmK792Sj}4II{24}4hXdq6E1LU^r9fliiTSs9e`F|lE zx%^RVfF%AHjHGT&Fp_N@hfkQl8AijeZ=310z)0dx!mU>4fc!|>85?+;G^WiaKZcw? zjt!9PV*-pMXImIa&UTyp2$DS5pyMX(OPydOF`Z!~_3Q$lV=?Da7P*)xHbAoP$uN@b zrog={zBi1d9s0mX^7n<)t!zISNj>|+1FY;o7)c$jf~Q&8=`fP@Iv)#=$Kfvp@=(axE;uoQdn0t${LCpN|Eq-f&pZO%f zI&FE7`P|#e^I%)G-LhdMb7>BI$5w5hJK=jQ=3aQhR&9rgFp@UE4?g&Xw(X%WIM;un zbvpthX}1O#$(+^*BWeGm@Gn;O7>vZ<1fTdq^EbmtjztT6+Tzc^XDz-J4!+R->3vBb z{!-5u?cnxb`fJ|d9MJ(ravn*7(X;Qi$@DtH{ViqyJm^cUX9hgl{A1wztn4KC&*q;D zBgq+tk?dnWjKuH5Q!IWeTxkA>;m6HC4SvS_5g19Gqi~7kEQNzF?buZ^ek=Vi7Sop! zV05oLFSLa_RN6kmoh$uWoq1oo3*6oOJ>V-Xz9)>Np1t6kEBz%del(0E=NR}li@6=X z&-{~MBxQ5qJoEnn{!f+q->Tw1NtHi&G41>=ywv>5;Bxc72Y+Dx58;*OUj?r=|C%a( zm#^}_qHa-afMmOCVI=w2!ASfc!JnId3w+4@hhcQ0Gyj);1a7vN7C5jN?O79Rjkk8g21sJ=fsvHG7rx)(AApg>{0T-9^Jf^zv6u`a$sdNNTl@_8 zDf7>Sk+j3pFp{#*z!8gy!ofBjJKlCb65k;?qu2nw_b%)33V8hvJx^`e;YX14No;^5 zW+Q&&>J!BVNVfF}jHGXTN(_>VE8$$Yib zmv(3eci5@^Bsg`a&bMiB&z-toz2LqUlMWBqsoNR|U$s-OLkGcG788OamM03A?9}5` z3deTpIXAwO^^(Q}*dX~kjY;{A`&!@WeA^95TNk8;qB=J+=hs<99Bk4k`vkAl(#sSTEvlrAmZptNA= z22Go8T41`QK5n{iHZ9G2<%dwBuxU!^0<8@3q)Te9k$ab3gZb0edaC;b7P2DC&c~k4PWv^YdsN?0q)|2fMa! z$5Zs!RQyX?eg_Wr-W*GtAm<8^KG<`Oqx>#C7wJEw?LUlzZ9fwSJEvJV*kiwjgRS!j z4z_PIaIo_@llH%^?UTXB-LWCk2Yc)jIM{K>#h=k~4+nd$CHVKW{QI;6QXV4x=k*$2 zz`^!&6%Ka&tfoH5xk985c1&Kx!PZ%W2el6&9Blbo9BkhTXa{UNq+hIkTZeN+ z!NJbOe{rz={2vasKfU;8TK+i>wjCb_Ti;y3FSz$L=1=&abT9gtef48Eo-ugb$8M~y z$HBHU;Nxe4AoCI;eX!*N@xgj*JPvl8131{%?jiVeEq@4KtMvlyw^_g^#`Wa*{Nc}uAsO2Ft402r&(${h`5eGXLU#33T>mvQhdanCu zAEZ2k^yR-9b8|lqb`4D7Sdi!N5E%yf+#o{wT5hJ|V6W>dc!r+$0epp)ucV!z_JQ=l z)(_!e`?(e`((+;)Y#-L)C0bsJgPq5haIo#XO#AD#ebNW}`9>KIc5Q6H!Pei%wSv8N z(g*uqqa1%t>uke8>X_{~*#7(k2iu3&aj^Zbq7PuliVTAs8zFryH`VwKZGR_zRNFsB ze?a<{LHZGG|2Ph|&nIxO=c>oS_N@U2TjwMWwx6ePu;q<7*!gXupYOTy5b1-xmiO@w zw9Vh*z8-7Z@HYM3Q=f3(ed2yEQvmlr(eh7uo%+=Mo~2}b{HN}BF{R;?K6Sr~X)>Pv zsr$WB8F=QW?sqX|;d8Y9Tzs*X=i@r~^lpSu3+#lxSv-{};=TlLsB zyi@zog?DQodT?KlH5c(ty_PQA*YCX>kKgs@om#|w5o5e0NL?6pZ!(z<hzGk@V|voxA&30mYeG+he-=4Cw(Z%<1>@~I6Rq8`?1E0g?}%Jx;>7Jhd<{A$vjoUSuEXgYEMm>cI3xQMbpCJ}i8S&-`yNUNcO}iyGTPwt}?NMs|W+R~PAn z)G>n@w|LjL9?}P?ZvxaGqV-81?D!AGhiU(Z<6!%9BM$c1n{fE9M>`4h6J!iyNIy~A zx!HK_Amh+McEbAa(l^rAa(+7Biw2o%{*}+`h4~Bk_hr)8a{i))7lbDn=MdQ|PMdwC z4|Y69GLNuyNz}aoau`UR;ba2Hm?V-T;Fj-2rHv$gkox?UEzbvgUAN++TtE5E1RlRz z(%bY5-=Q6Y->%p7MI7W>_~}Wn8|<1SdqKvkkL34HdSCHaZ>c!getwDT1?gK184EJ+ zapXXdb_S90S{@*W!O^F<7P3mqtI06Pm_*2C`00|U)E4qI+^`_(jx*$0kaL|QTS3O5 zjr76(ebPH{kTEf1aoDm5A4fky>c@~%K-SV!G9BdFGstQ1n}tzn)5%_tI(=mHo$gv< z$aIjkkwIpI+zUD6ERep$T-K4@gU<8YGS?djI@M0}E4SNv{IuL`7})nq3~AG*kHu=7azT5j&cLGD3wKR!kKHWddu zR$swk&jRkvuhKS1KPQtu*maf88U{IUi1Z&Y-j5dY@0AbYAZy-C!@=$q)0y9gTssl+ zG#q>;D(wu}s^x9uMUZwbk-nCjhjFld%Vb@FtiwTMJpB0?#)@2}<*Ugc$a)BoVURvV zNFVGP&cea2`L8jjAmth4G?43>PA&#nGx=l?WIRKpujS?u<_=`7#*hgh?Ie;TK<0EL znFKO!$)pdq4>NGE<2jT0`nt{+>4Wsad;1-agH97M*$ zM+;a3WCBQ^6Uh-E^FESH0-2*^ax}roAb$B zc>0;BJMzedAp7AWauY~@Hj`UHj;$oOfn3XWvI^w9)#Mu>^Y|uN12R6l$lV}y_K-(G z+B`-I(q@u5vzR-ub4Shsxvtsd9I#_c&I4Kh^T}M0cJfFM zWS?0=t^ygW)npY&->S(swERu72ISaXK(@ksp7Gkqi}3t{s0o+I%OGuDA^F`u zwoVs$6=cm^BfCMarHAYV`%FmsV6S&J_XWs!#*ncf`)wQ<4|44Rau~=yFq}-$@>Fsx z$T*B6$AcWp&t!TNK<=Z7i6d8i%ayMtgCOS(k%d}bM3z9@Q&D3}$#TefHtNm_auZ1Vo5`&pYrc}K z0@+Wh$r_M4yU5)jW3q>=)$+aMevolKK-Pim&xgpvAoF;H41>&FgscZ?vw>^`Id2nr z9%OA_AX`DMw~f3AGCr5cc93iDATNWobA{~I@*c8R%lk+lq#ZMdF$DXZK*oZs)i`n( zNS)zi0!W=ias^bs0NZ&4ytsrCG zMqUIt*CnzYWL`SRUXb?tNFStc<~#U2w=bFbj1@?mF=Q;rc*c}vapZWAF-apQY58Q5-z90=oJyvHoHv7<1~S*v$xM*KrdbuEbbso7Gq)tBR!3WIO5^|}QFC(7?dG=dQt^gT_m1Gd)*brF= za=k@T2D1K3B|++!k>w!kt%BSNaxIl)709(zleg*-=gWMMf$U2ZYJwzVX z@*`vz^4B2k|ArLgbEo%6LCW7Jo3*@!JPmTLGvs-Yal1gaYIz%Z5oAqX zBHKY;A3Mm)Ap7|hvJ+%{y2z^_eZEF^gVgCEdqLJ-AL)aPn|T6%+FiSOhH>y*`Cf8A z$USm^tOL2mL*!wQJ|7`{u~A3ZVH_C`a=igE38ejGauUdOO(uOUH*0aQ_j>_z0dl|hko;W_ z_xxOlgS5ln_3-#x9(E1zw>&)lmWOSVzvbcaw><3nG^IG$KEK5M1=40783eiZ5Lu_? zhsZEU-y)>1<>qA^WX+rP%n`^n#*qAd5WB`q8Ra0)#xdk1khL_KoCeb7bkf&yvw?jB zCOj3DmO)Mf8LR1JCdf5rktp0J(Q2l9RN2GMTRB8RRsOwK1K{1R2{bat28IGs$d_^X8EAK=#l1 z%R$<&Ah&|-QI%v3$awA|_k+BrJ3#U`S=<`<5px03 z&lvJB$lh{<41_f{e*BG6>TD5LpiP zwURswa_l+M|CO$j!>mb=@&lv~wm(Pc1IYWk7}7tgV}1+=yPt<~kbA^L=o`p-$RIPJ zf`5<5BKiA1ZcQHNT0rI^k@UgN?+F}iJM}oo9%34Bkk6F(8$g~9cHN%B8?~QJ^b_nl zBzr;L3-povogla7e~p8TgZT{(@^3WeJ^nw)^)4cPkhwPR;~!|>ev5-0lV%)jA6i(q zAmiLc_JY*uBYiD5AL1bIxywZX*ijn<%whx$o`W|@;94oebYuiK|YI!A=5#wC4A0*od1mfMb|?+=LLISG81HNXOaG2 zwVl7=uqThtk8SekZZ{z&x6#tK(>PY?3%m?(#|Ea9c0`($jcztdxh)-Ikt1(<9E)MqIc?w^w=gOyV zPrJG3BCmqH_FW^pLFS@|>;<{k`bZz_d#Gn{ka6G@pZ8qa<`Tvh?CUQX3o@Q@q_5@X zd(;6rHinD^8MiocAjmy3h)eR$Q^1@Sy8ic(KFD*RDPk`IS(5?M2YFv_in(5pKE#l*AbpD?lR(auOtxxy z8`%!Bo;yfi%gs940V$6mgC%ZGLu5V3yf=`(mYY)iCC(*l{$-8@+2>e6F|m4ksJYX&yFOMK-Ow9*$Yy?kMzM_ z`)kY#*n5qP2Ro1CFp&Dg$pnz~pGYQw)JZ1OLDoqIIYY~5lGz~b=a6$i=6xe~Sc7x1I57`USpFYwDIo7<+n1HmOOpXS5o*zS|fLvoL z>1(;EqMsmR9z*(I*JL&2VDA?)9%M}h$YJ7);c(IiyJmJodCefNO)cbUknuS~o(1XW zInv*$uU~KAAa%@}>@6VUe1NP2>CYiD46+YL$a=8*49VZ|bm#pUua7mZ{rAbUApJQ< zp4ajVWGl#Aw2|Ff-b40+jDH`=-vf1PeizRnAg{%%$skCb5LpOv?L}l5qz*rK;hhEP z+d1;QmR}%SLGGP4vR%tN$jcz}c!liL@-Ff!$TRRYvK#DNlf5A0-$(i&>)iYt2Ya9X zg82gbzLjhQx!;?}_dwS9`(!i7I%y$WLF%-T7eU7766tHX+0Fe3GIw!gI>`KHkhvhQ z-Ff6vEnh}H3o=&A$)J{p$P$76my(yY{0i9#vR1puZje2#hve_Ey7jz=K7id5NdGO@ zPxCfjt7~a5bwI`^jyw#q&m1AcAlDlqeUQGHUoy@h<=4nwuxo(y!H(@d#uKDGhKvOn zpEz?!5({@dkSQ1JIHRZ_Y3K3xjDf&gUnqr>4UUm>T$65P6Oux z>3<9v4>INfvP6(|ORfibE-fR=LFTuD+yqi*Gr1LHoGZy~TE3lp1EddclC@gCm)s9> zt^;Hp*nN*Y46+7}kYSL0GD6ma)NddgLC)JmHfwncc^c$gXUMZ4V|b1{4|44nNFU@_ za}o!+E^`V8Ij?Et{slR2h%5nVvy}9k^uGHw4)*&hzrn%I?|ZCakoG5%lR(CKGMTRB z8RRsOF`Q0jg3M_aIRm86Gs#sT?W`t)Aaz1yA;`Ik$P$4%rBViR|CW*EAkTgkq~Gl7 zm=@+5xkWCF-oC6ZG>>Q5!7fwVcD%+>Ndav{hXSVS(?@_f<*ncpR(ujS@6 z_w4W8HTID{$k>`c;2^K*<}70cGCnb6EXdv!M-Bw3KZuM6>1TlSLHcjb;UHsZK4SfY z%ykQS5oBI2k?kP+WCz))4eI5tf{ssC5QYVfa2-4?4WIV{+ z1xWr@xSbdNR=Ae{vc?igAEZC#6CCXR_9=S;$UMGD)_`2^E^;?W`+LY*kn`>(>pTD*rf~=oPavR8eZ6~Wh=DM2P z0WuCdNkP{08{}>+-$T}dw7Hku57N#7vQEnnk%vLn_7O4+vUf$u*h}u%IC3CJok3(g z$e0Ak1d!`ZBy&N|l}9cF`M3K;WTBQ9ktHCX_m-0DLHbihmV=CE1z82sPBmErb`6lV zAa(YVKG@f(KQnhAeTX5uLF)IAz2fw_kMzN=+rQvo@0WIt1$!(R3wAw|13^B27(~W{ zoGU;M18HYCnE+BJksJZ?>^G830@-tt$!?H3J){q|4;`ErWF5wk-5_hPhxEbL`77;% z%xNMy9%M|?$aIiBA%n~Xsh>wK1iRkI#US&TPc8)+lV#*tkao_I=e7I-*$T4PwUO;0 zYqEpv1*zXh`XFOv{)U4c!^>O?$h^dmu^`tHM-BuT&p~87$Xo=-B#=7EVfE$a|J9@+#QR(?}m=-p#+*^Fgj_2^j>Lmk=2S`Aj%M)`Rq+ zfjkXT{|wm*($6-s6QoWT*$q;shwKHJ-#*gUa&r|2do9-(e~>YWBL{*UJBW-2yN1c` zf4e$8Wb}VrKV!&Nkn^^Y7eU&*L|z8D->;CJAnkOKhr3<os$u%CPVD#G9B=U!*u#A~#C7rtN158#)z{0iQ!Ex!dHq4h`N zU(oVf@gzNOGJc!3KMEfm?R9v3rZ)yp(ehM$thO@_pP=nb#M8A-2JUJ368wAG{`c{v zTD}bbf!6;&{8_ED9A6RbepYBD{=C+I0bix(U5y8|JcO@}cKdb#UL5V6;GQz;@Ry?9 z=V>qFHPPsxYk3du zYq`0OfAhM|9s3X5zs`OC$Mk1i_4j7HYFJlze1FgW9oqmttiPB0Ys!b?3H`mr%cJf# ziTGHpKMo(S_0#YPT0RkNn@e*(|d@;rQTfA5v8^erD>s^!b@V1KXwY;&Ut;ji@f?t6_oTkymEy%)Fe z(^E(Au$D(~U;A%jJwGbeEBqHfnbi-6q|f-BjnT1Q5N7kci9%#E9DO}zLJQdnU3eSm zYq^QRV`IId1N_up9DaSQx3iUdZ2&$n)_cE#IUR(j!YKb%x+z zj~$AGtv?KhwbIUT9Blt@#KG3T2?tw00UxdHkHNwA^L89;{V(DvT0a#B+y0kuu(3_}zN0d+-U`{zQC|wmF%0?sI(zkv>fSjNk8f zf2`L&#U0y0`e4sH6^C28n6IzkU)6Tfaj^Z*z#q`-dJvzc*FHVgiv?*XjvNm%4ryeS zmRFPhL)zzu@k~8$77n)kui;?F@DUvB+|9rr)$@K6pQXpn<{IJWFY)iHr2m+<^DP|g znwf*cw`5Ju#lgP$KG-&&!NIoU;osLWU&`2mj9ZBG!Jc;+{;bwtj<3*uuEfF4*Yg|;_E^#f zd+ZB1*mJFl^)9b=$6g^jLCU*GU(3ylIM{x!iS^1s`d>kA1-afz(${hm#KE2`goB;m zwK&-EEWp9`p%4dY#}wgU>lfo-+gXQ~Xdg;(u+K-Sv*y}xpgRK+B!5$mI!S?ew4z|t-9PF|6IN16PIN0kw$-ID_ zYtnDhV}Ff1!!?c0ZVhaUS^ z9PGLNhJ&qtIo3N1(&jm`6{O8J(${ix1qa)QzvE!r`3Da6T%9=B{&eAB=jfj}*g5(a z4)(lPxt42g?S)7m>}%h@aj@g?9~^9(-T43X*j^m$T=(H%@3qfxu>JfT2is2{2YX%< z$7|dGZ%01A6FXx7d&mH9%PhW^62i*|c!%>@V-@(TTIV(VCtChGes!Qb_S!(68wa}j zJ-DysW)OaZ_r2%%TPkKS&o+a-ryr&LIQ;s-p0~veH3RU0gS~kP)ER`wYn=d|FxY!^ z7SDBwgS{}w^H_xR!9M%ljDvknyJfH!3(|fZnFR0u#*9iP(?QzLAhWeRhs*`(TOJt% zX){EYL)Jy}g$gnZ@=O~ceX#u>frCBoNR9<*Cq#xp#w|knV8`|gIM_blN_~*_L!=M( znK=nh);4d$Q?xu4zjLtni@+ur`KUd>m>%WMDt-l5bTR(_{tslaxv=7yIt)6!;9@hRu z@MdkZ1wW(5{vL1DW80WhkT#Ra(eSV7QMZgC{XRYRGaSAq@4G+8eJwZfc)YH|fajZl zH*o;#Dhda_%Q@Qg!yyz!c{C0$`aJW;;MWDbKgLDfW%}drVl*C$gRK*X!-Z(x<6Mt} zEgyix$FY3xaUc%1{XzH*dfve}*!uA}*!~1?u=R)FNm?fvhZ+6o=WRHQHuPr{K04s7 z7%1rBTV3V1UI(*DCZ)b*!MCJt|XZtgT$IN0*91^C?v0q=p>sCz@C54QXfd`7@qc^${j z#J{fP-@vm2-mRZA*E#qsJ@0J%F|G409Bd!v;9%>|#lc?7w{fuN`VJ0%?oXfR;b7~` z#~%-PyJej`fy2zt&AlcU2U{l(hui`5a{&$)Wqh8*VNXAfU5JCNzX*r7Vk!SFzF6z$ z<4;zt~>$w33d+(gY8@0R%|F!n{H#pdP^c0rws`^nldiXq@m8(VhJziePjIkpeu{&g z-;4NPv`#w?c0F|9f7NyJHyrG-mvOMiUcs+w`8E9C0k7b5#_c~i*!9_sgFUtf@6&UA zhJ!8tJm95+tg#Hz2iv}ngI#-O2>aL&w|-*q>xQ`N>W{|`adRDqU$1or-~)%aIU0oD zpyh*c$n;sO@%W8eeiNRc?Ihw!TAqx9-7{~)$KbMlZpXo{w=d!ow0t5yMf)}tPaopN z1(@Fq9PB>!01kGqdk~*C#O+1Xaj^TwL-^P9ypQ0sw9VQ0<9h59c&;9shl5?83vjS& z>`8p#5Vs~5;gETq++R4@I#1z?wN5_%te$H*zDnC%jjz@60vui#&UF>yVAog?4tCy) z@lwW9_OzF9uxsOG9PBl&$HA7D;pN&+1rD~IAK_s4iXY>fwazOz*tM|*-#WzYMU^otu@DbjF(vBI4 zkM#C^-jDJx;9qd(HMioox;9M`p5(2!$0p;+-UBE3Y}VX{-=@co!bfSFqw&$+Ge+7U zgQsZyR6JG7zl49uUAwshzeC#@i;va%JxckbUS<^cyZI(QOY6+${nTu?hxEg5nC8|A^W=DM*3Sr z?)_sWUKMh4QH{S5a{K?AcumN?kKTpv)-l|J*Xr2r#rKE28)Df158!or?T7HgI<`mf zu#S0zem1%~5wadu@ch$2`dV(9@MayK7W{O``}q*Y*_?)%g`C-(Vi|4L& zYakC_yw;6dKJKk`>tqSORO>9mSFCljR)7daSP!kT3(8mYac3butsik+e9llwhC#+5LSEJKYh<^U_mJ~iUH$oF5Tt&HJgntM$VM%1B3re*jcnKQ z4${|h(}uU}ICtQkI-XtlRqf|Byj%OUNp$_Sd92rU3m=Yr)&KTJX`ydgU>3k_lTK|&na;0XD*)W+A(?fLao0DUtHks zk$ik2i3hcQ2rnscYpE1pU*P>9hJQmWEAYY_3hbU4A^mbKufVsu za#M*{X@9Em8tu<6yv~h@IfNh6bA`EHki9g9^uay<;PrZq4S2J**@FLG`}_xv1v_q} zf40Ew;pYmxc^?%Wd?(-L(@T8$s@)Ceqh((}8#D_;lgjI{rPlujQtY z^;4*?DR_LLt{*(1(5;QcLa#Ha(C)Wgq!0G}a&n;;3$k~`k?Amy{XB!r)bcDcsO2HD z5M+NVB7H44w-tI}7(6`cz6g01wg#7 z4bn~z>1(-3#mDRQrs0$HdMD%QTAo3lAv2oK`p6QH_q?T~ujS@}La*-OLVF(_BEukc zB4i`Tu}$PzEk8$gg4}mqq@Sr{n}ugJ3R#TRRT@^P=w`|seWbh89ss`Z!Q z&lb8pc{yI9<)!%gLib*#3@^|EM z;0eXv5Bu@ll87f2yVvDpd~~sEe+-_Y$EMsuN=so3r3lkq9V?)7CV zo?h%;Uo!B_Vz*Ya@EO|XO#B;qu529a-kXEZDz@v{%*N*wySbi=&(l84$8)tj4_`?8 zGB1m8u%ADC7hkO9`S=R$=Sn31r;{iNjotxi8JZYU9!(=>tox86y@XU2?EoI@~T<7lDS@@iF zZtcy*bJw{!&BGV0b7S=+{@r!%wf-r5v6koKOSM1C@D=OaT3U$**SR$r!b`MHDPF$L zjb{bEX`Oq|wHe>4ZC2t{>)e=B<272oYn_+!bJx#Q(%-NBKY-V1{}18eb#B}uc)j+a z0dLg4HQ~+c+~T_rqgL+`PnJo0Mk+pD%hT{lC2sB}z2|c98N8^0Jm+Av-~ywYtcwaB6tW)N7;< z_FScSd5ODEEAUP9UtX^_<6Cu|RN~w8+PC9XIwsY4Sl3SkZ`3hw!kcwWTJW>f z9DZKM{{r5s^U{W2EOGn!CA?k7wgbPc=emM-Y9G4rZk?l^5-%R)87x3{epX`ljV?0Q zcja-U5B537l(J^Z+_k5cv1ZELUXg}RDsyu^8J|+7uTyw>nd^T>nYVvB&Nv?+>p-4S z50POlkC2Vf&NFip>1(-psLYFo-T-q)c7u$659xz_?RXdmJ1?1KUMEO-7kL%rIs6*g z4Kk-aq!0GkEIhl+?b|u{9KDvgc&@gYhc7O3@89$BrDbm3m*Fe4&Psfhwz(P)mU-8$ zWZj1F63S&BOYw4TzXIQ?V_1n-mFb>|*Oa-nvJ*B&%htr z;Kt`+JX7mr;d8Y8xp?jd*Z(|xg_f_xS8Z^6-D*6jeGB0w+W%6#T+da3Z`Na9+2F-) z+2Hm-(%-7(mH4aL&TIJV+J4mruNN-zn$k!5U_U#m#%ngX^|=eL-Qb=%_u~6?+z#M% z8{EEq2tT~R-OESt@CNr;M+9%wd1=Dm+u&aN-p8Bir|fkt_-XCu8T{-9&whq^4sX@| zwBZ*wxaZYNc>4yoKXl-oI?i2q_XhW@+k^W$=4K=7VWXRuI6Qu%o8JJQu+d#(B0gfH zTQei^q>XN!B;%tux_f-gMlXJxJ2pU;fV_5;lH0U=J6Q#?CsdO)AbZ6wvJ+%)=_0#9 z_NX4x*K%{`Mlbd*cWfM)J>J#NAs2(RnNJ3_JVcg&?E~4Z!jc(m$;JF*!^GP1QaHG4w7U7FGy4Q<*e5sD-GW^+% zZapu@S8R0m=}J7P;~c_ETz^a{UarSh;9EDkwNZ(0)AH?j)ke>*hibfLqq_%p;k6sx z^YdPOzxMe6UZ>|hgdb+yG^UGDDL9DG)}o1@wIoN~8@=i<5AW*)w{+>K{GzEs;; zhOf|btt|IiUo5xt*hczm%H2E$%e^qjej6cMLH6M`vQx{u$Zjp~A$=`3A-qJ}FU8CC zS}O3Ga(6%O!rOH`JMhkO_rALezv|9wuHoG}o;|oFF_|sQ z=@$3h$N)ZUi~gJxev6imz`wA?eXsIXJZX#f!iRkSGZ|0c!p}nE8TbQRyaBJ7MDrjH zw$3yhZ25HjAuWFx&(!iPe2$jS#piADl0TxI`8e3`Z9a~JZRZIb?j03%qshggaSJ~u zm4`3g;{AC!`|UCumIwJB?+@_hTK*gk!-ISl`a}H1EnfX{zE`{k4^k%-m108pTJ28( zUbw~UDKh*XFuY`o8@E!te2e>jX$8J@i~E_cN_?9hyB)96I@LJHcYw_f9PIa0cj9~X z8h?pH(XYAoefWMYKY)Y%j_X1E9qmIM9@aV${JkyS&V#i7KK{WLZ{j=rC9~h+&05}q zf4If#$l-c_ho9c!z4Z=%mF*1v`z>C@yBzxm{Hz{(4nM!e^9uRg-~#@!)^Ek3;UMj| z;rtU-mbqj4~;K8l(cU%%o2oG;{^Af?2YxxNr?EKc_jauG>|3=H-!+k9` zm8{iDuj@4HKY%Axx?>Y@u?PLflh%_<~Bewx7hoo@*fvX@BKjScHR}-|ymJ$K)v-?01qE<6!TR zd>m|@r*YW5#f&u1;7hg6GCWx6{ozIW5W;=E7V|3O@Tyn+7~dIA#BX`kTlN@hbp-Bf zxp|HEgB_Cq4)_D{{7e7&p0f_!Oqt*e1-OBB@TAppU1(jr5A9pbF>Nv+n?1q*g7xbV8?b14t8Ay zaj@<)7kU$Lb<}Nw4M4c&FCy!ojYkf8t>4{|mpW?Oembw*PM&Y@Pq$V8^f<|DV?H z#eFR|+t@?4xjnoe4m%2Y4UNVjGsw?*#o%CHTd%|6=oEOJ9D5@U6W8*d;wC&nuQw3~`z&!Y4)&Sh794VldEOX-!>VGQ zA4cL}pC!J4gYDa`IGma*dj$?Viy6aY9PF{T;b8kP3LmX~7=wcy&)adZ&pBVjQ}ozW z9Pa*4Oq%%;4ujV6{k=PIu)HjpRmq!CD@VgZ&){0esjFH@3s^gdOf06Y&vRJ`zvT@?;$B??$){ zhkKrhy3vfn!R~dVad5AR`1l=eUrNI#X`RVZZTrJPT zmumfGcyNdN`K%CLzQesgs=&AIaO+~a!~0)BRD!9- zckb}gUg0_F4IJ#TZ{jste-~b>b@t-n9lEaY<{jR@lX%@}!9U#LUH3Hi^6&809bVvL zUenv~&K>S&`nqs`hnM(_yuaJY{O)vndlY`dPJPzG2k&&xRPlJyPVfKz%CmYh4)*!y zHaumgciRfuNyTBoHlB07g!@`<-oStA+B84If9A&7)G#kKZX7c3+#0uT^YFzrZk^=g zOKV*F%kULiz7hvJhR@?*@7Wh{u>DzugMH0fjR&<(2(PN~GM{0euf}U@yjT9in%|3u zYrN_Ii5g=f`1>{9^1HdN5AZ+M*q_%k=W+PtTYN|N0uB}OjQuAZ?0b!maj?g>;$X|$ z@b(%vUmbY2_P+=BYxKU`#a!%i_eB&A_I1A>?*H7Cn_tk+U%0gq!Tn#j`8B(_#@+57 z58)s0c5Sxe{%*JS%pTg`&(P+wN4(s;BB|Yp2QbwokjSYTIZ)Y*!LYj!)vsB7yfgt{|mfT%iHkIx7}EE;oWb$ zHP(ZJ-P`|*_iCGcxUYRMwTyGEyRImFV6D5ZL3n(vJ2rr)Yn=@IoYwgW@6_@xyj#nA z@c(N0|L{I7{|xuF-0a1F>2(BoJ~8{4i+%QIbxksU+dePvV{@Mwg^$_i?fzN6`^@e5 zcr8!EC++jLZ00$CGX9l)?)mnsc=|rq{|r31&)ugXJiO0cV+60?=S^6{dzJZP zKG^&BA9$y>(}nxmj@eJ2_q%?E@XPzXKR(Ajdj0YC>tDpzYIy+;_GhjOaj<u|8I(Iq(8 z@=_e^Ui}gdww;%8u&+()@$!T2^Un%=lV0y;e5;OOCB99|x8qgXPBp$m%Xi{$=s3TL zgYD-}aj^aQ8NN&F{~QPVIms_@uye5+-=pPk;b4z_8wXpb7T>FNeu;y9*4l@It+O8o z+x`I@>>hg%uha5F_`8goeBSjd{P00<+IpT(j^JQFH#mwP)AqwS*l~;Ctq0w+RvYf? zdCfcAQ}4L>4dCP7as5fd)8BFXUIw1~j(h#h!^^LcLEfrqtD1aE%FJ$tm^t?zhk1>8q%IN1Jtf_Lb+{T1)j z@-E!ha#P2#b?&@vcxRpKPZ#djxob3s@ONDu^DF$YKI0u>UpnIEB>_)5;`WDReEbo& zckve{{ame+hX;?i=k^d@b;SF$hR@Ba@!dzf`&aW?wg-Rfh_^`mZM;^?_u~7Hct2Rj z>&^lEog?1Gs+c5Ghl6eB5Pn$e9Knz2v0)r+od{m9v=oyZmrXUf2MUl z$9-+b9OZq`QSa6*=2kNRA9&P_&mernQTO~j5>Gnn4SIF_(MnC+I|@Snzs1}4tCAVz`vo#X5+bfY##o7EnkW+*YfA^724)X z{CO>Z0e?~Jufc;_CxnNO>gyfuA9eSyImYwkG531f505_PZFr7*JO&?p%)REu0b2i6?2DWPJQF_xhWL-+j#c(GO|o9(;nxtrw%dWO8t@&kT>^v$UPr z_#7>ti-UcZ`1Ua`2vR>p`e4hygU{FckK(mbXr^mdQS+w&reD^VT|L(zId<*x^TR7Og>untD zv9&nZeS0q+)^kPh=40-8rUh?3=A|UaK7)U9%sRk%>0JkewB=m4ZA&I z9DZlmt=qfs@nQEFbs9b)>|RGE;$I27&qltAr)!-IJTvU|pTv8yEF9$b(wMK|VE5Zc z@EKZXCJwgF*Kx4Fx91ypw${(VbG1AVUl?}x<05=<*xjf3xEFS>7fbM^T4xy!_I2b3 z__JDnIle;6SK>h}58-RW?%!Su@T#!e8>{i!u=n9c#&a+Ju8za6@S{3b$MA62?I97o zIqa>TMg11MHSBFU$G-`-;h$?A9|t!V5$?^1`;K1>9vgB0)*OcqjJSVWAB4w8+`s7u zB3}EDi2Zl`4$@DExbICR;x|X!zxCgOCq>-%xRUV{Eli9QtUCr)XeWVZab9|-+Kdbf6;jP-AHoQIJzVFe2cShWIc)IYb5$}WR zIrbVJecWAp%yH)Txce?d96s>4``*qVJpQOsN{8_ED9A9zVeHUvbzUsL9Uj1r3i1Tw3CWM#hIF#Zwdh9NIxAu7tUaNiH zi`QxSAv~=0BY3^`rvY!&Yj47vkGp%J1wVV--CyVM^ICoZZ$0krkv6ZhL@jk<6nVq!sTbgHsf1QxbNOn;#GQV zHD06V-G$elaNh;mi-%9R@8Lx7`V($HX}}w`P80s#33p$=k2hJ zM}VK#eqO*^Pq;PThPUgn9r$G(+beh{EOW8L`@m1wx$7dk!G5om^tIev zJ>f-zl*f?0*W9svqz_VV{(Zu0?sn&GAy0#ppCNrMH$8Z-j!z%%pYY`8p^T~L{;hX& z9fQZ#yEPDp$Je|03g8L#`aM1T3-#_hUANYI%}Mok{j`v$LB8vChV-@EB;zUdZmv`D z6?(3f`19K43;3#f_q#+^<3TMC(OzM_-4n7%zog#n38nb@dN-$KczM119#;jvwcdTF zu@bM+^H$?Et{t-rudR3c=U%+7-tAq7@UZqRg8TJu&6@_sq`|GjI6S_=ecvg7Cp73j zh9@<+HIR&_H0a)ik8f~en}$znaN{r;&unn_T^63*;MP?Rp4;H=ojiP@9=ix%++e>u zZSrxi!HxeCe5tmx3}1oE8e564YH&Y8w;B&>J0ZMW`%r;bHR#XgGU)!ldf-*@hKk2jul`)w26tk>IupFQbbXV2lS zdTbkhQLp_H-mYWPfp==(y6~$y=GX9U+LvdK9=w-pl<$c4;l9qJImLZ<%FRpMDKC8e zDZ4L4NIzc719-wIw@woA5vSZ-jKq^pxp_~eC`DYs_Q@Cm0}A131I+D-MF&BU`$xw*^1=bUn{xpVPc?N1)QSkIe}FV$n0o$^kvIAz!88S*U1^`0Yr zEjKIi;3>C0LwLz4w?~!Y<=TD)zV(#*xvENhn`_5x$E#fXrW&u&YuSa@o^o@#7q6p^ z><@?Vu(lb&{ZqQvH8SRnI_7vnqr0aP@uWr_Pduej#}gmlsN;!GYIOadjHfr+pVu%M zc(%5ggU@Mnd-YsAw^5(Z@x_hqyT|#s*XYK43BI(^jrlTsMWdVFmH4Vg_YAfgFZq9# z&OffoyYBxNlLdEk!KMXwTF`XC-Bz$^!G;@0LBXj5hZ{_thr8_#7FRdiw-(%AUFS3{ zsI8#1ptN9W1E=$_>4HrQN(&V9;7>@@Luo;2L2U(1x9j`-eBSRrUXSFX zMJB!t8$#x9+S{?7`kk5ZhxNQ4ffFR&NraPnWge5^lwP@}q{8=T{Jn5mul$ZC9iG=K z_n-6O4DDkkoUQRbIHy)FF{yzA8Xtt~HKqaHdQ9$(x516aqz0Pc z?Z;$2?tq(*Ne#Eat;b}p+u)G)r5*0j_)hrHFd%J@j?1|U;o{?RzgGf3d0c8^HS9kw*Qrvt?6}NJIb5yn)WCt`G8aL3v*xn} zu01ZFL+jvrJy!#~^>~GS&&D>m@wi;mo8V?`rv+|3F7w_7hmOns)(#&yE;W1*?l>-= z3p(LL$7PQ?40mb%-SCm)QqM=>9zC`f?mI5mvVJ(MeHnlUb)1Lb$Z`EF507fh7(7m% zW`CG~|EA;fclaNA>_6d2^-sY!v|l%2k2x~;T}~hK+ox+Bj_cDk4$tb7{?3Mz`t&&f zoYJTF0B~BLj88h8(I@qg31{oEJ~&s~Ukoqllm6zx$kui~T&!)D!2UkzS1DYkG39VY zpRQ}TQvFr%`aZd@*Z^3tO3q37*{5B15M9)`R6q#nBA9`ZNOf_mYw#t*=QeNx*)@TkU&!Q*|hKTN=r z>YsvdkU!UD=O*lF-<^K$4f^2DrLk)^!aW=$G0H!nK-n9bB)+Ho#l^Wlp!jts2t?@9me*%lqI^zpU|g z_&~qDYXW|wU+Vm4aEJOk;VvE9Zn&pk=Din==y^xrQ9ajKe?<&3a}yW!RoQmbw7-V<_ zRsR?~uE$QmlP9Exr(o}dJY#fDGN&hHUSi?6lk$8c9-eVh`a2U&I4QqLOoWq8>NONj zJ1P5EI-GG*<}MS?J}EWegY(p%f3hO9T>R}=Z^cQenMdIQjW2|YPRh8gf{RbexRtXY(0v<41nOc1WseCptOZNC9-)?-`XT_^1`d1p5q zQhz(#p}BR!hjbhc!(At3jda6djURx|oRsUxS$I(WLvTdf8G)~8Zdc(^9g{J5T<2v1 zp44+q!QM%^zBpm#E-Ygn3&(|ZJ%%f~;=^_i@5T-$gza^I2s?_*Z}Z2nQ$H=34nGjO=~Iei+@xXI>`+BkOO6JHoR6cfwuj?}m@a+&M?# z9_?c<9M|UCRO+zL=9qW1GcbrodleeC->uU<@#hj9L7YoOolCh14lTOJTCBrGF zWDie0Rq?iw=?iueneUFLus76y6YHtp`Hxc-X`eb}*HJn)1DW_tY|^L2pNt(xrp*a# z?PtVahxO)3yfYup&^$9wRm40Xxy52VWZ$>*Ae^l^`{0~Y^4^SGIPa8Pm-FF*Q&LNX zaPcYGPfFl5r=*tF!hRixQn*ZVbIRdLJ+=z2J|%ld4IJQDQ&&NFv&L_MYfni%)WP+d zTLavv$2P&puGt^L$UL)hencOUS^Kfr6l6ZTrD79)EdE67EM(UBY-|!TdqOhSYu0nM zz&kbPU2y9usns@kul9W(9MW-ahdWNmeQ77$rQ^^I_h_5FaG%EX!{JkM?H+*7NDj_f zIHK_*@aQT1z5~8?O4jvtc>I*CsR?+Jxu-UqDR|mxnWN~_)aPlre~X3VPD@S3!!u6H z{y7s)I4%2aB0NiDX2VIREB<{t?|MpxQ%*~5r^0Ec^%?|coR;fLCY()-`Hbm<^G<8c zz)Q9LM_^?4?PaGcnhV6=f^9{n2HLQm`kg|!SlcXtpVVVl!^pmKbq(xSe<@sc+O7qs z9IiYqV^RgL*Z2)^wZ_-L0gVa5n{}+Vz_mJtb#T4*r2%d{Ej7>tZ`ZNf0XLtPeYgc~ zJuP$828T||KHm;^Xgi(oq0{o5^Dx|{?R3LEr{#Ll3rEyH0*`8*WAM1fOu&<;Wp9~+ zz0_Ke)O)WP*)LCW}k#p)Sn8cos+ekey(E8eDSZv`jL4qU5fQGG(Ho~Iw#LR7r@!- z_rZDRWZd%M0%FXw&_cLKb6W)$pOe}vf!Caqv04lJ&&gPo!cU)*v3&+EJ12W!Ib5mj zRKeBf^s^7V@tn-#CODumLAX})se@lQC-eRyTz^i+xdCoGCpFUqH)~&7;8ty?4c@D{ z?Sn&_b35E|PUfW(?$Tqs;T}C#@41R;$h^}p8tWl*&*L0}Pl(?+35V4`01xW1LvTd% zAAv`;{V{l4$7BMY)bX5xJD%i+LzsmUN* ztNGNy_2=c8Ndw%dF->r@=Gg+bYJ3~KSNpgR4xN`;YKIS;mvKG_cbu1dfKIqe+w6vW z&dVC4Y?IAKuwo(Lxm%Dg1Qa|Y$}{#-a^Q1VZO(*|X}(&3Cjx&CIt*@HSquzygW$-@C{ zGYHoX>YhJXFajyGvY#t|J6I8e z%=-Xiv1cN3>{;v}GBHEgarIANCy{vuIEB5T{+n12*}vTyfk$;b$KY|zX99kEP@XBh z15aw-r{EiU>`mCycxQ-pHza+Jg>M^@`;+N#!jR58oHQi+TQZz7Bx^7gP8*W7lMZJL z>3W2-hGc9Pz}ecq56&5qd-z;9Z%Aq*A1)Y@`+txHtfL8dQe&oIPshjkEpzl+8S_{; z?zb{W@$en6d3JFpoOeOyEB^v}-38glmcs=X^jZuTUywXYVE+Y~uTr>7k1dC*FUYxS z;EfmbIt2$VNSy@X%@-v9EpRR8GT)WdU8oq}dBN7h1lDWS_%=9nL9VUsaEJOk;V#Xg z8~){miVb&0WjnuudoIY>_QHJ^q-Ofz@CDg_2H-*M;}9It{72wXJ$4Kp*K zy$e!f&M;#;EaMOh#|_K1BOXo|mT^mjlZN&F1fDZ2-;>UTQ--Bqsqj6+GXD3%X~R-) z>F|BSa^1Nf&KQWG%WYV?Qn;Vc_(~Ck39V*V)pSnRSN_M&@rPO0b^#oiTWvoXxX^33yV^I|X~%rgM>cxF};D3*UB8 zYHvCmcTvV99-eVg_QRQQ!bQ2?ON5gyN-ZVBDHmmqQsFd>Prq0(4VmvCqOmtJVCL&4 z)-!Cro5+N-^;jRAcTv|hTp;mIAzZBf64Bw~}0x$Y!m{m5KfOR;6hJWDCZR;b^_29UXa1+jzbAHohJbFPb6PyNnU=r1zo zx{39W{SLhvM)q1+18=-2@4(yy2P7XS2-jYe^;iej>-aRlTQz1I+^A#H1UFxlHQoa6 zqMzpd|GVMVi?VmM!LMGF@AdY>p^H+t?Qn;--wAhVJKgY+i&Dc!;U2ArUbs)^w;v8) zlyy1)pVE9z!-E&){(lILsDA{$a#8m1tMI7$$KY#Phu7ipi*ik$fG2gXr{Eimo2loU zu&3kWT%v|ANnc{&xJy!p@o>T=xwlM&lP<~Ll?UYX7RdgY9Kh}*+ z_|heNFOi7#Dzz_FaP=kWdkq}W{s!UNOR^s8;CeaMX@DCq$+e>iZoMS?c^llNZFa*) zF3IPDqj1k9*|&S)u=a5PK66Q~*Jt6uOHxZia74#y1RlL4`@_f1L?< zQqMaDdm8UtX6`OmJY2(X7GmMJ%lbJ8PPi<4dm@~4S>_@cPQh>XjZ}EvWvTi3aE8Wb z!r2<{gYz!ywFWM@EVWSxue>bRg2&)ujW2=ymu258g)23_3a-8^HBbX@)c8$s;IdqI zg79WNb_-mqeW`=%HMa)1QS)zte|TB0n?HhEwaqp-r2T4#J2Zz*_|Ro}#(Nm<()ez; z=d#p!FC5nP2jDZ8r8dsOgO_EFhTw>{IRanN9InEn+U6L1?Xs+q>+raa;lyQrHzDUb ziycJf^YRdORQ+SvarIANJ@q?NuyX&9!`nqH6>C} zn-#J7)M34cA~L5B!`b3@d~jYw)^dKN;t(?b&+lREnq?7N=WDUvqvCf8U}XOvy+XKH z^C^M-5!ri7;iom`8MsW3Er%;Lz6xF+ks8ZtTJ2XITpy9O z*#I|cOcT64B6GR}Ze~o(J!cEt8j-!R4c@E$-3Nyv^4Yu{KA`y@ggZFa?3tZ#m-@Tm zBN17rN8z4`tfO8ytnmZznTY&-$XR$$`!xhdm=E*$aRl}}nLEdEJ`55em@tfN%m5siCjQ_w`Zdix&`NGj zwChcac5B}u|7bWS+O2$+-|)u5A6EZI;4i4Z3=XJ22scN&&$dmQ>$JdK8q*CUo5L?* zB>jSWq9vbRctHK9;NNNd@8N%{e-cKvohcaEzWfVD*8eViL*sA4$i}<}BYWQWVPxYy z7}*%-R`^zT#k0Jd#rXjI0qKhq<9cy1?(g<6Ch@QrZcU;Zj)o3>5SoY9YeTly0qU7k4|?J z|2!?-8H4{d-7RfrzTSmB^*gu2w`+ZV2>y`fA4hI+(oPU=j+1k>z>zqa-x2uvc=2zJ zcRggsWDEROyo}o+_?X5Vhmjr6J{Z}W?1z!{pMa4a=aVq9ZH8fFV+P>U>OTV`>pu%$ z&|`;TWc?RmPyNmvjQ<_dM;{!xL(Ub1o9~c*wZPsTG8fLBt`~o&`0s#c-6>--8~&L3 zKMpUu)7`pv+UNLxnO$#%#ykom>o2&|4WM-|PrECK^^o-!!e!b{Is6wr_OI}}>c0Ua zyVh>P@9DAc!=Cz`8PwYh_xQ`yNj%&?!@c$_@1;Bed+K*)5;Ie45+0u^H8ufz>UTa2 ze^_haBaGEY3QTC1?9F-`)UptY0;|GTb>kJ8RZblO|syASVYpZOZ>B})xBpMXE1`^H_&`&}|$ z@o>^zGH%Im_Fa;*5B~dHY4h#5u7~Wpdk6lf`X^yz{ZsI}>c0UayVh>P$gbb_U}XL8 z!$|f|*qbYB-?^K*x?6HCg}u9V-F*`Nq}Eaj{Y{Z^3&LKCwBw}WPnGEf-%Ee* zl|IJ9bMAGcW<`I>nG2_>KON3izYjifue5&>{^PxFmbpfc!k+q_Pcx^VmUHcaU-`7e z?}cAg|9<$jPs=>M4kNSPodfV28uK$4*&678k*%3d*!#5h{WI`qw6@dWH0@Wq>pAHX z9|hl@UQNZwRQx)uKvHk$gZ`&!k+q_ z`>CJ%W&D%j?E57j9~`(}+7H6s{krz&xnANtiTQW<@8GuJMW(@wb`me#)HU2N~gvR_0{-?%F!pOEc1$*;!F6J|*^JP4v;J4<>dN~CD zT>Za*kzGe!FtTf~8}>BD`7Hcd9rMpIFBwulz6|CiL)s6*T^VxTZrIZpCzCnNl-!cx z`!Z$B?}xM1?}Hbre-XSmQ|4j`T%i6!7}+^m2?sK@9^g$6i2u0<=;H(8KLmHFzZ>=* zkn=hZy57bIU3niG-1VSq-`my=A5;Hv_{4**eZSmEcvAgSu%~_}i+v!=weN?Chi7KF z_T6zGhLf^f`~OWO!=K1#2+!na@y=uvD_5z9b!Ttr3 zLn$0s;M(`N24Q4#{@MaJ^!x%lr|sA-WX{!%?Lp=}Y`s{oSz??P814T~)Ews}c-I1V z^LOaiZn#zbZE$FT`;~h0ogLhvF`aOi`n%!C0-4hh*jwP9dx3ZJIuDWaLz**O`jBhi zpZ1?HvhULWJY4pWYu}Go4kP>SxMyKx-%H-d z|Ap5-B;&RLM)qBNUxtxA*H>U<-@#iABm17Z8W`DkAN?PU>^pq^AG}fX*#slkysPjz z7};aL3I`r??K|g#54n@ylDn9KBWG`@Xz&Jzkrb)w=NjTJ^=qx=i*oJ5gmu4@UJz8 z-@rZEPA_~++dmHXX@C3S6FNsH;jqrj0DMaGKMkMJ9L~bX{@(}ZU}S6NJdEtx8HACo zlOgz``Y*xA&h=$@M9=#>7}-Al9!7S4ufWK*e--|N=KMz(*>*-@Wb0%MMs^jBI~D03-VzuoxKG z++yMB56d{*4kO$Chu}E%$HNKgPlP|F$9^0}Ha-bPw#{TXMUPE|(=?xS_;U|Se=}fY z$3GL!);xXiVr^#$jBHFEjBNY)aDn;@VZZuIVPwbiKjEh}<{9|EH0BF1vTc^Z73z24 zO7&O4>vgO)z#DaJH^Imr`y9MkkKFV_p#Fn!hx$9=F7Xur#^^^|Ijh{CyeZvPr}INGX=k^<9`E2cFb?W$i}<}d)gN#o0`vd?YjX#1jl8&ANwZP z(|GufY`6U>zH7J>M)sZXGvE(v{72w~Z1>8HX#PKI_+uLXarkMCc?J&Xu|e3&cI`U} z9Up7f=i0yjjD}-;uKk`O7QW5r+P~YG4#)Xi``d?jIKk&G;~BM+2q*bm^LOk{GCarU z+V`-{g;RX4`Fk5D6;AWH=KrH~(%}rBYyXBP6VBH5eQ=(hHy=j!yi4H%pKJeCybvz( zx#oK)XBAxRbM4=AmcV{(vlK3)FXp*%IlNxm*#KAjT>G~rHE=-N3Bq5~JfDYaeXjl6 zhB|mq`#S^=lbiXz{vsUFJV)RwKG*)8&sBKT=i1)`j=__9-YMAgx#oGk<1A#H7fN5E z;h2T4{Vp{Y{@_B_e(!nPLbo<V?A#Wef-4GuoH4@Sx^41V=Q75%|hN*S`PiDm=Q-wf{Hn7(BjEYH|Xe)MKY$PtWTt zVvZK+9KkV*WPW4e+ZIU<)8V*9uKoTc9!^*!b(ILGERuDR3a2e{?K{oV;rkZJy0{ZPgx85)n5vi>9OT-+zel(*SQ>BsH@QZd@dF)dX+XoOi&@+Lso%Rda5G z_v-lUgF`xQ?eGB|lY?-F=Fz4G+N) z?fVEksd-Mp-Xf__o#cIWoVoa9oazRXm)KBYjMSlXBcwV;F~II3-8M zBo$7}kv7xej2xM-OgJmYwSSYm0M5>lHRXeI^jx`c9_^Sh&xe=gNPRAc3v#4B3*llt zZwc(rao;feXDM8kBlT7eSLDbZ<-(OYQcG2Eb&jmf8hB%l>$|}J%eDy)Bt5T$>{`SqIl^4h?Xl=Gg={Yad(S)*Pvawj8&3Z;osJ5A+i38f5nWwOBtgdwwa_ z3yI%phdXlI)gNMhJK-*Evl~95<8T!2(Hwf=u+GZ>JgDP81P^P!F2a!<*{??6E83T< z@Tm523?9$1d#N)4PwIK6U{B}K$)yHzW&Gpegj`uKiEvV`jA1gImMgW9p6kXS`!}Lk zFC$lKDKpp2M&_F3!)`?8?_f7!1IWDBC5ZKq{X4)1a@|?T#LvbiA@ldZ$=K{{Z3ml! zOgp()PyLP$&dHTJ%!TuEWxvgb3vy+TDuj!3UHe^U3GB~x?eA_%;j&!W)5_sW&A$q+ z&Xt<1fj4T*CODumLAW+o_N6-bgbx6{TP*VuznJ-2EPG=jJZrJ+jkDpT#WL^7aN1&7 zr|Iy##kOvp`EbT!=}RV@y;ySg!Fh|NR`cQF#gcOgyk@bC^IF)ySjN8;ep-)x1}-B9 z^E;YyxDvm)u2sR+i{-jd0|ypM--GaG&20-@yIAVE4z6D;_13W1P5Q2!HyP`FPtUs* zM)v+^+hX@dqxf%PJ!Jh&aPwk!;&%4T7I@cU8N=Q1UhUUDxI_J&aF3q17Y=K`2H-)> za|n)TUq;|7i`{GHw-{I9KP-0t_+i%gAK_8;kHO=b!vs9JSoV-9*wZ$hCG5#dq*i0$ zxFxdR#=}WVT>Bo{WH@b!tkZNjV~O6+z}ZV=Z}h==OJq*-;esVH?}c#j5?L1|uz!h+ zLn&OQG3D_3B~k+$;A(O(^H>81^t?g1c8Oef>frh%GN%o2;}Y37n&4(_vjuKlB6ZRR zht%H=cPx=TxfAYMA~n_x_h|dQaCnK-zyLg`#}2^}9jg&|RQ+S{HO>DzJg)gqz?1k* z9ZtbFwC^`zPtWV*G5&cnkFju4o{ViWoRTMFmEjX^Q0b{ z;O*Mx4!Ai__Jx5Hg}u5P#|PxgdfIGiW-GXM|f$vPc^BbvhqJenu_ z-WYr>PwxG$!{eI61U#81_q|hj?v3}ve-rB=`+leQ^V}X}_WxdNA2R-atmkPvPCoOJ zFLf0Q$K^|&@o+-E`Ae7P?8;Jkdf zzsiRT@?|ax;i7yQlT~nWzRXJrye41P-CEe6FYBumuFRKpQ3bEhmoeV}SL?Ag@Wy=E z>o&oGe7PP4;jVm{yKcBg`_&60`}yTqzPlBf&yU-%-f{K!<+}l7{6VZ2R{sEeCSUH& z&ccKFa&I;S4{JUb;fUrr0*`WDvtGvFaUJIg_-!4}ci_o>gUbs}oa1orhRK_qLUba;BpXG4DQkmaExM-=2&nmcB+bMzl z+I}fqrspk(D>bGHuGaQz;EhXVJ#K;nOZ9pLZ(b_%y9KUYDsxu{zpzy5{6)A?+izOx zPD5s&jK<#BA$i`!ddTjdKZct%{}ym z2>0`k$k;~1w>~2G)gORk)E^7SJtAWs4<|jMYXtVIzZ5Rh_;R@N5m`G`aP=cHzcp|` zV}kJJM`X|00@pqwdr=*X>}UUP!r#&OdKg)M1KgmT)9lfrwXptV{72RGFh8Jc(eMqz_r@PI{1ZUGIuY+_1aDY+_+5U zs0nV>^R~fzHD(_i(qr4<0~&J>?w~K`exnoa()_#O9?hW_4r}}XjLhdO=hQMc?zFTS zkM#!CKLkhg*b#VqnXH8g_-)Q*KI6XwPwIG1!JhWrSdn5X{QAC zFPD9_6fV=4a=3E2)JYXwy@>t%(ERV;kl3aRJmaGd(%;e-{^mqa*e zg^X1)JZFWh&AD*O3SBR7+6p;WI-H^HWWw1iw!%f)J{yLAk z(~x=g5{)fDW=}4}7Nb#q=Td@=i4uP-HV&D4vv_O*GRG!j%hX?vtwiS7Dy$bL@lHIP z@TlyWiSVpPWgch4Nsr1rCc`O@$~>mRX^+a7q{G?Tjt>qzDsvHpYaf++&N{gMQ5l~G zca!OPtA7AKqwSo92ethnIP$2} z=LkIhsMPZWJo%_xzoy_Dn*UAMlW}vL0@gx->{qeyZ3S|Tm=4DkNZ;e(gaTqkp3=!vkUYy2;5a5u+=Rz~#ghKng$Vr4hRw(`Yc%fUFRA}qJ3cDGZ`rLx`kbS0<45t*zx=w}vqfoAc zpMuj0p$~>0B zWqNEmTv;glMipF5JFFL{2HvRcY=Q&YP7vN)D08<3t}T=ru7h7Fl>4z4;d&jn2Dnkr z+XQbXf3x@QfSYw3THsxUvPO2pt%b5i+Tf7Jw8I^RQcIoiA)vE6Ww z_N5mNuavbv01vK|xgLTen%fBM>A9T8n4`xe=V*BPW3s>94kP4)Gr^~b{rk4e2H z!by+GJ#aFd@|etHDxCJ1eCA4rvo*#C=RGF*oW+_~z z@#Szp{Xw|)F{y_-xc)Jzp9Z+`F}W{lf}0alI`UixMB=Y4SKF{!b3xZ^RY znNIkS_Wdy2rDM_!_dF)+y%#?An5@&|aNlE6=lyV4{R8lz=05~S9+TQ0fv;-Le}G3H zlf7aLMt1!F1dnSD6Y!*t{}k+L{!S5dR3zgc56>u)TAc|e6v;l22+t~#e$9rHh%sv+ z8NOSO{bZ3_fXtp;i1kv`p9-fH$=s#G8AUR8nQ(!|6v9Q?{wlaw+b@Cr>Mt#FCqFOo zQ&{h5&GVTeHwKySxni;2e-+8z{sp*J+pjBfQ;_-Wkc#aKnbQGyut;ib2p-mRU4$b=uKEAk zoDq1mNY?KdJYFPoJpp@~kF&}hk6UHyZ2~)q%y-RG*cZ^t`=rSaTbI z2Q_{Oj%Z&-;F!l{kBxntIeJ_^OUAWOn}Tqy=3ECiYWq!a zvyMp%-1@lA7rggzS$F&3kjA&e2OgK2JP3Dao1O5RkIU!8x8OsMOU)mKyVTzeA0bbk zMLS0ycW;EH&6`*cng46g8Gr}%*daKgeIJ3Z=p0>zM|JMT;A@)0b$I-7xn4}blRC~* zu&4PuPjEebLaw3FaLg03c4FbUCuHv8;Tcaz4bOy=o{%v~hEtx9&q}Fq+7mL)>2TH) zGA0Y)f+wUl3gIGcXBAwm?UcZ4o{($PTG+4tQn*ZWD2FSbkTqKcZ+t?okDK6t9vg&f zpO8AQgX^`Oh9}$}WS{?I1C3AEIuBxRAmhJ@^^mRkCV2Z3a&NW+Zk8CQ1#Z>xX@mC? zZ|Zp;9MU}7;SN2v6F&5Wd@eW)cWIv8aF6EM3x~D+0eFzPFxU4XIHLKFz@tydy}=lK zP5sy5m=ayrC4AN^k+m}&jw_M16Avep$aNtRPAZXkOomhR*i`tQ5*hz{;j|LTIUUX@ zkvYwT>q}(qH^5s<01aB{qHL?S4*7z29SBccaZaAcQw!HDv_6Axam`@@o_tcqc?!Pqq}0Go*n3jem$RC>S}kKT9gbTq=Zc4Ctk&^?6ISc^ zz$vR`JX7I&R?FYE-3zC!ma$5QGgeE#GT}UJCm$|YE%_9}MXO~ktb&U*hZ5MoTIR77 zF5_J0-k=<=)ZD7z^%}ncu3jzUTm#o?4s~$-YI)Ak0B_Ztx5168Wt^MfW{q!wTQ#N) z4rzbe;f~dE-_i+pY5v{tk=3#`kHS5xW!`(?u(mk>4{B~htKEc)l5-+9Bvyh2jfX!CF51WHV zdH$1&z3~x=xrz0VZ6{%^8-vW>`o>}d$g~s0Mvyu02=)pxe}8oqJBmIuGwOjctcOgD zlL#lRl{K3T&si(`>RdQwt<+vBoVHeKEFI3!V>99GwX)Cn-~w%@5H4OTYo`SEYkVnO zrsG)-S8AJ8aP?Zf$AdSnm3?Cq9ME|Q!kaaI3%qr$)c-cPQTQ-`-yPUQ!;nS@SLY)Ugp9nPsy01 z!f6_l4rl1GnQ+!qGCm97?5AX(^uc-f%|4tD7wEBtaPd>JpOnCU^_RkBnsYf^@swN( zT)0wWs^Eb3B?#9(C7*@s;Cek*1KjwO%uy4({V7?SJ78q%{Ks&!w%G!=J|%P12JhAU z_rW3US3BIH@tts&#&^R#>hFcaI&K5-;8RkoLvTdLY6QOWlw5zW!lRn!7(C8-&3A$m z@T88z6zpk#optOj>m>hZIBuQHS3I1sPVeR5q;;}aB*Q7|WZqNZd)CQy?Or%-o#d7d z&(oOsaK<`WBbjjaIvEomoVQM{W%+QyI+^Q2xM-d1y{q72&TH~7f&H3WDO{%U<#46O zSHaczO>NY`fpz-%3$9%!bz2A5Yda0_)^$?1+u+7^QnyWTv&Of;yL5bZ!>xL38ywOc z+To6M`q>#iv`*&YFx<6HYNi|Z*6DukXUzRF&e3p;UurTIj`PbH#={AIx#lLqv-~n{ zv*9GatkYyT#jkS#|A$}N{}i0&*F6x<)^qvb9KY;g`>wop6`NbiCG5dmG)z4t`JV zY{I`u+6=6gG!j&!Zo6RbCy~b~Vt6SWEB=NiK8aUA6=3j9><^ujyd(Srb)fV@ASDd?@{Vi@1GQSr~ z#%3e)dqW@Ak4#J{Hh^4yM;yd9BlG*X7HkJHzv=G8b|DkrjrBs}ciQ1D&A%HCOZ(0M z9BGl?#gD+_E%JN$i57R-J1zD%XwldhwDo&Yb7HZ#A@e)6>DV~+$75%pUw$_#eI~YA z{WaJC`ddTPydc&?bHB^8g@4dKGX7|6+CQbubnG%@e*3l@TdDpkY?u1Gu}9GA??&Bs z6dOh+p8@Qk(YC00L)e%}X+IWQhD=O3wnF_bwo?67hNtAbRoL~& zf3>(7X!-Y}9>~OIA(Qh0Y_|G+*ji-b>##2%Glnl3i%k4BY$N*F_o5zb!fr<hHuJLS}3aW4n+!wi|l{nVgSedyqM{7u$zS zOh5JvIzRo^d(L79k!fcLJFNbT*a$Mmj$pUnkYjgXJCMn(6MG1K{rgerhp}DAjAu7? z5Sf@E>@YIzT*O9@sh<(-HDvO+jvYrPeggY8GWooNokV7?r?5BB8{d!m+)ZrEO^J`i z-iAyL)3I^LjB`A81~P5V#3mrqW+HZ$`e$R4kcm&m&Os*6x!4qB+DygHLnhDp*bHR) zn2F6oCbtFHY-G;m!{#6ppNsV)6JLsb8ku={23v;AxyrGX$i!D+J@q^9u||;bFUJ-j zvla@m73z1f0c83W#BN6BTwAam$Q;{=J%r484`Yko7yl}(ADOu*#XgNp9X^9CL#EAg zY$Y-=RoL~&w7CIWt^OM9Mr7hQVFT(9Vm(j#=r}L2pT8vgYCN3ulADsi{+SG?z2q+Y zA$wywoc)sQOFp>ZC3$Z~A-qogez@`_d4EV19MEHf@V8%*{rNj^{Y&ne1g-@Q@Q+_| zKVQq9{1dqOCHLFkckXmr;LuBQEog_4{XP3@FtWeleH}ia{(~^G@78z&{@F`%ZR&uL zeTP6NjO@Ep-h`3;UGrNo`b0JTJp}*!C3!E$FJNTfC(s2Wv$s3laQG$pefI!-`6YL_ zF6v`W1V%r25gviZUy^Ie1pK#`4M)qBZ|AdjvZ4yS~ zMNWb<1^-K9-i2@Iu{U8PziWoy)0p>RWUp%;jO;tmoSode?v!yz-0A-7Gdt~XsNcmJ zr48P4*A1+vekX0G8$f2;l|RL)qX!^pm8=00K`))=gpt$rUI*eTcdApEtRZq#$! z!#oeauv6;lMHpHCw_%iI?sL8aBkQk+k^PN!1H5&o`^o2cZ{#-k``XSA;6{yUf_JHZ zH~iC`?tvQOUxr(?%{I70<2&IuHU2I5kj5W|yYyV$aCoQGzyOTw`(94L$kyIz_}or; zhr@YzaHrJa5d7Pn^6r8Q@UV=za}mC@Q)=Kc9N8&zJp%tu&-Huw%1*h@xeEVbr@W8i zkMN&0<{JFhol*ni@ZYsBZ^QrGskH>ZyHnmHaRWxHe;V~k=O&DbS2(ks_h4k-&+|Tv zY`;7h+4^^Oxn9&RsjFMyX}cu5KLbYg{SPzYgrB+}TuB`!!vC%@ABB;PnFS+z z>}+_iw!aVV(wJ^I{8OpJ0oc=c=Vkixvb5ua{Vz)&OW}a}gYY+Ac7OK-pDAi#w5f=E z>R@EwQ}j(3eZkc8x8N7l|00a+IDh+PHwl?zld;*zOOC$VXRP|2@4)CQ&(VH8jBNW2 z@b_MJ4-~QIY=x11&(by++4neoA4YbM`T>k=d?VbX?fei%_Shf6$hN;7M)sXZJ78q{ z`(qf{n4iGNw%-gR8{YzV>9}>nk(XsIM&Qwx-T6Or<~n2WpI&zF*v#)4{|ryQEbqUX zf^WR+zW%23Y3C;V-plUN!D;iH_hDq;qvgRU@+Q|Nr=9(*k7BPN6LS^& zHZnQCgPlYsW(pf~Sp2cr+mOj&I`(PxKZ7kpX3Wd6&#M26*a~FYcd?bo>;qNUYGm54 z!EQvR%}v-YWOC@n9#Q{MY!5Q=z1UG?V#ct4Lgu`G#$H3_T-UMV$iz%w-&X%S*c-^i z-^6;z#5h04k4$ac#Cpi&?ksQ9K$AcNt?;oPaxCgUD!G5pNmaFrp;9BX7z8u)*{nR9rguea()q8k4&Bo zSPz*ToNoA+dt`t96?}v?$9V>F6z<{N=H9gzM)v;p7>u%3@~rhZjO^dz^})zKKk0|V zd*m780F3N)>J)rtk6g>n!pOFN4n}rwKMy05voi=I`!2yD__vIg`8~)57}@8;!!WY# zUxXvt&IpX`wc~d%vbp^pM%T^z{jR{sKF_%d|6z~ppMQjrz3&}`(OVDl>}w20ANqxp z;`|A|#y;|MC&{@EkMD86{wB}aCg8XCxKI3?cWb``PwsKweV%)dDfq@7x9Y)L?sjg% z-X3?)Tf{rBaD912?)iOi!7DP(g|Pn>c?VG`98iA{MsIwXee!FsxB>L+SE5pbSPxnM z^YE5eRobH5UGcM$6#dk_2qjK2M4?rC2n2H6;_ zhiuHZ@gsX)!{2$u{jSLY8`B{1vDg5zeyoRII($&a;SIP`bAFTfU+6esJ!JBCx?p7c)eRqc z#Xa|Rp8Xz$fBlO4*jK6l-@tve|4-h>*bk3u%mnPc;{MjWi_+Q4XWPAU-To`@j+q8c-e2>Q83nLrGjrJ_{q8!{=aR+suHGZ8H-_w#^6N2lu*px8M2+CksZ_zW_!y{vjCIb{>Y2 zJy$l2?74iff3Lj5vlK4dEBE~6aOGb4EK>ys_DanMVProSe+@?V^Y!yEvTbgLk-ZP! z0wbHx*I{HolYRq6_PutsFtWMT!N}gbeiKIa9g^RIQT-43yzl~y?0flMgpqwl@ogA= zV3qS>=Q}WJ^YNLz9!Bdr4Jrd{}B9J^K}o}_qxCLbKg4wd+K-g@izne+$&Gck#NYOlKyXp#DU7md4M9llHl@{lq83cdP%C@ICw7H`Ybn@7xQg zX-qmiPh;l88QNwhoTL6+I8XigaIyMJ;5F)B3;VVGQn*6>E?lWOSHbJ`*bQ*?KKD7( zml`;r{vf=0pL>1Uv`l9UT&u^{!MikOH{7b{YJ)?1u6Fo<#vFt@G^P_ir2Rb%_i0Q& z{3kv3&oHv%a}7o|x9hN{@y@Hv%d75l{-{ql)8V*R-Ie~Rd!2ZA#;fj649|oU)Sn0^ zX?!w#kH*{!r>Q?3o~QBi;VktpfV0)_gP+!8pMlFXrW~%&7#H59{@rlvtL~AM=rpGd z-m5YD;E=Y{4j<6?gYY$txej|8(9da%7$@Jc~6lF<-=fN&WwgH8ShE66>ko ziQn%|L*}_|G&TmAXST7}+mLzoI~^N`OiVm>21@!t)B`iI3CKLNO~lSZCT2D^37K}1 zv2)Zv7n_32^VL-BJ?7uvi~8KX*feC~)3I5|w6g%4gG_ubHV>I+u=&_!Xg9en#}**d zP9e4knV41BVq}gj!LC83{k2#>vd^or73z1fmB{qB3cFtY8?YWS?KpQZKFE#__BLet zJ{=pU{&?&RWS*L0+KQU6)&ATs?L!VV+zUBE?b1es$;uvd`j z<5lb=GWkqlZy*zM6YHtpxsyDR8PDn1IAr4Eu?fhulZc&#Y;M>jWa5*tDagd9V(&pF zpL?-s$i$~(=OGg_ADe;9v6{evv zYa8~^zf1gKtcOfH&PSOSWR8u+-iAzW)3Hg&9Gi^2NB#F=1L_ZAJ@q@Y=r6MU#omKV zoA+Wf)SrpXLiRfmY_s}XuwIg!*GY!c=;s&t?3NDSzhAE7^I&8@U(AQma=s^ZJ_{r3 z{~Vm9@e5#N@6R8Ck-ax~7|zx`#0MAXv4!xO{c``m7WVIVR~9iorEn$n#Pb2C3J&bo zcZ0)UV=bBQCZ31u_sjb^8{qG0`&(gT?+3QQ$nH_!hmn1!^bg=hjc24GbCJfD?L!4VzL z5%|h}`8;(M9@X&~ga4v2e}$2K<}(f>I~NnMr^h-W_Q{ZZZypcd8FJsq;PcT87=0jv z=aw^JWc&MJ7}=PQz_UU!7qj7{kc?Y0jO@8S0V8|Qb{9M+B%c%K!gq({S>-3;l#tX< zD*PWIsfSO&_k^To?uC(U^V2Z0&pAH>r>Q?3zAq%t`tFD4h2+`bd^jWI?tFvmOD3EZ za$o%!_lFDM?2y~=CVn4WpyN;ouL-%|9lGT{XD#dxNzIhP|4I91Og;}k8*+a#J^C}w z7vV33+}h9Ga;Nj(FtRa~FtYwCIG}wA!u28d8$aN=dIS7@9orwk$liZ8!pM$!6O3#f z{t(`w{vX50`hNm9tG@*fg=8JI!~G%ojC=w<8IsTDVHnxZ&I52HB;T)%z+)k)=Rd*7 zeuwhskQ=@x{sC+Rna^1xSWo@Vbr_k?iOyf(ze){BFY{j3)c-=Y3H;Tf;F zU;hX9%roH+tN$Z#!fW!mFA)x?KL~GrO+FKCfoorrnyiECUz1vGfVaLTpZB-Hjju_4 zHo@Cpllz|?aI^Yb;MUjVb5k1}Qhz&qK+km$KBWG`@XxiKU%<%jlU*>fpOw1dBkDg2 z_h>%7@EL9AEIg<=55dEFu8VL)V@BXBuSv~Zg-5l`G5DIsT!;Un?fexUe@*6b0)AW1 z`wl#*?N7m;9_zf$dVF2RZ9bg+x;`g)-Hq|RZu=68tzGoG-B0SU^^d;pp2&^5y8*lT z^Wxuv-HMEV8+Kg%6WFq+rJZtY<9|zh6LuFe@w>4h^|xcYkQu{n?3_x8pNkD4<8Q}$ z0r5M**WK;gUbpkR1KW(g^R1}V7Oba!=lid_0rablJnO*D`GLgG#ipR2eT(09Vl&jA ziOo{~0&F%i$NI1ZO>%4@wip?I33d%K--EBkK8@msZn@_fY#B0pV>z}GncS+d>ru`N zQK=iS0c7HXSnr1t@BHX>cN#MB(byPd+KI*9hRnI9V^h?hicLc%pLA@s`fIQO^#`$= z)xQN>i%dIp*sbc{hHXS>1V;9G=1~~g=cT`fPrfeS_l4nedhB@^*_c82lD2ah zM%EvJf2Z-khmrjb?h1_TbCRntvfn@c0Y)~rKf=iRM`2{!9D|YlzVA;kvTgnuM)rHj zYcR4g*I{I@%YT89jrl8#Y@6dSvhfozvTgniM%Mp#7}?z3hLQEZ10&n!KVW3r{3rY` zZRcGW*<)|O$hLnIMmGLE7+L@OFtY7?FtW!w2e|h*p!Xi|yaTc~&W9gR|AR2H&)BmL zxB+DU{sHSftnt|}viH3{IB>un3-C-b2zMQj>q|H69gu6ibCB=v4$5|(TSh~T|f=vrHE$;7e9XMwzsI9d214;|F z-2^o|aE_jH-?bHVwu0IUPTM(9TS09nC@m;0ZUqHJh2{_FfWpKH6BPUjD*E|8-`92h z@p@d(U3-7tpX>d8U+*8E&wbzcqTTl;xYEj0!PRzc4P0yfI{5W%`rhUZxZeB?@RZd# z4g2Qz{=k{=5Bkm|1y22gzOP7wSN=iYtE__4txN{|>>u>qOAs!#GG*{)E3*ZD-pafH zms^<%_(d!85?pEiD)?n9{|fx7`Co%4%s&bH=J)+3;EC@ zYnm5;^IBw`@$%u2`NME|i>%3B1zc{Vw{=aJ2bj;Mj=$b^u-&(eG?8g5%Af04GNDvzsJ1Iby#7fm5wa z8k`x?-yH)?88Zv)(DF*L!==5K*p%^!jNh<*QgCw;zCf8!YiNAJ|Wje%o#>hBcd;P{>P8v!_R zr^cTIFWsqqy9`d=sqIaHm+#c}u7Fc_YRqZy%ANN25a4txlL4>Zsh{7ifiq$E-TnZ) zcBhWxLvYqk{Z4*1{K!uI?Zc*ZQ5o&=+^g?+e0M|4UZSL)^D%C z)z+UiaIKZEgJ0jNzjJ&8uHUJ1p#g5R`kUZpi=hQ>-KoDliNGB@_4f{)aJP+P58P|x z*a!EUe*iwdGkE(vey2YOBl+#y5InI{eKIIiM#aLBzWmA{awj2IC+=O@f0|9m&T9=r|;6S&VX0%(%<#0fphF$ zx$xt=^fx9?z6`bCt5YzucyC{}s5}+EoL;YW2Sc*INB` za6PfP-)c3$jcxkdy(W08`M1H%7Jm!eYWI!6ZEZSs?Qln1@YrnTODEiIWqRPjHqDbE zc*Ojp@Pzp%;VFxM8uqP?UOQvguD|h&fn(csjN;&h?Ru|8aD2PQkN_`k*YR2cC${T2 zCc(+=y56S1sqH$BX>ew{?Q!thcJ0H5;H-9?gV}J7`E%iQ?K-CG;XJ!GA1*h41^mNy zZEq!v*q2!dAIgw3cPZ+t{bc1^xgVKKooeR0}y4~78>)|}RZ$4bGTl1$7ewOm?_iI78)b3jbhj#0^B@CBa zJr!`}ZvDF!RdBVHuYq5+GOxk4cCR|P-uj^dZrrW8)C4zM{4H>+#TtxOu6zDMU~2E2NYj@KGEbC1RofV1}K z7-hpbdvvUG_XN8h)AIYVb3U)-qp;W3secCRBWc%qIM42z4;NVcg?oaP!99|zRoL#L zJ(8fNB=%g8NAv2Ti}qE_rh@b9_`NxxYF8Q#XXVxeep@`2y(eJik(32 zH}aEMAIWc!e+2);V*BZyU^E(Wzq`l!Nb<0n{y^?raS=O(T$yRCZ+@=^eszzYMPGw! z_vrpx2iNb>HKYM<+@tfW3I4s^cPotKZwhULo6X+>x7rv*;5OoMeZJqC{L(0wNkUf7|z zu?UXu&~sV>oM_i3!KoeE#xyv+L+5M;jO5>+dY~hi_sI@fAM&w&ruhSKPKT~zx$rux zb3Obx@woZ&1e`}a?p&P@7g(7>_}LEK3xaTQhtBH~xU@s(NEsZmdxhcWJM`bIc>yl( z&^5UNuC)5A;FmQ{?-jV(uC0N8)}eFrRT#;?S@s%SYyLX8-ePNj8?9YU@K%dw8{BMt z)dII#-$vlJ4qe0B;SRgD6YjQndf-D=|6#bdLvybW9_-L{Ur>><9@K&p58{FKfxz_@3w|?6Jw_3~*xWoLNaCfKXUJu;csb{1xXIhn)T-l?Av&Gdl}Qcx+cWH@87F&&V`Zu+immUSo6oh@q2YWNq`gg>i(4k zC-1fKg;V$H*rmbgdo>3#;MIF|uU`Xa?$!7MaF&(HhI97n8j=gwTAg+9o92HDZnW}E zaPwZx&lY(5URj^L9dPSj?b`_4wpaIycDQ4&p4mF#uDzPK`{C}rn$JD(p}m@8hvDA6 znqz(N;9fm%48bFNHP1)k35#HQ+^2n;1Sjv)K2L#D_h~(8aJrSx zfHU`LKL_Bo`z+_-tbLaA@Wa&O&P$KLId*L>yl$WN;d=P-eL5CTzb(X=QecD%HxN@J4dlg)5*Ve$b*2X&cb-VTrxPG6GMFZSu@if6( z_vzoE+6FgU`4+f!pXN*i?%t>4+XMGnY<=*cl^KFZEQV2d%*v0$6Z>?%nuMpU{%P2^ z@?IDD-=+N=1JCW!@tOz6cIn>}i-Y64bnFt~#a;R=xdcw^(!NcCmv-s7cNv`ArTbk9 zyu3@tcLkiN*Zyo*}?zejlz|H%$ zA6oVYueI)%cFkaYr2l>*+_qo)p&jnnuVc{(5AN5$i#P<2?AI|Jg(voF+b7|v{W?a| zu)kmDf_H#CIiP(QbAW$`^nm0^54IP%zZKbs_08|a!SM%ljwis02Xq{h;7Y5f3a&n& z`BMYGs`YrU!S!0d*8n%-cmKXv6TIE(*#Wm6(Df<;cO205trPA#pljfMxZCRKfqSh? zAKZUH*M|Xk(Bc__hY#qxyOZ$90nO)8c04F;Bu%2ec2TVgG>Uxp$CxbWqzh z4~{*k^Cb?BKdAYT053kM{ka5AJgD&`!AlS7Tv!GtALMUxvA(6isa)&Mera&}LG9ZN zIP;*Mc>-|OL7l(ZaLz%EEf-#QP{(vVoM&b7;SC2h&o{ya<}ZYc?OrADa|dlbgiEbV z862|s!*H$n>)_W9>R7x1*B{iqrU7m|sC!=%+-lcG;I@N0j_q*ALH*mmod<(+y3`+q z^$#4>{5c4BTlpTi*ZQFk9<)9mf`ZJZ619 z4o@7^_jQx-l*K#^`_?C3H)q0b?dK>sx?B4&2AAzrh27kbgBNydJ}iRcyR|I| zaALQPV-lQdb*91TR!;`}K)24#2jR?aoxcHit(AWW&g#~)Yc~9_`5%FEy7lky5 zz8m3!Zte3zxVT&Mummpc)^lbV9I|@CaJiMKfGaJwD!95^bGrt9wOjM>HMq80*Qh$U zv0K-}CioBCnh$@3o4YknTHsc@R|M|1YkS~c^Y_tD$o(4@+1Q7X`!@j}!TRR+{tk~= z{G;$hx90pLJk_nwq0_K$b$UIFV~?)GQE+sRK4Zqfb9;3CoCn96KMv07(Xq&eAMVll z^$48Pqi4ljIIlx;{_B=dAqsL&50Fhh+VX!TLzvXHLOL{>`{)*teLy z!_1?@nx6r9?O~1cAvou-_DL?BcUbc$A1*j-V+R)>*8VSnOAl*X%HYk1^}bu+&|$rA z7%sOuE8rIoYo5FWS02{h61df3j=*h)^=!}%cO2IJt`qLII(y(jt7iy4b6Cgg zEIeU-I0;W#`Dxg!u2jI0wY<%IYBl_MW8_u!%bKysi=-hb> zUUx)uV?CT_W%A+TBRZxf@N;&rO>pTEJ$IGCA-iuFF6X{(&Q`!LTKSjYN~@;|uC{)t zfottvb@1!ft~cO%Yi|Sm<`K=qx8TMjI;Wc8X720unija#?iGQ%EruTWklpJr+)K=J z`5t~BJYn~pgr|<^nllai7N>WVu{)~c6$8&bsxi!iV~=VKad7-mojVC|;!*9xBslq~ zj!O!hdQ|6B8k~Mq$20@Zv^oQD&QZTc{uqAwsIEV+z}4ojforXN9b9j5Ho%QXZI6SS zkLo$61>SyC`*R1}YHf_b9Y=LP>V&&3&K~&CQGH%J3=baFxi)k(nDdU7$;Bq0I4bAu z6s$jD*N(zxY%I>g6Lzmj_@c#p37)cXnTCDq2d|g$?bUc<;MiV`A+DFdzuK#F6YC>+ z)=q#?cot{!+hHVs&-sIJqWP2HfY4j%fzGTJPnpfirvc z+!BDZdNoh7;T*d*7k<1~_vk0!JYsY2hx6frUR?tV;bObC1b&V(?mg-zxYYb*@Mep7 z3mmexgyHgDeg3L|D|>Z(tKgTpulvmX6}Z-7u7l_F>+@YyKmFOSF~q>J{W>q=;P`%R zdjhZ4dj!{W} za1L_&MHJTG)URvux8TkFI#0L2p?)2&FkIfRXSoWvvfuV8xVm4*u?DWScGbc4R;B@N zw0fH0t^N9bcpKboebNGN@7HyE2i)4P>v;t3=+}AL3HMt4eQ*en1+3e(;EoZ-aH_6)?xkV0j)Czjvufwf)fXHjFRBw0UgH_ zc=>?#;R-l)K-c*+c%_wD1*Z?_b3q2YdO-J%HE^cYAAqw4w4bx#hwa)&;G6+{_mT^* z8_=`;dN|MG$%hN9o*nkX>{}V{7<1~F?K|+oV>&L2;P_*D{!D-uAJcwV0w*4`afFj$ zw^ydX%a7?;uQ(Q*gWSIz6NSw}?hKiYEjND!_FAg?XRtnU<-Ig`rNyucPCuq&mjSP~ zIM=|L$27+RaOjx!VHhqyrnyl8S6V$)aJ9u&1J@qYJ+Th1xA+_2Mr&6S+-hYaaK|z2 z!%n#Cn9i^LaQ87C#~!%%n2viN+;8_CfCrChz74@6$Mo5M6rQj$lgEPT$UTc?U~`ar z7R$vJpHqJcwiGqS%vxTC-E96X*w*t}K7#E=u1pWsNAhnJUVtxJoR{D!>#J$_+Ogot zS**P?@OA6w8?bM&dB>T{$F-gqIPtiRJDhr4$2twZ@3`(+_rvMOHBU0&Oe+(B*B-ZX zBb;?y=W;fjb6oo*7hZSV)?qmBxX!73xZt?1lZ9~cam~*XxYWv&!JDnj7C2=04a4Qf zbv>_uE01e#RKe9&PYqmqT;GY+!HpI}6Wna|w7}bs>-m2N+-iLif!mJj8ru$c9JhCa zaMy92Q~TlWdC-nBKJ9X0Goy6T5Jw-_2**OA@{lYdTa=}Ys1)T@qOj4(`D3u<$d#|aRw7rX3hS@3Yd=Px zAXg?0n~7YR0M<`ezn1}LS|0}BEQ==_et1yl{v&YCpypdH{OF+0{m0;SR(?I4H)y#H z7ci#oJ!Bz_+L;b(13gM-0DuBy4n%mWjbe7pp%8TaMhd71&DiS7Bc^|0~#P z^ask+U>nWfgl$IhZnjg ze1cqZ``s{%#D5YVG5;t$X4j6x6ISOWd_i;4y9iHNKTMNj$kh{tjYh8i7;KLDbFuyv ztN$wO+kL$u*3u!JvoUb*JDSgZ@6eWableBv!FP1s7=nl2(fm0HPg(hC*nda!$2-9} z`GlVRqTuKgT2Blde?sd|fES<8cM(hA#1lFeN$|Z^=ELyv6S~i?fK$z%2B+h9pBH4n znJ2Ul1Mu1ty3RiYXPvOm5aFB?y5{7<>rQA6tcRaEp>5BD(cf?4c{v|0uzMB4#a4d_ z{M-pWdu)PBtxOrb`GlSox4@wj`n(f{%PpP?xblRqbyaZn34J!NfnT+HUW02-Xy4Ys zubG+;KwBkezUsjnRI%_k^xj zeej@-*AP5%LdSFzo;aa-I|)x&ozw99hP7SqALhNmu*NeFjvdzZKMsx`wmkw)9M*d! z!O6o~e+qp6u;#|f;ov&t-Vv?G<{`Jn=3}p!e+KKPTloxl^|0p88aQ)UpBV#i*0AP7 zHvF)~@Ccj(yY(#>&a-;*;SIw&z8m3!VLcBN!o_xN30!K|mcg5c^_;K;4p}{6xO`aO zHC4cs7DLr=Fc!J>Fb)!y~uE|twYDI9ovm==iJ_d z_08{f!rhi*J#a7gb?avzJUFcLdI%n|F&c%(hIPLihbM-0ADo0Q*jQYIr!2N<*r!hS z9?v^T4xiLKoCn9A)Xy2?;DsmkUW?%PlbZ7h@M0^!1Wr7uIg}ZC-Vl}cv9zG z6Wna|x4^9yLj-O!e>=SUq|Ti^aEJLj;Vx^}ez@D(+XMHW)U~<~9z3b*?GQX>*N(#z zCw2Xtgr}^`H0)ESdmi-O98Op3+=OIu(rm&?(8i80=i+ z*1&mKf2sPtWv7C3kozn?3hN_R#=9F%wlXR3@>80tE8tYCKMhVlrTvfrXP(kI5`eQ# zY2RkUIj3|kIPwCugfZsf&`TQ2#X!mM@ zn@{P!-vYN<|3}~s>yu8n`;@-Z>w$amyFH>09<+N6!NcZ136Bt)n~$ULl(l90RIvZ5 zmLI_SK4Zl9X+3X*92>E-5F9_E>r4WiIHL6=!KovOpJ zc@wf z@Sw#o1doj9+!=+>Sp8>5g3(AmJHz@DBbq;x@CCc}B0M#s-$R~;ed}9qlyMo=vuF$) zJF0QU!SSOyFB0IzqdHzo;KWfK(Zta~ zYjEwT=0F|%hTZFzaJ}8D0sghc_M6e*v&gM8LF~)_tNvH8)ySP^;^v!fqje3doLJ|+&L-%n~3B&6zk7c zzc=T-V05(lW3WDwXV@70NdE0?Y$}p-6gC~XGg1cDPgcK|0xy40=fw&*)%LuX-<~Go6Wxk4!x&mm@wS@p3dtQ`r)ryCI%ae+<3)dqg&07^-<1k zyo-y#9h7m;T%B;2)xRI^)_(JP;NJK2-ESW}XmJj~BkyTGkHWF1bsoi?W`3R4zDj@- zPwP1?30`_y=gTrU^|X#%8k~Mw=Vk_+d0OKMz-v!yyB>nGPU~8l4d<9Y7k>1##_$-t z?zBFCt%n~!t-1FEoOfF1NIqP^weHMN2p3zNCGc~nbiie;FLI z_``7dnC4XlTy14);8({qCtrhWX^T52)WNTh>6!BlxZYxGfE(@FCU~p)x53TUmKJ!& znC8`A;MOtS7b0W9YdiJY8LW@ww>GmfMHV#tPb#x-wq$AgE~X$*(4y~sT;^kIGTd+Xu6ah?15>1{s#EXah(@$ z!Hwo`g11_n+u-JLJ)g9|+pT|gz^&tY&Wykv7H22iJ+5=72ksrWXEC^+{&%@O01sOH zL-2&vISEghe;W2J9`6ieeMakyf#;slbzmMGdq&s)IC$|H?YAXx(izQ%yUqmX+;c|S z7=@ic!<+{u9Ve@Q5<7*Qe;VtX-%B|Yj9z|5)}k1!UvNgpx)3ftqw7ow{M;Em6K;Y_ z&uIRX!67RjhRe_BcvZl)=C6ZaKcnmR8*sf{+W_oYc+mQG2p+Ni9EB&& z=$x8_eJk&sWp19;XZ$EQ`mD`Oc&_>9!Letxy>W2-S?$jRc=1`?XP3Ztp4A*qgpqtV zDG5$Kt7DpSHaG{lwnSmmkvp?xVEt6}duedG`n?P|)9MVsS!eAT7Jiu6Tuwd$=bY6s z%7rV>YJXP2)n_&LYT(+lI=*%A&#j(c!1ZVKySNSTn`iaC)?09+wXq3qwQD1Ahxt3< zZfjQ$+-v?mc<`*ATZZ6~v$}4K!eeJO_r~D~^H0K4XZ4&s4g1y>Z-TLy(3oT3*a_|P zI5>Vnb1VT)oY1u~2~M8Syh?#nCv=Xd!RZs)Zy9jrgwDGFyw=J;1ZPd?xhNaXnb5T* z7hcD`+%xieIL~6phc`@U8#lrQ6M7~rgoAdkBDi=$=XDAE+=T9lo8Zz3&4)5LWcLcg zK`5xB$d)d_c5d-ucLlRBn7aIeMC2M;nXZXAc; z5o^~dJY{uG!@iA+caCv9r{fg^$DY$U6$i(k(|MEtFFvPpa0#4vPWOu>c$r;$H=KM< z^E?G!eopgz1)O@$#uQFJr|UoloW;G|oXUoC&S{?H!cSP8Pr_feI==!JpVRqU0+(8B zW$U91fM#mpPP)p=;cLGE4|Tk!R_Pc zWG?K$PMtX?b7UIZJE8tQ>KKz&9_{*;JoHWAzXZ3`>g~nJ#Xg|xQsIHjPbAV zW{Yjh`QYl1`qyB)9g|}{Sl|3!7%o4r>qZ4!d0um->U=QvmGiQ{$6@1(6VRG{BALHJ6&;W@~#3ee+knwgTJR%02iTzYpsp_xZjTfd{Qm zhTvgq<4Jf#+v1I$4~CF?_6cK~k$c8z!L}mz>=VKI<96RO^a*m`^IU^{7`gI~U|%=? z8`yf}u5G~j=J(FR6IRb8e8FP72v42YIX(^hR>r%)9&tf`_Y?(3U(k6S1IJ#_{WK1a zzo2tD0ZzQ2(E0GxF}&vMytfn8e&Bbl>LUkJ`c z?mJ!cu(8N}M=K6n`HcFjuzsqZ$I z()ztHTzNrrwF-Xug1*yu1+KO@Yv5YDZyj8JLEkMjz`wqr&*Q&=8?Ag3yw&<`8{BN= zTj0!#+HZl2^vOkASK)^*YX3h1=Umh{bKyrX>b!dlUUyN)aXp-8_2k1FF6vo*BV2G% zKNl;6Lw0Q#F1LGCz?B#E>{JC;o4*FGwL0tIMvI{dZng3exb330y&dkjsJYPz_gX!D z@Zd$wpCNeUqOMn?@We&Uhe>$qqOMWXuy6PEE|G_qY<+`cFKM5|!SR=DkAo90X&)xR z$yPoEMzWvYdnp)=+}w%5`YSH!`^Jx43SLW9{|wegQa+9HC}}qTZUQzDxpzlN*yrw3 z|0ZlHa{e-`pRRr{176MlbH8g?17})10XXZDt(kC+#heR2dP&FkF?ii2&Hwdq-X+b$ ze7N9}o*4?^r|n+Pz@?XToiBq!<`2WqU(&t)1-RVmseoU!`@RGtdH?nU7`guOet0RE zjGR9OyBs)`rJy1z8Qjh8eBn&9S3x(Btu+pW)c zz^#{b?nK}Yi>DLrvi{i*_gi}h;K56J9vgy3to$fEVew4DQ+Dk%>|fIP{O=ur?Ebg{0YEoFKcc*1ZQ2={Lh9TzN~F|1kRx??pZPy z&eM9le7NAUu3d$2v9-4ZMzZdG14eG0^u7rr@jnM|HvbklWd1PRYVC@^9ad*2JZSwk z1dm+S@g0RHtgj~FDJwG#U$efQf&I(6{&-W2%apDmF>vgZjzt{2a7y>tMR4MjKFcS; zOQ*Dr%iv@yp8_wR(sxHI;M6IdQ)zJel;&XuoN46)aF*RS8_t>1d6x^Xvoh=9yeS>` ze0al@KHqJG3#PQ+3gKcaQv!$V+Av%`rDvWBxYEj0!LM5Uuferez7GC{m3bZht;O63 zqhWWBZGyL2`E79Xl&)PZaO;#lmqp+X>$gt0+pg__d#$~F@SxQ*G!>jcE(a#D(eF&j zckg4cbB5I)g-t~6JNZf2+7b2FVP8ki{|0u#{F7MU{N5-$F{N{A5}vYnreS|d^U#|P z=G;6jxt)t`MJ~4^SU+0*UJN{UTKi!h96PQ1U>qDjt@}j+ym(sA>Pz4|rZt!DgcHr5 z1Se1HSf{|LR(~3t4!bjI2E5v?T?1!M>sk?jv+Q2k#EIOvM6hkhy@PGXzWy2Yzk#hs z&fkD-&QX60)<^Okk6d`&w7yGO4{xyhZiEY_Z7##b*7g#(+{#qImD8HrRWOpzD}Mx6 zPwV`uforY3b@0#a+F!u+)~*J)(dub}w_2HPaI=+Zfjbx%_t{4$+-?2V10R~!edjRT zJFRPGAKX8!=e+@Va9ZD!55XhT_I?Q-rB3(!`yPCHTK9sn>EIM{d(br2M^a{dIv7Ik z`v75VIdY$kR$#ZAe+Sk-Yvm`X2T46xAMIHbwZ@x-r>1rOPQ%x%y)&>st$Unzh1|QM z{TTztUeO$jgX6DgKP143S2V|x;N&a%43z?>UeR$$gVV3*y)xiTD<6Q@UeW#iAvo)b zy&HjZuIM_S3$L?#t%o1KqIviP{G`?M6r5-Ne0akZ&83ZS!4;h^g>b2rFM~r@^qDRU zmz%!=uDAO(z$13;C_Hh+-oe8D72V&xtMt!RTeso4S8Z;>u~)V2aqz;cy00yQjmLrYgY;U+*Qr(O>pT|&G|BT^Hn_$ zZ-GPBCtmt04HD5TuOnL zU(@s63OMze#*hZ**tNOvqt|pCAA{Fj({Wr6=Uvl$%ZE2y)6X0?!o_xN3B385_SF_R zbWQsw3|Cs2D!BTZ=4uUGdrkYf4z9O28{oIB{Qts8&e*?&k$l$K2qQUfH^Eyi=527Z z#oPk7TFeo+!|LyZ2e0W|8-ho!>AExuPY|1%Ba`q2tLGv-W%W zN8wcSr@`qnIxZP-=8WyFaMq0O3)yhajIDw2x)~c&IM3qDhYPGsAzW~qrTJH3)6JiO_08|?f;+69 zPPltU*XJI%cSiH14<58Qhu|yLma8zD>%PBnjdssyKg?i#B;UKcJ`-$3E^i~)>Kp2> z!TLz@*`Em(Ah$;sVvCWhvjpp#-}A1sUtHJnF>vg49p5;3;dPyZi{SX{x?Ux~iPv?! zlHjG+HJ)W~velCUFTbw&xdKkVuKAn+XI|H}A^>My*L=%{AHJ^r{|KC8_2f8c{uIu=Q;cAPy27cAbyav}^*W9jy z>+QY`@SE3luDt~}Uf0iGn&7S1^-Q=8ZnipG;8ts61n#hSI^k|B(*yTj*FCfk9=xu3 zG6av9e-s|Gc*fxgi*pj5vO1^X=o{MSF*g{a8#<0j@X{OF|I6THE0Y4J-q8L}gVU`{ z2Ap|A_u>GYb;Hg-@VXnCC+p$IZ|Gk91e|Br=EECqXj?YI1vm6;SqMLSL&qox7vIpa zD}hTbhB7#GL-Q&Om*3F6y8^Dfp?y*XzictQ0$1PA^`Qo?wRY9P^*3})Zh+ssq2u@# z+-UVT!Ohk`EpV&F5P>_ay`4As3_|Nn!1~?R#vZuWV(5eWtt|uapw&4958u$aa}pl8 zp>t;x94DXV`P_N|QPGrqo_qhjE>zSchvj`g+vI5^(dvrqz@ z=-WJnlYQ;O6nMF>dc07te#x>QD1ZK zF?gMoUk^X->p9^GIM25;9$a8C7sAE9!Pr|;n%kzr-Sg$B) z`Rrw09K66Qdf;vN7OyCT{`9xm$ziOIq|8G6XjY#WAI8?Ap});uQit_FqJB;aMSiMR z)U%g=<1Y=q-z!?YclHu*CD$TXPZ;Z?8y}|3DmdLMnz%3OZZ88~?G+7l62lt!6JF7M z`(}U8`y`y{6@6|m|6Y6m&hv^|J7?eF<-@^r^R!i`p@ z3I3hk>-W@;;ttJT9LBaH89S_xKD9FHgWgtno0b0q<&kSk80#bH^FPAPvx=U4d-hVV z1xAwpf0|X4_-BnX3F~jS*mmGY7vG+}Bnj&y>9@bYNc#D&Fp_#&XB7=bv@Jtezs>rv zoqAB?N28V`VKb5Ip8z%wxiQMehLEc>jP*OTjMqs!x@Hx5u0OFp3co#jv9}*SFso?e zeYE``+^uE29{6v1FYj&mkhT3VjAVR|z$oeM*|&Q~;a=;*KKR%ynZMp~_#JEG2^dKZ z55q|6ISIdOd3cKWPh0%hS~U5cId|4!ec$TwW*7N$W*1eYMJ@B9;G1UaxZDg!&({8o zfsw@aJ{TQ+o7{LmjAZQQ!bsN1d2sA(&7U}U;q0RGdui7q_*Sd)HW*2r@i40X8|z*I z{K45pEw28>Fp@SdffMc8BzWm;okz>yyDf%$;AD$G1x~f{X|sz$_h~#~tdFFx?uS2S zWj+q0U!_JZ_R?V_xs(AvVC{Vn{*?Lu5zd+|IpAf_F3Lo1E(EYXl6L(QjAY&TXBbJY zJ`5w7Uyr~!Rz4Sg%u|AT1$b*sWHTm!c^KXQaTW7qlQYUitgt2~s z`3qs>`p0{Ec2PWX^(0^yBUk?tY$AH#`8g>`*i7Wg1h63_?Zx`$_nv{Don17X7M1J; zDUV!x16aSh#mqE%^8OTt+HMJw|XjHJvDV07N){|{j#`*Qo*H69(r;KFNk04+bt0EnN!Uzu{{E=N0jzI+ z?`K?#WFN%($gPv!t1yy#y$1jHoTAt7kNSxBKa@vqy$xf1ByFjM(ahgCx75KupHuWu z_v|~oU%*`!&;B_@wFli^)<<%$gK)RT7 z)XG=GNX`H?aGl=E`#Fqc?*9UQ{brqOZ%{vS>q7t=LUK;S`oC1a_ba&mX6?_0n~U<0 zi!C1;Lax1GtZ#nr*D#V8egijKY%TEin{_SS0k>Lg5xC9jZ-)nN)^+t5_d>4zd~684 z$l4gj`X}w$cVQ&sdkP-0dyT?ptjt+>;%40=CgF28%O2#Nho`K}G>qKd zHWmljn-UR27lVhe}?kNtC0M^gbe)IBS zB>nScVngnn6UO?;J+pXUfsvHi03+$!jWCiN{%Um5;MX*UA*_!+ok~9!z(~p$Qa^HS z3}byHZGRd+a_5aOHj}>=`JjFxEG}SA-wQzUC})u|=?h$i+W|^^x57>oAh_ zwirgzZzb@%R^}9p+!@jvfstH03XfUej>BioKLJl#pPYk{)Oj98a_t59qWLeuNXGXv zJZ)vJz)1X8VIo5}k4H(H;%ZHKpy_llVtQg6SFxE$MUYZRfw_kX3U?l5y z6pSS1n_wj4crzRwqj?(xBUv}z2O}x}et53l%bN$!kI`KH02~{m`)?e)*vc${k<@<& zjAW0#6TT}(wAfyPk>tP+U?k_dAHtP(Z58~Z7(F-s7=GFM_7(Ui=Km=?7^COC zA$ZvG7La-Q_LDkHnAlk<`BgMiS2*FmijG zcPISjJT3FqJf45&6&-QUbWQN@=4rqE9{$5T&DB4`%~rkz{*#sYGyE4T^H;cap5{OV zZkwlh*baBi(|NidK44`I!iVN*&L4*VZuR^h+;8_9fCuefL-6oC9qW@YlH7h5Mv}Lu zU?gk82#h2*M&U85e;ht%^`D0?%+uVy2+yCd`@#q2(}(k|58*rJYoFW+C(hTonFQZ8 zU;Fk$F#6ak=EYJN$(pbXPM)uQm;&EBU;E_4@bdXZ_pW45SpnZ?_qrcmIbZk0RWOqC z`Nv=+Yv9LWq|b5li$dx1^?3*DBU#fjU?gpS07lYR55lXh{xxvs{Gty$KWDiYfU_*l zZ1~d_&u8Eqt>4RqKWk+^2R~|Uc?|x7-FF>~q#xG9Uz#t^S>EF?l0JC?esaFP+j$Dk zo3A;O4{tF4M)<4qb#8tQE|_1mFD>eJuMmEEzUIs`@UwQ`ApG2X9rsP}w`{!r1unI= zl)*^O0RIXjnIr!OZ?-mWfkPHg82+}^^Bws6lwq&;{u6$2zOKVB!EahUZ^6H{F=~X- z?P<)lCir*r^?B#_Fw%EN@Yea7x7*-9%-44me}s|D>t+~9oGtKnYx@qk)$%X`x7oO~ z!(BEm`{4t2?LoNPV(5WKtc|1anEA)yGxPPFa~4LDOA|1XT$+S0Se+N)%k%YJ&=ia$ z&S@CQ^W7Ern&rR@eBI{D4S3-PwEUtE6!}Q@yIWx-@BMCr<3FJNlK|fxt9f!yEORQ> z_DA^MSgq&7@bXwKzXDFTG8ym#u{wVrgjbt?4U8n_Pr#qV@6OMeFp~BL;I*-uZx6v) zc5OENPqErR{|tXRR_FL<;G9^^ja>NiR{s}ZB+rKHU?k6F>*2>^b&q%gF0k^2aIw`> z0)NBm|0evL^}{AOWaY!~^Rc?Nya0bUR_ERK;PP0VI~DNvV=af_9d_+sU?lDRD~#N` z5w8_Sa_)`5Z5B^EjHJwN7|9y72ktO`C){Oq?uQRp%m?9aVsPjA9{6uIE^os~)~G`; zlKKzBNXF<0jO2aMQMlKx?SubrWAuOUNh|*@JYxAU3cqJkr21Ix~d-g!!>PlDRVsk6NAY5hwcb{G09y zU|UbCKZ5nqy{WtpAEV5q#uLDXkn@MJndi)p&Ag!32CyMibU*I{vHrC<{k(4mzqdfn zPGPK%z;*Cse8T-!bLVlUxznYJl}$myfge47|EHT6h;z%8T_x7 zC;tW`Y0GAKi_N2dhmpkmA8^QG4#P-d`!~ZH);Z|C!nh!J&J1HSf1-5;us)Ku|CBPwy&DN*edO}Z ztA>$$7Fh!)-lA)5kv!LA!brw306%HvpMsH$MIMZ#Og@Yxuf9y2NY*8+kEAVM zfswqM+5msm+VwRUNjwEGl9&r&B;)cl{EU@(7Dm#RAdF-UDT0x_6Z<-hWL%2j66^DC zz)0f!CX6KipM#Oi*-bE#c)kTAd4Bm9_&>}af{}Y)?S&hZQiAb@lr&lINZOgptJXB8+5AUxJau^8*-3nIFPP=4K^~k#~f7#gm3`WvdufqRrZTTO@8o4nFV}0~F=Ac)LA4v{ieI)y4 z9gHOYpTobnMW5wghmo}94H!xMzl4$0`77!~u1px~Bguh!xZxIECw~ni$;scqNZxh4 z3BP6a|1XS6-J1DZ_;=R-zlZ;5Wtw3mebNG>yVkHK{|QEN-#^31?djfjc!%ZHUtlDC z^;a0l`K=X3a%}`g(%zjgl0Ml5Bbo1QFp?PB;Z7^R7e>;qeK3-?bkRS^eZ~~V`bg^E z4l058%k@)*y zByImY+;9E?7)cwC!AR!paTv+7{2+|vEHMNlSts9tkz9KMMl$ZhFp~S8gpoY!y-WWf z*OoBWN74_cU?k;7U?g#l!bs-kdoYqRr(u-jo;}B4B<06pB=h$SJYnT0;d9m}=V2s! zWf5^%&g^`T=G8jot-VGzE^Bx$wNMidijO5zoFcSX?7>WNQ zFp~Y^qcD>GPlb`3yV77J?-1^Tk@WxlFp_#!!mBLikHJXp^>G+UnRNI8tN%fGwUt=| zBkAW)z?lm*&jT3PuvcKf*}j&w`QovtcCH{u7KO z2mTpGQs!Y8$-N$dk(B>5oU>5Zt6ccA3pH0i2O}BxM`0xOJO(4l^UuTU7uvG`{6#DO zB^b%x^f-)U&w2uW(#k&tBlpbc<-thS$$a?BcCW9%NcQCo@YCjh21XLwvoMk~e-K8p zHxI^NXit$Naj}wjHDmF0V8SSH{s_N>RDwIjAXpN1(z+<_h$bJBUz*V4My@V zdNUld{0YNI&OG0Sk<|Yk_<8fc03+Eiz6&FnFW-Za?3Lv(k~k}1B>wNiRaWPZU?ls( zk6|Qjd>KYEr(S`P%(b7uNZR#N7|C3yhLOyp8W>5L|ALY1eLsU=U8rm0YcP^F{x^)| zGl>6zkh#Q$p;No>D?k+kbg7|Fff zf{~Q@Ul_@}_$`dY-v}eAzX|@G`F{^1sdFpbZguX4k?dJ}U?lUg14gp1b;3x>?1hn> zH}=6u#-a;G@=jwvj3nj*Fp@F{VI+Oh4fohO_BR;Ge*HFl$YMAQAF;7J3M1*OUbxS4 z_3to}Jo!Hu$$k4_BcdF( zTyGKk<|3VUQ81D^Z-U>qNbmK27)hLSVI=F@JQztl^I=r#&Y~ZHk?g0jFp}8f;024c zjkmz)y!(#aLU@tYe=D3|b>0qtaFLGnVi?I-EP?M>q~moboM`bR!AR!mUGRsjo~7`z zMVeQ4!}n6&eYgL^@bX34w=3X}EYfx3qcD;@OofrG!)Y**ez*@t()RmdBTjT-vlEW)0<)RxmCQUiiVN2B?f-~t@;jUE{w!K z4@UC2)qEI<{{t|RIAdWX?TUkuyzg27-(uw#!bsNhMKF^7zZFJO=WQ^Ob7nk@WUeK^ zNc!q_7)kjL!brw+F^r@imcU5PDtEw0#`I1Y$@6dGtwpWKm5E?|B=aQ+MzY4<1tS^L z55Y)cUJ4_LZ5fOtp1WZrbKxF1+3HMzk?b$`!br-07)Db6au~^;xB^D<&g~=ceb%@4 z!z*vqwR#ndBxgPbr`vrq;0MhAAdDoQ)i9EKt${yb{qso}Nj#Y_lJWugAFRw;_#rFv zDHzFE|09g#+AJ7J{n_xt=6?i6GIpPak>tQBrUIA>`@|V|}FWcJOb|+z4ZRB`W#&dBWc&u z@H4mSJDF$Upv{*e`0KaoS+^KQvNx5$NZR-fc$1a?)~!XE$n{A88$vGk!q`^iax8-N zkzD&Plt(Vk05*hNnJ~5$x!jImeI#o|DU2ka%izsc&lVWTT>f_$Nu2)yBk98sj3f`k z@VCwX9T>@a@;osh>1V8u>B=hkvFp_=YukcPAi(PP=wXq#WGN!v>Bx}MRxWi)WgpuUZUKq)^?}L%_TNg3+ zSR1jeNX7;0BiT3qMjMgqhXB?`rEcGRoASuT5W)IL+H#2U$lWV|4I$UwFxKz4_y=Gl z{do*VGS`m7gVgJOPc#H0iSr%!gk3ufBU$TCaxdiW8^DH;j2G5N66d=xl6~Y9Wso~h zhOz!>t8)xS(x2n-gq5F!k=*MXeBQ?H0*s_TFT$6to+%hfeok{QO*1u|HuHi?n zym%vsx%iP=55rg=h25E99*kt2oDU=Me*i`@-(z7Udr%yV z~e+89S_x#Giowc8eM7Bf0j2_>qezjP;Sc(_VaA zQEif5TZe5$F6SdyA4y-`#kI)wRT%3d+3P=qAG!L&SRYBuOYtL_Q&=BKZY+b5jP>0x zk~QZZ7|9x#45#Q=d-uXfo)JC_BWdGu7|FV^0>01u_j6z5awd%Rk;K0eKXNgLu|AUX z^D6wvmizFxE%%y|Ry!8_1OjV0|RHnvNg2wgj*tBr#xpG}rw`GJ`V6 z`2*Mxa`l9pU480#a~ z|K4ZuBNsy$>m%vs&*4XIOv6|oNt}RTxPQd<{l&uL2lJJ%un5|I;v%K7R&Avi>|v{K(Z4#`;Lg z2Vo?0xrj1I`rq-_b^eC2K9ctg#rTo*Io3yV-YCJ3T%BR8k4oKn;~Ow?ed~P_Mza1q zNBK>*eqwzjXQ6N5NAjI&tdIUbOXmSzMbS0j0TRGU0F_QIpi(uV1{Jwi1wv61%P-hS ztROHq5fD(yT`O3Lg(8+jQ9wZxKUA>by;1`RiGl(OCWt~vfJ8yTy8pXp&htI*Gq2}6 zJ3Bi&J6m&+d1(sqsqVP;D1DG^pN4~6Cp<{b^z-EW?os+6$L0*;5cI7_>4Uq@BtBE; zG)f<&A7A{^vi?-d-R4`0QXY0f)1NT0upgIupJ$KTWKdLIY5elEsA z>My}R(DnWgkLx&0;2`Vz5{K)9_n2$(bvn2g!K=2U*t?9AunN#X*kQX*ftbAH+f4fj)$T#HZsRbn2Thl4EpFb=YfkKm8Ca`V+=_#3U5cc%divu1 zG@gNj%rpIQkYz8yLAK>me1OI;$3e#GKpdn`!Z^sX5j;n8a`CQhT)bNwwyTXh7P{ku z+qnCeAvnmqk%@!MZ$ojAd1e?sTlPfO{#$X7ZMh8x*)O-_Ao-*5d)v5k z>lhqlo*avVYWWJqn+4V+Eavse3$qJ4sz_giG$=U z#zBt9xA3=hdzau#b-l~*RLPji=xs^)$tsw{`t|4t{Q1ckVt92RR?L zz(MwDOC02!+X@G%r!@}p&bJK?GTz$aAY;274zi8yage{oOT|IX=^-4X|2yCy$9_i~ zWWMc$gY?PyILP0=U4Vo1=Y=>(ot<%zIlK$rRhR9CcW>*?3qA03jrYVs#&a(mWE*?q zAnosigWUV{#X;tWemKZnlz~UI&MR<`dalH;(mo%AgIq5S#zDr?5FBJ|XW}5=T@1yC zY5xz$LB`Su9Hh^$#;suWE|x9eEm?_TWG0vU_om z?b?TfoNIo>LF%u-LB>)g4l-Zu$3f<(pYVgau0uG;_EzDCHC~N_)LDZc(QQA9gKYaT zyjHip4*ylR{Wtu$j-?YgNIk#fAY={7jMzd^?yqoWIVURL5{E1ILNuI4GuES+u|T&rX3D4m$q+bV-SpUkJ3+V=gwsz zyhA%TKXk-F=Gad7`R&{|zX0#8>+OU0)wcD+LFTRu9Aw-3;~?$41P9p{m*ODD+GRM% z`}YAjNc%6xLHc$e9@csy_?7M4oOTrs(#}CR$hrpOL$uAAILNU%6d%^k&3nV~t2O@` z9OO8?76(~x7M|VCooBDZLGBT*$7krWGjWjX_E|W{vN0T_Jsu7+Z$FHK%+-(JAp81J z9HieK!=KQ7JsStJ z0iM*})su{ajHQP78SUMA&&1Da@AmK6c$4;S8&hzQG2aviX@4{P-1cs~ori;5FSWoy z=GB&XtM=}^)*1(yH`?HBb-nFykY(HBApM_;gBQGy3*jKomOJ1bbz3^&Ap7Ec{DStb z&o9J5=CsZ@$aP2;9HgJS;vnO>8xB%Wcf5zT=OP^B-r-_AUDw+a2g&b+gM2gJ8wWXG z^ua;)U0)nzz5Q^I>%$BjWE=bAAn{9Zkon|N9OOKH8GfVI`F}XbcHM-7)ISmj*{)GI zNZ;O!-=f=cD}I}<_jVlQ_!^Cav_A(2X@4#ba_roJgM8n3Cw`aiue))O{CjYaeSI%} zUwe1mH4eXDb0*>-=lw}INPkYoA87B6qbWGZd^i;cxu%+igXBMmgL^*No@eRwLon}A z`XJ+Q1`g5>GjWi9o`r+-e+&odXAcM2rw`*G+w}+zvh9!JAo0iW$J@JWrzdcb_-q`c zALig7@h5SRYtg6hr#1cz4sz~$7Jsh2yKbM0FVdV>@K<%)U&CM5zAD7u)bYOitISz8Ht-wLX!+ZGq+J<5r-+%+Iq&Snf7Eyd4suSZ#6jk|{W!?8i=S|i)^elkMI4^b`)#Z-3$- zbNgR7NI(3IgN&blaFG7|7YFIj|8S7FkDF9?4^l6cb6l#crvVOfEtG_V97oA`!&KML zjqt{re;R&zs;l!1{LEB0-p<0CXgmc6Ij1+pLC)#TaFFvtbNswiH}|%{LHfBR4$_`h zc-vIh=k4(Jx;F;P#LvfJ)8HNwnoDn$4eahANHL31CCx8NY>rdx54?Y#}p(e2H}@6a)DCk}F*a2GyZ z>zRRr98)uKkosrgAm_Lk{;+QQBRELTqc~h2yc>NCe_Xfm2^=J6HV(4wbMR+$EIo^Z zjG5-{2s};0_$*ntvw_vMt}@-)Wn7;UI0>je}e-?ZH9X|2+h0L`8dctW4JB$BUbVokESd4 zTwU!wD^02ib+xfbSBZO+eoj}r{5$H;4g4aPpL-E)yU1?+u3nn)F5+9zG?!25cTRKp zUGNbuZm!02(rmL2O?Q)v`x-atcyIgZYvx>I`rsM1ZeHO1>8nd@mnzfF_?HmB#P(m5 z)ZUm&c@A)y?eY@;3dP{dxR%3%oXxneaWjCn4Y2RLY+4!*_XpV5F0S9*n9GS@ZZCa> z`aRsg+-`X(Sl2+#`vdK|-Q=g>Z3f!;fw#p|2ipBF^7}j?yz@Z&@NV+E;C%<$34!;+ zGc?{Gzf6}MfQNP2$Uqy0j*Co-2xS}!=b2^+$_fbTtfWl6!qpj~3_}o)Q073;wp_{> z1a0#u3n6G*5#>?{+Ov$Z7=mR>D18XlWv--72coEGZxR&cs?G}d=K{r>V63m58E#{ z(S8s2!*=UD)@362Rrc=}gMBxMeK*Kn{3JOkc#AQBeRgY2_GA4c%ZLAKyc)7}ilvvghA_(*cfOj|Pw&lzOj zUPOK_K4y^pdo$}Ai{}lpdxJXj@u`FCn$6}yGYyXovNIP1V-=r0$bPzjW#`~?2ib2H zal91Z3kKP;*N88~3kTUx&gXB$itwd_?0*ZWa~WPd$n{$ZzDnD$8jou`6ZobH_Qx+DY=17Np9kVF zKRDjQILw^SzakUCGY8vgyXv(tL-DM^Zrii*k%Qg79);%&w$p=smy3@Xtos7b)0}*K z>R>k~Ov7W^HV<4sm1nC49jUTl|IznT2?vE?a~z9pc8=GQ4<*%)O=r zU#0QYczlShw}bU2@J&N(vn{5hDaFf%*!-6{50>L_H24noYy8_G_V3dgv@_q~aBLs> zyN1{poHswIqemHsAfBM~LGpLw6?iZYRN{xU{Z)7k{rnBb)DgUPh@H29eN=~^9AZB_ z#CiD??(2RunY=5{bjLz{9A>@5ywL!Mn(g#M5)M!M^_rPv9Hjpn;vna{MmYR+i2c$S zZ<6W8NebQ~)9ve)c>7Fy=}V@INyS0tfe_v~(-yu)o4ep?nRd=Ev@;#g$aG_-KOW9> z<0^t@X4;+$Y3ERUM5f!GtO1Q#0MXG!2hsx-sD4 zb7@a-Y!=`Pw4R0dD_Z}nc%jx)guj{Tj-$mmTzw<`_7)C1gYob-4h?VQ7+HcZ)%<06 zvDROLugbJv4@ycitMRzjpTIY1f0p7~wa>r8q3PMl-OV<AL2 z;^T+f3lB2hCg3pO?BsUF;;?r*^FtJeo6lwr%){Z2=?z+#d^|SP%>y3(sMh}&4qdwFb29O}k%5neph%~2(Ie5gB) z5_s8AdvpckryQ@){;9;94AbLc82vWP)f2+gG@g!!hq+@Uf@cl0mo26Z*?7({+pB^; z%*FGD*_^NOe0=IKd)J%nuW5K}nALhq<}5 z2w$vqzJ)ItX8+ALJ@a}VN&G^Ywbtnq3bB)J;a5ulT#@lFqTRe5RyWR-lX~S*H-PDtghljg!dIZlJ?yg(1@tonV zKXdWC;qKZXACIx@Ph5L=_}t-czZc+z!`<9fgclFj>nl7y+>NCKUZ(9V$160a60aTZ z##J5e4|n_Bj9`05=&^~Xj?i(1r;Tvef$4a7gllsI&l+KOY+}r0<2fVjHLsdhCKtbJ zgd2Nz<9S+7J{}vP=S_U>2-oHUe8C9YzgzvTW+DE{2%FlCYsgpeLX8*UOGmgdxeR}Q zgkAd<`=}U)`EQx?ObH&>^(OGL5$^ac$16tI!mpW2EAc}kY-kV5R^hd@;Rf#A>hO~z z?66YP!JNWHoA8mYugoa?W;f2wE%>c&44B*ae(5%Q zTUUPH@<#mW+w9|AlX{wG@HcLE@i%X0AKmWa%Wz-gW;AUc?Z#~gPaEy7dD8LlXgB5~ zc+O}y9&+(9quty-79T&_zF*Fg6Rd}uD*Wo8~-1+?!?&sJB-%zK?#mBh*G-K(*v3An0^)56a zJUrHor3jug*4@A7;<2%=ogQ8|)}0HA@c3BQ=Lx)Gth-LG#Qm}QeCa;wzt0Z*hU>i$ z9=^{VzY#p=K0QY6vkh|Zlk-jzrGMvr_TKNf-@FTt-RI6(9{%KgZX2J%pT5s_{+8qD z8GM1p7vitq=dL*magh7{B0R3^O5hduxnr;r_wTcHJWDZV9M|^a+%c7eHyY>0Rb%{& zaqb@HOuWfBcYl$BHy`J&pU=TtjC13^CEjM7n+MwBspIV2UG+Mc5FXb22%e)kx#MgK zob|0~-IUV5Yn;6!cy4w#KA!ka+BN}?Y23pL$Jv=h?8hR!7!U5#OYrzOcRiWFzZ~bz zvukm9Y8L;l>pC26`=MTEvmW1}IXm%P8sClY8E4-)z%$S9agg)%5BNU%p-cTV^CMm{ z&dw+_olPZPJI?-gb~5K3+#l!WIy0VaAFszI9v*LhozGky!E?sDagvM2#=Gk=4=)^V z8@|duEyCmD-M&tY=ihZ5Z@cWS*Uh8!A*BiDh%Mu76DZkTFO))=3iEf@YaODDf#g%h z;k;aaw}CRe)#XGeV<0({KJ;pm95P?wpBOgoh{Cs|N9J z(nau`3GP_P#bXoPIQQ_v32xhq@c0BbFD3Ab3GUja68CjkW2xWT1KcC%$^E9@TBf zD>Pn-`%ygx^H^`5ndtr&zAARJew%u8Cnq@&vR`{ z;1zkUPbzUgPse0F@3r&o=4VVNQ!k(2LeIAgpEeyMlri|Az;yB`eT|#?c;kF~=abC& zr{&w!(_MauG7Nt{YdS?JV;c7;eYod&=I}F!pX2g9N*`ps=MsmL1*W4%>7S?dx4>c5 zvs~A;BnN`^dXzo{?KG|OZM=hvCn)`n8t+6tG$=43kJ5)JLH_yp1zP`w4UUkG;s)WJWBr_UGKfbA@U?~N*|soV7?uLgDg9i9FS!LzfZ>%r9Vz{#uEow zFQuQa_1{k%r2Uj}cz}LRQ2J0gmwho22kD1N>}v?dZG2pdSRs~~zDn4D?JcAqv_M=DXgKY0i9AqEOA_t`Xls*J?nivk!W{(`` zRA4%Ils-s3591JwN%IH}!FHKPaghD{7<~fLCzL*<1;@hU)CtmlO8*I6*KFc*v^|tQ z$T)lw2Wih!b zZ0}1rNE_ziAnTfsgN)k+I0VO$Sx6gTXD}a9`XK%DG7eJbA{?#{`s5YzA^aTsi_!-Mjy!%yn6r|>_u|Np}O)@A>}ea$iVv#$GH z`zvw(ez#xDM6R(X%9t^Y@zjZ~Js~_i(T%qV9-HWv_3+sf?L$v7SIof+C)zLO(w{}R zuQ_HC-&aqvSx+-ho;}INAm}%b(g(?JGRfvZkdsU4gY-iR-h7f9OXuJqeSR)}p60Z` zJ5F-PbtfET+4J%4n%@HliC=_+wC7?RWc;Vmw)9DE{-pFl#&A!(pDvq04#>Ps>4UVV zKXC~1JxU*Bj9r3Xra1%1xm4O}D+4xAUe-sW<&&@c?y-@o+=MhRD#yrC~ya&HmbH?B>`x%xUOFqapQu?rgxzXH59D-#%N*|>DaX19^ zoAKm;Nrx1r= zS&!16uFKAtWGmnf+Fwao3qejDr4L2lv9D+15PK4zg~Q<|xkifN5G-pv{(q2hOX-8O z?O`0`czJ}J0&N?m4|420PaNcWfYJwvzd#&* z(g%sp!$I0GpB#{OQu+{_*USPO%W@dRZB1naG&^fhi)<4vZx{gpC>`;;lJuUbywK4pqK z9x2yB+viND^^}_-*uPsSeT|z|ILLTwjkj^jnzqyfvL7jZkg?GYPu2Vo-d*E8@U$uJ z7))nb2=YBjALP2LCk}E?(F+exaeWoRV_J`gKRm_F1CQX3PH}V8V>rm%@;E+Q>zRW; z$+iXek5A!qwI2%b3azse_oujPU^A8PwWhlHmeL2=u6o2FI3IbGKFE2YK5>wKp!7lV z8xRMXw<&$7tmOGj5^<2@g3<@cPbLmh52X*%4-JWfT)R^GAo-1mgN%7fA7t)rj5pPs zX5>Jy?H*;kxvM`x>4V&xoP(b`)%EjvI7t01aFA=NmekWq+eYbw98;}vkoC5~LC)80 zagb~Kc6djvvl9->gY(z4H zei06GEqXBya(|SDgDjhl_tZA@!hMaKX^g#TcH2(=#wvoxrn%>n9{%1m_ssBp9OSu5 zG5(pxKgZ)5PvHJE_uR}pNIeg_XBr;vKdAACSl2`D8B_$1J)}8!{2}*mOeb*vA$v4< z4{N5AKi!Vs9z2)BW7G8+FCL$+&r)!Iy1sLnLH-OEkIb-RuAX6sU0A>8SW5qz8SXjZ zwKxQElZC@8-`DGIvS;x7ax?6t$w^&2N*^TWI{YSGb|fCtxQEAQxM#l!+}HJ*nY3Z1 zdqx_;V>8|JSPzfSbla7{{h99BqnSniEcg5>g2!gL_qiS(pJlrR&wdlQKg;ge#W$8F zMt;oRvXyuQkHze-!SgN;kH>7s>yo;e1kM9E={MuybM+ll0bb~yznLPIEpq$C!~G)b zzN34CIqePG`8CFE=nbyr-mtfSTR+XC^urpD;4v3B9`3(kr@YB~eDfypH{JgAaQ{u+ zkBf;fcFzVqJigdH-%jA07Q1gqO7SwyDaUs$cF!<(;}whDKCQ$--m~n-4==W7E-)9G zYP?3{NATLk?m2lKeo~h`h4UaXT3+uwW8R`YZ|U<-+<(hGCpT{sf7@-lhx>24cA6#h z$rAT2FN9|-ac$_2k6hx~KMId&j)%`)VxN7pK~FOWpS#5Fo}YA~DZmRgUW9+P#9r2q z- zw85kF_b;)17B{%i{6ri!Hc9U6QTibD9Kb>9`58Z?`BiwWuD6b5A!v_B>BG?`$rqYm z@#DJe3EbCwvy^?bRG;VL{!%x;nPr^&mbq`e>fxi8xpzZ3cueCS?k{s=!@R>>{f;}1 zy5L>kao>A%!~1Le5*$u@lk4zH@qro-4VJe`FPC5jfea1 z>Rhp$bMA7N(-=QvxjoveerIzgo~rQ>-bLeG@tDRv++WT&|2)q(E4a^H;rhG@9*Gl)?Pc$=-ef#r1?R7Zl#N!}Ki=cHZe#q6m9}}1e~7r{Ghy&C~D)HRmBp zkp7>J2L#K`pq#1eorT9V?ya<82=+^a(tlW&eFT4WrOgYr{V{yD#^>NqYy25}uGU$A zzo>0{311Asdf%d4s_k5cFV}ij;O}Y9`;^7HYzYoBPCmd_Y0hfOPjuN&@z1p1KF8N+ z8@|Bf8c*QsA!x$}${m`s6W^sdyYULmsiZuh`|D@?7mXjJJf!Qb!fSO~>hQlc=O4;{ zb=m)LkpA~^c=d;RZH@U5|45IckMWQ7`eYSjX_fmPDT2pVx$lv@RXqQ6agQ<%_14vI zpP=-MHNOP^K=c2HuUut&uVw6g$g-BEWy`JWJn zlV8?P^(cMVnqa>A6yKorZzKm6t*zg|qx9jkU|pN=G8Z@Ht8BQ!wJky!16dcPuW?g} z@7H$zM9wdoL+QiCUvfQg5I>~rt-@>EwwNP$?JE1>m;Bvm9e!Nfe**V4->k-0>pcGn z{)tTqz6~~?;-Bg@-e>q{c0eWbjQO17=yP`sJPikVpZ*{YL%(C5e+Y+%F68e4r{gir z_wd5c-F0#i?(4E<4d>G}Zok*VLFSG6c+wg-M%S21s_pECch@?5;1{j2t>2?RFUCRU(lopm1aRRS5kts`6?V_UK)ghY}a6XgtqN!JWF%3@$0nC>+u`3o*VI-w0}n8AoYyG zLH5PXctFsGTPSbSdTz&aHGT)>JzD3z_!y0kr5vYyG9Hg=P98o{b0$$fqt%4U|VKW&e8lQ@n^N3=kU3@-U57q z_TfVOWo_po9HjnNaF8+iD!yEER^adHvhU*o!Fr1+LB>W24zf=_z(MN#AO4}{e1w0a zIXiHWb?wAK^1sFR>bmyfAmi{y9Hf6L@Jg*`KYjp$_WVo<(m%i8Abognjg1|0`5vVo z5ad@;{;K`+8xGQjmCV{6?r3J;&V)}H@8*Tw~SvF4QE@wM(7xddLe)|OOqy-|+u()ez? zVy(NLti;pSx%$)BaSmGN;t@P+o%^;e8_!wiu2*yMymhY4`FL!d-C4o$?%}@HW7cym zx87Y_rr@dT?LFVu>t{lESmO~qYrXr)tmynP;-j# z#p~TSZ*Sos-`c&6FJ152zYJf#-rcvZz(M||>^=N_t+N;h`EIiWkFVEn=kTp;%eVD< znXm9N-L7)HV!i9DO5E4>mn|d-12Y;{_fJ`<5RVsX?US7TZF%{ z!F^l)CcaqXZ{Z-{NxqGP{GHtreCY<)Kg;l9U2h4#O4qv@k83=Emua2l_^u7^Zvl4W z6#4{!XU|k8iXMx+V283A|#X+h3KqztNsvX?hv6iTXFW z{T0H)oAeudJV)cX_@qtld*I19$ajDb;8QobzY&;*&(Qcx9OUl~X5k=zM-an7;vQbO z$vv|w!av{So~^CH33_mulamr=BJjr`}7bFT~hc?uR|%{ES1`+-T7O4 z$}%|XqWb5TQxhg8CDbKAh^# z_2dOOd`$i3LL4OC8Hb<^rV9=d?^?=tO)lS~^g-I(4Tn2=)bC)r;~?=KI6TsW@1ifl zLF&91Pb;;%XunCvLF(^`!&^OQTQAntyVRcFkH24|^r3xFf1gs@1ctLMDU_)Y)ES}- zL$JLON?+rqFAh?FKOBM_lR^Cu)agRXHy74&~pQ`a`IQ0G6bTbd)AkQ}*!l!G_41A`>XW=o8dw8M7i|}}<`&*I( zzN6Ik-^2a;PJCCXUA~jQ$=!|rpz*zUMX7tXQ;GYfZhkPE8GD=Ev(OM8-t3+kMmF16 z&Su-4~RZE@S4kKez=J`j9+IS~i> z8`4QQ1m6jp$@l|X+L`L6)6{$F{h8Ko2k6qVo?P-{Q^}3A|#9dp28%`&-=e zG_#fVZ*|9b2oG;{IT1W(tNvXN9^2~vZpFjnTlLvHUa{5PA64Rqw%XK3liHaoyl$(l zANa5MagCqAPip)W?rYq9Mg3p7`&ke7zjDv3%{I<`+guwOIJVKcX4}EPe7)qH16K*tJvMKW*$j_&YLGZVn9_6DDSK|egg&HrS z^fhkIU|mpqgJ}_=j6pERdX$9_)Kf$mhhSX^$}$LY$|-%2zh^%ahaktCg+s8cIU9#g z5ynOn9AwT3GIAcf9wT>7SG#euTSUqi}LZQ+uVDTX?Sd#`#_-a(>C{=d?{Y0`Q`X7t!Fo0vCX}Es>BcJvQ>C3eG>c* zKpp<8_RnuP^xDq#*l`@>?{H7xe`wB09OUoxPvQPH`}?=`FEM62`)j+KuR?fuyPMM@ zc+PhBP9ztPZP#~sc;R+;T~~z1x4SWrz$>=9>!?cnfX08u4{dk*vel?#}Ng@RQqR44YH<-`m~x{)7A5^?g$rW3S9T?@hr|%iMkm;b~>Ao#}YE z%#E=KepQ)!mOcp2)c8<*M49`J{c1d`%soHJ#&gQtHs<1anxBuy%3S|=_}nr#4h!%? z%_+i*b=eX;UgpMC0x#2L%kc_bwi2%`bKj8H;eMHIzL5JGQ%?Qmw!;k0M+NwTa(nr0 zN#~n|c%jCN@TD4Gh8LIHjSnUDHYNBP&G`b~q&cPdA&pnzzQ)bhJU95-?wrp3&W(8N zYuo0wB)*x!{jcr37aMdl<{Rd{Z*2croD&=4ExxgL&0@T@#3y~@+Bq4Y`i(t(6u&<+ z4S!VQkKzA*86KSffsAM1mCLhuke30{vYmZ-0bAp z&Uda2soyakzO%Q^x+Zr^us~o88}G1KYppM>oR=cceZde`zwrtv>}3Dq4i&hU-g~6Bk1Qr_(;te zg~M+%4c~#|AobsZgT!yep?oIa72Jm3uIn0&=V(2-_#K*mCw`CCb1x3k{xLX6on!Iw zy6gn}eyx8ZK1p*X;~>jEfKSyrr{OW(E)NH3^TYV#n*Rh2(&pJXNIi3KkbUtaK3Dss z00-&A=W&qy7w{Lg{+ICAb=g83ZVmQ(5xz^eWj7Aeo;^6o_I{6ptoH{TBxf&Pq03g{ zAnV>?ilHb_tE^mc*Y((;U@lWv_C#zkB#4ybg{V{hi;?z zo7sUlNIZ;##3MLJ8?L|yY5jxo+qDg&@f=-OE`IkOd+`4l&-dUU%ifER(VVe(zOL(j z9AsS+aga7l!a?Gb@hMu*R2-zQrr{52{zEuO{&XCqo*8&d+vDL6>#~pFk87Pz;IlP8 z2M3wop2R`+#Zx%QdY{IZY5W}=WE`ty_u9#$le(K}I7poj;vn1p5Dx1`GcQfYKhpTe_&Qy7 zJ-$hoEycI)wWA*5Z`i-W%QU|n-=Xc_iSN?<-S`>%v>*0yf3eSv$+Pg3eeQT{ii3>R zW;n<((i{hA=Q;TFeL4@|vvk=Q4wCQTi#7i(9OSrr8(*@|9gj=#cQpPk4sx6>$Kkb` zI4`fj5A1Wt%g=bbA6*;T|H$>mk8VGv;vj7c;T?W-`?Mq8NpsG}LC*CT;N3O92cD+! zbiAkL_rgKWN4;^7b4?!{~tm`@)q@L?>koDexgT!yd zZ`C?)!}$YIxpp#@d}~o@U+T*4#n1 zMDW;t{hM(-zF(h9;QoGhPhox{|0j2^5y4|WxqAc;kN;%N#`^qL74HA!p1qp`EW4ubRLsesRy(D{=o9{cVAR)N{}-{)ub;2p&7=`rpHs z9<*Ke(*9+5@j<)j8RohYJg)Hs{-x%x#X){cZ5+${q`TU#LHRS(R(g06bjfwmpJpR=M9B9ExXEx#y7C_{b`| zvYh@Lh38bc?*nu3JFDFDy}R%+RqolvSUj)F9SiyR)GGVc0{Uti9;>nw_VYcwhd;`) z!EfU{hR?2Y&ot)X&sNzrl--=y1BikDTn_dDhI zt}1)WPJSz6H(pWY=7dW8P?dW=T!q)_vUT`xRqmP3ar~t2uT!|MePs?a1`fODijDCm zhh2M8@D_*N-|4r+QxCi6GaAHPKFxfBQa-OkH!kU44qK2USQI7m(e z&pNEn67i9TZQ(n-vlxZv9Cq!`#qT<7Z|ITK(%g-YIqb&USbY3pEAIp+;CU>rqvYVIWt*Y2;^-lOy(Sk{ceL2}08dDU(_Gd_lE4Mi%0)>pm*PLH0!vzEt<)GQ7Cj z9cv}{s%pFXL4KQSHU2s44SoZ24IZy{=d1+2soH-2He;p~2RV0auC{Rq=8y!X5Ayq9 zTX2y4t@!q8TlNNHwXE8vK@d-;3`0;)gfa#}jz?JtK|Mv3%OS{LLFoto9sF)>Ilfc( z-M9EI-FLh3ifaAcTD-E_om2MX5WM>^KjDXT+pF-}YWM9#9e%Rf{f)pW+}CY4HH`ln zH})FiO={e{k%G6V(en|WTI0rl2=82@;}%b=ar1mSo>AlG$^Lj);}JZw#t#3EF*X#> z(q*&pku~nP8-?f8xZk|W#qX+d^TXZvm>M^Kj>Yq8?6tq}cOv=tREPbdJbZSI zJ1*wnb8B2*72q$`xc6oAaFE}_nU6#8PRcC6L4FHvAzoPH=D;F+X^k6W%kbhFcWqOG zuc~q9uhn?G#tsO67bt;ms&Vf`N^5Kb2=-|brN6bty&wDv2l=hkZFrgXRXM&(*R>n3 zsBv>qC4Q*JjoT``77u=}xDG#A<9-M16zA z`%4A*>zY%DLvk74Bp2buN9}dndDmHj$B)`+-T0e`1YSmag5R(z$19Gy>y1jhR@YmH zH#z3|Kjj$Pbxe;7JnfjCfAR1!`$9j?j}biUnCp{lJm;8ee=eSPOxus=A9LsE`|+68 z>EUyaxw)bMFFa;;%WCa_oxwMa_>Z-2 zd{*G_M@n*EQ;FBs+Pw#Y_rJJb>-L?g!|U|>gkSMr-F=h!4gXF5hUGYZT;nI`s}uJ9 zAsiziJne*i@)Ld|E*;N0VP{8(XXAM%Z1c0ZPR_^u6ZY+D-29IJ?tX90{DJ@B`p2Ba zPrCDzImP+(l>4_H8si}Q`ZOHm{pRWT8K+!doryO&<@zuMPd(+vRS55J%H8L7#5-$F z7aZhx?}~%`c49XiLcCDdRfLym zJ>~cgjqk)kuD!p-LGE|H!*`u>zhSr=|4*0oagc2^f8u}YzWWRR%blmp-}v9I9`g_W zkLw@vFaEE)wm1Lb|7niTeSz=(9`w9sXVCqHv)Ou05W(eVbH_)60_@I=j7sf$AZH<7s5wP=vDQ<9uhjU54Wn5Q)R|4`!*AD7 z=SK~rVF=<8N`IBcSL1PAR|2olbyecN)@d5Ce;c_rB;k!3xjGx;O*Ec@H*XZ}7qs&n zJXPZ%ymKSBU0v|BMs9o4@r*{UANu2A&57VwHHv8}z2>fO>*FB%r2!6dtR>+f`zRR)nNJ$xAoE5e9AxY@ z#zBs+({Paebvh0*|D1t?jJGp!kooGY=FukSxb~z_Hiw}8b0}Ltuxv}pHW0L-EoG|4 zLzJB$sPlZv&Je7(3uSkW_n=IJpw4v442}1v3`5ZV2;~(J^#7HV0YUsK$}t)rOPL2j z|Kw9ngY84$#0Q_j_R0p$V++PRQ&lg3La%OGfHIpq!rws$9G zg~lr>Ya!^9I!Yg;56^8LZ2-Y~lPDWOurC@@w$OM>%2WvQLzJCC`ik;?2$r2l84#>@ z5@kRTpG-Lwf^jm9aykV4FoQA%L7P3wMrw>5Y%&m z@+1U(b&B$D2-^P-r4KS@&cnkxRwMXG9ebnjTQz7cIP% zIo7mb4rvjcek zbYy<+7@huRy>m?n@7yt(+p%6t(*;lK7=2*~+mep=?ilUYk(@qwMn`we(;p9abk{Hu zJk~Kf@*46z{Hc!7tAl_4}VS8Du293=h`{;|ea;c<;8@E*MPSJac_$~3_I6QG3`(*?U62BVH(s(vLvXi@J8-?d|ioU#}KL4f?9`EF~ zC4u`|zd0Z8?E1%aVgBqAy*{|7YmEC{qjG;|y3r5aq8yCK9&Uugh?jW|*%&{ghr8}Q6K~QZdd5TCd#2#cd$|364&I`NyT)#b zr{ckNZwL?f(Ei7->Jgm~T-y)Ab9zK`KgV=}G_ej4oeQuf1uAH|`l-RLOgv({PaZ>G&BvqcfW(w>4+tAn~*CxaKGD3XNCd zzQ#>2`mZ0$I0W}u2}(ca;>N?{y`s&g^FAVhSM-W*@5(V!iSO?f zO}~-j_b2>7FL!_RGk!?pRrq0zSL3z4qPt!Ro(bc=w$1d$dq-bx%D*jQ`p}1cqGyg} zES-*@(I-0dUi?hFNuOxPG5p$@WMXPIe{19OZ!A$58AT~|GZChOAud!$F)5P zyh7VtiP!dtz7yos;UM+=iu)Qjec7(Q(aNCC6ud=WSAR>qLtobq9r4b6qwyf83!c{3 ztv4ONtgq{n0eHBt+pY+n)7Pyl7oXYJ_0KFkrptQxGkx7QK8rus*Y)#Ue4fVV;~@RN z00-%}g?ORXQ-m+ooMm`%U)TR7_%9kih#%5ztipYbn|`#XU-ZY5jB^ivx?l9uru+@s zGyS3`p|WXm*He^#!)eWuyZ%GzYur4GLoedyxqi_Gi(GyZr4Kc?)az+p!3$m76yeMJ zMQ;uASKurAMZ4e3?@xZ%FIo$y-^}k-QXYpOeuDC(#!pfDAa#C(uhL~#?{Sc2f54$6Xy;xWWZ8Xqh2~e{KlO|53Fj;JlFGj^(6`Xe0ReXGNOau=KPX^r@DL-!qYUKj%R3{{qeBo zMDQGKLoR-o=G={2jYsi3)_1CY$mHV_wa!U6419)XP?K?3zJ_O958zXD*{OI;^F4ev z+wckBhs?pB)BL$ONW1`Fpvx}AU)J_4!a<%3y@JOxqI*~Kd?|rfX#JJAuQ~h!3H;ls z(X{h8mQ94?JrbQYiR;6bc$-MHXLJ62!?yT~8h;6&7l~f=81vqIe1XOn;xO+C;xFS6 zznyv(;l-L$f^UjMKbuWXDZW+XU*X#{z8#0`hsY_zV^_HLcvnRISFeb^8MN&+yjJ6N zxPL`-PtYE7CHIn7Mw5r(4e+EZqxl^h{69-)9#>_x{oxl7hcv|;a13(9q2%7WKW*eB z-lR04G>6pA$p$EEzm%Fd)OjmQOcNTlw4gGF)C;8rrFl+{WEMD-lqRQZC0;8iO)ahW z_w2pbAK%YA~M5x&THSG`Ae8!l>xFgcMKng?6lm z_0fndJ~wF%Cri#waA(QWh4`*EzlRNXm$6tMnXwnc17z$#c#zDSPCPR6V*P-`T#r9f za$*yP+4v?{f4Iz>1>Yp`Bj9YAD+eAU{@Y+=Y8VUOA^srwLy{ls-zokn@LdvrH!=5E zzlZhF>MWjs3q3SJiIt4H?{#h_Gdpa9NCeIw^nk#c*eU#Lb-#z#!jLg`_U}XGZ*c1QbFfw_b zfS;0ipN8j)zYtz1{zc67tR3rN!$mSL)<WJ>oi|`T|yOemOYw)oCGKpUf zzb>_vz{sq<6n;zctYGZhGB4I&DScQ4BQx)67@7X8f!~p_YZ;4ljED7+>BBnw?~5NB zu9UT4!&TzP`pD$`6y7a4KO+X2oLC=KPG-G(;Lj!g3;2+YaSp>rhN^-3nyQ15sW~=O zwL#yp*GbqE^dr|}Dt3@&;?uDi=zchW%|;909BdG!^h!txVO^xpWIpyu6oKbq%TOX* zj;%xbJjby9QR{cUhkqQZ9P&8F;QFEJpZfLTIE)VJb^QjLcIGM`- zzf60b4u-GJH2dXT0|zoq&Cd1kjpDxv9wG4~;p|L%edWNTGi{&8z`;y=9zt+#rm4rt zgH@)Qr>}h%o|b9*KOLSaa}~g|CI1{aEO|Wm=}a{yz}WdPGJ97DFO>X?;KiACy+trG z*M2elLZ-S$&-)^b%$a`)UXp3A<)!d4$+H|rb9?cEJ%)1Ik=3K3Y*JPTr?YsjcGj?sJYKHXBtmfD@NT2^CYzoq6CKcOP{At)hNcSNf zI~eJ84Z#jadf&6K*+|cugAF2my@as2NS~!Vtc&y+$j63}eogbR^O3H<5L<_IuVPpq z73u!3gWt_G*RS&)yg}Bx5w4JaR>GSy)vx+m+YBS~n)xw|Oi#AJkxcvA5`}k353As6 z+Y_e--YLvW1r5reXll?5xgNtsm zpJNuok(<<(9{N2eTz8YY=L|iG!M?;hBl!6{LS1;4dyq&>N7XLMHhQtTp@JM?P$Ah07 zY43Nj33}Eg*|7 zJ?zpe?`H1z-mJcw#Qmk;Vbt_iUiVJJXT*ONMk{Yl=;r(ZqnB@i|Af(Xqu_IJ$|##B zbrkm#MyYY_`CFMi;69^NqKa$p^o7wQ?YU2t28YG(!4)#L5=PJKu^*078EEdU2`K?= z5a~KY*fQ~#W5b(9nc6(8ACWv!cTh#{50XTfC zI-uEuBe$xDG)H0oR@K_Xk0yS!%@csbqiuch!<8m<$64EANLGl97#*!lx-aDvPQhbP#2Jh*6rovRo|X5XKK zOD0Gk;K&3!ZxpVZAnSsUO|U(zhZ|&UBkW5~=XPqiUDgW+Z@2S?;IQ~TIC8t32l%#$ zHh%0x;wMVYa9I2v?2F%-#J!P8Dy*ODNP^ozoA&3y?i6*TJ?}B{;jqMea71!OVSkF+tmB=#;JakKcf)t9H!k6GBIh3X z9+eX0eU5W4^WLj^cH(|c01n=(iZzGe@V)AfSPEmh0Ai)G3_sh zBe`nRLvR$X&Q%vb%)B-5!CdvWj;V#~a@Ad$WAL$Dby&yO!wtD=sP;F)XL8kF+J6@I zbJaZUck-w$&(0fwv-50iIdCw~jt#-Nc{YC@>`Ht-T#{$kRSK_?v8&;-JoT!cs~oP# zvumk@H|5!yH^aN~?7FJp>O9+r8u(zIt-lsNlxJ%`3?Iw0HP^!@B>zwF&l2+s>`Oh) zeOy!bsg0f3-&8o`K6P_vH~@Nn10XTh$k)@Xk|9Cp<=kLdic@7nxM zKKqq#bC$w>zWO|m80R7QVOje$c$$jupx?t!r*G43e*$oDy6UO@A-F{RrEp}r8m9eG z*cZPugF0uZd$d0l&X^&2;NT3ErO$Z?c4w%kbxb~7GD8LQHCPHqWNZ|!n_=_E;D#A$ zm5y(OeaY!O!d#E2*$*-{70!4>-Kp~g;NT-FS^Gn9_!0Gl_Iq&T5%relC|vi5s?s@Q zu>XjfpyQpH@Jv;as?R_HulWV4TPoLYbGUVZI^Kczifv%@v)=b4IJrO#%7;6_T?R!-JfJ{btLGXB4-$VmJh(u8qsI<`Go+pX zoL!*)rTsZ@ut1H~9D=77C|Bov0Cpu$K0LEP&D1dk@O<$X!b>F2Qn*C&l)}5D{wlam zVq$PZfm*8bG{U~j<;>z|v(#zb&nmcDYN&zt&rPsDe z7_O7CG5DzD{2o3gdFtVYS!!T+&RZjVQu3UF&q$uL@HtuIdDxeDXEyzut)A-4UZlZ; zW~-I@wJsgbn5~{r)DVD!v(=rNLvVPu`bpR6!6mcRcI_{PBeT_g`aDPBy4mV2?T^9! zZ1sa?XAb9fjtXe*1^1a_=jscizItpLJZO%(Fq!=6aK;?fRQm&PaE{8-9D>6V@4+Q= z)MYxp6pl!I6y7z*uB!^Jmbq%+V{=rtj<1JNelqU?j>8QS(+K4&1h?yt%g647WVxE0}z6dUvXWs*t!V&RD;cD^Mzz65q_x!c+*Anv$d`SF< z;X275gZ-y$yz?~ooS(Lz*WUz(pOzZn`A^$<3*l$QzZfoh+Kw%TUl9L`aLLoQ=2G|# ziFp%#OZ+R~RT94%-X!@q!yik`7C0g?QFyP!?1SsXAA^0#@66}lO7qq3hk4#$7#y5$ z>kq-<`D%{-H<1VX^OgM`K_UB9s0PfA`=^r!yM=0m6F<<&ho=>)=M#ALZ#o<mzYAhs8D_8@SU$>_$Beb3@<5EJ)6d-J4@jb@t4AH6{;mo$hiW3TjpH}M+#Lh zoj(eHQmD>4@k5-gFf#eK6{;}Oeh-_m!}x1IZpvDwz_}8i2fGrV4?na(bxNRyhhcO=&pQo9#y=gNu|Rzo&)Oe>XNi9{ z92UO^KQ3dRfQuxi7)B=NbMW&L{{oCm{ug0n^1lQxk@%%>iS(@$E|ZvY7`>=}zPt;g zuFd27Iq$(67T7bt5w4K2mGBlB8-bCjCkh{2V6T_j1uBfpS;G2<7T7a(SjRtO_d5Cv z=kOWTdsf^)XAfNWjGZg?j0$HgG=2~34_|2gS@0<9cd}vBJu&_=CkIADn{dtE0wZ&s z-U=g=e>8lX_{YLQ@rPh{p*@HB@S_XW>-t)L41RK<8j%RkgP&TcDw7khcAkdki@y*q zUTCk2=N78)^9${@i4DJO{T?>FMEqDEnd@jNTxR`FIb6L^nQN*BMkkXK)1AHW{)OiH zat^?C5)*?P7TR;z2%lVNuZvSKGS|-UFfu(k4WC(Pdwv#1#{UP5%r*EYj85zIo?EEu z&@Hp#Qes#i4QtMIbRPDl9%qsAuUn+^!nqMbNQ)XJ`~#H*>Kn&vypLux^3%=VQa@n*j+|de|cI7h_A1jxWWQiN72hLG1=6 z{3D936Mqc5YmSYt!qy=@Zwz}z{AaP}#D5;^Bb~>YyI9SCe6gCI?_5)e_0hG=>pTIY zA(tj(IZwjq(SZp8XC91<|0(#T#p)H8_?O|8i*0{a!Rr>Q8rS)UvwpG4K#@xmt_fg+ zD2};8Sif9i-i0^H*!STcMK)*8B2|JWPL02&6kCn-Ts7D_@yD>f_?=!ws!i`AGj9^M zGtzT)!TJNN-x&xavyYd;$n4`~@IS?WIgE_|iXs(6dM`rQy8kP(y~Q>Rw*E$}k95zS zA=Hd?KTEOxRYkU+SHnpAoonD>vc`WGshLRES%CHLlRED&;u#oQkB5yQT~8G2i{E(| zo-R3Oz{u>~BlH33nv<{@NY@s?hG$y8hpjHK{u*rZEbH%t?TYl-=!P96{&Z{xGI_KW ze?7KA{Eb*&{Lbtmwd+y4#wu*lV|E{lvHs(-_9v(l>9r?egGis55cc|~t$!%CVuAHn zVk1b$N3p*6oo8TV_G=+rEc^HzjEw*JB6T6sXQ?&Te?@9|m7cs|^LyAjq|a&$dq(_c zv40>v@1Iy7=@{ot7@7QU!E0pRci{Dm*RKQrf!~+8K7cDEz7qae;zt`sUuw_V}?Q(1c`2!QKjA9Ro|FHHUQ}aId<)B@AG1jlO zYjnPbk-2`qfsv`<5d5v2w-DOU2j{ zq|aL^cHHmw9FE5Zkv?xBY#5o>No+*?QS2_H&v_NLTKqNGI;8s$!}{WPPQ!mn&FA31 zrDh)v7u(kaub9{KV&z?$kl{Gb@$aDL>@}MT_j=C8^nOm2T>hNtVJX(XTKw0*8P@Lv z;NWxibu0uQc+U3oOBk8g-mjihky<-8iuIA%m#<-DUZcK&56RfW@K2KS=jT)k(lM#n z45arcfc3@i`~o+~*hUzc{J+A;oX_9j-({}T@EOT}7WQSV^E}T(K5zSw0H-`}&qFF4 zeqQx^i06$x?SH|pH}wVlFNhzmc)?tEP9+?Xm?*sc1-r%_Ffz66gnjWlFVe#oZJrPu zdC|s4VgDuTcV32Hw(~km;3c-t&Qf@(`sqU6mpZTTUiTGs>H>HY9DGHsxj^6lhr_R^ z*IM##WDkzKqMp7`|9cs(mY5p&p!jRyx>sz@80?GRd6oC@ud1pG$(aPFylP`o;oz&P ztIi*Si(XZ$bpB#^$*bxKUC&auuC&Q((wnX}XkMy6NI;TEsib9(`d%z0=DBXj0k!N{De3t?pX(;99g^CrP5Qd=tA zSK`y)0aE`!c+hLMSLtwA#(Hp(%v%hX$h@U+naouVS4jPpa75M^g?GtZRdBVer3OAI zYpjJ2Nv{sWb&@9r`%;7RI{do5@8Oit^Ago|gmak_2cs)S@?JE)M1@h#P0l|&tdH&) z>0IF?z)ee33Vx>a{-L5&yVZpw1kn)>9m5|l&CVzNz8?Gyr;RX z&FNu%l&|w&gdZhPn}_vLhW59^k8}+l)<n z`@+bqD-9kXa}9(COZ`L0iF6Gf)<2-;}6`Z{wp_ zADOf2l)`Vx^|FFUCg^}KOXCJ&@{0CrUYW|WnB7FuttY0U2V)%csXUxO;X!wtO-{eOanX`8c zM&>-%!woXF5k@BeuP`$E@*8|o&f6&%8UOFhh4Q&BJgkq5|1^wDf6fqtme$Aj@UT8I zF=yd(D^!xcrq08@?6vbY*Wlasd7&gYUgB#wq*KZ^2zpehE zpSf~Y@?K)4I^B}@giYXPE7g!zaC5ljO0`ULE4YpLli;or-wjS#slL@Qsqi?784m|n zstMX3f?bKvhr<%%!9^?8Y#mb!FI%aSH7|!t#9s=plKiXTcf`LIMkan8j7**DVPtat z2S#RHWiZ;T^OwUBsUZsQlK3k4pwwIoACvs`aD&7&!Y3uqDcF}7XBB-|W#>wT`>wJ* zNrSIjW&4={k6UHy91jOq+4@7UT4if?;hEwufM>0;J)8}PCB}oFl$d$&63M?5UM4Zi z;Ws4aP55o`uY}9QUk+D@zY^XgHE)JLm6+Y|9?AbX{I&SMfsxtwLohNuKMa2>YdiuY zgxg3=65MXJx_<}$_Hc*Qs%?ja?oLPeQi-_?9whnG;eUz$ z|KP#m9|B(~d9H#pWUc^=zV1lQ>tQr{J9Q3)GiB^B_yx)NBD`d^%1KV>=`4j`k$PT* zmr2ZWxMZ~ocTC{#1i^2uR*Qja9 zjO_$>UZawBu=XzSREc>2esGOluY%n*>QsB;^WkZ0?7mNjXRJ}Vop_%75qPHf3*b3x z)Z?8JyE}8?N7ty=H9tlzNS_%G>mxI77)ItSdGHdcVJZB|8hbWgh0$gD3@n3@IWx=Q z*Q7tM!*9sgH{rL|s7;*`Q=Jv?+iTQo?diix_*0454cE!o7>rD>zJrh29y;IS`@zP0 zSpUa0_RJiE(dlh`_qHA`T5Ee-yp}Vt)?N#x@T#@y$@ctix7BO;UW|?Lus$;NuY=3h z+H0X4-XM84!tbwD-{`R)z?&rJW;n7|9n$@b!k?_Q`?wX}w$`q9JG?_;cEY>JnatX& zU{uus{uKU9=Gp^SueJMI1MgjH_iG=F%r&wfM&|q+fRVYbzl8q~|DUig>vGm{Zr9nL zU#;La>+I*|N$^GM?C+Or2Pdzyzl)<2oU%?;=-&mA3J+SR;(KuZ)8Wh4sRIFiAO02a z;B{)O{ylX=;EZ+lGx`7=UMJs`fIZ@Mp2uO-A&2`{Pry&EQ-9^~?}&LYGQTtADHvUs z!@nh;UZ=w7gB+)ahb=)mz7*?=->sVuM>}S%^o&_M%?0biDK)J9vj2@$gHabM!yZ>b+QzGTl_0wr0aB6 zkrVxXd0ZC{>mxIEHH=Km8W>GTr|0j$$n@0p0^V=Mf|DQo~U+ET$f(hzDWPR!8Gh(q{j}yW*{9Czz!FG7B*Y_IoKdN zME(#q7wNHi*eB8Z^lBbEdC1Wc=kY(s`VBVPtyv9=t*Nyb(s`yuA-26aN8>Or8oDnX#4ZJJRtntdGnY z{t!kc<|BBMjNJ?)bN)Yuk;%UWM#djmr`jQ%vpseY(q|wY>x$A8Uf##T!S(ie_z)akZ-2Ls2bZk3&()X0W$W#C2g>1( z*W1^DEif{_e=@ROg^{k)!}`edCkofCx8JLZ!9T3G&+Y#RBlG)zj={)0&tDHWthdkY zH^OJu+h=CZ!v1=BM(96qnT>JE;SK7-2OOTA+erNz)hW#$?7y$h{ex$moDbj+RJVU> zu3+sI>M|V@fP)okzvd7euCOs4TvDN~)$yfpq(Wuum?&IVq4G7yU|-^$O2&Su%JcflK3aX z$kcWRj7)!mFf#rS9Nwa8Obu|!7Q5b3II@M`)1vEv{VldvPK2LR5u4`;xFlltr4;7j za+9Bj%l(X~dQ3mN7=ZsBRZ-11z{8`eL~|C5Ow5fiGBG#7H%C=oS7JuNL5T^$4@T9n zu6!P$U|0P4@HB~^4ws7m4HzxZdESK4cY5BpU}S1o0i&Ke=4}|6c~`@GktG)UW|YriP91`!eqbaD~iU34bK> zZi11iZ8MBa%^$jE94gKLm%js?YR(d2rEI z_4gg*EQVj$s?K)eS>G4oC6Z?;T(VUi(DRnUWm0oFT(MR4({okA5ve%}?~*)K@IlF6 z3m=mB!|+kb`8|A6Vot%n)a-0yjoWN(0XV!({jO{9;D&ALTU~P_?2F&o&g5>b#U2s+n;hcBJ)P!gWK)8YT-lM?LHoc>!juwd`#l&;S&=76MRncpND;^-`T-y z`wrDZKV#n~+zWStQ+6mvb1K|-hq`+TulZ^4pdIRe+Mf;&-l1+b zXAI8Rp)z&O06ct$`c%hc!Pz_17M(u_9=Agc)&B8taEDU4=RrY%jA=s_5-yg|`!&UZsB_3Q< zWxqdC43|huDZHx6en(?9ytc}Ik7FHNR%O4JQ4U8WCJG;vm|D0_=8eI}B!4}8Lh}Cv zH%OjFxZS6={`Q}8oGC^>84I+-^HpOcvLaJ$`hUF~<%tKGJ5o#39kZT-FA zzPoJ=Y4GI|a|N8S+x98|XYaOa%z-EFw)Ibf-Q99d;3sA5Jb1pu6v9O^S24U~x9#Cl zc$vg6hf5^B6ka9utcJ^EY&jf}8lvzn$x{W_?Y4UzgOBdEXZU;gn8eh>C&hmX_9c(= z896^w?e%x5qVTTIlzTB;1y_HjPHL`!4~oAQKJ%H{)gAv?*q0b*59eWzx?B4_c>W%n zrw~54M?IzeweYb$c5FS|u*c?ag#A6L|HZt2b3W%a5aXkhQ?oU#NOLwgx`j}Z(YFobtza=p%;4&Fo z4o9l(TB2~Z%vA%|NuC(oP;J-M2%o7|`}BIx!hW^wvs1%8s~Y>gyjF0#8vC8Q_Hfr4 z`yIV*a7vB+&R{CsvqruT2=}c~=k$3j7{ISd|NW52_g1&^pvd-V6PM#9K^_wZ&oyGA{vzqgnJkFHUp^!L}sz!N2A z5*(DdLhwvkV*wnNHG1%T@fX5Hvfg5NiNq|0OC(Pz{Fc_ zLF(BES4ey%yh-wJhPO%Iw!^z5z6$=&H9*Y0Bu9NcTaXBvWY_uB84=E1Jy%!jA#wdZF#Jaex-R|Rlb{2n}Cau&i% z_S$p16fO~eDg2hyumWDY*PiEfaG9*79IlY~O1MGtG{R?OU1#BQGWI;2vd_+yx{qsl zpY20BJb0g7`w%!|pY34)&faI|&4GjaY!5@QyU(sMAD+L@_OK9MxX+&LMR3tRdyN#s zCHw4Nl)@Wi-i>g@KHI}eII_=PM^Si})KdjlOP(6IZlB$Y7<_D>?QK2WAnR&`eTi}Q zv)=u-{#1C-ep_ccoUz~57J#$&+uCyA;C`Dk1iSlXjc|Cso!5hlBu_D1vfuWw6fToI z<#1%b?PnCO-f#O>1J_ACF}PvB-HS%}%znG}v+%k7_BG)=>`RPufVCV@`}Fs?Q{jvQ zs&FbCfP)9r0sR^hf~Ou(C$#?o_(6$LuzNstdTMO4o{uq2r;_Km)5`PLlBRS8)=MJdf^}Od{Ut*ju;VR0er>Sg_1Z08^~98~)?M`8bHW{@Wb4%ezv`a9zuTvDsnYJVwwO#Jom ziCVR12LGn`3HHVBe9hReRn{fs_u%}zwh&(Swfd*#<#5T@s?p?x%Ot)Wj)*@B z*GYT~_9e#o20kSJ#y`w!(P6dpZgQrg#v-eNDaK{^B114;25UF%?Glui%2EoYq(_v)%|6uIp z*6(5Y+wmrka|Qf=5;GXSTE<=jBQy3|#v)y_hxL)ke;tfWOa?K?)Q076(A$^*JX~V3 z;IORSgG*xS@pt0Vol>|={N->&dKHB~iK+V4ahEzpcpGyeGneKaHpavHNc)|g z@DUkX2O~2!2KzFv^BsHfof`EH{ZEB^eP{QjH;l}F^?{Muuf8zKSj`@#eW$|6^aSgp zclF-&gZsdnx0z7#qO)NS_VoGWZIK{}=p!5ad3VSHcq|W)d8f zJRumFI`4#$secN5m*lw{MkeMS_+E+0h4aP#5Ij@j3*cE2GaG(PV!|*owRv#lJ2iC< zzso2JfAO9A_JYJTry8#LPThZ9LT_g;j6Ug{nC|R@k@4>*hnDUM*8fVz9)!Pm!r14o0Si7>vx=?_ghg==>M{uRXWUQGTWzwPzq7o_17S+LGUs zHXTL-Td|fIa9I2v{P44?$n>oUeqP4D z03+jn5k|SIwc&QT5d-u8WW0O%k)2d67N?9@a-@?8o>~ zl%9K79~u7^7?~O(Ff#rqeB`L@RUKoIzV1CJhrd^+m*{_E{s8}|CJyDb+BpUvQ&$N_; zH%W6Q!9nqdV7J~rSC9|Sthb*n7QkUymj}<6brr%3>(#k;`P-(8;3A1HhF_?+pLMg_WX zz{q?yx)H8mu5_N=s)RSy+uv`t8IIK3-#HeA>+0?A z^NhhK>Q#%OJd5%Z+#vHd!e~;!8Q}a1|5mSp?>6b_oP?3_pMuYb|16BmXWxIo$b6Rl zCwxx)=i$G^|2K?GykF0E^Xtv$*8!}L^m7`HbDYmBkE_#JJkt^fqp>%_@h~#}1Q<;i zfxijd?6~rxy#6J`Z+}tJp94clE<_j;jxKp1E+* zarNjg{7sf(c*$`Ui1G~8Qur0|zX~st_~r0>l79nSA+=S)n;6?b{>?BlHGd38q_!x$ z?YNqy=iLq?vz8t3my+`<_@J!47Op$49?^Y>!6%NZsgvNJ;NOlbN6&QR ztC2o4HCSK#PInmXyTwU$E{0PiPb!SgoNm&^xdcW#UgNpq9&pbS=GhXb7u@%R{hKvu z@BkS*5DtsqgXf9=DHxgOYMy3Y&se{Q^^ti7V!WZo$Jnbf%lMsMloqdq4;((CfDKGM(0IA6fXtg-rp%0M-X;(G_M{GD_gQv)BA zp47sJq=v(A-3iro41Xgy1~-Vm5%y20cZ%Y>I?hk<&-QoYIKRLR@=Qe|z53Pu9Pxg| z|Eqe<{OtG*{!M@bfm^|C;@n%bKPk>lL7DuWtW<0m={z2`PW&;f zpKSe3C%CKR>;|XAxnp$BRJgCiq`?EEhJkQ~_yce-&TXUT4Z&fl!GlXAPbnOcu~FEU z7$=@Q@pfGSI2>=+;=v{Hb}glFS-g9>uBRNXh_^kdgd_2`4^g-}-quh9*TuUVbv-e- zA>OW~5k3>|rfdIM*pGK#(Cj2oLxPP7z?lg)=P>x+;=chNo?vUpf|1F8BaBS{Z-Q@5 zu(geXvlHyPa^Tw}=U8~0#E*x=;`iX91Y1urTq6EbI3n{#VL!pH(P`rPy_&cqyYO%1 z-f-V0?t_}s;0*Bx;LIlOV(lLW4{zd@Y0iRg6#q?dw#4Va!e;W&rOLV{2G2`J0iSC=4Z-*x)x{Gwo zBzSV7yG{G=fP;x{ADt%zBNKBcjLck9;JXstb^5xv8@?ye4e7D>!nuj=ISDYwfR%wjHWhE0M3+{Ves&#wkKKeh^Dr; zBjN0(cD*_9=%#MD=|4QKsqNc%ctTV6bKR@k;fYOc&6D8CQqLW5Q05K6xlL_9^WdpX z?cO~AyHaO9Jguqi;dFSWtg!%|BWs@vhnw2|drjR8r1vF&4I{l@9yWsXUPQ4zGW+#7 z@kpPC05**DUVGRG(q}A+^^w_^Cx}P-oCL68q|cj&jUasvqgWrAbM++gNcSp$4I;fS zA#51wee|#;NcXK28$o)nqgWs99m)Nld2k82n9C_;EYdZ5SRa{l_y!!2m?&H)y^6sZ z&Ft7fGxo8W?RgFyY-W2Ng573zAM@dv&FtAIfWyt~8S~($CC_{;(me@a!$_~!!$y$q zc@*mxO8f%2NaihupA-M{Ff!NF3*GVhMg^_803T^IEYKKhk^ZVSQxw`W5_0@12MBkvZG1QajRn6u^d&-Xjki zL3&T4*mL4PkM+gxEMqLvXCQ#}mrEaBgOOR+>u`zmq!d0XG2g>Ki2p|znb(11Ff!L; zJ&eqHkHg5kru`2_<~8I5jLhr9PcSmCQ9r}Tto;`lnf^4u$m~TUj7*<@g^_vf{S8Lu znmP$1vzAjZGOwS%!^rgTG>lCCGq5jfbei)z*4$0Kh;yFQoc9vV-6t=ix7gf(_2*&d zqy0(omlR@4(73i-JJ?l7k6n#Dh(5w!i%q${xqChSRBQ&)F#&8YdXGGL*a~zCuEZWh z1$r#@DDvU&vFDH;dmcM@Xmhs%{vlWwO~Id!orw;$jqg=}-G%;-m?~^?W^?xyxD$2& z(zOl5`pB$z7(C9d#TgIZX=9uz@KjsB^8h^4*6b9(^KH#eA^ei9*?Ad$1Cif(6Z@{M z(|HfxWc%i9hIiSTohtZCTeI^O{9jwMa};i{H9L*4FJqk+yq>gh@2zaYXDjgV7VfX+ zXFWWkg?mv~ex{Fvvs<{AYtDg3i+>C}p@lm}`)`MliJu6g8QMPyMlWlg3?q~04j5Hv ze-K8snnQ4|#N@%Q)RPZSll;@+nc^>iXG{HaU}Wl<3qLCU$KbH!_u$7R&lB*I5;G5; zFY^|{3nkAY7@7V&3!^`Dor~cj@fX7-E!-~M@R!2tTDVthUJoNP_CIi$_{-sn7Vab+ zQweWs;XbN)GaPB*zOFe6?`q*jy78Gs6 zuaosBVY{MRE>7XdSdcE@VzdM?IlX@3f~r}%qe2Z=u&I~vU(&lv1Dq;rnPmLNU0 z6uTDboa?aLkgjJt_7Kuz4`UY!UeRmp2_rMM z7mRd0PHz~Qv3+1x-wv7)*FC_Ne%yok*VPZ7?~P|a~_cHRWGcM%)D7JGWl<8>4uS>*TeeA zl@F-bhHat%184pjCdM3d^sV4;ACGmH|xsoRjo+`CH0J}18 zK0Hl&G98{NH5b5hWUjgJqcZj}7?~c1VPyK?!B4bw&+9#X5=Pxq;CV2*E`_uA6pW^5 z|I;vfQuBNmt*4=MonU}Uc{e-9fWlLbZiFFIRn^iq{rr9gGlEOVZ-SC zOE}xuBBXN`V@r_ES&H@1*O#!~-(h6xKMf-tOMrJL4!pOv&Yw1?} zWn(I_J~C_n8}?fg9+_&DQT>eKb$! z83iM=u51{YwdBCJv~qjum|Niq;=dh6#y=58riYW@pu~h=WO{yQD>nmuM{NPDkBol` ze3!)E4I|T^dthYNcrT1hZMiTqwdKLcq&?Y!w&ADMUsBhyT<%Aw2+jj%6kaoVu1 zHtujeZxWo`#?8~*2~KI_F3_9`XS8wO(Hww_B)%A4BJoS%5{WN`t0le$_9fm)Vy-0H zha@;9$*wmQ&PcMo4Zv=a?OQ$^PI5of^LlVmlI>M7T#{t_Tna}dXB4iJu`#$o@;Ac1 z#5ir4tF4_k00-OJK8Ikpt(_|$4!5;?>cK^A?S2)*C2j4#m%?vI%$xArZEejf;Z<#I zZL8rmlJgySZCm#zy_R+Gddc%2xU8*RdpW#8@@$0Pmw7*cE85z%SHd5*wfpiBys53- zug&nsZS6j8fg^3*3wtwH6#hi=Z-uwXdbh(nWUig?E~&W+{#0t-4Syyvd*IKd<}cuC z$yo#MZEN>*AG}}U55Ql_TwlQlrRTNq*Anv$d`Rj%41e3!p0Oivo%mxgGS|^}Ff!NC ze_>>pvGBH2E$c+6FMkf9kjLbD#4-RkTm&E)H`!d$Kh}WWv+{^UY7y@TpxL$b&>m? z=4^P}MecshE3q4CZlo0cf$J3q_*ZT zGW}@*cM*SA7@0nIgOOQFcNm$TUkoGTPl1tMqmv2`5`Q{8Sn>~nGi*Ih03L4Zbh6+P z?PRav>~^;QIq+y(voi)BC-sbnCrAyq!xLrRNpP;rn+H#oxgLOBnJXWjCUZ@PXUbd! z@GO~YHath>nhQTFb3Fzlv&Jxt%wBu&D>Cn^@K@qL*v^f_wKx5VVtr)Jc0Am{`kjt& za(mnVPH<<5=>j8jU37(!-aDrojLdb>9Y*G?UJN6%UnwxMdjY3Po=e)h;huJ059=c{ zwpV-i?=6&9$ zADMak!^oVU0q{WS!=>C;rX)OLU@79`wYBLdbe+!Jv+9NPBYmdU)WZvyCGGlkZJ0*S>yjx;EgOTa~9vGSH=yMpE zdcJ^>sizv=FJlkD2PM81M&_J+4Ih!Qb?|@1e-uXMb@hArNAVwnPe`7hU|;-B2d>!; z_Vpwc&gfwC2jJlyY@RGQyMwJi2OihK);u1b)WOy~84gOG5PWY3yT)AD6@NZFt%L3D zba-J0+uKDjGQE8kMy6MbVPtw+1Q*L(&%w`2{ukgECC^K+FLOB^dB5G!e)f?B5AJ9_ z$8m}Wo_aYC@$(R^OxAEuZJ5Xz7h7t?<7-yveXZ^ zO}6!41S9>qmD3JxpKRCC0Y>_BE2krj^k-5|GK@@oC%AL6U1Jv*>CdE`t}rs66Lo{T zC)@R245uKy-c&5opGi5Fz&&NIUU2VZyWT!iT}bDz!Xnf2Phn(wyBq#Y>e&N-F8(jzYUy(gydUX2 z2e4ntTE2o0N^fi7uanJZf6h1Xp=5im4#VF{pO3)b$=LtGKS<1v@G)6qJ^YibDXX z>el>ibf+`-(>l8aeYmIB1irGf`=WloaTR>6_^*SCO!d1rsgIvGIb`x$kf>sMy9rAFfz3@ zhmonR1$?p0mD0rxBi$bl>)$N?QE;~8&w+0h|7iF&$v+l;MEo;hWcpkHBUAG%7@3-9 z!^qS#2S%ozxiB(oc@#!wEsw#-tR)O1v%emU%v_Jd$jtQwjLck5!pO`u4@PFLr(k5} zdKyM%uK6%Ba}~lxGFLH-jQ=?pnf%YgZ%fQd_#LTXEnF`CcVT4adJoiMTQhz19 zNn$p`5s8Vy+a%9+c$d^)1@DoupTo$UpD*AVsdF!k?3siQNX(ZoGWCB2BeSl9aIMVs zHH=J8zJZa+e+d3wVt#-d#NP=2E%o^Dpsse0(!26H+|};OHE@Rb1Mu*!cJH#_p!h@Z z{atNsQ(;&9`S9$nwuf`zu=qWAepg#(AzakeuB8}W($%hgDO@7)rSPh*_6)3sDIJg$em*D)Rr_OSOiLa^Jz-p9y?XZEo7TMFQC54oQP&zG@CNkEZ#!2UjLiMLco>=cLJ2T3_l}yt$lOy(gps)) z)wH)8M*7~Dhm9b8KPrm#k-6vGj2NWvS$S9=nS0dD@gsc?&BOZ0+-quqAL)DA9@a}VSQxof40Pr^gSyN>mzd?tQCw*%@@LL#GeGWliJ$D9c3-aFfuiFf;-!q zoi1=!@ppq$Bxfp|A-xK~uJkG&4$E3RxJY7(;S%we!e!zwha)mJ3fGB02K(Z7`Y>-F z_fLJ@rNS9~+^%VSZX1AuecX&ReLceAK5p~&yqECcl0I%o`%B?SANO(1QMj&;`=;g? z?DuiEX?FUOzpwkf=2SSNubbEp4#2^_ZXeAdINaAAuGxc2`nq|VOW{agcY)?8T-Vn< zrazO4!G2%&9qo70c<+(s{`<}NzRq=UMwh zF}J|TjJ*{eo#qB~%ouor#M}-~PIGhnlk*Pv&NO$S<|**KX>OV3T=>2;cYlB8x*vWp z&HYQ~QSd`)Zm$8vJPglBbF(x*0?$fw9~eN)Y#5o^=D^6*HWv=dydM07)cGWg%(~{m z$c%joMyCF!VPx{mhmonj5Jsl{1u!zTJp&_C+d>$b+7`jctnpbGnRP9Oky&pMTr9Oc z2P2c`dH6-~zXT&Q*UK<6F-u@%*0K~vW-YJ4$gJg67@4&!gO^Lr*I;Doc^yWko)XxX z7^fevGyUvZn!w1!C&JD8*&3R|EhOdwxMe@P-d1p%ezu+@_#*MQgOTZHdl;F1c7T)n z*_u1SDgEraQsJJGrx)B?{C(iGes*2`;Qrzt01xeF&txWy%-V;+$n@&pFfzTm0Y;`* z!(n9V$%2uo^F|n%{@(;6)2k6MGW$CcMrL1bhLP#jC>WXZkPRbqz2v~i)N>1rObxg8 zb1xokYfiyx>A6y|J&?}d6Wa^v_}*A8y_P;$EuFtFHVx?-`eFNve*jiX*E0}XF~-JM zVk1beH;O$d{#tAu(mjb`{jpO2I2f6l$HU0;_~-)@H|OHb~AgW?atcZvUQI9Ga@ z2fNb$e0ZkB7r!i0axIt=bgng;m>Cf5jZ}++h+^oN? zzd78Zzult?;FkUEUbli| z&XBPIIJ3V!W5eK^C1w-4o{Z3 z?tp{h55afIy6%Q^B_Xk$W2B$5+oskK)9W8L5YGU9ta4Spdct}wSoi%oN?6!yb|RIyRgo95=1vq zP*Bhr1qD~!WnE7Dl$OcJKufe<7SY!1bF3cMyL^xYq!;{?lP(*INM2lsx_6tO0I&Wy3-7hu~|a z?R7A+Z42Sa5;Fy!Dz)7LBO5afM)nv!9WIub5_stVw~sswuN40(c(v5L2CfkQTKLb> z*I(fE1Kc|NEBu1=^&(s;@f+c|#3$gL;@<^-BK_`$k=;gn;LjvxFZ{XG@DI2~{I&2u z2e|!ZAN+;*zl492_}^h)@~bTNmn?TrDFT;exo2a_VYG4p=XKA*$UYnM9E`RY|4Mk3 z#IJ^teNJW#Tp{sm;dK(TK1+8-CZ-EE2bny%*zw3blT&~#MyB5qY$-C&*et>hi@KQM z*dQ|Xgs|h$zlblu`p7=p6N5KO4X?pf;;)7`%ec0{$kzNejO=*dfsx6nw!-ha8q|9* z`k(P{hj)noeK;=p6Ywr+`!T#*YS;tsm3jLdt`UDNyiaoOhYv_Sb?}#x=Mdxl%HGW9RVMvtExzYVsd_&Z^ZO#K&Q1LD5~Yh>!b z6q_afY-|oP_2*)TiGMhDEHe4WVU0{ZS7MD!omXM~@10-$z}y~p@gZy+nVbpiPVw); zevHg~eu6bJId@|}MW*JzWA`Fc=jYfOWak;{`_h-n=6IN`f7{GGlXmcf+4}3vytm;Y zIGn9JXR)p#@Um>ZfZs8x<#1WH-h3h7S(L*ov-N7@Uj*1*QWAIDa zy2o|+Uxqh`zY^Y*tq+*^*Ws<=-v)2b)?-Zk4md9U1iUj_pE18}+yy7aUk@M7)-e-* z1U@SMWAO28{h{%nfPL|+fsApW`@L!ejt@CK>565b?r zz7AJOoz?JWiQfWmmzW)JT;?hPH_3H#+ccNY{aiOEDe(Q`pAY-uSA(d3kRD~m9)ZgS z>FL>AYnQ{(K{{gmF}P}we!*}x{LUc#k>RcIPVw)8n+?%mea(iEt>F%Mj`-)o_elPGVPs=8jBNcL9G09BxJ>#g zhbzRt7TzE^E8$HN^E$j$Vz$BCCI1fieTn%1UYX~{zABIF^gP#Z1&nO{YvFZyuD12? zUnTx|7}+_G!pO$Q;LQ@V1^!Ih?u9>>{QrP`iBUti2RK9@Hru5o+Wj zJRe3^8(siEAbl-_k?pG#Mz-xD7}@v-VPx|^1S4C+Vi?&PmcYo?xfDirTo1#@))0n~ z9eV_RL~8gWjO_e83L{&?WANir!=K<~60;nBLSmkTCl7UPrwnC%4t4e10c-Jl@S>rv z{s-Z(_#<$1sOu{RzdF>_zX7h2m}>aFp>Dj}VPv=I4md9U1ni4n<-^0|JICQV++?^e zC~SIJ1iKI2RMhmc{a9c8swpvOeIdWw#ro)e;#ITZIs-jSd?q#rnLN4JLh%=2!{U!% zH=qPDmDnorS7U3$UyJp{ubR^qRTj}N)<=D)LAAh-_7*kGh+utmk{VP?7}?rd!N}CC zQeb4;wuX_(soKEE)=Ak zQv}~MTwhqk{|TK0BRf|&!=Cu>gTqoo1YRb2mctd|UkgX2-x$0>Vk+S($yp5}JI`;z z$d2nR7}+`845J^+HrfIsJBM$>$jY1;^& zmU%b>pA-Li*q6T42-fWgH&-ce>IgRvX>jKeZXUY8=_A~D190yVZd`rfj1g|^nec!S zZmzQ6oDpuWa^buYZk~t0Lr1vz&xePNaC0>r9yP*kqtS3sa)#jXlBWPJl>9|-vD91w z&yo1Ku$FiaE|sw?g2NIYftN`=%i%JKDTgbhp0#jP#vX$=$k;34D#>3B$EBVGyj$|` zfomjxEu56v>fxi3=NSCG%;67kgTyq#zSN^evRy{H-_fMNtw*}w=CpxRN7~=us5H34 zNcWqUj&SFZ?)Noa;O-;c?{0d)Jx99Vv-E<~N4np$1mNBh-v{nH(*35UADkgEnQ+cX z_q&)}I8SOA0uK}aa5yOWL-5#9?1LWwDYZxsJc@FeN?W_YsnI|bGf z@4@p&y5H$6fJA$>goKPlsV3SKGxRq$$=&oyv`jBza- zm9fO&4Km(Jc%$ThZKMt(^ZTX<)~}M7YWQu*{|>xWYTgFNC1(QOEo0mR*GNn)d_eNl z!Aa?>9zH7LJq90__!IDt;{OS5kop_plM-_Z{zYQ`2cMI5bsqL5zZ%8*8RfQh7Z};! zaCL>dk8*3Q2b>`>nec#7ZoOrV(m`Z?lNG}H*`wV09EcxTKh{U~H&!_?vcKWVh4V(a z?K=b>HOj4@(Qr`wA-HgqTf;?gvD8xn&yhTHVJ-c7a9Cm@aG8vy9IhDU*5q3F`BCoo zbWs@D-;TxL%294#+X!zG|LbtoD7Wua!<%L7Ti~tY-v-B}Z35ms%I$-D;2NpFc9aey z^SiSM)^{2{F0AZ;6AWPd04Gkj8NI0c`U+Rnhp)_fNJUFN}u zk@c(5?5CsM_26>2YP7pvu7-DycGul|;KQTcb@vhY=xBE>d<;GV-UCh#x_$$2 z@1XlVcpo?;=*E}{4+y$>$bxeue=dy7Z|Bt@7}?*~4~B<{e>jZn@8w6p*NA@tJUOVp zHou*j0+)%u99}2=u7{%%6N5L%cq`#5sizv=Dm8C|EjO;rBK80&!4r}29GKY2WA<6R^3?LBm3@!GcdC6YB&oc zyRCnPk$u;}IT+dbJP-TQmkO~@h4j7-yeGCfoD$O6X}ou|HQYX=XQVc}RCR#S^bWj7 zv?JUlq+h-W?h1Dg>EVWZz`a8{Ee-Ai_YLXp#@`Rl2;-3rO9nxz$FemrG_evfO-!FB}haU>*&rDy7Vf5OC z@DljZkiOK++hg#bq~>MtDrvhKt`PrP7%eb){tW*`# z>yZB5jQ1P(u+(`3J}UlWFtYRfJ&f#H`T;&2(k)HRXW+Ba_E#9$HE<3-FaFKi%4d-!P8lvtX>Y??4W~Ib-z)m-2q#TsSyZf3<~}5PaQOeKePMZWqGW z6Z4m*nd%03lK5|iZyBrq@*DqWd>ULV{t{S^)%IPi9z1`nUfi2H7r;x#YWqIkrEqwx ze&QYc5jZ|p&%2~ax=O$`WA*)7WvE)%AM3`e#_@SKPTTiLr@@`a=|A_OZ5O!PIQ{vH zO$Vs%FuL1t4;XEHmG{s0gnLO$I*e>g0KRmbe(&X`S*rIq9Y>$M!~5T`K3bN;=UpE- zM`Che^dd285R5jNn89$K#0()1s>x|_Spw^$vnFQfI2}bMe+(N(#-G6Y$mYq1k*#MK zjBMNC@Cb<+36GMP(J(SO)fgD{%%!i(;h@wXf{VxL=dMycR0*ud>5@yEbWt809_O}i z1op>iZ<5MY>PqJMO1GBM;Pfl?6}c_?ssQYZUtI-Xr4OuA{Jvm3dB*Ecrl?C*1dfl_ zcjWSnTmnWm=0mtfVrt>v#Q!_&i(eH`bAgVT|3Msr!v(roo_R+B952v!7*4=`fxgnP zx|;Z_^@lbd4qvUqh9hwNYP~Fv_vI$w^lNlwF8;tZ#9yPovGMSnYh27+IDCz?g*RX0 zYS;qDuW|Vk@V;yGCe!bJIC+ikW4In}xW?7l2%nU`PQm^)u4XlX`JCWtNQ2WSxV{2# z&IDIaE*zZT;zRJ*2`>LQc>Dy{Zvk95!Sz)HPoCiFoB~gq;O1mHTs*;zs|21i!PP$( z))Mc*^Ce~hTq^k&!HdPe1P)7I5qO!jT@F`B{cGWM(sn%@m9fO&4Km(Jc)PUS0mo&G z3HY$Y9D#jlt0poJ6Wv^e;P6B@#t0mr=;k2-`x2wBWxUtA`7D9M*SdL&!0~Hk+ri0e z-Q3p0!RurVTu1zMuCE9jzs}8V0#07%=CdC5uXFiTA=|D{))Jgk==`~Guu#@5JigHN zTL2dpx_*n`$%QWe6u7uhwh=t1(DgMJ)`hNq4-OZ)IwNpY^2gvRXL&Om{oxgy1E@*d_nxG$>cSds0jEsT9skPpU~9PTBt6t{J2*{ZE`pKu zw}(4T(l?u!i(zE_o#C$H?*@0Dr02XqOb@u1#H7OkiMa&Mo}{1b!hSjsMmA3ljBMLn zc!<pT+-Q_@s>G z6nt7@&cJ7-{$Js9vW?EezT{UobG*G-|D%7COI0nLyjlOyw@FV`5BoRkjJ}*FsL8B> z$u6b^j1HOi%(sNm2X8j-qFTXiB&IElTJe#FE_;JEk`@V_VP zHm0uwaB{MK(bQ89`_h-10#9+DeQGM-H%--lxtaeB(F{gjzh(nebGX%1{m>51c~W3x zKNDNS7f$6_RX!h6VPySja0l^sggZ~w-6oN<3yf?`R~W@6asJi~?k@fwa8GI53r2VL zrG|7E*|q^VL+Z(dv#07SP5yy!&Q!hAa4wuTRev_US*98S50e^(!^nM%u(rf^U|#lVN1*p8^+4o)UQGRNd9Y z-v-|!*38{YWN$xS>m_A2P97&d{E;510y^3 zFJNT1`hYVsX86)+tFk|02@RsFJ>Nu|Z_!B!n$QX1f$&i_yOW^o!N#EO|U^ z7@0K|!ImMjR?D$b^b_NXVXM&P_^YvTvTf04EK zKlrq4yEE{wvL4RC$ZoIm@NaIO)$ddFG~aFC>DXn+Z1?3@U;Ikl!v21XyWZ&m2XArL zK_U2xTXgSnDqZ~n9xpKk@O<$vfFBV5Lb&u6eQR%yX^Y^clILMKEHM#y)h+t+-dxA6 zhNHK*Yq}V`L2_2YRk!G^*QuVW8s2(~emb|srD_`-zeQK&a<3o(`?qNOe^S&mJ{P9x zj^=-Mw1nGC(?4Iwajfk$9d76R5v+fq_*3C-65k!}DgIt?Z}Inm$BF++_&V_y!pPIB>{&0S+Q!u~Yf^ir-d)pWMYbp4_EA0-Q>>+_}4^|S@5{cl(! z&I$S0G zY8dU!ZP87=3BNU6+yB|L8AjH>1>QFI9Wo`KI%&uZrOJnT<**O+PspIC``pWS3gBi0wc>IWm!R%O7ME~n}bBh#`#fj3MlJWa103g~m_KMOa__YRC*d z8JRk#V2hFIw**@y{%Y)2H0x~Bz&5O(FLOR@hK?eWKZcDXlP7`o#jl3L$Zn$%)P_t< z2pdKwX9VkuUyURNW#A8Ci;=Adn?$Bkq**X6W*Ptbto$^j&U?0jd~A z)?Wgb&d^^CPIGj2O=N%)W|*T?)< zKZI@l4;b0CR|6wkTP=J@@_Yp+B~Lw!>^lD%Mz-xYGjuCt@~2=^k?A)L8$K-S1nVPP z&k^`r$^RXUY|f)F>M@Z2<#!B5ww~`{Wad--03$p0<1n&gKLP(Fc^c>!Z9LnwZv-1h zCO(1n#jhG+Wc&S@?T$?T5^NZmek0g8GGk0&Ys6oR^^vXTzwpT!+RJLvNu7d`t>+gQ z+5G=wTO+f51K1!kIYZcD@t0udAk*($tS^3b8b)@!XQ=0_i%DRU$gGoktdC57^(%~Q zzvp0N>p2hmQm49=>)BiNv(Ip>Xa=MAe`9Slzm;blZ`B2hn+=T^ZsGh9tdERewS-&W z>dq_Lz{uulOFXh|v3{!LOoKb$ss|2gF<5nhyGwiz;(Okzdo6BuSp@4No2M6??))l1 z%q5Z&8}2LhV0~ok=?5c|M`ggsp7Uf9kIc9tSiir-Uxpvqez88X{SLs7Y&_OSHh&hJ zEjb6mIk&p+FLH@T-#yf9cm(Ss+wUO!$j$@SM|N%p!+BEY5Mq$+3+p4>*H9SQvE;+U zB1F8(*@3)!_~c#9iL z1RH)={8%5^HTE8UWak{~BU{6E7}+{^!05wfO^2xW;kd*kXp8LH#`?&vr4QkqQva@E z9YiKi2jAB{Bbo4~V}G{z7W|lKjZj6T$k()Ts`^Ur9_7J}mwt#3R#J#PD}6 zX9VjbJC>vPzjxa)g7uM|+aKWL5_5u>ADusf^^x7~Kfw($#zy$8^!qF9)8@A({Ex^I zj#nk_USa^gwZz@qEH2Su^z)z=-6B{Y*?XQPaA}DiZSJowg2N^HadYo60>?|-z19T0 zTl{ z3>=i2L+};i{{uWu`nnRnSz;!`#ge}So+&Z6!Ludi4tS2_nF}L(kNr*<+3j@~JWuBE zZW!4)xd%qJwtHbMWB1_sl4k+@fb_KxULx^JVPxm(VK^f3kHE<0|0DdEw0#_YPyE|q zWb51kBU{7!@COnfhmoy60e>hlAHh4N?JoEeiQf(Hk^G;+$gbPJ!=Fi>y)d%hHGB^L zLvq%@$d08J-Y5C@!~d522Vi8!RR@0|{x9LA^i>akLyY;(yyaT zc?x?PnX#O~`r=oEsTtXtv3?%)ne{Maw(gEh{vOzLG>h-H0$5-CYUpg;7MXFi!=@sW zCk@*HnZ7z=Mz{t-3O!zjJN8JvGWi3VE=pAnU zV|Q@x@eVgv)$p6*e+x!-|J{6t4kEK=LRkN8iFpS`cAad6-*Yi)`yF~LGTV0?HjGS6 z1iK8G@h-<2nV1z=BeQ*XWcTqTjO^!5J&f%B@-_U!9d7=Q!>F`B`_~Eh zC-FDH$n>ikVPE`e4*SR)SAPoJdX765wSn{IxcM0ZkDTLb7zHCcC!^t@_(Sk`@fX0z z9z(8%k(oDj4LnP7&W0CCzojs;$E8IuvTYxPk=;igf|2caF}zg#55vf=y)caITt(nN zO23c7$gD&482q^8`4hZMVwS@zq=qM8Wcz(`j*cU9{*%D^$ky-_{It~n42*2eWiYaB z%jf7YGRLS0)<@R=ER5`&JO@`u+qLjtCFk?-3)0t%aD1+7o0!XI#9X(%K7x18b@l9l zKbfo>Ey8Y!F`0!jepGV-M5`PSC5Pu_la;`hh zpMw3l?)anbWIf#JzE2Oq#do?qC2;ai-QRrAUJv`?S9kG_zPsF5n!w1;ZBw|}U2c0d zhg;m`#?=x=c00C$k=^boFtYnXYZ%#c*EVpwyYxzqA?gD7LWxO*k=evM zkqIL^Z~b9pV=jY{-8Too$j)IFjBHFcoO7=mOD;S}Vg|!`QqK?=+4!L_vU&31VN%<0 zc%W?ruE{Im0?B_hJV9!h2;U%m-3TKae-k`O zVs3^fOU^0qw0qsLZaVy^#5@KgdklFTULiT3fLDrt6}(#F*T5ALvljlVk)7vic(csy z7Wi%PzXKzCoZku~J6GG_cO~XM7};~z?J%)+F(W+?s#7Cg$+OAU{PgPxvlI0R3VnCWn_ z#FW5V{2p8?{zY(D+D720$8&v6`luKj_w@57X97-2d_C+-yt zhkTx4D}syf*A2s(Wvdc6e!osU(llEoU|-_ZeCBPw{w7S@5L`H4A6>%lpo`$*`MU35 zp6M-tOU1tk4$s$nmJ%O<%cN~N9G$N}dKiBUj*CA5C+F*{&f%|z{rRp=wE$kAzccab z0cvIe$dob4adcwfc*y~=R$HW zbl-7@;P68CY(NB#F4V(*=RSE1u3D%!?dLh4YB;{oJtvTWcZz=(ynCU0E_x4Kvryk~ z73-lE{^vqn{yus3!RU%7n+{X^;R6fpa{{Uk{$io-9a3G?mvB*2!--Ln=);G+xO zvm(df;|tyQ?ohZuVa|yhwMR zp;%*Ze33pm9ZtahBK=PjqaGyYL4D(5I0DBX)Yln*0^a$ci{Ay;JgBwt*TP>s=<w#VR;5_1anAJhvL)317nHTjV1w*(G9@a9mTj`8o-8UE!C&iHw{Fvab#i=SRcJNxJ7R@8%DP69Wb)~Ik0wZl}DZj zTwf8ak3PDAXH6HvizQ|W{IJv$hLOz~ftM}Sxi_)qm&2%2k?OBjz{u`LPb}5JCzsk| zNC@jA>wgMD}2ASuPLfCkji%DR8WS>(ihbxx4{c$ZEU8?imXWnA)3rpQG=SBDx z=Fl9wUWGS^zY?xm>VD%>4ado2jz0~l(+G9l* zY!DfL2s>W<1=vFI7h%KVk6`1-Jja#5`r=o+;ZG(1-{H?(jM@t$+wbRa%~Ji6dETrR z-sfsi`(b2b{ssSA{0CrUpJ%Ise-Z!x;L{R+20knPU*U5Se;!7knZACbeq?HnV0~nt zJ^LL-HpYjM^{a>3M;_K)?^l3*?Sht>! zKLIDjUl04zR)xtK)?;l>I2d+qLvV3e^22k&dh&dJ8#Nc!VVyMb9vlw4dLnRC+Q#5` zSifyz60k3R6``+)PQRCD;{$LIb>&(85O#b-|9%ht0=Q88McBy^y{j1i6u2y+ujod6 zIlMBW51IH?a79E1jDIa0mG~I^w)FK597m?F1a_yi-39NK_&x9!lK)HisI)x>H;BIx zJ}qs}z`n$&N8m^Gt6iJ&8@I>c$8^rc^raq$AJ>OE8~>l+W#V7Xye-!qXHtIzjxN{l z8jiv7<@!H{6L8IPy-CBhaB{i6+4$?>hUI##;YQeBu7?^{E4T(*2$a{|Nl8wEYe~Cppi&ot{?J9&Yul)ch&B7`k9yYCKN>ES_#$|#__x7vWa>#^cZz=(d|dLJfPZ|}t%0B52Jtt-J~D09 zbJXyht1SQrpL4Z^;P7*Bf}{=dE;Y zhrq*Ex|}0mWRKM&;W6UB91e;<1Q)M#`Ac9eF&-RV>1vL^(Ur1(;Hs6bhH5yz(v2kn z*GPOVoD_dOd{lBCgBzsZM)Rbg!#UF!Tk~}ZN8&>IT)3y@cD*bMQx69afz;W>> z;Ll`!_QD5bTy^jlGKXKnU$4>^n%cgBk4oEP@bOjpcQf`AaD&WeBYaZgPr;`p=NZ_S zwrVxoVzt{Y0XT29%rhKZ?dCZIk6-QPqyWBgwd?C9xOlbOb|vtf)vmU=@VwP-JKhb? zU+w060lav%o989)%GGXuR>A95yKS@{-mu!uc_qACYTE-JklO0t!&2K3_^9MR2A`DL zPQkv^rq-|~*SOkJ;I?aAZSCOHHLkWa_@Xtgw)SubiRlPutZ{W_!Z~YPow@L^HLlL# za8UAu;IV7mT#bXrOU?o~EIA|aGKpUfmq|=HTp@L?g`*M^gEy>k+o%$*l04OLjnq~P zC#AM}__)NMfEy%#BYaZYo`QYJuPT^_3fWKL&J}Lo=>m7JaOkVEe@yp?|3b&2Q;g#ZF1y@MFYvFYj?ijTmj>??G z;0-dyN_eZpZ-bMPryf2oV?P0(mY6f}Iq{!|eTi3V;lIea%{u0Doi4b9<5DJk=Q^Er z3FpIi!SmMX1q+$myJ2*r;d@|YWA26TTc;Zzz<)m+kvxyUWfD^kM^KU zTw)S%jpV6?lk44ZutI6-PQ1XxU^E|o0vuLl1kn8L!QN23NNeF z|GozQa`>rAJ;K!RG+a@s|7Y^Ag`?D;AU+1aRH+x5_?O`g(zX)bByC@Z->THFnE1`` zmP&mt&OM*E;dh8PHEe}<$k^Y96EgM>;g85~YTgMWn`amNU8VlmJAv$e&@h*H@fY0CyYu=op-@{quX{K{J=)H?H0m|H@a=N1P*W12Tjcp z7}@-fz<=DR=b1I|D2!T|?e!Rp?6!U!Mz-yr;3viZ6#VQ)9WXUK2Ul!#>tQXtPWoLB z|CMo>?f5+W(nh!4UxqhG&PsUGMz?-mhu_@j*1%iv){Sm$Y=gH;o*nQ$nXCQqIhp74 zurJ#}y~g@~P3OPBeiVYkujxMu|N?c@y3&FGurmZ_;0z_bI8@;n(%P z81tasV1C}vU)cG97r&v;8(sp3-_XS`@>{$J9Dl>jTLSjq(3ihx+Ww80zv)GGK4JfF zda_|v1y@P_YGSJODbrU3_N#R#8}laqH{EuL!2X+(^DX>uxjYfrf6L`poAGa!Z3p|C z^;@?7E!4lo)fs}rTU@^pxMqtROD*hgk^FBH^S173>W{$w+xk6Q&pY_vaq|#?{dc6! zt@yXPz9MkhR@YZK9Np^riotR5Ct!c8t5a>`9AKNf2b&8Ax9Pk3H{+c}aCn>kDQe~x zj&9R~jXwta@9Ntp!RkF?-qSlC;`^frT=t&szJu@h%Hg>96R`iDUc7`DwVn9w5)a3> z>stnLFC_tgwp}kUdG^A-#Hby7zU*-KY*S!A?!MDe3Ao06)~H%|pZ?(`-ubNd!w2;B zJ;J4YX zIdwX%ceBna7al2XN5PlZ>B@qpm#QEi|cfj z;S%`vIz8Lup9RmU(=+qTd)?uC>vY`IqhVz8c<}r>J;T(t04}Z5V@=E=c(K&H1YRNI zeFA=}PJeCkKMg-4b(X=Xg=t$3uav%4!K-ClYhYyCR=|I*)7#8g{sONP|9UuDr_)V6 zG5DoA{gui2GW<%Ne#G#r@CK=^65b>=zYbSPoz?JWiP-`pJD+dE$j-w%@Vj+-XRuI{lHEs}t~lrM8nW z`px7#1^coc)j`(eLA^eY-+HIOtq;1j)CO*Q&~4v#aOy#wVRELy9S-Whh2V~G=Y#rr zGjCnsuF|#}++EuCfYT4^KBnIQoN>_2b0(Z4@wspwY+{DM!w%|ynzcO~zT%)8%OBuz z2VMPF!ssef&s8ugGxdyzCrJE6_{M{7JKhA}a?tHB)8H8g-Q3;^mq^Z;@a>Xw7Ch&m zThDXhdE&ntzW1QsY--c6chK!?_rdo|&iU{I2lWSL`!0k_Wh{%}#RuJbSOSN|AAuh| z==O!j;AIE(l0LlGZaIwXzP18Jb`3uPBfI}T2|pzmD2Aj z7~N#%Z8ePS@nj7gmGQ>l7bN~g7@aWjFTpP#)ZbkWzXETNzAE93;(rZ(UHosre-nQd zjO@0qhLIiPoA73d-vaNGZMPpjAZw`(J|ua*f|1?7k}$GsyB_{V{D z8-EOLkg+$yKa2mr@JU&pr{L4l*BSV%)blHR?x3F3p+z5c9!56*Z!og+`TIdV&v)D6 zZtQ$yj*Sbj4~TyuwiKD;=OSzvnd46c8y9~9djOf^c^x*1%oyvjr;*v#XRto9`-}Py z{DuDIlO|o2`V#)qefOshv5z0p6U;jRQ{dD??zw_AxZ5H9Ob@=p?GB@hdhvPJ14i~4 zhMsWxAw9MypPK2P$o*y~3(k?8xrcN(|B!vxL{bD<>H0!h8!e2>{2 zZk2TJA4q}QCfzd$?cmg;Uh)*zylHR;@pptfC-s`q%?7G2aQCDhmdo>&J>YcWW6WUy z4kq0@6GCt}sk^?)d3XelC-vP=aBY}?lS%hkUk^7V-S@4H@X4f`+f(qFq?^yP@HwgT zJnSdkZ_QLaT(7VEknN(rrmwH{rVq_|6deCrFZc+50+60rY`9&A`0Cg!ky!p6Y*eps6I4^oFBm79@QN#r0sXGe^la+F`vg}yC2tn z=(u|}<_Z{%E>zvrAK-nk$qR;a`?&PZr^zdE<3It_*?S< zsvKT<+3a&V=zcB9uSqrZ_?$-HwIC@;Z^MzkL?$*FdFtX3aybL3|-@O7OJ6Es5 zaq%Z$|F}E9RVSFY6YiPV5Ip&Wdwy>UJne*g25&lCd_uozo?|b8qvDUjRm7X;=&Ip! z;y(}jC-mp$*;n-=>;FfWzXzQDqkD!n0B8K@o_)^Hb)M^z*2%lqh*=cg<0$yC-!01hheJF{j&aIx|}H~tbhth}oY zN8qUPS{aVPapm1*H~}Y>cYPY?#`UnTywo)OstNgh_HTC>fOhQGXP-j|!Q+wn4z2)O*ut~VHWa~=TX^>QhbeGz3(tN(TLRCKJab{)!n4mj zcyOu2FM`A3kHArB8-uHm>8l#MRr=Zne<(2@!8==c_PecJu#t)X7`t0y_P{mbuf_gb z{0Cqo6JLi-ioYKIR&ss^BRiI(@b}{X0scw+4KT7}Z*1XBLneMYwiucGCD=L0)HxR$ zMkXeLeH59P$FQfxe+GL_{O64ozxo+I*~0tCJdbe-J}q;520knPUtwQrQ!QDaExqx5 zxUU<4b6R>Oz2RIqucf#23ho0BfycD;R+yN}VRS)XI0&O&CO!mT+0uK>#9RdzOU@Gb z9`WA`qZduQhLMf;;DwU26h=W4vj~2urT2*8#W1q9ErG)lAAuif>3wGU{UeNQJ&(f3 z=6MW`N_-5COTP*Dkkt7VvB{R+p}ZE^A*_$=80+D0TY7U%{_o(U()JjP?3{cL`x2vC zF(<8LPGH^2jn{*tt-K>oBseDOp%;$af*v6 zfx{^-e*})ExSTP#D#hijhT|z-Ka)QJ*QB^PtcCp)H@B)aeYJLD3Bd8zZtMxTrnQTy zh5yys)$nilKx?nf5bj0P!AbGg!wuqZgilGHU*I#X-L^gp`x2wtz-_#rZeagXZRxkI zchgO90zTT-%QJket=AUae`C{2+F|pMi64RuqU-U8u;WoGT!1Y^?P*(tos4qvPr>@% zySC~F*q8jO9dp>u#;XYIx3f8wx_~*kz~)o|ICz2chv4u9uI30Fy}PN!BQqA2fd5b0{u2&f=<A3;H^RR3rP8P~P38wKPIECOuugM*d2l$*)fs`~X_6mKioYKAC6Bs@W6?z}Pc9t1 z$c-fg$Hkw3kzFSr!pN)>^%0Ehy4nfv6930AGV4Ko0`I=a)w~D(^dh$g{thFX^RtV* zV57?u!iJIA))8!6{0VGQ{PoxdWY%FL)<^%kk>l{s@NZJj@38OkDAk@d*53QM8~bJe z9@gGl+5;XA7q<6q>JAsd#qGU#53Y+#;Bb4dFaJM6Mc}gb-dPh<4p+4Iwi;dwqdT_o ze{BB@qpM8(UtrYD)%R6|f$c!Zo>m$1@R=~*C^8}3S zJUc|@F=*|fPaIm90#|y#59o;!(2^{X|&LJak zw4*z}jluDb?z}Mp`yJhRtm;J0PVO8s00%qCxhNd&i5 zu)3H$7rTA~aPVTO4Gv%I@<-t4#ZnI(zu5JafRh)yan-}V~faC;m$H%INI6O9E0PXB|n_(?E0;TeQB$@kiUyN9}d95E-oen7k6=EEP=ya+!!Np zw2SLE2FJU&F(%+-7dJokurD#HD>=K$e8RhhPvQSry%4PD)ME8$IDU7fGPRpPIPw@UmrI4=1U@NS9O1J`tQ^IQubkUHz& zFS@!p{}N70+j{t@5;zRIQ7q7;3^TOz82aeTP|4NCus+$)_E6AC^`pD)Pj~}%#eyopn znw$mXK`+7)Y#jA7F<4*x>S`DrG4aw$hKQiM=V0{!c@e^TGV)$BO zkgW~tBU{^b_>rv*>myrRA%0}*!TQM5sfyrYSA!~nwVMa!!C{w2Mc^`-t8zFh@iDkc z{MB$=YD>U1;;)61(pNo8?lkr})C4nMMftdHzG9L0~UAL}DCC+ZlC?3{cLqhB-d{{SOf^Kls2noq#UZm%E7 ziEK`+kL;TK2}ZX51}w5MSRdK#*a-U)ue!6IySu*9;PmdU<^Y`2-L6lS3kSQqF^1s6 z?ru(s;K|)xJyYP~?ymk4Sa)}8-h;#4Z4D{{M0m`;Pf7@<^Y`2!_8+d9PHuh55a{!+?*7_lO<*fTr4pq@SGm5=DBcb4>ztw zaJYvXZv=j{hpYcF7@2)mJq{zgU;hb4cAYGPkzFUtVPx0F3K-e-@C1zP8h8>$b`3lQ zBfAEkhLK$Z&%ns8fif7`HBb&CyWO9Kk=^dk!N_jwmGC;Le?5$B{eOj#t^au#+4`d} zvh~McWb1zcMz;PJVPxxn2}ZX5mtkb)!w)TYn{tZ2cQyWb1zoMz;P< z@Mlv0UO3#->)(;jlt@q3Nl&+3R4>m**53qf+RNo{2DcJ_3Y^-@jWG>Q@8$Xpz%TW3 zd0vKniC5{wr#pWd+&SINRTnrt-OXVD&PjK3l?w;c-55h~VY-{QB3P%p+B`U%?)r_u zWs;{Hj;6c$jKNjuZl0^*xU@~cyVKqL?15|2-8|RA`_kQb_rnJyz79@G4fXI*sqGlt zAo&~NaKMc*5}<~Ft1|}s0XIf<3FErN`)xDl>LK{-C0@;iO*^Y!VgC{@VE$jEx)kp1 z{HhQ0*2i7Hr@`rc-1T?>&gkQvFxU8*a84h0e;^kQ_HozmA-J%QyC+Zt>pt$DfCq>B zxcdeX*ze=+IjFw$)mQq0bNae_7rAgy{2{owughNom-Th|%i*Z_WAICTUCx)`xWpvj zq~xiG{l0SFqaWky=k93);KF`VGhE!y)ldS5`?;}4;Ie+M{&G0p&&@*uu93F2u-{L{ zmBD(;@SZdGy}Q6U8Qz%d;9R&c!#i^=_q2;(o#8FG7QY9VWq7L%m%~*V-aCe?;bex_ z!?dl3eQB#QnYT>u8{!twrYTnYFbi=*zfPgr7k1SWv+$@9KFod5QCGK zxjO4%|1wvP8bHng-ak8X-j#q44Dikxu7i`}uZJ7N-w2-`;B7K7XW(-Kyem2}pXXs; zVpJB}H_Kh41>j(oyA}(`u5wQvIdG|OH0{T=>HV)nu{S?=1i7TzZ{?}vSfSJ|wkY*%L& zI6d3-8-R1N-B@zrVcD+c;czfp#tRo`yX)B!`1Wi!##!*}YgaB#5ujvxdV4wn1>aCor0FCBs75}$x~ihmcJ zp67A~@;IjDxwe^b4l@1bVu$6qzJ|lWJn0J_o9Dhe7zdBfbA1)Sg?aAYdl5W2&wUp# z1-?!4+z#I%ea(UIlK6SBmU=w6RN@!GVPxuwV14OJ4S|Qqybbl5si9uKAuTRxj`h=r zdS7pD&UgJVvd8>O;4$LA91gm86@rny_kIP8?7iqez{uV+9}6RU-+mm7?0xSmVPx;I zUj-w3Z+!evFO1Cn@CepN_Fj4ceq`>kN3cG!_oA=HkIa4J2-ZjT9{4r*k-3i@!TM;Y zxu-n=KQi~jBUm5V&!dSjvSYaxM)sckbuh9u7s5pnb3Ke~{WrkKw!INX_CEGa@Fbas zn_*<{!%v2bCB6i{jlL$Zjc$k0jpmp+3r0JQe>RLBF?h1&l30@}t?uRj0PJ11AJY+_k#H!+=Vc* z{vsIJ%344#5EH@r=&*@@7)E_> z;J6ni27P2=us(Xyw2i>a^1YrWemT4%-}~bb?hQTxKbh~n%IB|o3Vu4@+imz67#%Y) zWiVt!u3@I>k)39cyQSWH;3hL)d-n4xM761s2@2S zVPEp7k>nidZN8AX3c+1e5*g3a({_8j70i>MmGk1QZlBvBKIC+k!Q* zCJOrgo_o*veXCB6VI94dPz4i^oTHTB?

    pPw!j(hitf+!( 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

    Tn|_2w4MCE` zHSi5p`a)ahjqpg~E#C=`7XKJ{tZbVJ-(95(j`B{Dd*BC&xwUQw^$8IRc-k^6RPwHdTI(R5jmGRQoZk z4_{F2>%0&~s*0Lh!0oH`)pou*!0FX~J!HT=s{Oj^313yMU$rs4;cKe({dP?H!jWnn zwRxiO4b^@wZiL5+KMTH>ZEasB!;e(!%{I?;_}OZmZMS_6&a0NOglG!++s}(#J#aVQH%pJ|QtR@JY$@ zCv3#8j&qzj?$=Kp7`c8W!F7-Oai|A3KJM4aIq)44KMcPAxL+p^z&YZd2J7ScPTSvH zc-C>hCTGJji3#Dk$NfG#4}M+f^qR=M#QyC&7(R_+#BU@cAeF znrsR;JK<|<4!1br$EqdVns|HMYXi5Hn09c76FO>-s~zF=6MkMY;GV?T<4iBO_X$7O zec;FmzxJXqa>wxNU=-M6)b%iO=d~MPQ7bz>BjAxI{5anUBR6iNVC0VZqhWNFU1MWl=ljAD$r**OtMTXV>*3+z z9|4c8(RbQ4nF&v?@nbjxo>}APD}eKA{Cq8d7ZYRWXbJq9^zn5#Uvd_}D{K55t%6sJ ze+^t%g2zrY7;{4wni{JXUK2Yi@uw)R7j16Rc@=(tmbn4tF}KAKPB%a@845KdCPoNuCTCxz86@z{u6m1MVs9_JYw- z8-FE?UcVE*3cgw52f)bPzZeMLBK}+9A(DS6oF)Ej_&&)q6~6x@&!o|p2Vmstc@Rdf z?+=~SF=YKA*5t@IOoOLOzh=NQPwL~Ns4akVrJhG&n?%If`Pl&`$DXV`J!MY74Ojx$%D! zKeDxj*nDK?v;Z4Nx55c*DXM17_h8GB-L?X2kQ?)S<{jBJ(*)ZBoye@)xg|Cg*||%@ zrlYUOnSqU#r@^sW-MS#DoeJT(;-3fS z)%yEr3*h`({~5fXR<~H;V_ITUk$vx68a9I7KU=3;6q|+Y?r#8W8!V13Q z-3+4+_MT%gj9g3!9Iy5FRTFS&t=??|NHE3*oa@9Wsc7Jdy8ps)>(hQG8>MGKZH~M_WmY+)9&AL zFA}a2e>H5xuMBf-e0&t@Ib$+giG|P4Gy^J=?HL+&7Ig|KL#t=5*SIyz(-mflzFUZ~g1oxrTg}LV1 z3v<^@;=XNvc-e)y-%sMZ)1p(d z*Zq%P2%Fa8ZS6sY+T=!%-8PCf$i=jT)4X3@3?rAPJ@IHx)8y_^>_KF=J%l}s z#*(uVTZL?VH8#>i@?&Gj`a`S{zv>BRNxRwb1Zj67JlW?|Q{cQdx&N>=FM#vKUjTm~ z@o^Zr`V(+jo807PjKhAoyiM+Zs99CORc&$`jo~@fYS_qFskW@Wwz+QKkHV;+2lpMW zgVCZ7>v28bHa7(g-BPb@6YTk@W?52NQ*1Nz;jp@Gn`5nNOX{?}0BdDqF2uG#cH5R% zE9-BCZ7u#b*sH~V4c6S?c`3+ZUAyk87K|c{AfP9!74g zvS8%KFuQGT{2{+>0&8-_KMkJQHrKu5F=(5+7};@Kg3U*EJPWW!d%wzsV?K`x;k>rF z?irf}@Zz?)?)qd2oKGJ(r>FurF8%~LKWv+uURL*_0&Eb5Mv#!=&2lRGA`<;ccVU=4Ehe9gAs$hKI6ZoN0To%$9= zQ|{$Eki9Va@p9g^@*RvGrd_oUE|Wa_VPx~G|G>!g>;GWn;=hNH8&m+Rl< zo65RM&2{fB4B@=gT=xw80vNexTwj8X#Hh4flbV*h;Scqpx3B#lu@E+Cx&D2# z7qj**&Ru9@{-32YkFTOS|L}o;ASelnf&wPU76eIHgs|SLEC~cnR1{F)2DO5MO%#+f zYJ116ATB{%K&4GoeudVBv|6EcxtB%2qJ~9<3YxScAX}oK;5xtOJ?H)7`}sbfmv_#* zXPLP-cZQiX9Cfj`3!4i$&s^xYjl;`ysr# zt1XqB8aUO}x0!~ct~SqY+l~BgS{od7)7rX|-(72iqwZQ;5BAkVYl91W_;!lmWDl(q zuF{-pIMu_qpN69zT60gvr>Ean4jk*L^}|Vxhj6N=uRjgfX-+-d(9`d?5k8^u@8BOb z|0noojsF58H_pGp$z1JkE_LSmepSP%Tpb^{F4wnT4@bGa2Gh&(d_rGyJ{;@ibK-FF zA|3OK$iK+%%k-v?y?y&RaICj)Ck`ii`>`s6t9twWR>M(m-L{X7%KBLM9c%`SUX}N! z-vHmE@q6LlY5eza)X(Re{_MBEb`RH{cQ?KJdH;~G(HqYznNeLnqhEEw~fP9{rx$%8eZMsy5~06z-zRIwQ!1UtDCep zX}Fdgxj%Uu91XDUndfF8JW#(kUcz`@V*UMia5TtnevI$HW-$92?7#C=!!HlEcgpvo zSKvtFrocu`3v8t-0|K8M(){w7s5R?o(qrD`1k@FyJv{YkK@VY z5SJg~DJ1Qr@krw)ge!+w_dS0x{3oAds$k^yRShFo+Y4}Nh_5XT*J{o-xIwpVgimVx z6dY;X47E{jky_4og=M#hI4!*V=~g$ zTn$GtA2)H1ySQJ&_3(kXb?^N-2uB(>molf9TK8^(95{BVb^V8BS=t4E{yq zzrxX_);%-XT*f$D=GzJ3=rTQaMiC!n+pgd_OCcPMvMX-pIgMttjhc_PL2LewJ`HX$ z+HN@$ZV6|PwttXkkmkT$N891@4%TjP_tEw*t;p#C_Z)3kN=`1Er}_Et0L>W)4<2o2 zv?8Yf9;W*m4#zY<4i}ELf0Xu%;7OV@8BSG_;HvCC$+W^{)6T(fRUS*h49ib zHX-#dgR6AgYIvpQtb$Wx?1wTAX}DpGpSwml(rwLH#$>GDZx)<4*0-4t$Hw}7#o&LAKE*Wb(%G{O03C$^kXKKzYxLn(*fGfxP8WzJ(j`ef&6ufk-UrWp2m&W?B zS^=*d>*rz>yn3vkiyC;1?sqMm(*364ExPUdFmm(zZ@5b7aA17umemn)NX4 zV6^pS`TG=ZUt~|*%zarM;PZ>@-nD#wb%as7ncR!s2}Um78O|=U?m3D%aIDB5<8ip8 z$PS)KJEicXBKwCc`K@d+e0`C1{}*5?jE0x+IW-MVXuJ$gYJLbuMgAOO#=+zK=b#yH zqm1!Z-i>IQ!I|T&dv{ybc$;iH-pYFqLp(z6U7u&cXOFk;{hsaM_T#O4hhPV|qsBYI z+1gIdc$u;E=Q1q-23nFQJ4B{N8<@3HJ9Om#_z_HNZxZA;t_IfUPc_bdhiIjdPc#cwVp9B za{C=iK9YBdhQfuuoe+sa;@hIc$(%+hmmV1 z0VDTr(6aHi5Xn1Ui||QE=4CRTK=Ka9GJGbI_odFl%aObvwgR7zF z#{rL!>&p!=a$|KPIls{yJVNeWem4`JrExrYi_QxkA-CudjYCEgomvyXOfmiE%)xfW7&KvL=otL%nKmD<6 z{skjf&s#8Z?}&UGMsD8Ufj4W;7I>@Xd;lXi7azjNoo7CRk!z}wtl$BNzYW#Yv)iDbQncnZloj?;LA+{A95|W}kwW7Q1t@Sq49^@#S!pj&n8ql8*lh_+>xN z<`sCg_O}LpUGv|7ksI@Wz{u74CcH++c`f{wj`Q0va%=b<7`b)(E{xo^DR`Z>xgJI? zX9JAfJE=Fqn>A+(jNH4n--nS~hyR9=TW?!ouXn)6t%02|a>vWZFmmVEPhjNUMgA#_-1zK*k$V^UZn#cssE7Zj^Zq4_T>d`z zfcE_$+@SN`2p`uPPQWL%&QtIYTIY}OPuj1a;i%ZU_nw;xaEZUxU`lONP-@*fE{DLe zQoG|tej|#*35}P*H){MQcxI_}?`xO^&(@qdaCxcC_&>I-fajLlYhQxr!N|3LCwy0_ z|J`gp{HVqsgDXpIJIP-RKdJkA3Vy!S{!Qvx4zJYsDtNVSTLZtY+r9y>DYfpI`D@{~ zw1&6gRH>aW?Wf@lrFNO{MtHNfxdq;;{rUi|Ew%1lpWEP_rS>z){}|p?YJU>m4e!yu z?1k$}?Fe~~Nj>~!shuvo4?a+8lfnn#!=<)b_z2vf{c41dm)dm_KLMXCwf_@71^=Yu z`7<1q+HNwo=1SWF$sD!BGm-obnT5AUGR__FY$WaE;5{{-iw{83_ks9ejThiCB<;uX zQAqkY8ZSiBW)Xh1#wX$;so@%2BstgOlQljCpQiEYctYc4_>D+vxCws=$+j!-S|n>= z8(xQ`hI+gK$@nzlCy|WjDLg`MJe$B(z8zByufEdHT@C!YZ_~U1uenm!2K?5Qeto_T zr>@ks0dMfNnT>F*wz&=7d8Muac$cru?1uOF@i%+nI?b<#zr0e{032!DT*bUx<@%U| z$B-N&aXf)!Ov>;ilD>y{3d#7S@j4`PU5`h|9fM8aGkuO}1Gl}(ucfo#v#;`NrXAeg zw`n@S*_xjN$21;?6PjNJCw)C8gsZOdeW`|1zJ8O2qpSQlo2yxeSG)1a!n2XA{~SCI z$-2tN`yuH|e_SN%X8<14cpNW5GA5No!xjHl66>*e}$xm z{kTZZR|oK~HGT*e$$k&xQ461MTEa;BXikTbv}0Pq$es6E!^p+YfX}?zk9ivyxoZ%a zaJJ^;z%f7mCJraA_UF|yIO%IJA)L~7(s13?el69*k+x|jGN%*Wwpn;Kk~PWAg0?G? zdb;6xNaiaaAAqFhf%ssJ7vRH?^l>;IL$YlgABE(2AB`6w$r*=>BxgK6LF1R>B8gvt zCp2D$--u)`Zo=myIagSTA!#$jQ%Gt{oiT_48N^u2Di|7OZbe5*1co;Oc=Q}&<5_JITylR{rH$} zaCcv)=>hljV{UTcUi6td%|&o;U$f~0U#xBRh4Zwwe7K*l-}HwEO!Vipf$$}Me$60w z@I=3^3g96V{pZ?Hc-TaL9vBXf@MCU9!m)||JRFBF_2X~TTHh}-iTR!6w`~G9pXA#-4L)7ttzhJi$JX$f zn$reG{y2p*HJ$|{w`SVHNYG z$bAnvA4cwbNJkjC&&^ISa^F2V!^nO2xBy0Ojq*0P+LwAb(mtBW91D}Jdw*g}ICHYUW|{?OPqxp>yNz;SY~8(im%y>f{`!6#UOn00r%?l^blWr>O}2AqHs`*$DeQNO9ria95vWy20Ijj_CpSoMI68jmz?22ZiGk<>5;FGte%3OuRt5RXP^4I^RX>W@(~ zk~(wn7?OR(@g$OVLOepQFL8L(6n|ZEG+a2vy8jusO&_)XqS zC1?uQ>}X+SsGq9)z-+n3)jPSno|!qXig&>O|@-C%e`vT;Az_abk_NFTX7H9 zfU@BB)9uqU`G1!k;EvO6)xE?!!7H50is11H+jAl96vL=taK^=E0$if;QaGXUGB}yA?6>_JywOD-I{_ z^R<=1zt?yYPTlAGm4@pyUJpl_Z|=8I_Wib74fW*QZ%;=X*jFq3o8I@^I`~^W%JXrP z4-dHC{v`DbgfF?@w!Z})1P{L7PJcq)fq1`df(8(8ibo@TJ0=DrmlKBz@3$qgZ4o@_ ze*1)s)nxek`|Tnb?P{dTtG%(&nFe8c^A0sIRd-Kg=K;G}LF!jZOb9$+m!;LjCV z@I4RsYe4tHNsWhaO5*uefwo_ zxyCEt1rPeq(1q|L5Bl@fqj02g^ANv3JmlLv0!I(|9PKMRg6@Huff zxxnXyaHKhAA;;80>z)VI63$#`-MhK7;PwmsJsTb1?1i@WJ=S&(oVU=Q=kwuV3;p?d zI6PvZ|BN09$21;?lMDTIv=B}$)blWWa-m)HCf^fI!O=oJ$39H{!+w2+@UDk_&ThEw zVV_eEAJ_N^_~gU(D!I;h3XUGOPs=;3%_6?HFY@0jn!zm=`Rjl!;ns_+`~Tx-z-ad0 z_`lL;!l?P3>H(vN`ZUQgJz+HBR@%&6WHZriVEU!nBUgK;gUuE+Gr_tUbV=|`&&ain!L#0J2VAG7j&hz>)>e` zpAIK{zA0N|>nawx?{)R~>bZ;D_qrN9Lhk$CJQ!`2cRbw*2O7T{M(%syJ@D@}Ckdk? zlbYn45Kb-fbDD-XEVAx7U>o6DozrdbC)(zxaHMhb2>gg$a4XN~FpqK#=ux}xj;6gs zJVJk$coqDDkDC|a%OCUkS3Ji3-jCVOC8q?A9&_6o^EmvtUJI^dJS(mHzb$e2(n{M^ zp4oUAoUHWgGlZ)u{jppPN0qwmVtBE2|G&UIVWVbG*bxQQ<0c=DE%AMc!&TaTHT;&g z`8M0W>)TA@JoD4_@v*~oPvK^Vt>~sBW`|%qb2s_MHz#Qc@log_t!jaqnfAvxcv^ z&)D$djF^eT$gP=6pRuvuKI68HIlH{<@`pE;3-`)=V=Pxp`^6)OJJ??}RrXX|oakN#j4`k;ctwOKk>{{APFzxjDj@ zA{pCd`12ZHj{gzKc>W1*(0C&rY237ckvm>m!l!G^t!N*)wTh2HvR239#b|V&j3E>7 zNaLn8+*bQ|7JRO@(|)PV?%>q;YdT`JH?_Ie1BDKPIJk)J5CB zklK3rF^uC$B=Z>Jk;ctMOKqyRACoj*i`+WIKi2psxJbtHQ#{hR=>uQ9)UT_)OYLeT z<5Pnt@|L=_RE9^$jaxp93NFqlGW}rW)@Oehxp^P3)V4>`-wt>*RL5r+j9kue`aZ(< zHwTX{)A%U3P}fWmjNG~%2anfy@lx9Y$y~R@Gm)%^EW9m}^>!BCUgI6`Y$RingC{2V z{4)GTB<0HH`jOrlJ*<%NaJP}e2edkxs~;UWR6Plm9u@FtMCZ9 zxtjyurgQyU7`bD!e5uVtvgY&g7m&=|i}*`OK08+6iFbTX8NLfi&ThOxjh6V8VRr0spe z1L47G+g!FSfQO~+28j=cW7KW)1<%)f3nz7sLby`g~iM>{2sM`)77--FQ!*>)5BA8qF|7@Z?I zdtl^p_QFWoH=o1E?e`0~PV?(w^mobmFML3A4#LQ_`8AA6BfDgx%Q91s6uj% z!pPNp3`Wuy(*Pq^TO*8If4@oF7D)Eh5^s;Boep?UB>T-3N3!2iJb|PyWq1ln4QYHc zlAJAgEs`3x;k%IRcQ;;#WWV)zi*J29E%7`gHRR)&Cwx2$&p{IJg6AQrEgv6_q_z?G z6-a6*!OM{BcLrXLr0*5@JxFS}7hi&;&L{Dwk<{}H9{s4}{}UXg?F)bBcL}qO>sjmU zv8(vqtSOB0uZA<=)*3$p&Rl1olz0~0UgI6$>~;1ViRZw1>+F@n`S5^scEChDI(vxU8w$IIYR>+FVHcr=V&6dnT?t+V@t$HBi}Xa6es zNf^1D5Jp8M{8oA2I@=pvT-vl}A3TO69>-^(LnTeS-GC=G9^x;fiKR_1dIgU(ZtiDW zw4D4no#>1 zX0s4RQm1(sMpBzu1S6@(JOU%B$2Oq7 z^_canvGsgbu}*T}y!EzBI3JF!w;P1xaLIbxd;(kwC)V3XC(y?-xO~06PjV{Y~J3*pN3_Cs0!i{YyEc9v{g4X<8rYb3u0POZ0v!fCj6z3qQFybZ2fZ(o#l z>frj8*HZJhwuX3b|GA;@x}1c4fe_``n3$M(sruh)!KdyoZ4VN zl=jnbo#xcTk>;39M%!Z`@zdZIn$r?KeWPvP zhj=R(T`AkPhEdDe@EI`5m-v}5xQ_&gZ(6FwhCR|$87ksFgvFmiqG3?nx_7r@B% zJsU=@?>R7XeeVJz*Y^uycy?fVVzjoSB{;NNKcW_Y%4I|oLtw%g!x zt-k`Er(<#_JYUDk!h!bpZunkp^LKDk_Z7nT>o`9EBR9?u!VhU5{{S!0@mvTaH_i{k z$c^D57`eH41V(PmABB;d)5l=s=I(L0QtMd^BR8H;z{s_^1V(OOPr}HJ;ZyJnTJwwW z3XT6CjNHEd3?sL$R>H`|SHZ}Q;a_0n=KZfQayc)<$j#j=Fmh|)RT#PT^BRoYJg$b3 zTdOtjJ35B%!YQpk4X@Mq`i-_Hl6~dk5ps2IfZx+G+{E~aIKHy*JS6jyk4Kv|e+yiz z?Qes(>zMC=k?YG&7`eIl7~ZAZ?uI|px!40EH+OsCFLkc>!3T7#4#Hn+-w(majoV=u zxv@F|AJhB>_#55Vw;OE&Nj+tFIgp1?M#=pl!5vmx%qf!mmUt$Tamd0a zAz3Gr@q3Web1xo^de7yU(eLs7`8~ge$H67<`So84U#B_O!&BdL<7TG8i!|pE_}%yX z@tcB?I|rs=BsG|I@7W}hISTOzxt#UzCf#;3j9mT}c&o-gfa^5B9^Ut!AD^#aR`7mNA6}&UdIWxQlRx)91wXgRe?~kHzqHA( zpA|52>+SzwsK1ysyQFPdvx2qaGlmrzsVLNsj~=ABH1>? zKS9#wr}!?7@5UqKYWOdV+`Rm6lg&mlZaH`i$vDLEB$BxZ@o2wpdjLkRj|XAo>i>F^ ztv%%9+wkbH<{yEP%RdSq(|7~isAK*Od|cxvVC3?@gHLMw6!jp9hxj8%`tm5g8p#@{ z!Ba@qQW}qtYv%_z(ss;d{(jl)e}9O>iOv4^gfcj}+5esp!j+r-?+J_Hs?Bzy{I*aH zuik9W60U($oBeMTX}ET?|IJ|=T({Z(=1>neZ1%r7G{Vtl|67OI!guB^cAot0mIKGO z*f)jaaAJ!caRpokmv6DBWgKN#YhxZm~<`@3j!F+G3|myc$kzu^AI1zxNeL6pKv{VV2iC5J_sMyHjlu^HRl9;QrkZTN7|-&pTBF~x4WdyGvLhk?dxs$ zJtqs!d*9ce569m3`;Ehe@B6+K!PmcUpO$T>!U^5B3{Jl9YYX88y6r-^Qsax^r{1^g zq~@pLXLQ@8FmnA`20!<{@7MEi)%$*Ys^OIyUj?t$c52|a-uGkmHk{Hn({S{@A5Zgd zew+HYop3(qhYT1!F5C=8Q&?}NIgGYR{4^NdCfou>1(MSeMt2LJ4x`nQ(+WoCUktZ~ zQRi#nGhnn^^3R0P8sRoDa`j}w=m&{s!Cf`p4Zc|G>Ko3$yWP_T`!Z{QQU-|yf^>ogz0AJ{36)28{5|M&5s9n-F9w;Vib@}b?)j^6{D!Wkdh@2_dz z(=>z8E$zr}4xgtv=ffQ}r_+bF4U%m$@htQM+!jAe<7eaT(2;YR_B;oVx@kMzVf34G zXuk)H+c9;`V9FuL>{#&ZZfOxqa_qb(920mnYHIkK-f zJj&N&M#F^~FM^A;%?WUc#!F%3+PM-&ZcMI%ulD^l6X9z$XA+EL9L!`m@u6KLV^{{y z^kZ&j!R4A?0nh!={y}P+2jBUjT`7DQJYVA$Ms9op7`gGe8-76J55ko?4vXREwVmZ~ zm5y6Ayi)651+UTC*1~UTf8U1R(QV&_Q@XD-yiUh$J-k8V8{y4b!xng}w(|j8t2x_X zwHjAT8S9WZiZyAwvPUmwG}G=Dd|N9)`Rf3Exb0yH?Kk~=mVtDCC{X=?ebskJTgVB8O&+ERH!&SPkYIvpYYZbg&+pmFN*Y@9l_vpCog%8x)Tp6o_aD&#? z$iE}0za^eTG7ceLiDax6-W|#K_rOIG?}>{fo{Q&cJRdJaQhyOX8%h0h@CT68@F4yqk{X`Emm;Zu z8UDP+m*Xjor|}56wfYM+BUdxt9=V$FJmkg@FGQ{ed^U15;13{I1O6m(HQ-B;s{wyr zUx8Lrs`F4P_x7#wgwwnX@+-~m^&V}=~+lM7TA0E8jcFg7f!W6)HJY;)PHBJB@Ggz-hU>J>dia2j!$G(~a~fgf#_Agwxv}~d zM(+CfaTvL=IsqeB!*?)pWA#0Z+*qB2ksGU1Fml({e}Iu2s~=(H#_A^+x$Ega!^n-* zFEDb~-+zUX8=nYny2FoK#t#1e+TrUt4Q{!^*LgaOTy3pjIV1R;ro>fBX@5=FBrM;xd`s9`|Shg@9<;W4<4|? zkHbKC&<@|P!SL`MzP}@2E0+Z0+M5_%^Niw{W?RVFi4+^3ga_i*pFmmhUbr`ud`38(!AO8U(H(zhU$Q?UtVC2^MTKJ#Z z-+#gHXdmCDFDYMth)2k+pEMk4j@ijI-<>x90?r}r;GR2erf@Etx6^*u8P121i}!@u`)!89v7L5dXU=1Bc)rFhe2=zyFI=TL)$nRe0ZmQ zR_ZwdH)wt%9BID!m>NFz_c_Gj=S4kthL_fdp!>QjHuMjDPj^);AX>}!|5 zHzNm*?b15oZ`{5=(BH#xigzT$9lx34*bQ@j1PX*k;L_iO$`{(tF?*h z%`_Zo+@WO%usLwv7w(=_lmCUyKyr_3Gd#237jD}uJW74x>rcbGe2&=-n>rtF zQpax;b-taZFp_&pO$LnIJ)+HEsQ_$#e>Km4`U zdoo>met%so z4M+R^btrQH{@P!!G>7I;>*?Z$9k%vIX9y@!jy3hy6J0 zgAW|`V|5U2(ELU?(zrRo=jjnYhPiO>BfejK;JhRL`eQyk_=umc0(jUFe=Tx296RF2 zBo5C%;`?afdye>VxED?y@z**-_<$IMF_{$@HeD=YI zHGTv>dBk6HJOxKb{J5E;tfixVY@5NENBuZt!EKNFdd`A79`$3=3GRB-k7qZy=TYCU zTsZHjAKQF*z)`<82Ev1n`n6F2$Bz23io=CR{rD8YB}aYDrSO8Iery-QOSPV5@JmO1 z{VU*=NBuagg12h?1Gr9Wu7|(W{qBQ*(%OE8Bkiv_M&FP58k)g9kNNS;g?k_Kedz<| z9rLy2!$7%j}c&6sef@f>{bKvr0el9BDr0y$( z7wWbT!myMtGO@cQ?G}n4LR^ z-_rNO=udy-H_y-Eue8qn@F9&KhLO95egro85hD`HK!Yl+&v-PVdS>$0gq|)>uM}~rSA7C_!{l| zweZiH{|g*x-_19i$G-97Qvk=l@naH)$7;L~jx=t*CFfiJH(eY~e(V263*pqa{_n>$ z9DVEmt~AH#<8lADVGf))?*FbVgOkVo-@GBb;JE+$bRqo2aoejM-yfF1RT{5`Q^)<^ zp=r48xc}R;9{x)6_ruX~|F^9|g8Vk#1kU)y z4ijz$qp273w_$VmG>x}_k&Cy4(R#^09Y(I5R&Z<0KLbWCekP3Ewr$`{&B=n1i?@Z5 z%RdW7p|pQCj9gATxV^?Zz~^Z@=flY5cZ8A4?*t>)ug)-X@eAN=tv?6us{8E*577L9 z@L-J>z{9lt;c!gjarjcrzYH$XHcR0uoN0mu@=l*DINJng%DdZg;K3$v|KGm=j+wx{-y{x4CUEbfGEIUgqe<}d zRT;fZGx+o-!E>A|Oe?sx#?OE+XcD|Nr}=p%8%7_?=S2?Ovq|uiiHH%F6TIm+&gGaz^JP{ zZ{a%_xqW>PpVas%_=hIJ)6$n8;h(hTpW$CL=T{iHZ6g@D=ZBc4%wyBQJ*&SN+`MVv zo(X&!jO5wxrUl%#Y2cp!e-?ap)4)AvxE*|M)4)BCx;>0syaRlG)4)CVxFejc@f^5o z)4)9kz8j2O``zJ-ng;IK$h~3Y+UW!LYZ|!cuJ?xrG!5Ld*$2YN?e`KGxoro*$i)Z4 z$ZcBy4{I8@=OGV=W7?N^(;$hY&JbUUWE_^^B6*JSv-lTC-Y-yxizHr;N63xarA>nv zO7V>AIG#jbz#(3Rf?YT{XTE$vCXSS0m|f4Za4+zSiPzA*u6i{9PpD zlfp%A%<;3oQ2OuQs*4J9LacA;1QC2nbGtGxw*zuNRE*-UWcUS zdOSjI&5wbR)L_Q4EpqRqz$4_=XCZMU`5_)5cN`TlzevVB3(rP!jO5@wk<^)s_eL_O zv=!tb=}SIdf@FP`;#VUX=ZW|vB=a&EPas)`Wq1;~+VB*T8q#>AaWf7cuYD!cK)gk&5h83W|EZWy_>-JBfc-baH+$h{xrG~z9ETRcM2rfCV6WVkhE zO5v+B{CG};ugUP|jceiSGkncc;prMrz{ow%zYLz8;m3Inj9edYgCEiMABCUS_;R>P zM9{0#r1IlscloqHn~ zx&4}Ed4AG+r)fp|t%Cj+ z@!Z`GaCWQUY2h5WXRF}d-f%9A+;{t4aI963-Jf_Iexz0KYd`o=_#dr;Q?l)w@H?%7 zp|b6}@PSsr^}+|?s8#T$<{3dW=?tGU8J>AYP$&DH1+PBC_pt_!&IsnY{4?P*ecZI+^RbQZV-cKe zp`ws70Pzq9)+`0T*HE4&?iPT=1a zelC12-z|7Hsc8?l5B$5rJHQ=+d)>Rg&x6kk{QJSrhtCiE`@uWH9RvS<@J?{&z`vLL z0{DX9*|z+RW3m~~>|o&w{CypV6WPIs^0!YJd}DTS*Jbcc@XYLB7vCq%EO>S{-8*T8)}Y_=As}%?%m=|E((%pNc1?(N$# zec+4z-@>LZW8T--7Kcam4azQT(!q>|3;PD{J)}i&ao-?wZqu{O1h}Mcko^q5rIf-~ z_YEdYGZjYD z-Pb@!MfkCGk68sqw||llejG za^g?Hk;Y9weoN^WxaTLI0cZB}?PtL~HJ%G6H6Fs1{enDcXED6AU(i?jxC};DOZ-_F z%@=+SMlR=hxJuiphEp0(!|3^Pev?@Tqf35Ao9kh;Ug8_z_cXo9Luk7!C&shb(+&^&734aBC zwSVB=)%Y5`x_@wG7k;;?fm8hh_sr)sT*toTH@bQ_(mKrm>L1{bwJf;(0ND*e{&0Aj#;3yxjhDg5 zwLb$!XSd<=>jwBnjo$>%()?TCTQxo#PHH@aU()yrIHmD4{GP@)!L=IS27j*gd;!;K zydM5a`?4QCpz(w7VT~Vw8#LYs|Df&s2uB(>1B0l~z~J$rti6lj5d(uizuK(8jD%wv zkHe!iJ_bfNRW$Ez#=;4Wm%&NR58(v^{d!vnR}R$m16K|7pF7oXYGBau?It`s9o{_9 zuZJ!0zXt~HUD#V;G_ottt^EM5)%Z5JZlFK+*2B@j;E&HS7v>W968-&l5XZqE>$hDINqi-uXKeUC> zdAE~u7JT-gV8rdT(++Mw$p1dv0q!^`n0`C?o#4*8-wWXELBT^3&w-I^zYC1qZ_5`B z3bN5Fw4a0LA!#QcAAq*q-u$A0_$3-2gbzkP5--4GsM{S}^TH$KYUm0hY14FryX$^? zz(}?=Jz+HF4svo~9}bVuoRM%$$0`nAs_kC}kMeDr(eRi-LFc*DId)J`Rp_^^##3nI z+~z&gc%*St1Q+YNngCy}<9r2-+!`o>(QoE9zrd8jS8IPK!jlFC56q?Sli?{^=XEf0 zeYt*6&;qR_rzIXCx6Y@+$hAKWMq8=POox%nNx;Zmrzjf~WFQ%nW_W8PV}1sHrpDXg zB8g|>QMry`1&qFx_HT!gThDjEb2VokjNG{03D0MZ&7)ryzDLLTUO1`wA$;GUz`dj7 zet0?SNj^vZ2&2XCH0f>r1S9v|uL?#({!F|Yerb^ZoLT{|9OS?2u7X!vD4z@4IJh4ECQdaX2;D$J1~$IQYl2e3v!_9ODJS*4xcRCI^lc z1mE3mxQ`SrDF{a0LA(@B6a-J)LA(r376i8mhj3* zMmW-anW6kPH8hxUiqG+8aOTk9{!>l(Kh$u6#)rVeh6cZ$!RNwoIHvJ9j9mOuxKQIo zaEZoC;h7qr1($2Q0#0f?gcl4AdUog8?+f9|p?=LQhO34Kca$^c)$mGOW7@a5OY8j& z<-fVU*=!iU%MA;f*O`k$Jc@?-zhBI7Y91c!tY)l2xN>-KLU=J;H9Q#f0$dHR9v++{ zTmz?u2Ua)@Z`N(Mz_r7Jzst7U;GM&RNs{w1ylZ&yv+!~09>ofl5%_<6#or{8ZKWfq=#FG~k1rL4J^uiF2vVGj-z=cIY|62B2L=JK} zIPW)i+wy+%Ac>BC*7V{KkCNJc2v-&bV?Jxz)hvdqih_L~HR)xl;gq(ShNGfj88sL) zj$?D2Z?gu9H#u-#vCq$k2Wz|lj%hp&7ZwLAKjR$@MR2j^On^(Y{Ze>Raqz)s%*$l> zdW}zoXKFjM;Mp3V11EhwCZskba})|cQ0&Gq#Ca#L@B4%B0^N2Y{JhUG%i)#9!AzE~xc4#cQAxv5 zN#NeEWJ=*lfqVCdnG8?XV_^zBCAePhg)r9z$+p+IISug$$$B1ZVqpOb(3PG13J_uFVT!F?I0Mr zV_`5nLiaV2ZIPR6JVI_?vFm~=B=KrIg=BrE@y#0Ff^S7~Onrby8aHwHGTqlG7`Zk_ z!-d!RwNV6*(>lk)#hO0>zFhOKfUne?tEdyXV;ql=>&w+Ja_vuquhD*8OFojZ3h@ZJ zoJlb9#|3=-b?$s(rozab2d2^Agzr}xuS0VFsmB|Tw9|-3$emBh;2X7_o8X(Zwwcs` zq|FeIkgItXe2dm|D?D4@%l1={99+Ci?rc(h2{ ze*{LZ{zu`*H2ye@+#0Tgk*jAh{DdEKvxGL6`kWAtkjq&{9Lacwc!XR%&%)2^I4_5h zYyXcha@+n1Ms94Y;A-9W1sJ*f7ik~4zTnYITF(j?xt#xlk!$nM@JgM>Rq$Ul=dUnw zIWNP=t$|nI9lGD0Fmmya;ZHRGQ+SuQxf|Z2ZSIBtr}cjc@6(*GVC34_51-WdDf)t> zh7gaC8>=7SpLAb8!;!|#_3-unTxzCr@4?idvTepWrVuWf8r+)Kyt65V%clleSsDC> z4Bt65*xZKet#`rmrv@w961Q+tw+&%*Jd^l+@Pku>oo928(?jrrslmlr898Pl{F263 zz^kSPE2aIvz;A2&@4zXoAq{WPoQ-h9)ZjE}zY+dsYH*Fz@Gbn^)ZpM*@b~b^sll6P z!>8bAYA{dYW*UE|PxJNX!egcdacO5PTsSS5mPx;g;BlHW9xk31#H5`GaLF{^W+{B7 z#;<~}nHJn3HCzi{Kh4)R6;4bGhRS}+;2F~bBYXpV^E5v`GvQmN1z)sfzqi7-PYZsP zakvA%Q}geF1Fh%oX+aXnyo7j!+&J7r{CCsb+=Y0Q^f@MkAD9;8PNK~R;RRarLipin zeykS3&rI|4yA;lw?%T|t&hG=$gXYrrf$*T|ejW$IvFUyu<8aAzzilZzdAje{6c{a+ zvAqsPZe3juC#DB~Z9}{aMs8irfRW3&0Y)z8Mi{xZaTEL-jo%EuF`g@;TLt=m*AJR%~#-mY5Xl1xw(5APEQY> zkojE)Z_xHP!ds{N_4Wb$@$?`mWAX`%+;Q|NylZ-J?`V#--SB6+?H(Ap^|KfLT>Jh7 zj9k19-mh&QfRAgPC*bcj|0Epg*qQ|2$rFCtEVykVSS0K1EO=DH&&6nXOu~=bSom6v zPf7$yB*#dIN7rfmdie2#Uk{b=QjITzpVfArga4fHW3>`~E#c>PHH_T6*T8Qlg8xcA z@4%@NODY17`eae zb73U!W;MNF)MaC{uI3^bx%}QRl6S?LK5(AK^WlM7&n0C+3{85sSxy{}klS_;JXrfx z03%ob5ExzaTC*H86h^L|VKA!h&pYpi!y|RSF&Mdb>Biwp%L4bV-plCwDBos?N67VM zG(5)l-He3`wVon)g3j0FaEYI5Qwm?BwOtEO(RQwbuh(s-!qduvfAwd+ro#!%DWmV` zCgwVhN65|l3>dk3Zh(_z!Bgw$ZwRl{eXWB3S{5{u_{;Dsn*S<{+og?(1XtGtJopBUjsAxK8uy;RBj~5I(Hqe1vgEQbUMGNcwAz z!swfMoO_SK$gS-L80}rl^^`{V8(rt$!pAj!0{&k2dlE)++?iAGPg=vzFmmJY3u`;_ zW0=Mxug%WnKS$v%bF1+k<<|45pwx$;f^!>`s@T}Ykm%lw!F*w z?*b#YRxgB+ThCqLZZrH^?GE>x5u8}gIOM{;XZSk%z!z(NUpPG1PLTHl;KGv>nFq`jhitra>vV97`d7YX9O`MHOKKJlH)hTBaNG) z|7YpUn;g-U)u> z&MgtvBKe;8YWQ0352nFL#-0Zw*)#d%NB_5{&43uzqO;d=Tug^&X$`YsByH!wh1zx= zjAX6nF9vQG~Tf_G$%;Tn)i$7|D5Q4e`j0F~V9TdvYy|WM5Uncd-xM`TXt$VFJ0a zC$Y9h$9@ldpT^%0BU!HpU?lxM2tTIrkHZO_!z4AJ;jRX(eMS3v6+e=(U@eld?17Qg z{~C;Bjb4YX<_{Lai}W*`67B&g@t^&+g^_$W+73qYoql^bt;BzKpAL5_2_N~HduBS9 zgc<0ipHqfpVz;BbJt+frU~L!g54x6wMcsU!Vr)6O`RSCw6exgh8Tqt$sF0Kf+oh_iA2^AGv$iBWyKt@io|5Bx#tLiYp4ggdygZmMeaWHU`vtN^DgXeU{?RaU`z;s)=cs=yd~vCNExrW4RAa`$NZMXT zUz1B^&qP>@-1$7X8b*@y8aU6#1o`j{>YoK8sd+X$S7Qp`LiNuhKXQ2@$Mdx>tVL2o z5xiK(wFE};+)XKr+_4ap!And1Idd7jT>Dx9uhO>VFp_JG3V5}~uYuQUUzPAW9pieq zs?=XIY=Aduo*UtthUii1=T? z_mzcnTwnLY4`|y5VRW<0`4EgG=QjA^vhay4-fKSsBgy|Lj3nkU7|A^+kHfzz3%_>x ze+_Rh3%_$?*#RS|=eO|hwe2%7lD2<@KWhF!dfKtoCl-NU2W&XgO~a_zW~l!>gObzw&E zN5Z2tW;BdsKF7eQgBxQGIgzU^!dfITV__tDE+z(Dc0o#?2y4eJ_3L;Uj1IUpx*SFl zp9>?YCk7)~_bXr|F;~Kqw1&xW-qNs&{6RiELt|#bvzCTyZfM;nm<=PD!#OaLvCoB( z6L>pE7zmFiyyBiT#q;ZWNec%$ar1S1*ajc{CJA{Y&N zj2t=gapdMRa{LP)A7O2^_FDrZ+0XaDNXC0F zjAUH*!ANSmAFkDTtAn?ze+P{GF$Mot+x`wllJoa4l9*@UKWN)O!aFr)7yP{X|HfGU zu4BYnByC?<8g4{x-)_Rjk*hPpCXmbn)*^|25k^wOOE8jgy$mDqCtxJ;N%$3wc@;)- zKHLMpuE*mWFp~YV7e*u9Ic*>Ow$A4}@IgJ655fPZZT|x!$@wAtvBrD?AJ${@2y8Wf zu#C?NmdSX7OgML0_&e8E44$D14+~-B<~CRaFV>hP%fdL4a|PBeUFPR%8H^*02{4mBa9^HCK$;WZ-kMo<4rJ$pzCR%3$YtnYGPe+-_r+^@xKxL~>8V}lVp{SaX-68{JAzqIYYVI+IzAdDo>As9&w{|6&!`yV)E zh3~i33Z5Za;n%A*jER!~j3oY6c#Dp4D}0B>-wFRx z!6qhgO6I&v9Pb1|!M;FpOmHJpwwjv=s1kz z`sYWuS?9I|M)G=b0zSFIpJz_Nc7;EFgO!}~SNdZx6V6@f_eKo9YNbEVOoEZ@fypqE zb-x-$;=cw)GS5?BB>t%|l5t%NPh087l?Nj^pX9?xVy440HRgJFmd4D6i&loa+_hgZ zjO3VF03+#ZA&jJkMKF?Uyb>76`ExOhBz_58zS7S_#mX>_+;w$?wN)$qHSGpC)HyNm z#+ClMcM}|6>E}Fx6D$4xNy2;8zYl&>+r9mh+gtbU&8;Kvemlnquog+%v2d=&$6zG!SHMW-?MfKQx{rsEw4DG?)Y`6sC#~|=43l9bHD3+S)%*o8 zlKh1*k~yCTBRQAOr_LfBJJuF!o&|7;=2;Avs=o}b)ST9r92FU|9B7|D6> zAdKXka0qVJdRpKUI)^7=t9=FK+`Cfl-xqg;k*v#^Fp~GnXTj(V_g?jE7_D)f1|x|{ zhcn9k+-Aa4%l+J53!|>?dUzU~r~Z6+mi9FpE-3eNQV187`!N>73(EZ*E`*Vss~5pY zKBFjs7i-KC7|FVq!brwa1|!*@OJOAIvJ6IYE?o{InZp(3VH~;l<`LGe)I6(TB=O~N zMY*5n)o@&Ei{R7c{&=)7l6ry)&P5erVrGyXw1L}Igx3se&GXLi85QB9=ffS~P8H!} zv-sS#Gu*8re8+5AWQ4y|oYmtOs zQU9wjlKgvMB=h_ljATw;hu={DUKq)I?t}lSF>k{AE5fT>{sVBm*4Y4mu5G`755sOA zj==xbe!qslQUAAaqqc2=f7HI3VI=#c1wN_$o`S88Jy^}_;A&q(Dx9|3@4a-m(`r8t zomYqPuB*d|vx6ZK)}kFR@*H9}IAgW$N%$fk6AXj1V7Gs=;hfcee#XKVYtBpHOIQ0j z83*UC_VXNr^HzsFUE6$khQ`l?XKBB);km2%&WxA>xNvp&h+D6DaFP0psrhz4t_W+< zO9Pq1EijV!t;F1^F<6Tv<}MgX%-zKNQe&_d$?t7e!{`TBLk%(a`te3si;lRy?t_uU z+)vDd8iTb+VjhB##B75f)wOsGPUzT^w0%|EVl9%kd*J=r_5l2z&iVT=lAIsF^{f3} zZGam!XA|7KI_&L^ofg>Y*n>4(Q?2oBQ{c2UexB3ePHX%+c80sH@oUr_?xFskaK;+l z4{%)l5qz`yZ-F}Oku!CkVI=+<_({$G)S58< z=QXn5BCJIc|169o{yBKJ*8Du2SmXD05`I(jyan%9{{h&p@q02@%lpc;GA9w%BFWzl zMzYV_!)a^%agh!q8P_>*C*L;c3}>tjd$~Q62@hK9=WsBbyVlnegU4&032=e>3*mWd z{rt~|i!^63yl|~wqeXBD^>Ca9i{VoBm%+=muNCk{&AAD_QR8n~8z$mDe-isDa^u>A zb#mvZ*RcE4{}1f@$er6iz}6#o%r;;xk~xXsJGACI;Rm#a2jPdb-)-UOWEFT#nn{`gJ8^*Y7|_;a1lFW^Sa(*z$~ z>-XC+_(!d$8Ah^pE$|7AKM7m)2bHXKrLQv`KDW~M+X+VUTF@EpRq5xUH=LpVOn6YG zU$4P1lDWD79-=vi!XqpFoQ#5VD*Zkg3tw94&r9Rr+)7_(3?8rX6W~deet%Ae^D6xq z^DDWBgudK49BYxB!)L%qYMx2V4H|>BNMdHeNMdFaGgo7<7D-G2j3lNIp66qN`7jcH z5sYMRi{VA;FM*e6{iQIHm@;^IW!S^*jTP`(9ZMx#MT|RlZGhvI{(Kn0w`e_^VI+BO zg>TcoZilyM%vSi0N`Ktl3E!nLcf-|{dY*yr(LDFU_i4=i@I$)p+u(;Q{kilJ_|Zy# z&GQ&st7}~cKdJRU#T-6eDaTZVwMgc0JN%5U-5=nc>fZ%htut81HRL+KXWGE+V0XN? zhdZtF`>-?IZJpnr-QiyA{2u5HBYAD@181l|6CSkA&*5Nrn6}M=k;G@ix!P9@p1jVl z>DBPOb$$-#!$lfj3@=#c&vgsoMeF=EMhT4M7+(x8U+33o1-xpVKQ7AQ3eB?`Uaxgl z!ARD0102_yBX|pbw;#5`cWIux;cCrO1K+pKugm@LqdJzy;99M}4o0$9f3+^mKyFljKM4S~S91Bx~^$e&o&@5!NEP#{La8BX=&%#AYG)J|Y{NgIvzB*j)9;uzAS6 z9_3?;kgK^EyAiqko3Ku9j5lKA>W{Fs$mOiVCXlNkiLFO&4jZsm{lU}lcAeWDaJ|lX z1AJJ=dj$Swoxgtm7H;%41WoYw8uJ5uROjIsZ2g=E!FoRbS?`b8R&eX}{+hWBoVwoc z&$e&}jp+y@xh6joK6|~N^E5a^{h9Cp^$&yxY1_eY)_Q+l%7#a-58rUt=cC{pjTsC7 ztZh%jc71rid#@2x@!fHiKNd1zB>OEBzOc$4ze8Xo=Y*l~rB(ho8VBcA`S&cbD((xd z@_PVlk-U!>47AL z@*~$*gtbWW-vr0ChNvpcz17FZuolT)y$wb(_S@ktRet`r5|7+#dJG#!E+)cmM($X+ z6?-3Yd+&a1t@`V*JCQp^c3~69wM}C8A{W08`w#X16Z4=&B(nkXu+O9uFjKKtN!4QsxS??_wwo343wa4CUyXFV;_hegxs~wU~F9d5w;e& z_my?n1ajw@Bz6yyYcT9Va_ifKJ*EDiuolVtraS2u$=qVA zkz2b}w>sz7Km){fDsi$jxm7wh_7WUK92x za&3=cEt1!-yO=BF);ANIi`=mp!_Gi1ekOJna`QhMTcG|zY!Px}DaI~Re+jk}xtwL# za^&i)z{Zh`9lIGl%DMMe>=xwu+KR1475Hng_aWEs{n&?)i`j;)MecKnI_ysM@4_aK zo6jWH{=&xxzl4z-U)At^>c1a;h&Jy0unm4#kC8{H^HHr6Ympo~kHN^*A3RP>t@lS* zi^N~Y9RA9WJ%%kpGC$aIsZQ+ws@F z{xh)_Nxx5$6S;Ygu(in5T!&3Kx&4EUKjqs-Si4=@?!b>+e1x^g?VsSc><#2{W@2-Z zt1X5tLT)U@*f^5wTWkWkbx&d&ou9T%Sc~L6{_o&F>-;|p|5a<)4S%Qp|G~$q{O4N7 z;b!%>z)05O1bvBd=0x_{Rgo1 z$Q{cK*hcj?VJ(t9^D~U3p40S&T+RqfZowRR1Qpwefk{7_K3W?{_i0ME#{O%5pWA!OJyf1&pNM zl`xW+RdBh+RKTk>&l-50`q#r~<~n{yr3ywH9B+V;%t;6%$!}ovpqs0WFnY|zZ-UVW z{aOzSZiJE4a1)G@E+!5~+V9OK>~)K;r#IGaQU6x>-&*HE7)jehaJ>m2h4=Zng*NT8^aei20en{Cio_Qzitp`p5y+xp*C=8Jd|gA+QLYlCu#>H z@wbPOJco4#jO1C)4lt5uOFP0y;?IQ7iu>n4&xX_D{<+KaIM37hn8@)tzOM*tk+eM* z?xHnxg}bT0JB;KW<{mJTI(xzy8j}g<#{DxpF*ret``xo7TptgwxT{r8&;VP_6GZUl zu;0)Wep}{No(Jdb@VYqu_ArXv@3@`;qtx5s4lt6Kjxc(}#h(cy@t*}F zi9Z`oQ-3<#Eg7cYM0|I+xBC0Q=tWmgUpPZ!GT}j5=U{k9G90{~y*d=m()`)*aIJp? ze5vLf2j^;h49-)3J{;G+A{b3|Id6tHC&M-yso_=_Rjf}P6x;^iss6j*T5VegCz9dZ zVa!_+w#l&4)gQdVcwY%0a&6P$j90?hH}OC3GU1$8!a19{M|~`u`${|W}PPl%LwuKw_ghxj*mL}Nl@%e+-_$~L>tlY}%WK45@BbOL>JRp@cKiJAie$q%`}}Y7j)gDX=kNa?2j}kdzo#98 ze)qbId7HLxhxfh#M{wfp zFyC$P+k@d{6^u6G~iA4xqitZn?r*WU!&k2L0EzWeyt&q)g0?qeU* z9!~q%_mvK3eC*>h;eH?cdiukoHD(NanffpPI7}c{XA*03)gOcNG=Dx^sQ!8I0?o4! zZd890Y&Aakgzr;6@pE_!oK^4FF1wzXdhZV!;D&JKTK9XxpTeJpqulR22cNM|J`2zK z102Ejv#@2G^M4M1q48hBUuyhU@K<5G#?kAy`M^I!b`4f{Bb zVEfucuP}w+feQ)-3sql{{i@5Q~3H&@*INeHD?3-T~k;wG^I=MKe$obHo>RWZ($^T z1>f^}{k^a4Oc+VOXTgKiKN!wce+(}AUh9WTzYm*+^1lGeU?gK%3YTkq1-ynBH?FlX zlK4t^qxv_&H)`9PU?eed7)jd*uKwQ7Lk(Q}efY^Ro++z?pVhvegLi))J~4{>I-Z9U zT4xe|Q`^1;@7MSPaQ*jw4jW)3IX{Jw%;9J7=NkV7{H4Zx1tVG0!!VLMkHC%EZxh`4 z2S1-(e&9Oi2cNS$+~bF^W*BSQ6YlkcpU>WK#t(jsneYJh4}=H(;A9mTqT1lOy-0sdU$zkt6~|5xxgIw#-4R{ggCOF~3In@T_BgEoQ@WG-fVbr2Q7d)UV_`0GuR$?v965i4wQ=n?f|11E z3?s>T3yj3S8Afuhz7^i0b#8_4(3m^nyN~&O^$Yku&2vBekj89-k(^5(J{D#m*Hq$0KXS3fY4RB+#->XfqZT5RFXrca=FflI}7-YhO zTEfF2?@cdP$-IMEV*?rKZI`_+E{uGbnGV5@Zo zCm72K9Sc12MEJvIa*l%I>W|>+6XCEccwbxt*PaMJa{bo9+fRfqyZ87z;GHMJy!rII z3r=X;B;2U+O|VseaFX-w$#B*t@}$FACw<#&c=*Y1qnoP{Fp``jVI*@t3eGv{>lq8@ zX-qym>!hz|He7Hre8|;P2+unie&*_&4;N{kVmN*>OxZ$T5nO#Te98UaoEo_HWVqI~ zt%DOM!?snlO~U)NwgYgZ_S*#8li`IfCOE~oPKDDPr^9_tg+pAPzHr8=@URf(FAwG=3KYs^N)f@Yy21(NxwNTO1pyJEg1{v z5`Ppp?q|U0fjwNKX2Q7|6NBS{k^dzZ!8S1d|6!$=c#vY;XX6pprlc78Jiiruj`s)W z!kto#`;0y43?uoBy$g&C-(Lh>VI*z4!97!q`~D*61tW>+4I}aQf%~Qy_nig*gPWRD zjC`M)2_yF%N6-&Oa{pL=7|C}T17IZIy$*zt)N>w;1!;E-1n`)#W0e-E`gE6UkW4lon0_4#pI$+#K*9494laR|f8Jnm6d~6YNwH0IIXvNW1mqb{Lq=v5KL4U7Gy(ET>BbPtI+VlK)gY#iD z^BD6mh#2H@Mp%o)KN!A1=jy^%X5tW^=PIm|>uVA=uKozi{|EPD912g;aZQGc)L#t8 zbzLGjp)pCgUTbTBt;PhcIW}9H>6fHl7Ge3nuDYgho7U!=;?&E6RG2S{WUYfX9Pe$+ zjeYn(2r+m{8W|<=8*@em@k!XWG5!0(K`MDtO@rit6z5OEwyilL@$HCjXKs^tINr|e zbsWKocIFAm58HNTipvwUH#W7sk?%X&!ZX^Ny}xMHJD3Syul^h0+3KGI&sBc`jPA1h zeoG--qA`o%RT@(c->CkZ;JErD*s4D`!`O`-d<~mA7>j0I%Ws|C2ya&Zt?-i_jQn57 zr{IM8lQ25}*KPU-ufRzD7u&1w9*uboeqGzX0spgu`QO9*zuGt9{T+<_|Fr`!l6iO+ z{y_czf)8r`L-2wr@h4#<{!=g#|4*>hJV8g! z)g8?*+`44KxgGs@V{p8q*>@l762Z2k>G3qLN5Pr!nLcN57H!WmN8M-LnJ|*iz5BtB zs{b(<{mI2V4nLv(T6nwqcfdQ(GBqw{7yRs5ruS3ub1;&&e}NO)HVN-J%MAPtF|Wa| zpJlc^3BLjF)tG(oKh837m*=1GC+e?bGFV8 z96#I7X9OeJ12@ADo$c3j8~n2R6EKpsPQvzVox?N}Z2?eg4BzHwlMl>F8>#-9gM`^9`2z2j&Pqevt$l=`obA$rr(Ct;Xx)mAk9pe zliEKR2%n#3uG>J&AQ(yfVE7`99|mV>Og4-r&rZz_hQny)96rY$LH(oB%*uk){t?!q z-_1$owGu`WKL$px&8Dv$;?aiL#A7Xzn6WUDn2TW~`7eR5(wIpwa&3djFp`+7VU#&L zb#QPEJSEMXnnhnzVI=-*;b|J52P5(4Qx9_eMp!#t=ixedmi9Xvo||S;%lRFu0(f4U zSvQy0?)fnKYIVxspa@3iRPdceF}xtn%ya9w5H3wK?)?JE$^1V6BboCD;U_izDHw_W zH!za;r{V4D-vR$o_wY^_$v)f#BWe357)jed!wK~#;kVMvzvi$f-%c|J_xrtf2wRVw zzX5AeX2@}L06wVs55fP@x&08X*LiDzKh>O{F+a%d=Ll<&6i-C?*Z2nbbM=1# zBf0MV68=hK4#P;^3mk!ur~7N~A7Lc^X85GWpMsJ2e}b*X2j_5Yd5*8GGu-zaUvmbG zq~A>V=W~7A)92FmT;EsF$=Gh4j68SN9nR=vCBhR3Xf-mjlukFXdQ;2czBc{Sdnx_~p?PMmp`)SMImD=wrcx@*m z&lpz18#QJV9M?J{_-4&>3w)dUZ-=+2e=Gce_WL0GD;>+P;g__|m*GSwBhT?A;eTkJ zf5LBSp10urI+g?QyPf=docG|5JNfr1pTOU%{|ES}wmk;_+{wuEgQsEJ$;h*fL1$j4 zI{UG=h0o~h=e7f!*4fDOq3Q5Boqhgu;U1m+-1dYE)L#f!b@pqt0p8r%*LEwsMPs(Y z)t!ypw_F3?*V(Vj{qUn2^B7#KHPpes(L7JX+dKQU+X4Tnv)?CwhIe=N^Y%RarsjML zKB#RE!S%$udlwtvFV+7Q+^qe!z)1GziOwb$x%YZ8Y#g~g8DSHS@h7ns$sC@9k-R58 zMO*Ygj>i}_j$EDyn?UY8X%cIZ+?)LqjO0D$&oGkrp{L1%T>cm~j@*8ZunFYuol9aZ zlKpRqNA6kF7&eZiUu*)o_rFQ3MY7L>F06YOUvpddoG!Y)aJMd!Kj;o;b@6*98y>GQ z6X2>Yy4G;Ki(l&q-qOX-^H%t-E`Fcf4d2&A*Baigd3M0>YYiX3A8O8zV5@n8u3S@f z^|iHuk*rZF+^MUttux$3W4gkFKOzov!o zqHcb@O5jrR%Xt_sr>#3?E8vZqe-pe}Yq%BO(oK%FU@Kg$IcwniwBP&TN7err{A4%3 z2cCjIR{tk(z4{yAM(wK!KCb>ByO~_%<}ikhBX^8P*aULV%O|lG$^LAHk(?7+V5?&c zx^oWi?#FciMiT#Scaw|Ucw^WiSC*&5E!VN&I{8|8+NVU;TgJk2U8faD8{< z?o|#N;G^n41|RS4KfC)8w(1Xhur57}JeM&WF6iNFD};-B_}ArPc!9<&gyZUu;4K=z z6|U{!=e7=hQvFZCNNWBKyt9Xq=R|hF35`j@@AokBeDMeHVf7z@kM{7_HpgJA{-7s& zpr^0xR=B#S|E#hGezK>(_IL_z?CHnS1Y7k7z1Yva{Jw1i_vq!E8+3lb^@H&%a1o7F6!lvi()L7BB6lqp z!^V+&orVxzEO9*f?^ZpGVjPlILr%7RfV-mKfxY{Ro>t?sNDgwjRlS_*jc1f6$lna9>|% zdpNDHuRk5m>g(qx8y?wLKM#j ze-A#G;jgI9 z?Hy#oc^Z=s7pT7wF3L8$d-GXhF&x*J2(HdHr}JoA1J`DoyIh_+c&Enff}d0WUtlEn z%KjBb62BWpa)0de@ZYkH+!OnE7|A`cFTe?nPs01Pwgd1{t?d}xoNWr-=h7|kscdt? z)%+7|v&}lk!EpA#aQ&vgyNf>!TWuSRU~i8w#r;#d2W{YXBaHvwB5;Qh zoG(&(1s&nE5k~(1NIIM`!tdcsICq2@Fo8N_aM1|UWq8VYK`~r9!u;w5+Lpm<)n5r$ zsec0;SAPWC5$5)?TDJhruJg zKNtn)X#TMg)owJSwzfYtpWQqay4wnI=S`QfwfDuwq@{g z9m@*ZuGIa5wMf=?)hN?=i_h7FwWz229&j^!yN+cGZST~6u@=b~@4}B{PO#r1H{S2C zPHqnWhjnuPMy!+j{;mn@*Qj7z&g47N3mA@!QJo!zOUdx_#xc`+hF9r_Y58$ zW!fRvwmsI#^>qd|uKoyXk;FfO|JPbS);_0e{TFz*&f)VglD+Xa;*p#42x~vpdOm|c z*LnT|{!)*NuV5tWdziLJ_Au5W*~3ThBbh_2MY6B{JIeG!&fg#F#hN7r$@RAA#sjti_sa%_GJ|IfzmH2e z95UJ;7d=LE4jCGwSC7i%vV?ax0K;vYI%#uZ^Ll4Iv0{7BB9Sc_z?hT%uz$66%ET^4>M zeyq*b_~D~XcjRjBfpv2C3G~Fq)gNKM8R6^v7VG4W_wTS){lQ4$(bMkxdaOk4a-smEaB>W{EaZY(!rom~D~upg`c6Ko@L zd#MR))gQ#*@wx{lz*BT@Ooj7C`+FqvVI;@Mba=*SInM+$VI;48*TYEm)eSI`^Z6|5 zL~{IMEt35<8!piJLU^9$pARok|3dcBB0sJewg`1Msh1UFgiRoc$66$Na>;0ufn5GfY%aRqa9;=3BH2Hs zxXI>$$6j#zE}6yeK3;o-p{xm z&~?XJH!F-fdNQs;B<^Ez*TBPVigW7s&7{e!iC*ZeQw zM{a*cSc|0o7vY5Vm4xfn-v9?=e9b9ixNmKY-}9};n0V_kvKA3Gx6K%-Cx(q9$&a;2 z<}G!MsYkA_2CPMLtqeoxpP!-7CDi; z9$_t#bvYYO(|*(8bH>Q)cyKO^Nh+*@PTd#a<{3&05gtfob+J1-sU0*|l z-Hu$pJFrf!?QgO6J&k{#cqID=Ymv;)2QZSg_!nHS<86SE?3qt#i)36_i{$+C*%(vQ z?AsP&<4D#WYf&}llb{7Yp>uVT802zBj!)^hunE-jlGL0e)*_kPpWvUzn6d@jV|E(0 ze!YSqhx?{-r2YtNk<_08BX@2OTEVSz{5rNF9?96T7RkD#;zu$rtVJ^3ws89#KgKg) zAX~ne#p{^6xds(^qT5TIBX*kO3o^ z=S+BDjz4FfM?8{!>-c=F0c!_ozk}fmbSxLb!*sk^Fp}4lYS?6 zqhTat83QBP|2gnjo%4&~OEl(E#*5rq#ISMX>W{Ei{lPf+GR<>2oJ;)1)bT+K9-m|W z=IuG?L6`z*$>zRa`8!QJ#zEVfVD{W-hASb)Qqh~ zZr|2nt@?u^7|AtlG4V)V2eB5(-dF%5scj*=NY}T7oXFKvhqcJP7Yi1X2f6sj@e-{W zYmwwE#gAl89G9`K?)@*;uG0A|$B*24McDnw^>qMik>sg>6S_~5@Q2#=Blu(8d!N9E z)qf<%v_r1n_SiU*@nY?NHP6>Dl5_YsFp|CTE&M+pA2h;9{7vxpn*Rs*sIJ{H__)UW zm}3?-`SvEF~BnE5I?Hf5q1!KAH8f(V%Pw5gA!bM}v zgA=*OrWjtY{wg>=);xZZ7`^L-y=g)vq_odXF2@lYI2g2vY%vn8JWd!HLgLGVj z;S06SAuy6Uhr&q4auJ-RZL{Iw8b1Oat?^^v9Ia<8e2La`DU76^aWImxTm~Z<@8vL( z@#exv`i;R;G=3_ar}LZ-&(Qj3!bRG)7%tWLGB~dJBRKa8Kd#snw7tTw-AuUX3O^^s zaQq6tUJ-0HKDd&$SDF`A^EqS;j$dgOt$`yraiwX$7EZ$UN^{uxgYjI$j5k+0ZVzXS zH+|QzE}3xFcypjTpWkM~MdN+WVmLnDydgQ^gvKP{{o~EguHOT2{dnJ31Kg;GGlA?_JC;I5E-O;QUE=|3ov|@d3DTqS@xS3APhWmE+(lt_LQYtgei`&17Ed zC;K|v!tExTp*`@ohtHU7+7=Vv0q!{2Y+VSS37<9DjLsnDY&dPQc|Q|Qhmqtw2S%&A z@;uAAF#2&GZ97diade_vs|zEnMFYAM(-}rG_AW4zJ>L~Z3yNsl4Mw-Q+PcH&6URMZ zbW=~bCyY+dC%zYq`n#HY!>F^XxetuqbK~j@qsjg7XHXl;XHFulMJAK;QYL=%AY+WM z79Df`e)!SolGgnqtVP@4pg(?eTfbJlBdkS#bN&G^lCcbgk<@=4j9kCL`S2i}!@=-{ zI)_7GBy%_vMs5y+i(n*kI1J7rzB}iWY3+Bz&ei#k!B^xKuNt4Y|=bsE;qvM?dqgS1O zDtxW3*EBe9viY_b{(Kn8noft&!k+lAgORN13>c;N!9Nq8rTcR>T%c=R$XcK();+@7 z`MPh5VD#TEe9ux0FVOw45Joxf_+11ex9&j+yjb`75*WF44@zN_&RPd$Fp|Br6h=dx ze;JHqZ!Cw=Qs-X*qgN`)vl2!F*TJh`BzvZu`q6(%S`Uh_7QN)!R={g@pH#v~_VYTp zO8pyPqieSjMza4m!8htW+yq;lhu~`XYCqoK8jg``{PEit&bY?R>Bc-{!bR#YhV3<` zxAO;6@J})SaeKHJj!*IN5!^V%yy#+@U^~Tp(%C&9HndJ+XA1^noq)~ zwCzu@)xLsjd0%#|-zTkLG-5sL-Wo=-f7-z9t~E29zdc-}{$e<;{s_M7TGQnA%-wMH zwWiX=*TA*vuY-|?}8KBZxXJ*);!>18ek+fdK0Qus``+cfhJ=kE>=nr8Yr9t>w`Og5Z5%{;yse+-^9 z&D1-d4ChTVU%U8xc-Ay?>k{_BY`AEedD+Dj!=)Ni2A5AW*SdZy;3|#Z0B@OQ#=F;r zt#I`;bEV5!1Mi&X&n>&)-P6nt=YJkfXgx`I?=(}gkbd{U^*Y7|I4jS$&Ca9#Jgpy| zmFLGe8!pQ8^%ukCd0HDBSAPWGmFMT}Zn!$nkG%%2&GR+a!8`N(9PWa5=lOb`hZA{z z9+L3hJhQ6Q)d}y{JO|)|d49Zy;QBnX$c?c9KAh**=m^}H=f~azAI&3{&Lmu~ zV`+dJ^G!>4o~vzwk7~>@__)UW2sdl}EwI&ogXyfxbU*esaN2Y~pXqSMbiYQKaPD-! zE-|=B{l#$UbaStphcdWaV=CZ{)BU_{g5%TuoJ8=J>E;5NEBKD-etqwRk@)X|k*xdO zaJBkt;NMU8`{x;Wr^f7pcTe|o_&ofQ#=i_FG$sk}pYHd=0r=o_zg~yn!#b8DaHH1Q z1RvFyV{r3yzdu`Gt78nVW8SVa-?;Nk8yNk#0#1e7UFWZ*+ru3-=1e&4I`dB#pAL7r z&b--`_38|FyUzU1ad$XF+h)Rpt~0-N@q^*q>rASPiNTXJ&ty37I&+8f=fg9!?M!&q zb>@8MpA8pWXa41CD};+Qz8EgmoMrGzZMzCC*M2MDDy?$^9A0OJy6Z6m$8}s0yhY=; z!gp!>-S96o=P%)E_1C};Y5m*aTCJfD{=NF2fnU(JFTx3Jn}ql3Jnw_|YrhBJMxDbZ zxLL>B0$a@!%wTS3`1co?@PHX+!7AotAUtx0i8&qx=gcsZ-FvRFaGv_};i4JlTQ{G@ zaQO_g)WuZ5@fl{2;|Q*vVP122YT()#rmgeW!8d5lNeldy?N5T=PHKd*Bi4Ej^Nts%^b&daN>G%i;GFZ_1Bwj&ffqxUT+?C z+yrObV8%Mmyn*xc4dzA1*>JA(~}< zKhNB_jQx2AjKtpoK6{>N<*tj;;B)7h3B7o4)d@zmu5D)+{m#X7fxFE!WpW(_cUON8 zxYslAMEKBsE+BBguIojHHGkFp`*| z@I~6!Fc`@gvtT6kXT!Pk{AU6&_zLx32_xxuJd7mg1o$ega}tcChRHCJdAk}$($_Wc zR2|E;@HFi!4@MG`56{s0XTnJ4=Xw}P%nfjn)>aHJ(D;S$BK4QRi?!_%xK!&YgO}=9 zmch%l{uOY!)>Z+p);w$Ajq2Y7BUzUl;kf!ExK?x4!3mw8BwVjGH^7ZrXA^8Se=whG znEC!3*aps+Zzi~NU?!Za{uo>|-=8y!;e`5=aQ%EUz{NMf8AU!%W)bm4{#;rN*Q&n` zP89j`Y7(~U4~p3X#ipZSzh%Sd9rv4)!(r6tPIv^2=4WwSjD(TIjDp8#+Z-54%viWq z{dKS{HkY}!!2;foFYtY}hLOa#fjg@IOt_Q!JHx#e_!@e{0~Yvx2f|2lo(Jb@+Za4v z+fINdEiiSi-^p;E=E;X=Y0PZ6Xn|>dnK2f_i!{CjUcP{Pm}t8KzDM)l3)gDfI(U!z zUxVLN|6A}O_5a@jlYw3#PbRhqx$zcb1^CP%^q1jf+ z@7OfJhqd1$u+^NwBGz${|80sGT(ro@?}``0rHjlI_dQn`T)xQc;8$RR3b<;Ksd~>=`Fj_v6-$~dA-=zLHjKm+o zjj&szCb)Tt`TOtrO@kKLsy`@Y50v_Q?9YVxX9=a-J2>8u;7>U0loUZZbz`14qc!|N+Xv`ECNzSP-lD5~vagC4QUuynp_~9}$wIIj} z9)TZM{}XVn`s?8MQr}m!l;1^JYL;za?>!Dbq5fJJiN6khda0=`2nGe);T=oO8!rEE zVI={U_j0_Hz@-)bcUsC|^wvLv{=rfhy%OjDDJ+AL{Fcjd7)jd|FcSYt7>R!sT%rEe zFp}SjSp$daH}H)be-j*6e+1hK{cX3^TqmsdW66g3had9WKEWDzjoG~+;Prhi<6Z0h znQ-n}eTD@dzt-0_0iL+l|9;U`aGv_};kdSq;A(AK16%b6mGFA=#%$&!sDi6}e*U2d z|9e9H5$DOsd=LwI2I+7{wE#*4Ogf$_6+d`R7(5_%ZGGariHh|E;IL!U^>!VXOY&X6Ef? zf8LA1MK}BBaf;!poBdce+-%~gOaIn=B5XCv`fIBJHP~8oLv2cC9X5enOcGm6S%^~{+wXXeh`=H4M5*xNM0qxA{1Y=}Ie$K%oZgkG29;o@0#e}!>m zmizV9O}L)|-apGeAC=>eWUfBOMD9%fgXkb8CPw(r=T9(U@}J@g$yef|v+Qwl3|Gyv z&+pZ^c9#A9W*zpW#+l7IWVYM)x5igGF*tU%8~v?ug3}hq&33&gzk%wAFQ4tc9%cMj z;Dp)kUn81ybGqPevTS#pG28u6*JR=cXS)ft^fM7plA6hQ>TLIw5ls@DX;?{qCVp1x zpTi*;gNHwsnuGY0+3xxYEc+=wJlmb3eFRrAo?*Bee=qevV8Ya&!bAr><{JDX^~0(E z3D-(Lb@+@d`v>-CyWi_=adNq4GS_`|B=wCjVdkVUZk}t$5QB-kb)PM8t6cYUy^XCg zaih++!58MbnR-rQF=6JaExshzP57;GN2ddh%eDKWBkqywKCSyn#66||B%CZ`=!^U3 z+HDzthvvFrz3);mVa6~FkIZ$eb^bPdm-IgxXGlMp_`zH|R}=B1T=$&b-pP21)Mw$x za@}z{|2Tev_3Al)5>IEGdK+ipJlV#4{JgApJ}#hM&wn9aCfmLouaf+0_%j*LA$(Yt zJ%Z0lpY`~BuKVn7JO&$Zqd9iF8qeYSiaGYU?TW9TV{2}}edf3~={dX+-#W+6=TJO+ zjy*m{;M?ceV{#O}V~(BwJMkFF-;D|L7#WKRGY{!_+#EYs_u%{I*kj-UJavv6)cblG zo<%=;erDsmIqnuco_xGO#G`r`ic>^u*^Bj?$9z740&v-6yW@09i4g$XmCqw%D9cCIGl?0NR_m4m0w zv-36$=gpIO!ynJHb8-+@%yaM6$95$?Bx62|39~In@KIUUF^QH+ggMTy!Gzhr*W#X1lZ1Qa*?H)VpOpMmJU!3O^9=l=7TA189A99!D**=z z>^OrsR3Lrgh~%TVw!n_34xcTs^HYy~$vcHSUlhvkk#TIHeXrUU#}(T5h8=Nyp_}xC zey@!Kg>H`i-^(Bl6}nv_JRf=3FLWQz)Yr+pgkO^PasS0HyKhb8J-D+7FR`yNoFdj$ zWNX^u_#*q-G6DB2aJv3#8A5m@xPBc>xoq{zXif`T|@i`Ij(Z*85-lvW#;PCd}9tW5V?L3SJ`XD#FE5 z6UM6~{~BH`<6nabGlti3iPW#dWm3Np@09#59Fcq!e_dqXk9>puBKsQKc@@7ZpOY-* z{JhlNJd8-9>3lE^`v` zf0nwHx}U4@HA~&6FUHqm;uoF24ilfV*c&8Cr*}r`eMTLe-kEd*7f}`VeIMispF!G8 zVgl>EpVrTldCtcLOWnjf>9Y_MGoIxd^_TFHrS1wn&LX^Gsr%lu%{nL- z)IIbp`(+J|$o`7rs-^A}yTcA1I?Fi5mbu^PaVFp% z%j|KOh9{-evV_JOdsc8V8ZnOB__;#euaJM$63y{EO)m)%I6gcII!HkSv!bB%iV7t z{m%IPbc2=l3E_CQO(<`%yDM zYG{4Jz4e#>mW>+WdoRqmhf3<5D%656ik?!VVE%E9F7T-AAt$e|47z*yR4Vi zCro}6c|zBFv_4__NyUVzNyFcV-GCm$5BQYiYcOHf^&|Zdj}B^brAO-%rv4}Vv(*2B zYh|wL@Oi0eVA+3UY_vXM`urFBvaGX;{j$pT*%)88%8v7LO!OPnB+0pA71yP&vfD!I zcafT|m@s{I!-Uz!?)d+t&z>xMgDgwy_mX^Xe2*+U9^WU+W?*7c3HMgZ#DwYpeoUD0 zJb-6P{j=DUnpv1IW0;L|B|irfCO;Q1lQAsEgz0|;;|$vxkJcwleidFL%f5~YGqyMI z=+|tYV_xHP;MZ*ZoA_(Ve}hj;{&(z4-dWA#Xth1IJ?yV`uWQBs;yP>i&Si}|Me&`* z1-SVd_p??!N5o+Nb(?qI;6Kmba4%WMF|!+Ayw-hx9gmSq)>5<9=A9BgXDD%NN_ea_ z!o;KN`0S-ICI+q}-vl?6nr4_VH5Zid`&?V&(fWkRHzyxs>pj{?%MvpWQCgoc>uQAw z(|>E~2|ZUHtxpuJW4qdrCv?3>>l0=^FCxX3g9{KsQURwVJ$-jsRGll}ZO4jun^<~lztxuSF*oZet{bp(iy>-hceIx}XE)^D=T zy;Pr{o04xYd0PJx$#)=69DlP>qNg1vHMD-b)Fj}pHt%%9#INhP?@4#+H@|7uMe7r0 zUGL(E%{$RI-4J26oz^GJw(rJOHt$qp|4nz+n~jnjXFdI|w~vwTxN3ua>{M^y+_=H! z|HZ!Kows;gyk(y|F2Ka@PW;Dpb4-}$l$f{NP>Z+h`I*-DCGWh=dFE~Vm|c$jx9wxu zDdqfDYR8j_L#6h3@bL4ccFyNx!tCn>c%kH9D0M>xrFNgv`h=+|#4k(DBD`Mm8%o{C zTcu`BqO?9?_VwHJQ)=ryTAwiaGEA5`+(^y4QbQZsV)GuYPnh*?Ep;mhJ^z)oRfJx) zn%0-RvkepGIqN;z_wBlZv?0RmJ6d1z&UQ?gG3>w}$g+DdVb;4B@0Xf#?Av}Er;PJk znLQ^r!Gu|FQ%soic{5Cy=Yk7x^D_IK5`)`F{z6Qc=bBjjw=8=e`%>d<#2fANxbqIj zM=@c~&p3ILJ;wTOVqb5vd2f>&Pw2;f0&RfMkC7m)AF+8SihZefHnT08?Yf%c zcAM?^FT#Y`uJ)KP+j}u4%<*{%Cd})c4*0Uo_ISG-6J{Q+z=WxZ$Anon0TZUC3w?L9 z>k86l6M9`ay6s_Wg0vw*kH@3+3G+H9akE>SY}Z>y>l0?oeQ|%O8L-(c9cXLHXtxr& zW*e=4tBiRl-Y?@RXI+F@7p+g2Z9jm2l>UFhze#;9CQMBoCd~GprXRxeL+cY}dw<7g zWo-4BFk?Q43DeKtxIyy&V8U$gzw}9%*KD*tVdm2(PndPl`h;1R^DchZ9vjXU_VpI~ zywDUk+hUFl=K|bZ@-eu@7JHs-i35@k;?Nd5HV^w-?BmGUN`9+7=XluPDz7EBv9Gt; z;~@d}+-Cbs!pYn0`L-|azs-(q04B`qlYuxO^+B8=HJLcH&5qf_gn7Q3g$eVVG8_Bv z*}U^U-frjC*}>;mJKP2O^SX{Weuw)&XPkh$?cn-S+#LsYxIbtIaq13txUNsb<9E1; z+7obwESrf#JKRTg-owQ^xQ-Nuab$^ z`%l1uo$dym58?-Rx*zIgC*mnmlZ8W)_i)}$yDj z+$)WcAgusFUvZ+IQDkgd2WhZ z?Xq**8eb^+SWKAx(iX?>k~zWMcG*6=;~u;0{3PQ3vg`mH*k$K4h*Km#4Bsw&j>4&u zPs3xS&vZO~m!0PcIAfRHmP|ZF@>%#XS@v<9z02<396WuOowpe{w9D>m59djJK3=fP z9#;$T66wDP7t6MU@mks561;ww-CrAUsf@D>M`T-~c#rhC7k?~$9>i6$-fDbG#$SVL zC0~cn%9!i1FUvX+_DjT$vo(&5*zIbI<05vybj0xy*)O<9#O~8Xd`-lT`C8mlmQBI| zsR`nd5j$_U;Z(_|;k%@MG#(qV`yw4@L}Xv!sWOIXSV?{+4oSU-7ewr_u@Jv3+p-8R zld&zw#Swcfg>k9Wl;MbMR}@!C|JArQVvp52d`8yw2ll1LiE{po+Upo&@P$!(tzaxB z%(a(oal5F!mhvLpK5DN&yck~|wbw>of#aj@OnvY21l&{lNx}i?Cx}y{_IkxMoDsFx zYG&f>s5|m)md(K-S(k_NWL^2VAZo6YbPDk)S#J&YqwXUsxz^g*&3DAR?f6?@!i>Kq zZnfJk+Zq$!>FYMz;8>||i?gLZ2UqO2f$X zO=cS$EBUrK^#i+&X?Xevc04n1#Rql{E3yB9Y|9?%_t^PK!v%ZnoEPGXJ$9ZevA@S| zi?bJhXs=Im_A%%C?Ejz!@sNG)kiYp))LXE>&;6p6{_V+rYWCajFM>Fr|JyZMiuzL=Ogkn2Eh!o<~`xxY+5+`pXbKbrM&24KSE2V&yM=bBya z48nw2Hh>9J6T~5E^mS7n&MkL8dXnq(=HR??dwotmE+}_H-TBU?5HBgW-x(F*;&OY< zPZ*b$+v_LGFk${jWh0KrHb${u?)JEn>rR~mJdO^y-EM9Y=fvRH1Ma*#xIVKjjz8d* zcHw?-3Ao1rJBCDj%>nn}2;a+Gi?5UX|KXnWqyL*X2?q|?|8of9&;dIh5Bubo>F=RF zVqG7}HKjQ2Bm1A&9dZ0e@;wv|d}Q};5T|}*`%l9evTP;}k=Ogn!~VzeUCBXe4!YO6 zJian<_CdFQZ+_F7gF^@1g6H^-%)_UorUus@bT{dI9rmTh`2>Gr`*A*H44=Adbw6qN zu1{TO7X6RLV?K3{>Sgc7A<28V;8S;pzCUjvF8urlelJ{_=!j2(|D=O?5DsfeXyGZv_jeS|xsdPiFj+^=MXbT9{tx@Mf z+9ia(&a;TtztHBL*yH?<)^T?+H6CrKm(6>$KB4nYZ}NnmbC1^VBg@`++>P91YofG1 zq1WZ~JMJbAvh{swQwY7@VYC^9uF0g$CUpNfw9^S)GlRBD^3}9~fUOVGP9k*uWZDWs z*H_Z|gjsJ8hmO17oaJ%k;mC3KzHVF}9;Kf;yKIm)o6z++v>`(G;t{|;Xm~}Z{;3|`MoNDHw+TE|upF!+b+jFV&Esu+D-MKoS zi9_GIEzV;PpZeC;)Zib#wafm5fBn{-sOx{jwX$p-J}t}sj?aASzM*UWz<+-0j?{hr zh0lKLcGdZMOqlha!^G9P=5I{Y=$iAG$kX4~H(+0ub-v@A@SV*k;Lvw=T^^2nXV(?Q zffF_#Ji+7rgzY~EhfdfU5Bn$Vc$|~?q}?v(duqP7+wS4K?`=Q%*q6NX1OCCzm2(Q8 zlKHG**%}!Sj?~y~jAFmWj=}j6|19;t;9u?BI=|uHY`s&9>tsBq@o76J&hPk)?cezW zpOx{~bAG6o>jZFIy*)p7#PRj^yW<4hwcb8Qbi>51rF_rc9ru)c5)RbcYZ8KZY`y!` zW*)QYcznG*mL}kgdUw{nT#J~AL-lU#)W#QaKXJahuXoQs*X$}M4--HC)^vcAj|=ME zE+M|7Da0?=yKg6QpT0$SalJd7KMQnTsdqz5>Rm6?thYz&6PrWL1~^4{xzwz{L|v%a zf1H)LSZcy}b-mlkYu3$KgV##`C73YdS%(R;-Z%03dUt@X-+PgJ9v}yvl+iD+p-03m6~n%y?S@O$LIX-s{w^$2rHj z`kbBHYW(dv_kDd$?{}Eck89@y{`s6eU;TprIANthWdk zH`v!LVO%O>D8pMD+)GD0mpI#SL~5eAO4e1~;0C^JaCi4=)Hz6-LFnHHWzvQu@6r0i z@v~}qYV-Iw-_F6MDkHupLpmFen)eH8p71j`h@xY(Me30-*J53;CesU z{4CnH3Eh7w?ODm!)B2KkPB8{TFB_x{5ig}VS9-KQVfwFWa8ro^sZQrK+VMosUX8At zK${`?Oxgzt{acucv?0lRv=QR>o{cV#(pE^mlD3M_uZ^o|ed6v4=H$l)x0ulD3e!di z-Di~6m%Q^6Cd_YMSPAvi0~}gPWYh z>(9S2F)oQ?_&g>|O#|CS=sEFdeL~Nz^G}0YOXxo9XnjH-1J1vg7?kGxpW|b~^y&PA z|8Wc2HQ_bzzZ|#!y3ds8d)#B9u(0vv&R`t+*S-e!u>Y^Tw)Cm@-K_asmm9<>zCGU# z!$eE=i!&UL^xcp3`;Oais&C)pq~Q$Ty?S($>zqtHg=HV*zOGq#y6>KRl6#@fz=X*^ zg9(%8YIR@v?lF)0nK&eQ5Bt77Z#a(Pe)mf5cdxj|y)wTq;|h1~aj(qpu!1<`sO$Cn z2oFabb$2$uYl~vvQE>zLuR^C0HI0a#F>wKpv{Wn!-rtA04 zIM7sGtsTS}P1PaoOdM*eT4;MX(o}8Kj$*&58ma9xqn~D~=4qUO1I^Uzr+FP4#2L-h z=lXucnK;zU)_eGDGc{^5_4U|qX2;-MfG<#4rqAZecbeOEHNu1$Ph;GsxvjYnw`*?u zya*Hb>oK&)mo`_I=`mb}2{Y!)@fFSOw#4Iv=5`ESaQEhR+polgslN*MkorX2Q|goO z4N}t!_m%ujxL


    NKibRw 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¬>_h!R$wcmO0I~wyYyj(bTuk=s`RHi2B8BsN6y`s983Lhif~#m15Q zj3vM(kbKsP4Uz204~R!@|3tBIHl1$4m6Lt>9H9_GlLOt{1@QvvYhFv>HyRKM6;^ z^6}BHX#17_O{xG+eC40JmxM!&F}vVh_L5dq~9#cT#GbbU35b zZn%YK1!lrXp6hoxjJm&=+SoLOk;FHHyJ$={j3nk-xU0r=E48M3sVyUC3idpzw4qXF zh;?#)6M@m;%lUs(6dqh^53S{YRYTyRTF)>zr_>(USgD!Gh40b)qu~3rhWp{srS|Mv zelKeb{6ML#{|Uc|_aHo0bB=@Knlpf>m)cgVcn;uvr6r>0_J=+ z{7R|4WhFcZo?B{nJDvyUm0IgKA6}$+7Q;(Q?NaAo3NL5Oj#t11rFQC|%B&+?tnnpq zneW$>!xid34u|SDdpPIsvBO{Fch0N8)%Mt#Pr&JL#vVJ_`7_}Td+gGi`Oa(>e6_}O zgwfZR@a)}A@KE&+gGcZ2ze_L%9>2%F;_^&@<9qB~E%tz8}#|s zN>{eUc0_NSOKH{#+Xa0;D6LgCb|@OWF{Rls>~Q4bM_@-ImuC!iEXw$zQu}e(@o3NFD|eZKor->Zv2xoOHjZk%RJm1veFnL{p2e<1F6Vk|0{#2t)XXGyqxv^t z3)NqQJ){1!*bwEs$Gxmi!+AR1d^oX3k0ZE@ael@zQVydpF6VnX-@xG>8@)P(XIbv$ zHT+(`mm0v0_xe541a7bX4sc|z>@gFChwSy=A-WkJy4U8s&)yye=j`?0C(4E6d+oFZ z{MJwa=k2v0znRj&>)dM)( zr!o84C;RQRiKe;9g0I?dyS_yH)o?fUUk{@pPx3p!-Qm&d9|NNt7ykeps^1*oJ<$O> zeg^TC;0q7fXIxAbIOBltD-(_!us^$gqwvH7_OpQaN$_NinF7ZT*aOev58zkSKL?(B zz%Fq)=fR=+&DX?#Z5O(n0i5@>?<*fJ_}aeu9C=p5pQ-p0 z&xAW1wCmgRyJT7LsDsu#h5uf7^g%nv#f*W+AGEcePR%eA;EC#=1W!I__f4bDDR5ld z2JkZn?KW5cv+(qT_Rmh_p8?O*m>1z!)ISG)UHxys^J&|O^Y#KbPyPAu+XrpMOMF*% zAzZBf5_sw%+t#gJ>=3V!4%s>{)9*C+J@qexmmjj%y<9oNtbkV@vUj+cRdB%}YaOqK z-#=vQx;j6ALv3pgbDz&)`?iZog)chn`??sud%Eo9kH3M>GxiEtmYgC$2BH^6Iw$OK6AwWIE{YK!sj&RJRGXul<``<%(jd1 z-S&QP|1#TYR^@hP06b9rgW$ns_U>8KIRqYBX2-TpYi)+X!^>>1*6hy_aE`Xkh40pw zdtfB_N5M$OcrQFwW5&U8jS1kqGGB8(yr|56;>NoeUZVb`a6y@!;pS&GoKSxfE-d5s zUWhM(_o;tBe6Y-}aPf!WGwMGJBZ)r;hw3-w@K5$jIj{cATKuf%Z8+~|f1b~W3x2i_ zEaH3OtKkm6cz@O}?4Mt33wPZ=4xdo}NjUt)zpgO9!oS+iO}VC+-{1=ST5q1uXpYm@ zS$$o1md{Ji+W!tt>uh?#z0cZ{5Ay8eJ}?r0Ul_gpAlI*cF#79()GJMY7&Uq@^(r&q ztj$0!J`)=vi63~@Mv(JIv2o<`2iP+8mt#XD@q^$SwT7EuBsC0%(eSaU-OLaeZF-RJ z6yFRZ@!tX?ssC2`y3N-aU_&Hz{vV8_{@Y*WXfj-&yYN!TyfS88NhF)9*0kz^}nTj8VVG%S(AbH6BJ1KLL)Pv(Mek@1Fr8|ysxJtjO4d`JHcJf``2mNaM$zx_jbC$*PpkKt*X?p*O2A0o$0gzLy#4J9_q#M9pGAcB_3@^Qc{H@uklSPF*l=QKTRmc0nMrV7Xdi5o z*2(0DHnPyiN3r1|A8!`JNaEjt3pD3y_^A4i!4;t`8SmB|<_Bxqw@K?}jF}dO)us*T z$Lk-HK8@#|Pn&gnT87DlBk9wAbsU9r(x+YAm)9z}a6En5_&#s|C(@^_axqD`EPYx7 z$K`OS@uoWQ)qVZ|4y#XV(8vA8at-p=nAY$vmmiMTnD*Q`eseg0!x|b>6Ms!@3nyy& z{7E>h>FY7I$WzP5N8y}W(}uX(a^ZNbX=i8g`Xqq!G$tQT)S7m!)a+tvPir`v^LbF4 znA*Otd^k~i+IE*G376HLcHLcE3(Db;cvrKjL)$t&CV;~_T610Msq1Tq!tuJ(BC}l$ za9G#Jn|g3Pjjzv~*Pk}h#bm;f`qQlAD4bK@*Om*%>-!o47t_G!j5Z*qfyTh`2Gdr` zy1-!rA8#7sZ>V*`c@3v6m|eN4$%hjSr+x1FO2TCgryX`&4u=hWPSc3Cji#M-{s2xi z@;Q@m*huSdOg)XY9yq7*w1)pCe=Zzv?B_Xv!^YFD|2KI|lWAdE6Q8pZT)BzQc>x?Y z(VQ8~NrsQlgd-U~PZZAif0oWX&Zp}C<7XJ9hzW(lj4gYnRP;;DN0DhIEo5n?QdB}Q z$TFXE@2x1ZWT%?36s5wq#hTAY8={c4(2QNFW{M))`904$?>}CT_w(_d_dWOAbI(2Z zY@a*na)04?dVWuvriKgB<+|WRdj56p-oZubzHEzOlkTrqWx!d!zNr}L$9%nt!SR@{ z{~Aujq;A6|=AQ-C4sIvU%k9M9F7*~R9i?t$!;eW!4l&RA>(bA{&r5xHp7fvh*O-Kh zp7&)^44dbr{QFZ5{r$CPz*+tM{f)sn{iPh>cz-DexS+q31DxpZ>rxUf>hH^>7&iTV znWzDzKOldEEyD~rYk)7G7@RY}KRdZ_d_ewqSFhlL0r|6Rd?B0|kiWum5-u7b^#?Ws z@^@Rm8kleXd%<7(nHTcS*%$n^pM#C~)r;_pQdWb=!yx}$$Kd!Ne_u45807Cu5;lYK zPr3956F=DBqZk|?od3Ojt~G21%l*y6pO?Szylt;wlPC9R2*(bQ_6^P%;@h-bI6fqQ z-Mm!d;esLgSH5Yl7fuYxztM6ME*g^mkmX|749Op4Sq-H;hsynevxfS68iR9&%Kd`l zL;d~LaAK%DQ*hBxf4_=hGt}QxHH&Kd6OQZ5`H?(2hw3x@mp zSqLYF`+As!i-!ApRSX-_v2C&%LEc9A`jY`?jqvp_2Iq{(f76y{E*u}>+Y=2JjPUig z5KfGcX9q4C;p)37MDI8ADMsL)or+7WPXYD z7s82=(*DC{q`yaM6zPnTwhoSu@@1mof>HjS7Q%^9^4!5iqw*_FCe32ljLL6eS>?m| zQs?93GcNZC&Wihb6@zo)z8>bn@wl&t8ZLun6q5q~Zm52Ou*3j&``A)JtyBwQ5udRPpbK-$KT^h00IGvKVy-=i3u z6Z-m`3&%rwFTe$%FXuuy5z4aw7lqPZ!A8O^G2`Gj-t^@;9_FU{ zzKx2*@$xZsHT^4X(6lM4ib{b|#p&uARR%7rbd9O1hDwDm=0AhXR#&LT>2rTaZZUpfXOm$!B>a@Tb`e23Dm@7*3o*Uccu9bn}Acf#oN z8|Zs?gwfdz_Wx+Wog~f9aE{U&r}AyjTo@H>RT=7WxR26r*nIYdpHcdeX_UjWFmmzF z!2^^o-OYIi!Y?R&(L=<%2oI8D2g5H>&URcd93G+c_>pC=RwLm!$4(_)!xJRUiSQ(e ze-oa}U%zEedkQ>N@-_`d?pmh9sNr_5YX*$kZs#7&gi*i!tRu{VQI(m*%!ZM>uD9R< zMh(-+Lm|9C>13g5pccZ5<$9OE3BD3Mn{r6P>*T!aVI$YBQm79p`tV@p4KiTl<{#?9 zXmFe{V?7vEi>I_w^|Y*lS?qj%@@Z7vC60&ff$^x8|i}s-`e< z={JMX#WymRZw@1OYzr8<^sj}Hi)jfXmrf>pU5cKZpVCxa52M8unLBC)BNu-Ij5@!< z_1*}hDe;sR>LwVua%c@B7vBa(_f9T%v$`4nzZCsKee!k-j7|oet1XPu@<``a7`bb_ z4MtxLW=xs|BbWaejQ+@{+}gp&<@t7av*ck5yj9NiBfL%0-wq#Uq=Q;+T7ykv= zNZwQ#xQy;mo%^WD!ezDlpE4>HPSrz3F;}3f2%Xi1?4f$kn}L@UNBh4MEDy>Nohfoa=YE zMB+=~^K#w`u&JcyL_DXeGF(~mp9ZIC_rHhKpkfs-K%iTfx8LHKv+= z_*cHAtge8s&~rbtYdu%OS8Dr>U!|(U)%EYAZM~|&_14hY2Z=9+O$|x2CR|g}yb8Wb ze=>%3PjxkXwWL!^n}2F)w-@4H_*5J}drn@cCNW?bW#en_AlK^HH_o+B$Qp z&1W4rU9Kww&X7FRh3o2kox(h4J-D8JVl>abst?!K6Gz#4+W>B$SC!aw8o~|b+OL7H zk@OqEjr_Y+HKyJ+@#U$T;BTVcI-P0?H`Nt8*mE_5o9UEMmYegAZmyqsfODn6>COFf zlmXw-+@GsG+@ZOCV>I>rPPjn)g)qA10oLW`z>Coy#w<&)2}vgj8;Msf;1>Sfq^^ap zm1nah=WQwHh2t&#c{RLI{F`7Sew9gkm8n-e!u)3p&dK!UmJ1h%zYtDj`f^UfM*QkJ z_&O=)>)}??ZrlLhAou7-_(p%<)lKkC65kqbE%&Ys<#w|#|FoOQ|IPaR5$;h2-127s zjAz0pZq}ni%I73}>So=kT53IY8a6jeI{yd%pWK&Q;9Int-&1YjwsL=Og>Tivx6&@D z+u+;u_wDVy%Yw5c|1oXK#B@fY?DeWFToBV~zo^El5S|H70|U-yLvw9_AN;kg?K$J^VbF8`@ zzC-Fvdt%z_n(wFQG=t&X~_jo%BScM56u_Q3}` z`uIceX^Hs{J}>?Yuo1t?*8D#ppPz1UPPV@D9qLIgY{akbqHlkfzs52!axrCLh_suask}!{~*Hsf|?)7`gn{gpoVfRd79t zuManr^sj-DOTQ6}Tzq2~x$9~IH%c;IvBWQd6L#4UIF1W{+RUwSZHch== z&4Cm5_;V%UqI>+aPz)nCCfW~|+~f0B3Y&ZMkF!{3QTM|4`Ei`OAMT_JY}=wb!=2^* z{s8=dyl1<>U8G%o5PneF(ud%Or0sneepuS)N8m@Kf6^81s*CJ+R&~?nTsK`mM*Ddl zHr@OfO+5-fD(C9Xc)7c--<~!z1x9ZCSO!Kn&!Rmq3#WGX=PCzZ++Dl>$ygpnIU9(% z1V%2MOX179>x%Okb5(+oOS3YJTznc_MbfDXBR77m23PN{oBYhNHDKi4BQ;^<(zyz* z-Ce(Vkn`4okvnfXj9h#MT(`SkIED779^9b2FSmwpBk?zen@T>L!7aM$mRsnXT?-?3 zu9h%zef~@sxp&re@b!}CR`3myhZ|w^RAEYWbramWyC2K9fssq+W*ALbM$G@g$d%_U zFgiP#cS>70OY#$g+e!Mj!|f%$1B|-f$E?Ji@ZI9S2fkO*zYj*PZ10DW%UdTHx&3>c z;VzQ?gYd(0-yeayN?CP-k-PRsVdToWJB(cVJz(U<4n1My;(Ni5NqOeL$i?KsPl*3X zxVNPF6pY-xcpB~_b*3+j+Xgl(|j1YG~+OG=hg75_-9aWN5kVJ4{yK|yX$(h@K1s#clUD+Q()x! zCsW~RlFoE^W_RD7%z|fk*Nu0cn?MyKhZucfYB3Es7niBBbT)VLwMy@UT2}bVO{24~B-P;2rR|odO z$mL-lj9ef17x zPu=JCo^H(B7i)5Q>gV$q|K|48qlfxq$6zNQJFc9FosJgFN@+O5T4d8-h|PM*$HcI4 zWMeeeAeV>XJ@o)&{R6R!kxg?6mjChOV>CRWr+)EQ=4vJqk4m?x+5@pek-hd|*b&HH z`$+6)WMjr)4RYl(si$s)Y)oV9P~?uq#*v-#(b&b}UxHnRY&y%aIaBu?7majjm7u-wwIgi1Q>G8EVR^`As zzTT=_I9KM%9)};7W1oPZ(Cz2aCs9wrPl~@c+}l4#>M8gsnSXd1ep+v_^;7kM`^Xr% zFZ_(F14=y$KdasUE?3XN&-v#_^`rjx)1zwh|6$9+rk{TIw=#8=dLDk>*H6_S?ynnm zWld8JfCor^2Eqd+|1ZEVNZ;&5c#y;lrcX84Ki6g8vV;BjF%>R1*vDK1Up&}9zvbae z2J35Iqy4-Tt}xiQR~6y7#B10LmhomDoag68)DU=x%vBDBhe|mNgNI3eUg9}@Ngtfd z|76L83trNfPhoDh5Kf3c2^;aN;qY*|t`YDE-TYOaaWxVish1t5{a2&lQIdW>oG;`3 zIM)^T`794ti2G}=2v?5#b&xc;dfeBO8gP2tUwa08ZQQSSw2bRGO3YR@G}fTUXYkBs z!q>(9od5N3>$o4Yw}G?by4u63HB}7m7}qy^ry8hixKmsovHh#gaE|057w!|++l%P` z_l2K{`}gUy@PN4QOALhLaed28?Ag=s1j+M6cv9T=`QL<*>+?^BksB9Gfv3lPeVYNJ z$M*BPm6`C{as5=&)N1M-7|pj_0He3pm8q!;;dyaCM=>8>5Z7~O&>vU`FOK{7@)G!y zxSt#O6kZnh@Au_!BJRfmN!Y~o{rG9j?s6$%5|l|>0|tSR|ed2j6Ob|_9qi= zEirB2EQyK1oy6Z6&JlkuJYbAoFq&fr!b2sUVekZrnFtq*(KVi>{VaqRjPdh$3*p6M z^wiB9y98b~#11=b+H@{7rRtV1>=bwvtFmm&9^I_!Xn%;#M zh<_oxSmKw!iE%oA3jNh2yl$L-?$*Pb$NA@C3%qNbf8KY)d&cQQTT~sj7cL@wyN|IL zK03~?1s{V;#_5b7$Xh9F#`*b1^#(j%ufNvrotpqpkn#9L?)yYvw=-ZfQGaRcxtat| z(rw*5`J3>YdR1T6t<+?Avb4!l;3>LdfsLOEPu0(jwR7py;AxWnba=Y7w=>`w(yq>g zXNrFoWj@QtYuL<^_I5TrThe(8e#`gk)Z6geGJpFH{Eqkw-~wNlR3X<@s4I@4Kb8S! z73yi@Xy;>aPNDw%9rBqA$HlMVgv2M|BJmf)rcm-Qhx z_=5NijNCX>Erb`!Jk0y>`+CnX+gJI3>-s>y-j{KDF>F4NKENV)k?#1cy}uvAANprd zeFT3b*Zwj5vFn2=wHRJ3YlTbTCBA;DrOdr7_3wog7`Zi$GB9%Ei?T3sYc#1aaxvv# zi+K=!)YW6vUc>^ZDKZjB}luCi1=@F4ZA zDqL-;uNzlzEyy0Lu@SOqzKk`<#b3Ep&qH<%Za#JavSX!%*hR>W?>@vXL-zhI$F4#) zel<3MY)le+RQ$)V$B}LGf5-kI{y(uL$i|mqPaqp}5_<~SG*4pQ?7P4gjzVsns<&&9@(&9lZX z5dT8#Vr0`*U^D4R*tqyL)}YK^ zDbEfta_QU&Bio*+jxcih$%cFRYgCWH$oX?%G<7=ZH{O!hWDl1kj+CXHXYe(&%ic9Hoh^owfNg$vyjb040{K%<<=hC5!pOvV{?#A zCl~u9vU%u@9U%UJ*g?picQAH@_(x*n$lg1RJth9r*t5vaDV@U_!yy|5U6&t`0m;I>^?~7&eaVz0=qPvgMP+ z8syH~A4YC((f}CQ7&Q<^uFkwbn#ev!F>FWFsCvp(+1NhFrr#I)9I|afKkNYU55x{a zHqF7j7F|sjBunA=A zVG?VQt8a^8BUi5yFmmZ6;UdXrF?>{>qhqjlg; zJ0zw(+;N4zaca42l?~q|F?YlFtk9#TlIMG2Wb>fzTcNX%Jy#5yK=xXa*dk7gmY{ah;_!GYGR|=bioHq$4{rZSn3$K;?{w4gS zuS@DH_$z-d^)>vpfA-Zk@Hes_<6HP!Uq974#yji$nqvl>wa(99#b6_TwH{tCX>OoC zY|v+p(pRhoSKpxLyq$7|ssX2qKLc*GL65$vOcm7_eop-T-~kdp5FWHa513GM{Jd@?bs?PC0Sx4^qL`FY6Q zaM32eeq9WgZ1Uw<3Y$$bH~u~Ry>H*t5AY9e-HmU!!JGYiQ*D8_$QssG^0rmCf3NIS zDhB6l)%QKayihJ|#IJsYx5+-z?eKQFUpwF(a;}|>m3Hct)46w<@B=&jx_lS7K>UU9 zF7fY%jri3r%4C)#QBDhHEe6cqF75kVoFmn6V&%&s~O7=pWgVA3T*=v0s zMsCb_0Y>gUWnkpq5o$lYU&{Xgd_cLC-@2djRAf0O!f96s*fS?YKAcPYa^;6J22{}cXG(l3Eai_c^f*=SI+Y6#keGpR zTw*kw5PuThEa`87cgeB4;UbAIhD#)-6h8Hrt~{+=3w0Vcl8*YD`N_Zaz=v6@N`X85 z?epImj{oiRrs2inUjirormVP@BwX~jzs6$NNW3}$pU{`grJtrw!YAck`~&}^Z;J7o zboDR%ul#P}6nskB&(rW}sRRGP|M_-9oq^A2_uT+>7CtNS=iqaG--0?1pO<@df&5?a z_fEs+f}~?$qX%C{ze1^i-}nRrA1%ZF-V`_`nA6w#%fMv<+n?e0AaL2h^@UU_oErGL zS`IE3*f}wN4+38#@fX7v2d*Ek%ERR){u20-!2f>aQuxxq@3*f2R|uxfS63=k5v~|K zIaiUN%izm`Dz=}dD#4Y4wssyvRfa1Ee~e%bU!}omf!_ysIefXqRDr7m$sH**l&T6> z4P0MHRfDSq1#VyB74Q{uU01?a%C%RAs|RlErfR@70>2hq6RsKf{UlexR|RgpRb35V z9qhGxhg7Y=RIU~5yDp`!N`p&k1yw7t&Rz2P|mXc}{dDg(}tJl73Oxw?Uyr@aWi zxURqU@^E@xe~&WYEQyK1IducqPtJwobpy9IM#Ha3%63PW_;f-G7x1 zBlk|pfLqoN8ryxLneeR=a~qshKWO=tYN29qPW`~`J;;Rz)DNDvd*cVf@%n+^R}Zg} zV^_oIz7wnwe*q)+JHa*egR;n$Pb$_RH+PYM(QDt*{wLwh^#k`izAf;Nl80^ZuKL0M zO`+U&!$lHP45RJ#T>D|<_M{zv57rNwzEZZHIs_lBAIwint*ws1$Lj|#PUHJ{zr%ml z4>G%_)>0)fa(O6)Psz2MhK-z;#czJk5={S_bE$@uVZ(qAv|Ot)U>3z=KeIoaMR9)H z61XvfYD7#UUw<;-tVV&GD~`cN{HihBSng31%Cm`&*Kk3Tz>O;l;e_~;@a87L_v09! zZh`lRe=oeRN#Oc;zrg4s`@72`7&(72Y$Q$9G%%Mm_0RaFaD}G6{#S(4n)*Ck4kNd> zrwWW*eyYOA)!}L|a?j2c@RdyiJ5Qpj!^k}gHQ<_ZuB+hMl71aHUHlnv-KPHetq0#K z{@dUziI2erP3h)y?S(LM&(0ipanr!fKP-V05|f0#l01A3BNzV-yiU?w5APEHZrI4N zsu|o&+UMqhNo^juzFavN>Gx>EFM=yH51v`bH%ThOmq|<|I9*~g;AYK(@e9f_9}X8t zd?CE3dGOgn{2#)J=E45=%eGKSc%7uP9ySuMT2MDy1dV%^p??dT7Qrmb>RR~P!2kBD zCEQZp9hq=u;C~l(9ekbCvFqXM1GleFwIZLbq#c9JO%mT4ZXLLJY}E#CBkzTq;hO_D z&!GMf{y+cxs$1Y&eBD-U;kJS68>m}J|JK0H^{EUv>(;>i&L{@w-0IJp3!7Wzytl!( z$+MFM$0QH!;C6Cdx5Kwf{_lYA@a>Xn54V?gy93-o-h+3-cglOGV_?p94BTAMIoNaz zdN1HxNh%x84(^z4-`#h?clmZw-3{Lz_}^gO1K$&LsKxJ6)xGe&f$tC82j3@Udp~@C z;P!2*PH-nVwlmyW^8Wz*K;YKRRTsF6yk{STAC&8T2!1GV^AhS|_+d%^5%>{_=?Zt1 zYwreklXvu^@S}m->!`ZJ-GiH#GZs@lc+d9m?LZn_y@$_d4LH4r)B(6rkHF0VHij3A ze+itB_$0hX{CnXd@fX9UNAPnV^DU|;Y4-GegA6#Ur%yiy7xnb_x)?SRqk6%;g1^|4 zsnlceV^W4Wa86+7oR!LjbA!(_dG^^n#Gb%lMJdk?n}^sFDCP4c{AA$w`}Kx`Zj&xzEXzIz|RD3?oK@mKP!E+=iuk1e)fm^`}R-` zfCq?wAUsg~FTgK||3#kP7X!a195#c*KNueD{VES0BL1Q9P)TPPJWTvAQMNC6e+FFg zlJ6gu!saE38BUoG54Lq>EFXj8!-HTq?*a{*;lZAbw%;`Z9uc@b3~D4iGPvWU-M26b z9u+*Z$@Uxb;e7udQE@mf<*#8K`28&b90V7+G7RA`u+4*cxzc z@z;UlQ~a}|r;z>>-?vdy;pskoHG_Wd3?I`L?li-v(;3d0;bU^)xWs7Kh+oa53};IF z44aug9W@J{CC}h&%67J|pE20XmYBB!qu%oEPYRs=mZSsU_Lh&yf|2Vt#$Y~T;`#=v z5H6IuItQL3&+lA#uK4G{^Q1n^hv)ltTfGavEAQp^;Dr+NKKy>*$Lt@#9|RvyE5|r% z5xmI1chraQhf;1I!5;{{D@#loe0kFM;j6&u;^!;N2Dxjg z3)dHa1GrH#aNihd3^z&ozF$+gnZz`QTS&~ca7&5FgtH~)E*QDK;@vQE{rP)fW`gaPKzwm<-r_C++G+c%zK#H^G}^9Q{4< z-v`fhXYL{c&iX$1bR+dS26y^CnDkhgt5jz=NBp^P{CnT`({MukN!WZJobPJ;6+gf~ zNE^5r-Yn1W7I;gr-|Z{j3U8Hn!H@8dft!<5+vpE(3tn5n*uM}q+XBDGemlHfu6+mn z^Bw+P?}qp6@czB9+2Pw&wG-YceYRcju3+vw`~KPu@0N6af`5{J;Ln`*XJ6)paN=hl zlZ1`<)gE|{f4```)aSjv9ms@p_WJi`E?l%XaNhtahKpqOWEzb}V@`vddl z{=ohAVKTf~{9E8%`+YxrH(a#emu)d@Bt{+J{dgca^d9xCJY4yJzwc>q%L764$Cz)- zggYGwsx4-0-Wkr3_*}R|;!9y8G3sDoCLIiRPAgYiy$R1f7@V*?4>saghiDrQ`TSf8 zCl2}dP7?m=ke^ff8b+>7_y%5gC~$Mm>)})4KMkLk_zSQRzdFqQJ?z`<7;Fwp{W(Hk z`iOrnmcYx71Uv0o`Eq#05&tZ&gjY$-YWNHBuYnWdPr~bt`1`&dM%_2khuHulH-GpY zyitzb1b=_TKjS~Zn~(UmcMDu3@x|~#N%IhlTsntgKOiG!LPRM z(y%!e96rR{i~1G*Rob85;NOBv+osaDKTi6`eO=9fvyS_7#b6_T^*j8#^gaH7|B$}x zpYWg3S1f@`0=NFFO5wky4{(C~obYXkh7%`z`bpS`U!8;11|t*n16)}(vC z%7E*g38qYEeWCuD;6L;w>7T)xmg3KZQHzbt^<4)e8>6m=Tb&8q`oaxxmc+;4oHK!2 zv&er3~Z#2 zq(Z*W7P|gqdAPC)UHwmktEVhvjMhRp$f zG{eSY4chev^YamYlr)9eCI8^c{1@yc%2H}yuo^SvkF}wdkefvg{5{rd^cRA!td<20gGYe>gs;@ zpwzKLFmlHphLKD22=xoudRPW)Wq)5>7Hef=Qn3cPG>^ilzWqMKF}OtPc`0mEIDMTR z-8T`Z=YFaK+HA9jMDfgX&c*+ft>#=+@pR8Zcv|S@6*X)m zUR@4f9=dn2ssdLD-EU7+Rk*77tHIUex~_n)2>ra}l|18DhR@mkv7O-_SB7rxu_v5! zW$4Bfxo}+k8a5KIs&gN!`@9vyrn;P~23*6Jzp5FUOKSQ$b17V*rmx!-VN_)6@MUl% ziK$#OjHlOh^-W{>*0eu114gcH*M*U-d#WDs$kkh{X(92~!pOz6BnCAcr|N2~LH3za znQ)fG$KVb%!%kyWBXuWyUrpau+z%tyCUk<4tN)$h2POU?(nq$v(pZCB%)|JRYm2Z3 zxi;z%{K&P9mb?0RjWs>wTs`q4*X~(=haw)+_gLoBNy`o zG03*V8f*H>xt@UsO3VwyAa^ZTgWR>eh#$FY!J0wh9}MT!bnUPjQZr0PHa-IzNA4Q2 zM*M0heq`HZjWx)%|HJUVB>Bf0rpvScBa4eu*Esdx|y4-J`EyLcu#$cAGx}OHOL*i4nJ~!%j+d?ScBZX-T)(a-tUM(?is-v@Bw&b5npWb3fT z8sz#LyJ6(=`4fy>{Le6Q*RluRCo#Xk$i)xJLF$XHm_ zr%ziybYqP)IK6)8=D0H8mi0q7hnxu)h`$hCEdC{MiTF!lBk8CHyvG}aZY`rMjNI=} zQ{l?uPlMCNp8=z9rV`(bvTYW+-vVnm(agVRlg+|TyPAdf?@$doW6i#1 z;hQ_?fBpg^>sLiEa{gj?f3q+)ga3VS06x|%d~pZw(_dlaVt#{9$gwBkQxbm~{!jd8 zVC0TH3nO>zIoL>yY7RFKvtP689WBUzi_oq6YuL01-M$fZEqtx-+o+as%g}y%M5#ca^8Fcg1AK$@b8duh4E;LqP4G?O#ntTp z#b^z;4x77gGPHr)gzd(bX|2@F@XeuL_xV5g|Kz;4z->dnj&mz~Yv}e%sN3M%LjP^j zEI3R0jWIYTd1wc>3;WqUE$Vjo_ORP`c5l)h@EzeTA2COv+QaRo&Ub)2_`a*U6TUNa zzb{rD;f|qO$5+{Kwl7b07kpRfzSXSmhVPbs;63m?q5HP8x|iqlUjK~5;GBDXpEDOO zxHoj)LMen3;!nax;?;c|dtd1GJH_Cf`~3aNg^l>t{qX&vn*&#!;7+066V(~+9L{y$ zaeaU>)B~a0ComUAqffG?KMywIS6$#PQqB*;4~FhL)#@SmAxZOL_+jZwKLS4zy6<4el2HHO+pv;ZgX}@P}f{-FX(e`+8Cgo9$u;~@LZ=tKlXe%BI-FQC@PJb+P-wDZpv&0{RJBhzDoFo2RI4*t-PZ0k^ zxIp}c@Pfy}CuXoed?CD8VwS)qkA?0#B&DzszsiAg!kgc-ZA&g~T5jmRy^soDoa>*v z@^FP*Uso%_m*x6;RS8D!n+cU+VP4ioY6MUDBxm*USyw9+<0OBQff6 z_;DG7JOMu;_wh;i$#9c<-h0Enpq}}KX_YK|mxYRS` z`I+#I8RhD#$}pPyd6@<(4X*M`xN?4(=Bg@;YG;h;v3yHV6>jhLJ0)2jH%9Y&RIWm`7pcj_nS=CNZzW$oa>@XmiVQP1QJflEl18nIN0K#v0_x zb29v~#4LvYC+U0wBbWbAVdT>P4E|C4+hFAKwjC}Ke=&^yv-fvDj9knC_@Klbf)9)T z2z*xj=U^k{pq`~(J?qc1aMp97n{Whi(sKA#D0f+ckhb%mDgne1owp zYzBm9LcYDA2EqfSO@0A>A$%jxenaC$_(f?y2f>3RW-vTBtZ%=2sq%P6^1}aYKcNO( zGcUY)CViW$;6{02l?RzaZk$Km&I@mxS+1eRnwELtvkBu)H|B+R zUMSN_-9$XHF&b;o(3$0$sMc^-NwXV_W@qy)Q!nIyg=d?!susvE$_qV$;U zjBcJ)j{g}7FBbn2c$uWL9A1?d*1S-rg<72#CeYa~snwHMgIxK10VgCT39roy>%GT! zQNDzWB&HZf-DZ`muJ*$R^1`piv!-(pM$Uf-KAaa0m_;2v0w0xQkHIB*;X5jo|J@1y zE&dZQnryG-BxU|j9`Ekd>KbcKNz7^ZKc8oH20knI;v9Tl?$-s_NW2Ma8YA8HZ=6{C4!=#;m2_7!}*b(rE@PW;#^zlZ*Bc%^B3LYiz+Qg#=ZW`UrPpTK9lj| z=kVupjmzL=q1!jEmcz@#9`3goE4cO*vIYcqT;b1^4R=}*y6?JohP$o^#~fzQKsPvN zMc92izXiyJ`>Y5@*u8Ci;Q=dr`UBxXD?;~;)4}l26+REc;1Mf)of!$oSNJt14Nq7R zx;^$2;pr>bB6Ry$mcXB_2s_#TS@Su(48Q$-`f@lS=_KK!D?;}jtz+=<6`}j?>+kR%;{Ovy zM?PR3wgg7Kr>mN(6h196|G~)R=M0S8Z|=^*$obE~=Oz9EjNCp?10#1{wURPi>DwO- zo0Wc@MXiEYh5oyXtKrq5`z?d|0{$Z0O`p9Gd}Wt@Z0ZF}UN}aHIX-N!f6xwfJPYyG&dFFasvc;0@qcOX1;ZTQN!^mT{9@wMTo>EuDfW^MSFT~|_H!e55|H%(u` zUxf`HEL%sZui>x#*hGE9bM%dW9~Hyq8+k^)CC}f6Zl6*Hob|0AC&u8o_%&?Auhzlq zd_PdFXD(>HPqQcd`1;WO7U>B%E`AN0^%B2<^f&l-N(|1~;M=`i*oa?!2Y)B;wT$CcSd+~!Wt7>rVAHt{Yx?3H%?hoP8zgY9F2iF&W0~jUjcM%)H z*NDFn+*s0S0wb4BQ@HsLq5FHUM9$#&TxBLFH+5zv7d6k`%;ZA?= zVsOWu;YPc+CmW87U&F}F83u4-r@yC3_~1@Io;?H~-s#(-Bk<9k{#|wq{#9argOBg@ zW7yx}KX!&Yw=<{xCtR}AkE2WBeL>W8aO;Lt`WrvPKZowOCu$G8N8aOm;k}{X2fi;f@9p#D zvj9%)^KDuZHsV*mz`yu@f+~WGqz_h1e6g>qNw}!kr&A0Y@vHst0pD(`gQ4kpFm(HY zdmRkpXvwT{wKUcsw`ce<*c|dP>M-~2uy5OAusJMa|0D2k(q0{hPl*2{&&bJe>QUPN zTsVF*?0b~`7#cR>SO38O$n*6t{IB#yPr;|8|9KidEpu`I!T*K+_k(B1&zbOh`@dIW zaLyS&FOdt!&-mv~!v$x2J6s4aJ`=j%D=mQ&XZ*ZG65f2q&!udEcby5{Z`^jnd(QZK zv==TCe=&UUjGuQp1e-JR?mi2jm3H_XX`b`-e+yi6&exw}xa6E~GfQD3G3q>gK6Jk= zQWxM0Qcn!+x$*5}dAPFibuSH0H@>Vg;4Blm|LG8eJDRW_-;Y(SG-zRp4yUMZM z;2cRa7w%(xp8LWBjOz=jf$&fhE{*uE>@YYk>F}So%mm}#3lrh#a_kJa!1#VeA-ur& zIm%|B3GYK2x`z>s;H)U0{$&Q0k;Snlwzw;Ui$5rIs`x=f^k$wMqM>9NSot!2QbqvR)>vdZ@5kP1iHzN}t` zM~i<9JT^OW`^v__8zp8Fyjfzlz+1C@9)5(kWk*Nsw+^<$yRv ztnVCxk4nrjxFkDr-&-h!Pe}SFVI#+?yC{b)KL5H4<tp7@8rLwiN8 zjT#2$%dv47xnnh4ATfpTD)Fy|6TKq0wv~jDi(d;PmxnKVMR8>3U^UjP6aRX6v&3(K zizIKw@Ck`I37-=GY1l}-dJKLna(hTr4xAJDeJQzcZsdOp@HqT<T?rk;eK zjQnqodQ&HR`#O^f7xeaZvJjrvJLYwHXrAV`JYT~`(o|2uPepEDy?PpcI`V5heIir2PvqzJ;q*RH%h~Mx z%Yd`QAA@uHL~b5F7alGCF)(^+HhcVDgVAKmufr3>KM^jF_(C|*Cvs~CN!W;A^@aOJ z>3qjtsb}D4qi;(ljj<~xSxO4%EJ}<`SPp? zSMC=*v54=qr@>YG`TAT9t}gL4;5#I~J>0RMe>St>PU7zjKPcyV2=3Z1YWM-a!R!Y2 zl$c&H`k^WQ$KcK4-vV!wG`GV?#eWPw-p{uozr#lS>UsG2$geH-hx*B%6NGYJXq>p9?wypztEpBEt|NVW*bVM3{vL47$jI%T%Z1}3BfnM)8;Mb);8D@OHuih|`Eb6EQE@o# z+eW2fE%zm${shr4r)b-2!0ACWq=5HP2HYr!UcDY}3^xg)l`-ZPn!?Q_zB!x~M6Z8N zObqTs%p%h140o0IZg5TzeKL-iT=?-Ia%;O!z)uEI_80hj!^ri+pMsG~=V`c)C4^kC0CxWP-O(zMj4WdhK=UiXH>*Uz=un8i+ z1|7m-Sg$i z$bF+;jfcle8$N-1H^JAp7@RY~w@bOO5x<%UPmKKdWfD9|>e8FEQEx_{Ea1BY<>B-< zBllbK3^?&-a7~H73Pvu?t6}8gYr(ZAN3YrR>%iz)%js}^@i%~xi*E=c7jq4aT$+tw z%=IvG{#Gz@dAI@YD92{Q z$mQWK7`Z&$4R?}bJHuV%*azWDfn4Q=Q;R!NvA(N zSdPtuk&7P!50(53gOT&U1iviDz5*kchgV_b%3(A-M$Yvbj9eXf9Ud$Gaq!m?{|)@D zq`3}WFX!3-BX{g~@DB0sgnyA^i(uqpiecpPupdS)&j;XxlKvqWxjY|+f0JX6!^qv2 z-{BJRm%_;1m%m`-&hG}w|}5Ke2Mrk zg^}yiR)CR` zzE%9U!N~cu;7;Q23_mFThv4|M$j!lOIFNINa3nD=!xO|m5iXb(t)0!9T_OC1_}9S5 zohtz&m**sGrunv7O^2sPZcmPy0nd=W=uFCUX5{v~m4_?OjQn0WxcW@rC#eCa&-8ul z4EP#}X#^uTHfanunHjmYgQjpZiD?camwpQvx%97vTg{BzoYf6*Yw@>%Z<55vgi=MfmW z{#aKSx$Ei%BljDYM`7gVkh{ak{V%p2Fmm7L=?Nn@_uC83k$mRDPe__i!pNPsH{3_^ z+!uaM((eZkkn{(_gCxzt@K8C|F!+?De;WR8rXQ1@fswoRvoLaHat<~#Be$JO z_^9}g!6o7^g-?k8Bz$U)AETXy&x-#XZ01C5maz_^=E8HM!*=YW=21WA`RmPq%{=M1 z&xhZO+!~Nt056FA{{dMDFO+L}AAUc2^#}Ur>I3+L$j|dHf)`0Y`9t_a@qYw=6#4yc zAHyF<6Sv#7+QmF~i~W61!e+6Q=aR^%C6W6ER0@3k5?{8h;8EhwhmkAuIE-AphLM}| z3E2luD zJMV57x$(|VFmnE%;UY=D7~U`G9DonXwH$)~koZ60za{1bj9fY=;eVF+`us19-1zGh zjNEg58a}fma{mkRER0+`a1KW9y3WH!@}ri*OC!Ht_CNT4zHX~e;7_C;ehPmo&)sM6 zXOZ8Z_BnO?bN{Smz%4)b$j&J>#%3Y=UAP!FA^s%RJmmfA;m@Nu zvSV9~HOP(i9)aWDuQdFF#BYYT`1I9Qc$>s;hf5@;6gJ{l%iv`)W?T+0kNiI574V8E zvxoiW+e+HBm62P|8VCD$|3uo1sn1+S8HR>P~Mo%sU(LdFGa;5Cu|R!IU*M1wZl zZ>l8Wq>OFX!fSn-ufBx8lySjV@K@0a`@a#@*UV{rEpr<1#b5ijt2|u!>&SguH4WY@ z{w?sXul-!^Zuo@wPr_%v_V@Q3Y`%`%|AbZFz~4w)`YrFZb&>m)QEVOWg>^nZxv&wx zS`V-Hb8Bh?<-Ea_MtEa%Q@s@0$xZMkX%D}L zznAv;2lxj+j#itw@0)%7)Ueqc_1}`hUg9nA7T*U`Tj8xzSAT?ml)P<&w?zp%pRcyV z+kHOOj>ufG!}mF_gfn*der8>`-45T+ydA!GhwmTW2Y1~O&8yEo>TdA!JAD7MKOF6d z2G-+yUoXQmCCypze2IS--Xdvkh5yL>W8sAyFgz9sTAW%9G{Z)iC2vws&PVIzLECo-vfBDW@94!&fM@5@~ZSJ)G|{oWPf z$`X?Xr|RUkE28J_#G~tG)2v$bY|aAN6ye)KB>0eUbYnaCx}GK0lXL5w5(? z*V{C>s>D}=tM7}dzQtbF8t~Qo{Cr(4xXwO5=a~*8H@}(z*Wc&o;u^q>B+bTfvwgnK zH-}s7^K+!v!Y$?4On89A4}=Hpi`=)c2E#-5McofDZ#E1z5~F^Bf01Xr2ri2J{`q3K zSnAb&c)vV52e>Z>WLyBRIpEhU5-?i#IqRNDc-?`>?HOJVZ$9Arz+2#52mG_M8!kE! zx&8CS@KH(g7+i9|w-u%Ei37gCx3@f;IOLzBB)smB zPiH;6S^Qhzt%rPHbFgOT%J0VB62btPP@#NWHxFmf?<;5+2l z_Aqj5QXSyO<=7|SEfTX8M()@jVIzK33YW^d%wO9>Oc6u$nWhx1D}!p@LBk5G<}Y356{8pe4C)o(+@oF$7m@q zYVZL2Y0JRKjor$^$oW%Y!dU&kFAVsOd7U2%Bh`_Sp%Dno_woZW(Kwq z8h)Z|-Nx9K=-MtRbu+Q8kxi!!HVfTRJEc|(+Y#CS37d`WgnqA`(y%kOEBfe6YO8M8 z95kd$N{d|VP-OEk3>!!GSdATxY?@=R6OcXcMC^1lnY_)wu0u9{J+=hd_)@GvE4xr8 z7jeC4L7kMk<*}8KyIyQ{^wnGCn%2OkqbgleYGq&>p}%USv}%lPiGDp%wqYi=H3}Xs zQ>zU&3w0ZsQagt2h#J&RNzcZ1LiSvpv3-zDvoCgn_$OkQA)EekYy!v z&L7|Be4g{1ot>SXot>GT-No)lf6T1W^Z@oCI%`&q)`zgiQP!*)%}-!03ioAd!pJ?_ ztp%fSU*;^hw)*Q(R%p!K)tcAB)3}^Dqiqbgpb$j4eT7`lZ-)>R*qoSy$4mh0R1^nh~r;VZ6zJ&lA5nA4Xw*Og*^1 zmQ@27xiV}>y=^QpacmI^(<#Q5pj@tzQmjSczRU%16Wv!+xS6JZ5sX|+CTX^j^y65I zT;AHkS7^+Ya68>L3%*LP@vGtMPRrcX_3(}AzX=|xc^(Bnq3JvcKXrQ2!lr4h&1e{H z=u0__ArC0be;jL(iy2F~JuTZtusJC7N3pq~h|j~?BHdRpF(_;YqSzQJX_j_HJhUjR zpQTuf!t-e6z$K?AwG7Lu6t2``uY!@Q&p*K@HRcp-)o;$gXJia$EaO}&eV7zH*-k2b zhi}@v2p3rCZxq5jFmUTGj7ivCEfQ`m#O@XeTiGJv)+blNwnakv5-k(9sDs25cSzWh z4hi>+z7)>vDE>%C;yWhXGkuc{=ZN1#;X4xUKk}wG=?_o1=k-;?@efb9|D%}^37h+v z`12l1*w|x|P8_a$T;m^4*yE2UzNy1EY)`=U@r10I90?alj46Z*6S9`$75LSJdv<1~ zBy9C53HMAk9j-AY;l8K(AGoIaYr%D=BwYV318y`W;nue|hBGxL0=LtcEI3E~Q8+dw z;pU*?u$?01W2PqT(y0kIpSBFPQxk6P$h-!>mXLSxroqz^Z@F*uO^2r^Gni#OptY>(JhW-%Q9Dc_utFkv1V5m(7A_C0rdav*FnZ z_nxLHf{S!t#c**#{sB4%o|BO8#Lk81Cgh#3dGNf1d|!P&JYUQCE%+ThmPPQQgj=&= z-i6=Q{Jh8ceJ|m@wVnsZ-b=XWUvb!~-@FgMpOE)(KY%~b{Vs+VYdu^7FG)y${zLdf ztpgvyA0^zs#>~g?#|ilk=O^$d37K2_6#g_(e?=PWPCtV`)0n03(uC{(m}T%XEvx15 zaxL=}@QQ?+moO{gm73*D%h&uY=k!@ zWS*f6u1L6VA)2l5x9a~6{w{I-(eV4a-^1J0zXRT>@jt-3)V~|vosj3GKf*t%e-FGz z>qaG9sdb|YuG0GX6a15I`!oD=Lf$3c3-3+1xizy7-Y4a3et~~U$ei%6@UIE^-@$%( zzm~}X_&~z_N5K3K{$E1AH~4?>|0T|vTaE9*{s#Z1*TwJf?+G^+Fn>^Pe8m@nM2(}t;jwRY>97}}v^bXj36y7USp%3-GGp%(6Hs?HviDF|YjEQ3# zoiF~z*qnOD5@CNMirtUGm;=}a^^YaeGSjYDi0$4$;(K6wqcElqb|eb79fdup{zKT~ zDBSi0Hou{4o5I>Fk0rwUxM|0JQFzadVryned@XEU6vkv=Gg04JH7<@|+o7;;oQ2(v z!k8Uci(KF4Dvk?<{>IoC3h(uCY?1nlu_Y+XTPd~@g?XsL?nmLi4q&bN&DG=qh3QAI zIVjvVijARg+cENngs`y?rB`)ei54%q!Dj5&av zex0N_1Ka(2NwWv`IC5o+UC>_2WFgif*N5pqEDB@tumvdGS0T0ph3S`KEpqw1f$~RT zzq%H7Daxjtmtn2?O-GIeg?-};Y$ghiH-a6B!hMaxjzeQ-)o3vu8&iKAyC7TkwGeBO z>yO=tAGvbFTIBL`)3HQr6z20%Yz(>ch%G_kzDlv{)W05UQCK(3&C~%DZrd2U0EPQn zh_xuJwW?_4yFwcFk1t=`T zLabH4=|n7=n3;BQ1-9KS5|f2phr(^wV|#ZNe;@3~E)qWq8$&Li*a8&B7lu9*p6d#1 zB?`-@3VRTR`#OZR$km6g)LRthEsC9vLjMeGB|6e1EvpKf(~Wb-*g1;rj>2;8fjy4G z^iN5W=CJN)@*mk{T zUs>4gC@k9@Sc_b_^@00IIhg*G+XGS`W?*ful(Wf$W14=P>w2PGBPs0SNyieCNOKAH zAR2#fwTlm7?R3e%nL!>n>XM$<@}nN z93u+b|2Wo`YfJ^a7p6?iKKK_s#$PG7LlTpL%|u~+i(nU^upAa*52Em#9>Qk+r7_q7 z6wcKYVoOlC-%@Nj3eQCawo?67Sc}~J$zk@3-1)+`L*cer*c=odV>Gnt&%=&HVctez zGmjiggyX&lwjB!VY8EyJg=G@O#?&9jmZPw4S6~+(Bd?4Tmtb@MmTmK}F%*_h99x9K zm}2a~&>z+}?6~8{5;JDiXf+-iL!m#8T^usoF2R442aVLH*!hr;$b4_o()#AIMI zQ5X}!=Aba2QEYEClJ>0+Hip9XA&xCU;W;YBR-*8DtFQ(3SYq1U)h;f?E=K)MrZ-uF zEkR-WrPy`o$&=}g)?=BgbldWOF8ZH;%UG!tuKYXE(yaa!$F`vQTXw0|p_v+scBbSFAuvNb~$uXXkaX}SqPbO{+-x)Ng;8WVSKMkLj zafdkrpV4EqjH9h=n-15u3HOdh9k`xNxcP+oa3h;=?`SlJJFCA7+}$SJy8}Job?RRa zZ_;$i;Bxg>z~9)!+2MaczJ+;#T<0s2ywj1C@m(66mXtM?)!=GLSyx;guAY={3Z*A) zPP+J`uua!(Yrr*uNd~aE9jLJor4_*ZJ`In&*0OJ&mak*Vl9!zzsB=hHyj8b0fG>vgIw| z`mV-shpqa}eeiu+ zRs-Mx$>MwXzMmNg57hMUhwo3m@IZKeAAldwJUj?LsCmwXbCYhpx5js zdARMv@WXl@2f>3h{lV~HP3IB#5k21j!v9V78pSt2%n*2p`iH_plk)AmVel|b=TZ34 z+%%3p&K2p7nIS8MaDCh1U*iKBo5yqHFa6->% z5-!qXEQaSM3(l)fnarbZ%u7B{m$l^)IA>n+(RREW7==sbNlYnRIWJkeU-f3D3byJu z^WphPHy3T*g5TEk7r+a&UM(ce72=PspiEZCH5G^Lillt6dnLRwxocJp)@-bTS81E@ zIlNBOTu(adlO6u7#=EF+Y<)8FC-Tr1zzxX>e^zU0 z?uT!?BIY(lDJk zoWD`>mVzg%|3w(NGIR%6A^_xve z+hkL6Y*?O6;ml2Pj1jo~rsQX#zXP1TNy_I&I7j_axZfr@cm3h}blU;&@J-1Z!ZIHL zKd%0f@T5&r4hi^0^}hroS3WPpQ{mFIh{V7XcAMUFbT(?Zp$$%S_CBF~L zp&{Hz{f*(wGC9Twd~KPO+jVgJGC7tGaE|(;aL+P1*SEvHHJv_izp`XBJl_6ruKM%f zm~I<~OVnQqe^VxP{#&?GW2)d|Wyzgkng0zRFH4RMkNpIEvMgC6ET2=bElWnieVNU) zy_+S^>2Tf6lIIKIqn$B}Da_z|k7`b$whhrKO zhbO5&0q1X)Ya|6D*Eafa!Dcy+h42*hPu-lXi^6s_1DlD$IvK&**_!_%7`gox!*ev9 zxiE6+&x4UWmiaJp{G;!tyr@Hz#B7$g#w+MJO!KVr&Tt+v-wm zB?{ZjDy&8B`dtJgx370$u52IT>h89A8(fH^b;7lZ9j#P%jakC(#>*> zFN2ZuFNcwfUjeTq&tctO1+UhaHSi{lDTB9YKFeX`@=yV9*F5ZicXGU8Is5=4m;Nqz zk8WEDBe!i8ykF1D0r(HC8-K#cZF>+tuJI?}f7Jgkd{U3=6y=G+G^?-{xnn#HBbUw@ z*pi3v7|oWX?Y>3Iwg=pMi`4Tza6k3;hjX_iYtOC`F?sM1^$&$dZb`l#wiTn`XVw24 z9NQvwAPyI8NuDgBZWO~-(>LWw+oN3edn=q_g6?h55R{jB>f}s z=?Xb_XJF*6Qwt+^zRXtolUwD!RtL`9D*g!Ea;xOI6?_XE-mg2uw`)u~@URW+ z4Aa{y3aezX$tUrQZ_3leZ@S4(r~FaN$;|&#%D6 zTazZt&m8zI&F9+S%I+%@t)_zykCKjA~fg!}yq zKD<@R`3QVekLwtGe5;i03HanzIgh7ctJ|7w@K4%@{2Bf^d0{ucH)!^9A3UJ_(gW1D z1JX}^4vrm={&^gpd_el%FTx8BBpX~(Jy|?)`!| zY>oHv7QT;U(%>|2{C4JC(l*W;dD>dC)a>$c=G)EKk$D%`PW8GxTYuH)fod?4^`Edk%agIj+3?w(d+*HD_H2G_&#l==!Ha8qZq989yjJ~R!|Q5$ z0~>L@uZPPurUFK8+pX~S+MZh@u>(G${-f}5jXwcf^_x1BNgdC9vosFdI-b01e-50X z`8*Fk&#Tx}?J{G|htK!qJEHa2ww{(JoL|q|7=EWK1sBxw+&9Du;Ue`H!}IES?*DZ2 z;RW@itQNwH>q#A00+-bD+&9xo;dS*qx4vaPTwc#}|2MCIE9-ggUH&TA*7FX(9?m`1 zhwFP)?q9bJ;0E4*+`m~H!VNunM&Af-_$#)<4gMkz2Pj4@RyI%!iSy8*jnLy(9KE zjNJN`1u*)d7US!M@FGqBT^PCjz6T?h|My|!>gNYAa{F2gBbT2gFmnD6VdV1g5sW6D zVch*Oyg~Q15#FRRWpKG}TLFKgdHWXL4u{`w-vRH^{O^V0n5J-3&vWmZ zHG`XZ@}267;EO!@)_NwK=?&RQU(Q6}h$m~nn#0ZY+HV23(6*u_+|qO3kua^`R^AdE&oFY|2m%e<32s@-VP;o6sZgLbgyybheB z{wVzBW!@`0s$FGf!kg4z25;B+9k9L3dwOTJj?9sAOiw9Dj2yo>L(bv zwP!!W=&~owWo9po+`Q917#%;7c7^!`My`GS6-KVU?T3*|=Ky?A{fFScF88t*@lE){ zFnV+c|5rK!Ta7VoxEHkX+pWS*c0GK( zxAoO@>PCCGz2>KbXWMs>wxR>vv4gZB*>H~fqj2XAp8GaJ7r1K&&#j^A2Is0j4~}Vk z98PLF9&FWbZXo|RNZzVodxIz6h3*J<^yJ&=*>JYBpXNsRCatSC!#SRN-_}IosNRD* zQTIAY8<`=_%op*)1YT0%p58WiswcvW)JhvXQKHR9A#59Imc9S-?72I0= zm%`U{ll#=QaC`N4fID}SdesH)+0AqR1-l*Y-OY3VK*l%VNB!Y} z-Q@mqKb+gmbMF`D!GpSaZa#1@Y;|9zJKWvtJURTvY!Aw$hn_pw-m1rV8+@CTzv&70 zlyuDP@a>+w>)MMxQZLV~kIjHHd&#yD*!I$G?||>nvh5A`*7W+8(D@V#1R`qAg<=M5Rn`AUN``+4tANW08L;GBM* zdj=YXW9pB?CF(DQt@=%WxWBfm_rdpRo(Hh)0J*=%;rs!f`yOcuE*KznyAXb5fVX=u zeUDdR;9=^26n<3e-f;Sv!#%eSb}Nir9=5@DxaMI5JVLj9 z41UbpyCLkGJq|yv>5PO&>bV{TkMd-F@)PhA+73JkKdE)~DflT*`q-o4(b^9m1CQ}! zeezi9-dMRVB5>|l>Br{5v9X?e?==ov^_y{?Z7@#q-w?iHoYbW&;j7etHGIAL+r!8m zZwL7KadNydxKd-P;1e424{X(M#>3;aK0ggVt;hI`XU{w%ehZ`O{rFyuc@};3cv z+LIT&nlCaJkpVY-!TZ0-JWFi`w^M%>yjT7EV5@#J5uT{$eG)v$lW!p=DBFaTc|*8S z!h0)Rm);m|qW-2Za^tCHFmmVUA{f2#676IrjGR9LH&4j1w}4wFq#xS~Zk>?&b1B?j z<2%4P2|30n+*$L`1x9ZC(iQHm@jc*P2`Q^PV5@$Ugp*p|JlNBAFCWgAayBXMeZCxf zu}@p!dv1+%DQwkm0yvPi#Y~1Ldwbmb&M(3*da`c(CHN)j|CpEIm-QSKzy;cOErbho z{Pha_s`{tEQ}kR+g{OM&E(`CWuTc)KNga#Axvxn(p9fp@n`!Vgtv}P@>0bBwVY@Vg zIxs`(Sk??L=k6J9Od7?;P&nRet4x7CCfeDqsQyD(o77|U;C#(P z3P$c&eE22xzYHUnhXVG6!g46ZTI9;1u*f?(Rs5&0_BHiSgON*fIy_6$nGF|d`o%DE zF>_$#%6V>)R}+Q%t%a?NULR@NXJFf*upF|mB`Az3#a5!xqs)y}*n=pHKZLc&<$oTG zLcf_0qcGmQ1;4FjvVina7@vi;$kmgDMP3d%zo^EQQEV=X7S*^R4{OzL-hq+Z*CH6X z^ZqW3TsrT;=;HKaEYc_3S0G?Vz}6o^)qweIi9|Q1JBjA zVjetC+Ep_jp6|&wJm2D8@Rs*dKI=&`;GDOmO^d$Gwfwf+PvfvvzgYk;khab&q^({k zZE^%|w@~_ES#Zum=}$)C+=X(F&V%hj8T*)b;CHldu!wXPdEpvJ6M@?;^4$8*EI4P8 z7p|o=QFzEA&#hk_3J=$q5iknZNt(ytk?J1>kJB{A!!h;8;rvBjxF*n~;DSY7xVF#~ z!YEufXkJ<5#a>{GaeqjX4G%*JC^Z|EuYogpn)5Q}7whn}yNJyZO$) zd6#k4yK>L!1KW2!x315;$GLt_?z2%i_dU7q=fPI}=6(2my+?cif1vl!#qeS;Kgz#! z%@TNtC;yoHkb3o@ccd@n8G-GGdhh-S{z%4d=41F{FPa~&N&5u;M8dtkJ)A^W-)zEATu03N6@_rnjY@y=^N z%!6>Q#^k{dt?@pukN;tK&>F8rn9g8$h;BO+9lze_z}Ni{9E!qz+rwuHZmcbUZ(jJ{kYaeT#w>wLwo0F*6fV~^E8t3v zseYEA5{M#*s9;`fOp6ovf0Uaf2Yioq{EpzrG7@>qMcIC#qffi zGIz8PUabBl@W(r)ZhQhS-RbqeBm6HCymF^JGhGFjXiONBBp*_V>`n?(y7v(D%a+?GgXO@DTM6g@^5t@_!UY?wRax z7`Zv95%6Psq|6_Ok$bi~5=L&mbQFwS{1Y&8`+X8d?wRjXFml_DhR5uYb2kK?mKnQ!^l0?j={*ynaAOz9=iwU>wZ(Pzen!x z0sPV)=~uiABlldp04~&Hc?Cu;|F6PR)ISwQ?peTV@P73lfd8lI{2y%9Zz{=KrS!?; za6zTipF+4q{iSfF`m128ep3ZkX`TED{>l4lemL*(Qo1}{*8S8CikgQ*s973_buG7QP4n*K<4okUR3nTZvvg_dX>hA#Ga9GYo zM>t3QQMj|F(*+)PSdM)>T%_^EaEZp0!j-yh6>JY{IUj+K=(#w`{q(5ps}5ZEsOP>_ zn*nDYmHS!*Zms@H;SoorZF~$KqyDk5Rlhj~AJh5gzu~{N4jhM%OT9HGIIa`2-zc1W zLdS`4O#N}V=!EC~nNkc}^_zd-f4qCAh5uyv7yehu(42%%Nt)&~d|KP6Gw>Nbc1!x! zbN_md!$sC}|HmnY7h7GE057%PC;RC$FM~_0=e{#p3a_@_Lo@KNfy=Gu{;5|1e@B}9 zL(qH=BNwwBMy?&$0Uy`5$tTYrJVe-3#^O=vaFBHbdv38`%e`PG`kAj~v`7ee4s2vR#YC5mL(Qj+izjy;=hBDE6?v?@`jF&Noy0wTI9~}4%nJ}`Bp|6Tr*#u*VKY* z=ev4n>g3y+b@E-GycS%yPX3C+X_uG`7`buid2quzQihG-cIwZ9t@_P5@HzRiKIdGx zZoXTiVlv>2e0lzO9(Pw!ZaBh7` zCl9vjHx2S_W&_z*1TJWh@7A;w!dCsJA>1&3?x%de!Zaejk?c1DH*b_bEUfb_;7c3H zb#WPdRU;|qtKqJVp3> zglAtU@kKClb{1+L-jlk zqdbSnIf}rsVY06{JWu`e;gVtbZroQ2|D`d9VdTC;djz(_^4+r-^C;by{ZGPAtN$7JS-lpXgP+TH{V_8k z-@Y(G{1ah2LGosvr|!k_-CD1_80R-8$2cC2#q!;^v*IwXy1E#XguQ%Of09r6R%2oSN{sm-D>eiSL0tT z*M(UFugRD7QETC~`ELD~`5NA(>Fg%YyCt0noU>c<6NT*wP5&SG-+Z_3!ko;vZ=MnV z%rp4UsNYgPR{U|e$jY%7!zKL9EL_)D3RkMX3O;D1?j3?HPd40|K$BvvY0CB0Ghk~{ zBkm6WBb)|TOSy5Gsh+Z#)l+VrNhIWk;*T^;<)bj4DQp3%&ls~1TZI0)!?Y~MTJ@Xe zFmmJ27I2PiYohQ|4O8x4nWN!x4O2HAV{Udl{A|Ni&vW<>`*U!tVXA2{?+?adkOu4o<0T(q)x%HgIux+Hr(im=%a${=K6mFW5e|R+`Kh09^IcyXzX(lnH zaAh;uwhFfDHy6PdrR4isnQWVxa?dWKu+7x;Ba~J1)DvDf*V>%?G*5MWF70wt3@=sx zGPp$jrLgTF#td>{Q-yI0DDAQ+t}EXPP){ z)o*UZf1_+0hwY82WzVJYztNlU-z52o!<9ElKC57>eseQ?b84{LR}TBiN$o8n{Rmu? zBk{#>d5)x00UuQVA=qlXiNce${9lA$Ou4?Fc?o_={V&5Wr(C;g3dmbQYD-nPZVjGT zkovTJwad*U7`ZvC1nj9lA4cxEe+r(g{ukkbf|R@G7Q!V3DYuTa6#l9p<({XnhEe8% zYR%0W_-pmAgON*fJ-kW%WpH^x%FV@9z?GVQ6>JMqvL3jQYpO8i`UV*=a&7*3aJ|Bm z>$}#68{iMG!G%r?e%bb^>=`8&|~QcXRH54_@+X+rf!CF3R7+^SrkU@`(2%2 zkcZOr?kHc2;Z(f04Ny)tHtDKitQ*Nzh2HfsdNhb@=c{SzMwngDi>c0h! zy(-so9DYH!od{cvF;losr$|g5JYaFkUkuNklInPFI`4AA^VR7UHzyv$B@eT(u^jlT%2<6BbYhxoYdhTxKEk6NgAE1#-VL3*m*S^CyREUEbkX-buam2JJu`KKM@R#wwlz9)j&Vsg3R*;)~!#Qvc1n z@Vi>h@4@e-WKH<{@cXHYriJD%`=#olx#htz-8K#*7xMyKqT80j>ok5nT&eylc<-{*N6Yy~^FG)v zlWW8*CvVGB&wjx=!w7uM@>JtF)Z1&}8un-QZi7r)G!ox4}J^r)JJc zzs%eY-=Y5AFv^?5|7H5X$feU49;E3HhDWM@6dcoS<8XoQs}P=|=}d)}YWy;|RQ+GV z$mQoNc%9~FJ^X{l?^>QJK`+m#(Xte4(T8(tTx)j2$mQ)v82vJb@4)YYkxR33c`AnL z&#loij^$af#8<&q^J!MVEA;wZ39ppqkz{#;|efJ-!{6t2{Cs^Ehfe+af3Z??c&G@s>gx$M_ez!iGDTj6c${|5eE{oCOm z)xQVcqy9>`N{{6y_@|V7U-W1A=ahT4W%j~*Q!<{~m$GJ`^efU}?`->3^CcOS`sk$dOjJQ%tD*!eJW?RGsFx$i;Mhmq^c zHGq+OrqB>Z?%%kLVC4R9(ilc=uI2(5xxU1OFmipHCNOgSmZmUreU)Y~a`6|z$c>3I zVdUDt2%NJ|`mRwpcc0uh^WfM%Dcd+)v@g|lcKSu87+$Q!*bzLfj-M=5Og$#}&40{@bd z_j-PXf7Sclet5t1>&yX;>p<$ZpZULG1h)T6-S${oePjL){y*LJH~2TbNBj=|u667W zw*5o=5xCtSav#is&-@|VS{S)HVE&|D{VCg4gRB23ec*K1s^1(W&4Y69h`{!s?)MP< zmtLob;lpzMnj@6+k(66sT?{Wcl5)?v7Q$Bj<|yauXv&R?qp&@ia_<3|WAHIe|8Mwj zy&oNikLz`D0zRSl*?-`F^}cx$J}LFqoPtlO|1@>rv>b07wrA9DVVnAA6YtL&HTY->u4sRh^arQJJ=ZR_Z^b=bC!@A_|fuvNb~2R=vR z&xOy`bn3!&eRmz13^>D=_ZrTF&-3M*y63~^`|dty>XDy%z8lNL;i7u7uVT1T{Z+74 zzo`$`mt!#v;0C_ypBMNx?E>Ge2d)O6b%F1$k+b2P3w-zf zX%x2VHy8T0-LA zT-ij@uYzq8$&YCYH`RSLgPZyC{?0}4MgC{A)97<%l7~#$HVWrvN`CU-BJ~%;C7Dv5 zrLa}MiNFzG-mz^CH}~bexfXB>-;EhfOSq+$TPyftE$2(%OEjOY;nu$Nr7wjqRsUu1 zWt#rw@a4X1w@n+kjqk>orY+po59Wo>F0X*E@ZCMmTnS(4%eR!tMCuhM~{uRS$ zi_BHbAKSzSfui*NiT z=MA#oD4ctP@A`pxuvNe52zT`59+&Og>e>GOkJ7I)>2S?#zi0UWsakODY~Rft)q&CY zk9bCT4vb!Sn>pumVf5r``eSurv_FgI8X0iCY~S5q>cfq)eRuzA47bbnJAB0R{Vezz z-Pg5nd)-$DxMQ~8X*AEsvSIXhz<1_vgmbd}oBNn6O%(2&?QaU#X>@_RX8YkBn&}32 z*K~ToJ+pmxZ@L{u&-Z41S}z!lxx+-v9WeUx8rF06&i3n~U2q1r5o({6)}k>s2ZiZJ zu@)^2*F5xr@6zMC8}6s+^oIv#`|rQcJjwlVZnl5XN4&q22M^M12g5^j+oACAZ2ysB z-X$LakK`D`cP>W3PmyMG)|ZZk$7TCoU!I+fho8;%ulbyF^c)hdgm2Vq z>L&OmU&hfl!#8VNltUfP@n=3zt$~TceRJggawiYE|I}UD!=K^3-ThxnIKTVg{Tg!sKBzH=V5@%91MZ>sxLe^{wf($} zcIGzU{dct%Y;W^rj=d+>bx+^TC3flQS4ZK!H63fa_w?O-LJ!z#jJX}YUFwYKMH%*z zwmJ^mUfPD=0r!@BqUi(o(R)x|xUb%u?u763-8+fqF8D5A`uTUm1N_d@X&=l$-y+wy zOoQz}P3M02eqZKN9)KV4-8;qRLHI%6JwG+MaIW5i^58tZPdx-bY%^w`@HgZ5Ewajd;v z^Uw=MF8&Vq0nN{YFuHFo|GUqHk;_9Kj9UD_w*eo52dn=P(jTgMz*^+e90ntIypIxt zeq3TMiDNCQ9-iyrFmf>?VC3r0V=!{{93yVx|3W9^%Iyfb0s@-PcVZeO#BN8x#lV=Z#^vj|4+{1y{~!u`fWo-66Z zu@<>R&B99JA`QCQCATm0W?`Cu(_$MQYAUANrnB7GF58OPeg>OTToJ$Cb7_`lje zAL850A-;R27J+ky`0iO}6z)C5cmHGR1LqErdr%%68zSv<9G;}xCg3+UW+q&s{!+Md zh>nlo<3r>=djht)FEbP#s`sN|@G$>LH>P-$ygllFyOM8TMBto9{S8a`r)m^FJzV@} zh7&*BKW|xe-h~_ikMO&{MgP`320!NCH#h7*JPtqZ%fDAf!Xu?`Y(~MOeD^HFJOMwU zeTgU8*OUH%KJ+=GaPE`-@1N1%&V#M`%~SAG+CLf1J!rJ=-UAv8j~wm0cZEj5G4;pc zqS3y4f2tT>Jlc2f94&#Dj`rQVKg-~f(SG><1yc%Fj`rPqTUD?n&1O6!He)E0F%lDj zV`F5$aoCQLcr%vq$XGdd8F0O^GM=grH&=fPxTX4A!5!6~4I?+Va3h?f{wUmgtndE! z)Cay-WBS4OjrHB!)Bt$kSQ!`J59f}R{!AV`QsYO#F-$~R#DY#N&s^Gn2eYcK!AG}}V55T{Tl|Ibx@NrH51Z*|NjN`b*$-bg+?{V6%fOE%5 z{`24=<7B@>;gK3Y3Lc~WvG6$ckB4KrZ5+15xPL#5hsXQZ{1T3lpN60IpPn0j^Y$6| z8DHMVe-@sgWAo?X=XD+?2FJAT6en+S->tRCgKb>ElI!Nb;g+KaLuHD=rz`Y)`Dv%rEgXTuAB7TGp`J|UQ+t@^{YO=?(Y|ZHwN7-_-VJCOlKeO|#%x8Z#T7?SHZ<>?aq&MgHBDyc2DT$#b!PefWQ< zIBbjMx-fHSPv%HHDTOQN$oxqad~lBM{yBaKwsW;E&4cIp@*nN_@O;hxTkuKj_hnzTVEew7;Ro;sQn$@w%4f0f=I7(^uEoAv_qZGWak1~_ z|M$RF{bmWg+?W5eub`f<@F(Q*3^xL|Ug6KqO>1i|g>PQr_YFA*Myp$=w=+@rE{(q% z?x!*R;c>d{c=$Q>Pk^6Se+9+P=6s@r18b@ycPb^+Uc#$e0ZtGEQ42T z%o?~-)2V{3`prssrQFlaDtMKD$2)uv+&8prQXPYT z34iIkxpeat{FN`?8CcDJSNrb!bye`e)&2{&F@JRkw(2));5B*=T??<(xxugDuk}2x zgV#x0Vb;UzHP0L14RSv+8{v&QH@FGjq;<6nF7qG%G5kKmW_YtdczXD)m@V)YZ6C_v za^J1pH5G7$zuT>i-wJ=LZRvOLcfPFI`ySq|^>7Eg!=Dy@1H|lvcWT@C1N?)=?}B&v zGyZ1Xh1pF#+%5N%IBa)ooBShVw;yGGpfQ~JqofmobAI&Qv!^JG+}wUAxbu(F=68XS zn*;9(BiA-|gORKA-C^YB*n7apJzu*OM(*2Ix53D*&FBdux8~$_7`Z-SFBrM=dk2hM zJKq~db;5s(_koeib6*&_=Vf=o$UTp{3r6mF#N9A*^QHH|$jw{c3nMp=)DK2(uB<5qV8>W{;omUBLAf7Eld2j1hC%?)ffq#)0^DF$TJ}cP||EBr;9sXVCp#FgW(7E(K;Xn0W zc@RFReeXl?G3|T&O+NpYVFk3`dhBYVz^TMRj~bA^KcwKuGjJj z_=GR-nEwO+Bgbq0h5ywyTHjb7*JaGydi-tm`%ww*HR$m_IZo z;601LeRFImJlq6xW-(Vh0)9&Uqv3HTaR15~4?k-H_a6Oo@KTLg2Cvj@SHV{OCXF=H z0@p7Z0msq;SNGy@QCi^U$BN-{jj4cbS|II4HMp9@o9b|N^{2z>fveA^23#W;wvaK7 z`49Y`K%P_7glh)UhSUmdPOZRQ%TYMDR^YDpJlLw=oCTky`#KvwJCJ92wc*-<{L`}z zTqk(*bHkY8oWPcx6S(J$rEujrvTYS?)o;#)&(-|Yh3f`opN9F&fHQ(RMLZKR=fUR( z^8B$LTrXI2HDf4KAFeNXHVxngfy{X}gc}CZ-Zp|8X`UOyjRQ9yZZ3c?2waQO)u+7wcMFLwl61ZzE1Fjbd z+*`0=AJro}o8~ zn+LKUzC~bLwg}vOY%BQE7J(agTm~cOzZ`C({@Z?rfwlBg38dC^QX%)D2+Ed}_n$8UP%~pY1 z<1rIHsqv>^+e)rqb1{5zAkQc-fiDRT%?a=Itpod?*1^~b%wyMtk(=wN1=mHpcvmq4 z+dyL)!i_cN0@$kGTnb;R>0bt47PxVfxg5S+>vkL3gf@YE9~dra6Sy&8DZEwv+u%y| zSHTC{1n!$Nhu|Y^0{0HcQTTY9V89zZBR&D2Y!kfvY4yhD6nt9KIRo1^fqO5>w51-l zm1`slBloik}@$j!#4-=tUL$K z(RMNlN3|X61b5Q-Ti{!Q#@*BDw{(U(2l8FJF4TuEfqWAHeyU60`eUQvk}gt*OJS=q zrYqN4*TAhUnE@~8DrL10e!pwro;`g4FX<}R&WG^F>i+~r?mT`9m#DuKMsEJ_OBlKP z)K~E8uF?*#fvxV>bc4I;HPs#N9$X(ji#I(2d!|RQ{9eYn7Dle$Xl{jX4ct0sa~ph{ z*0-K;&)}D(;rR4+&g1P;<{5DJ+vVQT1I|@{9&FWbdXfKL(*Bpi>v{!+AM)>^^>8^H zUN04JWiPqDs^F6ve+ss}^xC-tzC+5*^oD!uy{r%1C-`!4I`_)HaNj`IY1|3l8OS%c z?}G0NWIe{+@ZCYrYT;Uud*FMdoXx%Py?UxVBqE_ z^WfOPz|DEaVXJ;~KYYK`AM*hGfYdAVAlKuAL2^;GW+ojz_@G=zhu|X*2K`p@jOHkO z{K3HefA9o+^1)!&4#u0OVEbUOc6qoaDi_WT+&rPlgY)znd5C+&Lz3o9xagta*YMgb zhUYyLtXm1shZktfLipW>ZcFeX2Ten?aJFws5;a!N=kJe-?brpunv~ycQm(G2`K9)&CqkVUV;T&%?1n zu8lHrc#`fb0q5(sDR}arVB0&awRjOOP=6teTs!azj9lJcg^`P&0wd?23Qr#-WikVP zSJQb9Ua9+C1(&P80!FgtAKt3@-v%Rhzy1bBZk+fnynRq`%SzhS9WZkKo$#(f!7uxm zAJ`374hp`TTce4og7*%R`};oF>VC~&c(C@FAAuhU+!)jR7yfS`^AAI)&qD$?rxAg3 zhDg6C3fm!ieGMi3q0%4Q2mdlO7}b_G=T~_D(4gPhw5tbTsl zOs}a&;YYQfJRBab?e>VkrjL+5Y7MyNh``M+)q>9+5x6x@wP7^A2J49Gz*lNaI~ckC zZ5Djh2+8x+Fmhv%YhdKsfooxO*H_F3UI!z$PVagcx&5|>k!!a*z&C3ia$w}rjKau$ z!@LuWT>7`b$o1hn!@bqt2Yz6L+?yVRhig7Zz{qX;7>wNb<#8Ad-@^EMB#dTn;d&nh zBNzV!jQW-_Hh&UE?}Yy^cnY=}V;+Ma(|h9M@Z;Ja7zvM*bj&DtRN&rCHc!A$$au{> z2|pRgI=ZLer*wQV8Xm3f*ch(&F~Phz?Poe%bBwenwcti$o*I&M&qxAJ8OIwxceBX=RM$<`s45QBLw$H*A=MYv#$w2g)E6pfh* zPuDbOz;CL5CS0Ux7Q^$#NPl}iT&XctupOi2IhN~vtQ=Pbylbo+?{3(t-;9ID1@7G< zGaeqV<^MGMeMYvO`3(DgMz$@6S3VPTSV}vv3NBH9DZKg_Df2b(I^A|Xyy+P^-ZJ=z z`j5iLpOL=V3HYS?Pr>#XX@AVKFbezm<~jH|?O#oRW17!+U~h=aemla*%?W42Bh^0& zj>YA=h{G?$W!s7Hq_|v12^hKYZxTkY)=O_-JUCzdDR^=`aPw?0!Ub{Z7Zt*v#ibos z3NO=rEr(0gUkYzm{|%;I-&F3-r?|9(Wa~_A0>nomskvo=uVC4FE|HA06Xa{rq zo}%N3sqowCUqG4*#2R(Q~w_L8Hba=>ext52* z!^6MYurY3*qW3B>nUiw6QCs z|5FRDy+Yc?I&j?;(r?Lt>uG#_xX}t}9~#3=)ZY}&Tp{_7!1?M=!IM|W_5LD^TwmoS z7`eH@mto}kjRi1r^Ad&dloi3l@A4kRRCwMBIo|p3I!%8)yh+n6gUi)l0e`bX`la8( zyL8*#@Ij3^1Rq%;{jsC4)flr9F46i^3YP}5j`2(QOTA}(1%IVujn(jK?HjLw*92Xg zhVO%~rT(v#V~@j&*UC7030$&P#)+ly!L`zFJhV1wcU0oDu=e;`sT(KO1|=xGkC$RA zQP|I{!dm3oz<<^TnJ9dhKZ4Ccp+AbvMd6%e9`+^mzl<$HVLHXwa`jhWEpl@^|E>*U zDC{@Ju_Y)R+m>Q2a&uoNi9uoB;@A=t?za?MiNbWMuok)g=PB4~nV7HPuY>FRr8Cx8 z$F;LAX#E|}TcdFAbrRnPKBImMBY8h`J-lAZ&}@J=1oA!qjqpY(PqPW$r1KDVMQ)6z*Ow_nIDXtX%qRak!vd z<{}E=*UII7Hw~U%F74+GxJdoQ@Pcxgi&zN1tJ}T@mz2vmy%a7lmwDp~xKg*Rg7>Tc z0DMZfJq;swKRp8@H?L@6B=7%Lz!frgVYb3swV%0-c5GWPhA&f z+!jn*Mmo2{$nC2ajNBal9dPe$!I_n$(+5V*-xo$M{!SRVn7iP+HRc`|xtM!lfm?Hu2gfuf z4j1hVt_=Ga#c+wnm%^1AQw9IBGq`CK-(CL|-oG<&-(5cd|DXDQga1(fpYSpD{|z5k z{|WfC`v0G$^N+J?TL1W(W=2so6h*@fGtiUuj?KcJBS{T3^A(ZZGe&h&jv0!7aC!4_=gg zu4x6g-tPNGa^N-^-xhviyRYA#gex_s3SOi!i{TeEW;tB5-9M*l;a%$A4e#0R+XH*y zeY)*_*lLW~0q^kdyyk28Ywk5Sx9A)A8?CGB;d*_ZHoy()-wE$j|F`hB<(raj4E!#5 zm!`8D-mNj;alGG^%bcbhIPW|E?vM``eOE5ywPNsX-}yG!zhESNGLvB>@7iT>T(?cY zTh#wKY`-h_|Eu^t{JsB1VD`X!^!dIQ-mBlyet>__Yw}0HlqQN8m|A<_sKNCR{iDxd_enK zeuMv4?#HDZgb$YcaT-9W9r6E2VHs{b|^$-&pEH>+g%H@HFe6 z@6+Lf>OTY@w&jy6=)*h$GwAK+6Eex03HYziK<1t0n;;K;aDMiA`Pd@#_@5aaV_18p z_w#fO;%MNE%nK7(d$tMQ`IElozrbi-lK$1sq=TG4A8Wh#cykVn&X_^{c`n>l)9gl? z$oUi4)OkLgG}a=C?+*9Sd=|jx>wYg_+Y5DDtVNQC-Y|0cq_ztzl6>|h9!dVO7K#5N zxSyt92w$vu`x}fTrig9PL+58-kihc4sNNsLe~IP+YcJJ2Tm~b_e}7^w_vt6F7JYwL zW?%Dnc!2JAAdDo>SHQ^a%lrc#r1=>PU!~g)fsvfMq3{j5?TzdUx$~I7S|s@&2_xq> zqhKW4j)swx+Zec5^IQU#>b7HHBr)UQf9bZ9VI;>=#(w`#%K>YV#7}{dl*3eF9?k2oseyji%(!}QsXP|BNvmvS|t0L3nMw+dGI5;uSelmHT@NA zi(LK_So@m#Ux!!fepeBLWWQL8B+WNqBxU#}F-T&tjQ#L2Z^KB=={xYd8lQrZ99J4% zYXX@Ex(=>4fy@tWfE(4{MEVE4KY_JK;t#=pYMMu3Yl0GY&6o_hS>WF(GU3eN$^-8I z$g;R@vx2`YWKHrIT$~mBdr|h;rUbU?H`#%0nH|JxxtCkPt+Ru>tLW3t$qw>R;Sh6L zKDG$GKGd8Q!&ag{hnn-NuvY!%L}HMOk74ae*@4VIZ382>t!WD*nGd(s#;>h_ESc@b+AMThPY<+^UWS!v7*@4W5?E-gYn?Lz4 z<8Il(56G<}_aoMJ*KK>iJ#}Bb;6B-b^gH#1`(+0gJ;eJ_AzYLl9C()ToH6*a>_Fy< z_J;>$2Q!|ftOmnFvI7}^G8DchJ2=bD>%0~oo*npcXz_FzCPKRe?2l5T{ZaA*_Nx-wR zgNOc3zsmjaY)x|x9ApQtJ;pew5Uzl)W#set4&JI|wGG~$9n_pjIq!hc zaXtCI`8AAWzVmed>(?2sQ*vc>OEqPfsYAf&2!TnZXOJJ)wK;;z%BH? zK9+nQ8{9L6IbRL%;bVhqW-x~52yBlHE}Y5tP;(r7T;Ru4w1is*e$Ay;fi;Vw;Mc=x4d-ayPJ~Yk%!eGKISFnX_vKVJRmoa?}-E9 zL7L8Bct~z=vzs?D6uu@mkg-75!oza|S&MH3JW^vu!Ns|OjI%9)$C3xP?)^A;LT(`A z11G|_X!^IplXC;EsR;a78mRtsn~u7FqO2A@67`f01+ zw{in{|9u-y>9MEb_chHA;I+AdtRKD({#f(50j}3_Xn=R>zP^Q#d|%iFqg&m&qr2ff zxxwrwxlZ=N`*MAqvmb8E4P?w@6MR7P{~LTzkMR(EI5&`Qmq%b!yov7=f5Mg+w;q}~ zJ+Swj?yrY9jAZ;w0=B0I{+;3s_>ACz58Zz=<-unMu8+}}zi_SoC6Mo}`LOM({%&wL z|4cFGk>+_pm-)me;M946jH^$>2hR(}&f>k}5Nyv2o>;_MUZy+TJ-FgQH^#CD=dOpp z_NrjpL+h3TxFGOr(49~E=La%|Bmq~RAIR8`D%h&uTmWC7_iRtNXCU8#O)t1t;OEX< z2wxcZ`6j*L-oD&SAC9q4Ape7w56AliG9D}eSM&+wTlQQS{lb6Kn0fHSeFAw$o)1^{ z31s|6RiB{pSs!18wJ-DuWPIjw_%)4r9Y(V4%09v7w|$yhuy&pLKY};*38eq64&JQ! z*#d9Xbhg3unx6)Er^b8>@6njO@V-8QjPckHA5{M#*lPNwFWlE(Z{{NSqQI>IZp>fd zzXraap&$2qzd+WoErH|xe48NwSN8MQQWgAhKYx#JfVZlD8*DY+6jGNK2K$nfVHVuH zFpzKJE#MOh19`7(4Wo}-KTHnXrZD(=BG*Y{c!d4++jostiCEDYvPXH01) z`0T;fwrO@9~Q{icafvjCQ9iCAb z$eMw7!|}pE`d$+7g2F(?3@?O{l-px4lKb>=7)jmo1dQZwBC=6sg?Q*!LFpx2LwQ#C1kTpfq@LDaybuf}OSU!T0^aZVlk>ufH7)e`e1B@i* z6BtRm@lzN{TXZ9gF=|M@c*Nx5x?k&K<&0&ms)Z-ciN`g>;wTwfT-H{1qz zXJK&4(>yD`h0$9R;axD2x?*=>P>Ec-t_oX&+`V6mO(ECzOJf_6i)q4IB=`7tg+X)V z`gvMlTOxODx5BnYu0F}Z79n>YW7uNk#&wrq_aL|JUThv~e6`0` zBA1^k>{8_FpK5Fkaxt~o6moS)8e5NC88%=Wk&9`<9zX;ClX2Q_*n{dngtbW8x_iho za@SQ1TZ!C#SA|U>H|H*mwdyx};eC4j?}rU0Go_w*tX3F4c7yENM9geF%0b7kXe}n(#>upm67y0&&i4h+Qc0R@PF#+3{ zuQ$vk@FiLYUdpw4sekTofHz(m%&N-lXzJk2m-_2-3;g+|{+{{*wi<6PgD>-Sn&}_d znf(J9$9oTqq&(xW?H|ZoQFA$U(dB`BCyK$vmj^@M;XSkjw(2*3hyU)kH3MiT5Ae^L z4A>3`WR8Xz2oLmii@5^6LXYJi@IU;qm_hI$eLfC`2M4jQSS!O^316wt^sC^j0>4J$ z5O_#%jI5VF6doG<;=ZGqtKq9P{bBI1K<1~IYv5~wH=lCt=WF3>gWKKzN}KE8>-_y| zu7|G=WIlo!PB{+`p-WNqxQv-aIjoF)dqQBr%`E zTPFrGcVHX*96NBY-a`?4Py??J@7qxKgQv>&%a5)i9qJ=nS0@TgQ0)$-fHgS-SfUczGpRq zk^FCOCXB?N1tS@6lYL(hNA5dU0=oyf?@fEL9gp$xov=NSi!Z~h(ik?b{sh({ zNxwP%7Mdou5;=br)*h$(ZFyhN9Jw((EwDY18{1QW-J|}!SgU^13PzIWod%Bx8hH!$|Uzb6=1`E+&n&NWR&fNIsDqJ2r*feDgGRqx$QxjmT}=gv~q2$LC{< zkV_|qtw(NO4Olxs^DvMY9 z7jOPSevmufd~6ToVhXS+Eza>tm) zTJ@VN;R!x(X5xLpE>uhUyRmzaOLH%_5q;G)^P(oKMJ~onx-V#rT>3fKV&vjWu=U98 zs{w2Osp;PWBbR4$D`kb;F&@EM)c3s1f#xb_3 zuv?M)&btk3)o=cfV{zjC+KaVF@;`-hf!w|ZVh16Y&S30HuQ>ybN_2J9~6;&)^BAh)l**hb{yo3IwScr%sb`nS(p3~Q0(Z5m~ZTsk?}6mr|9 zu>+=Sp0UG`^N+w5tG@(00l9LRh@FgPcFT;FVW%N?UZ!K?$fcjaE=BIRstexr4i@E2%AQQR$W?`En7t;dU6}dcg!}dTfrT|-nq+Z2NKrRmxv6GSHADcpw zf9yu&(yYU7RsS~ZcI3)!2X>G8_hK87OQ#8I)oP!r$;ic&VW+8oI(7zf`MDdLQhyq|QT=t;&B$%L1>563zuy9E5t4frYt?UN zQ6|Xw6WE&jeOc9F4?p1jN3a&jz3?E6q&#QCNY*Er!!aV4w#aWMy}gQ~z{q9J%sLU@MW!PZf5l`m3=;Px(B=uok&% z&pZuR`hA%y7)c%Y40(7~^MK7m{dr#GV>=_4pDx%Q$nCcP+eiI=VA{cm*yetVdP?tVC^E!+hWc&a>tm)HX?Vvny|m9|5vPCqQ|wA zx(K;6M_?Brm*!&ZQskZ;)z}nrc}rstA{TQAdlJB=OR!^+tCPoJCm@&RMC@eb%C-zU z4Y@R@W8=t`PXap|x&6+;2FRr!Vk?l`o5zsUJ>ulJ;-X?7GI-h0>>}2H5 zOBvRx-)tg3$i= zeQoyXlwezL(Q6pn1G)4IutmtF6T=p(zXTgcGLHaj)o(s09=UReVFw^r7Y)RwkmL<( zQJZd==bJA$7s#bQ7h8$kwpG}?tv)^yEUEfU?kVf_oTB|)4^IK>HI(*kX)YVi`?P(v zpZueDx@BIPk1ay(9*}2HjRfdft7n8uIkX#SgjmRBW9d;{n@!PQ5k&D@Ztw(O# z25h7Ho3Iwi^?VezdR>`W^kvQR-!)?J@LB%*_z1XI{Uz{N^^b$6&GLO9)8UlHq~Sj_ z<}iF@mhbES6Gk%s`Y3GGZ|;Zh4`fXM^8oxn;MZM$kha-_fnWCwu6$6A%T&Qu{bn{i zJCJqq%^Y}+?>9F8f&Zg@P361`m-{}D9QeX=-^bn?M$-S*2S(EO-WTpy?vJYwM)IBU zVz{W>_i4xAxTcwaXP5i$Q*+={c_8zf(r|rw(6o*3cMUL-|7YI`Bl*7YEsSJL$SxR3 zpZRY1`*Po(vj?{2+V8=Tj>^FItyRIPz<--a!yDCK2iFHaz5%v@_ThwZ82Gj3A~*_` zuXTNWNxsn}{dc;yaJyu1{7;#^O?$XQGU%8M=fVRtW*|Hz8OV6!sW5urC+^2P;JEq| z@J8LXE*WGZmu420|I72+nhLnWe`_{#;kmv{%shCW_BB1kH}r?RzZ=}+A%DCDaFP0B zaPdRF|EdI@rvB-$)p+wT{IFgd^GRoZaKR(>6JQuE+!cQ}cr{j?-|xrr!WJYWhv^LCwP< z*lPOb5%>{*4VXvaM}uB7+tAD)}B)>ErX^j+McG-e7!AC%9{+AKTLnKCjY$`|b|+ zsPz5k1#r(w-`Cd*F4p)GcuHk(Tovg|h2!c^z_TiY*)j5VKfJNhk2$G>xwyq|s^BWk z+cV_t8QS~h>H?Q{3tQK%9^&bx-d6u0}9mHFEe*$as)SnOEqVc!F zlht1a*Q>t)M(%lMcEUeY%d^A$2=7<_Pt`&F&)(mFwT-U?ef4VKl_WkAY`v%pAB}V*(gSObAzMOcnf&rvEOCB+V3zBtL0*?XqCaU72T^ zb?`^af-<+S_3$o@*$wZ}n7!~1%Yu0>=0|wnvfvfR`(dl`<^}i#|1H=ohnH*J{v!OM z){QU0FX@=58n`An_#EFlO)Xrj_w~yh@5}zX!yLH$rtyez+B9Qfh zVsLzgAK#dO>sRm?xFcCfRT(DJ|9LGP3HUB1#pqZ$KYZulM;A}`lrIvUJE|j z?dIyjR{iF6_;p`~W+l8bxPCG*W)-|DnDLC`H#m=P1m8dGu07bk;m22)H{mz+-gygt zOTS^g4Zp49px)u$e+W9`b|c*@uR z33#RYSHY>2FNZX|G3D>0I+zArlN+;V(wvvH9|wCD+%fIPa(9A}j0ry*Mlu%tFXykvUp-(Xc_<(r z$$SULJ#}ALizKEOek5r+?&H%;U@ej~`@%&UAA>JR2fr`QE-;tE6ViVC|3r9lI(YYS z)>$fpXKDQX@B?W-9{xeNT>SwYY5tS&^Xgv)zo7eF4kHu&806v;Sc_!7!#nW1nof!s zBAc?`+lUDnDwpqL8Bfc(Ezu z<|U=ER{f?ue5$5%8r(s*&4r&(|C4a#YJXf+r1^~ZC$JVt{-1>xY5Zb%`D#C(;zi<- zlmpfxnY-~4yiVgkA_mDk6s%pp+8^)7Fp~HU@Yfpu4ab6eo{oRgd}8g-8q)|PNwWz?a&7zqAMo3n-{86LdH=lkf;f^ivG!5* zFMuEOe)BjnNX`q^KK-6A+e#Qo`c?3Y@A>QbCHSrP{B`~|oKk-p{!-(=B26Uw#ablk zY=19EA?HtHEfW6@;*rEV{>J+gSc{zB)Wb;5Zv!z%&XMDt?@5^_u(r|rO%se{+h2(J zRnx>;B>n?1l05uI%zrgatVMDj{|6Vn?_*-`b1l8^&)19Zb1iv)0&9_+$CvOUmu3QM zk-N@K4P2|~ybL2>zY+h6#$zp#yuAvqdf%UmH;6%UyjYuh-{&n2BZ*%Pf3E3&0VDBm zg^}cK8|fg)8jZ0&)Ghymk(AXzVvwYdwMg=C z2u705@5KD!;}ckm#D5q+lDY_Mk(}!zu+_Yo58w}iJAQX#PS(&~UE|voIj~)$ZITZI zd+djStb=+SjAWc-OL*FcK7KlU=Z8UUz`NmHaQs96{+oagf9T)AkHARY<^P0_s^7v$ z(l=|V>(=^h+rpjK2Gv*7hUo&IqyBT@9&3Z9bMP0y7q0c`_l8Gn%oupKZaW8_r|}QL z4{OYPc!6%a5Zd6>n02PZjy8m?a-JU5*8xCYp+_xmy*v+c*h_am6sAA{o` z`~4>1)W<$P4cm`{HYf0IYc_C<8+=SYT(lwRD#r*HZ}532f#VvJfKwZMe$sIL2EX41 z*lq~wdQ7CF8(w)&ZScV$3OMy zC*Y-@`s1pG*M92DY8_m!+cv=VQ-3bZMtGwhV;x)8n8TlJgI;Ln0HpK;~9nSE^z zE^)^mgNrxozTo&~pH2d<-0bsH1*bG74O@*dTR8SDKFxLT)-67M8(gpc2DovHKi(!d z?{lAi{^#uLbDxI-ySYfe+(X?{-JR37d}5F@Z>Li9?Iaj#wXy)FMK|$;FTJ)3Qm3D^N@zu zXqq3wcB_{2Hr`>k`M&EGaO-V;&R`DQZd)L0leULDYztm5;QvQ*;i7GUtPvf9i#5Ik zp1duP|L-V+<@`2JP%HT<>rn{VK6g16;Ar|RMQ;O9!-LrnwR zpwFG1@J>Hx!F&tv3X0w)eY2Y}#=HG9D+6w}+dm&OVI;=DBcBjqe5b z(U`t)zum#8=h#;vjAXwT!${Kk8;p|AF}J-4MpAAuc=&GL{u}|1-tF6;W8h--m%w8+ zopJDZEt8wcGm<=GEt2w_03+G&L}G5!7_3DS^DlU^#+1PoyZw8_T)0w?w+ddW{%W{J z{k8B)&D$#Y4L#mB;kPvZZ^KCDdcU(f$U`na`Pd@l+DmLK4wI!4`c{ac^T2Dskp`zhRD{k60c=EIegi7}yVW zWx`0>V_9&v38j3Fft#C9;#MR`3ZXlylb_Zlm#S;gi*W3XEjib|#D?XK_9m@fX8L;!EHen$F!OthmR7 zuCHS*wi3DgS7B}3`%MCVK(~Dmp08;>0;3Ks_&?}J;pa7G8T`7&tb~zV=d0ikG-eI_ zp~kF*>($=?|IdVSJsgCOYCbKDq)*0V!2byS9K%7B$)GSjh39WRe8Zq{=IK1MZiJEe zN5ZA*9}CCTpMdS4u))Qf!K5=dl(FvlaM9pU{x=~8TlJeO;VVO#FKMoVuL`A~*$jb) zgdJmUzT{ANXz2e};%fNnQ2IR0u+X+178X8A|8ox9ZdfS&vF+i!VWG^+&WAe>3uV4l z7r2MU7r;G-g}1u-p1t5c!$O&d+ZXOPER=7=g>aF^$Kc7sLYZS;2FHhmGT$}nPuRq!*zLYcetEWBt~D0BT5!${^TJ_ngeX)`7`{~sCG!`J(AGsEHGp3MusxqITt>CWGMejat53?GL-rI`S6*f8Dmb$S#ZaZq0E=* z1fM-Jl=(G(fjf^3zlzFD61TG29wXAhxZh~(LWt@O1g-iYQY{rIm z$A>b6GQ*M5|iLb;SUYWO*8+5|EV#zz_*<-P@YHbZb&l_V?+C9F|G(jB zy6tp$dic!>*KWKMzBBx%#M}knr7<($8DZHcS#B+2_-^&jglC4Iba87G-vi&Hd5DMB z#6wvNB?Iml58rx@ymf+qjQc$7gKa$g%K1$KPG}zPW!rmoTX@R7eqU4JdH06WzI_O` z5BM1KApD?iI~y+7V-I+i1^#|t1+NZ5`R?`}Y}IcZRdM=W1QqM(2Xs@ma zrJrONJia27_w<|L+bTk7+y4u;6`>zTF&CcepBH8xJTH`Qk>(-zA-x73h93@P9D<2JEA>9Df~&OrpMjqVU!0k7jxo=| z&uaW4c#+nbi{Ztg{|5IQ{9HKZHon7}CGZk0+okYQeKu8x_Hea-_8oz3b?E;S;ANp-uiypvg)qMv&o8qaULN}YLwON?QLm+!INq1S&}5%)^5LSF!WSN4jfEIo z`BJ#+VYmuTsXqx$HvI1Y1qV)W9`*{nwIytv`49u&vc&e;Iz+*W2b5 zVqWoeem-3EiZ8<$Y}IdGg!GZbmwfA4m406_IJHu*2iU6Ltb$jCGLPQ8LHry3`i#NxH^P2b^FEk>E8g(w%zYz_*Z7zO z)}}Nj4O@*dZ-zGG%~00dYX)b(8UE=0C-E4#x%ykcE#C~AyLqpz;Nvys1h|jJ^o6ff z|5fnS>K_JAQ2#`D(wm{I74T1ZipETZ=V{DC@MF5K$Ke;$zZ`x`dmnK zlZ*pN!yl=CJ-kWN`3(M2xBUvhP)xcdxw%zo+;9 z`<(0d_1b`o-}m=O32fDGKHysYz}Fl3aPbFz+Y&hbK`3h}Bw(w4vj$${{pLgXL*3U} zc&*lx>)>^IFMmYcyWYptuBWWl`#dzjR{iE<_~US9FaF=eY@m+a;M-bRaPtkm-Pi(d zxxu#^Tfwb2_;zCs+-8GsH@1b_ZSd{J_Hc&{zTKD$+YMSje8T(bC*kpjSP8M+Ct(U* zxFoxC8f){^pAQ#(5`KS>nAj&_JnsDoEPcY^(n+idlYp(pm`~x2zRhFmsAuZ@y<7#? z)cHE97Cx$e3nSnD-vn>c_W5Vz;j>V_LFB_lpZWSB2FKN(fbD0YAE&Vy-W=@x&@RKr&N=5xyY^YEK>{J(7$jQ*9y`)@Xk+8)R89s{?~ zm}6no^{$Ky%yBT1n3gc=bZj%$iG|VX%x1mJ@o;P1HV4kr^z-2&^~YfQd6@ibHtnk~ z;4k!iZROtC>YoLNV7pbHN88{p^%?OM{FTOU=XkgKGOvQ|c8%Eq@6dM3*OceizOGKd z_G{nPHQ&JXq5prz2J+SrKJ+1dfHAnZA?)YISeC$(8^SHlUk1n3pMX;h;j7M{hOPR| zPI#xD-*4e>^_jH`-W68K`op{7-I}-WNdG&3&z8Zd@BDG4VXJ=gJ^a1a=X>Bi{{74B zh4*T^`Um)ju@~7|w$5n7jW72T_Prlq5VEdCVH}f<6vwx>Bja*lazMXI^+^R7= zV@GCBb3EKm{q12i_od7Nb1Iyt{(QJIs?I#mbiw|;G5mEIJOD=h91nztYW&qOYW*Vb zyu;w(>K_4*ZVVfjkp37LNxP*OM&d7l$2NxYe_P|=@s0jn<7Rk*`X|CO+19;}+yloO z!-rpBUkMoXug*N%+zX@ClUS?&J{U=##w@s8{Q(?ld=f?yUjZZO&zaj89m`P9Mnjp6zw#5BOWiC@B64d21vH~M>F z4~)dW7yeoOjW9~O^qb%Vjp1wV7=MG&mG1w@{tF*e{~`ErW4QBq_Im`j>Nic)4^83G zR`hq}z$2SN88bEtE>?dDT-g-L_^~RuMq_H>l={=KRloTK{zdx=ex=XzSAQR6!btj9 zvS1|d@7XYtb$E_}oB!(HXIsEX;*W)qyyqSVpYW@{ms`UpYx<|aNX}_H80{I8aiM7s zBT4^M7)d|XX)u!ZZ3h_n{u4M)WAfo{n*Mokca7-*7puPnj{oZK*#umt{!Q>!&HpwS zbz7cwn)wn&GKbYuswaKo?u*|ZZz(hu`3jHLf(7ra~d z^&R~Eui-qmUg#beN#DX=*lOO)0nWvN@TWD@8(DCN1HP`vh4T)CLtTB64;N`n48BQY zN?|1R?N}H|{X7mvlID0AiT`GJg8C=IQxEvM{SNp}_1^{0&@}Ic=KJEIY zV{qJtOC)b_%7&LYPQ!FG>~(BR#5aiOm?!BcYyr1~uVrj!EBJU5N&oN(aBCCET9i5P zNhXqh>^ATzCX#Ei9gM`^9?sKk^Wh>B$-NeXD@^p<@J3Cu4z4$m)KLwv)qI)^I3x1wjy8jvMbgJ^GU3d~|G#z?oE6==)2;cF z4Iksn#59MSYfOvC##=;_x;JBdFZ^x`e_SaTef$XbZyH|PB9bxB>)?$oqS0>M&N_H& zi|AMPe{I{~`WBi`cu$K+`l$E9jV*j0nqYgZ=HWQ_IL$*#&SOh|E^^?!mi~O@!#&hr z02j6N>Brz2jj4rEdIkA^8BS?@8m`xv2H2|Kw1Qh{9*&2PkNkR%C%`$8tgUKJgiq9% zli)U*&$e(|jX4=US^cNLr$i5a>b{kb>Ww4fLNb7ang z&(l12hr4U~J>VX?Z2?@M@#n+mN26C5{)6=b_ySF{C)_jgeHXppUb^jt@P(0IOS3oJ zTjTq{7wNwK3is3aLil1WpTEI>Q-2X0(|le6U!v(;3SX)*m%*3mw*BG1tA7AIAoA0bk1qxa*r@U@!H>)`7mSv%KU4__ZOb)%oh42Oqnen!9}HJwr9XOzER zs$e_H-xp>y_tEG`*0#-o+l-Fxd5~{&ZQ)bY-wsAnH@1hZ`pp=)*dL22flDI4F7Zw9 zO@3ddlsdW8Z`%THSsD#l;Obhsec?ob+?zmR(*7tSk< z(p9FD$%i|ZMmH@apPk^&rID=r+6C^a>2!m8lt%JBq5$q$8p)c&z2H8jk*p`&7w)I~ zDujzlwQh$mEA`Kj{_p_u`~>y7)iZ79!ByUxfw=MS5JVE#7u-ImqxPIUl}}2k8wIY zqtw@jcf)b=|Akwx51v&T{rNcc^ZoE_Evq?jx#l5&k?bpkD@uL6Jr{ns)IT@p!wYo3 z3*kyVr&aJ$O|u$)fiiLH056AYG(WZQtD4Uh@Jik9D)=qft+o3$jO2QF2Tqkn^1V0> zzh4^3dcq&TYc*ya{Bda{eaIW&jhcQPyh+RIGkCL}-z_kbZz!L`X!w=PTloS;@-2HS zjJ`gTe#mX`cHP$wxL%K?0p6wYyWu^0E$xN(l|}=eGx=seY)d2mjbJQ1Hu7t3kAuf) zy*Hj~d%Qo7`Ecj)zWlquJ;wX`xd84n-k;OHaKG`YPzV=|kB)I`494I~#`|{8 zrSRqBBl$l5cX+^ff6WYpk(BKfFp_Vb|A3L)FN5GKHJz*AtH(#3KPUZR@O9&TSzQkg zSN{ljr0#1JJVyP+@J-{R)FyM5DTT*s9>&2F#z%cFOb;A8HlDg{w80}t?-PJq@BY8&8hLN=W=D_HU&D;zBfs^BXTcrX< zvVQek7)ks*7|FNJhhQZBhha1|&Rnzk@B%Hvh4ABAwoky7lcE%I>8G(aV^Z{~`?lL`QdETI zZZREVSc@bNnUkV8axn?4MfZP1eUb%dYs@jkG}jocZSB)BIdHp4k$e+x52JTJqOEc& zoHr>tuEAVj^5H&{{BiY#izfMJL<}A<$(PAMc*rDw-wlO}CqdDhDE0w;;8pN5lcFAV zeA9duUNp(q^NZoeed%7yPftf3KemPmcV5rkBBG z{+c(pbG*0vc0vNKxZS_I&4p`j_xDjPY&FLGAN+sOANO%wW(qvT*NtW>b>mcjzZAj) zrbaR@Wgt97{Zru?>c1P_sQxB0t7yIy^n{ zW1sHi+PKr#u`#&#PTw9Vfvx(@U0i#2`FcACo_v?D-^$>6^*6v){bmMf&hY8P;NlsP zj7uqjt@_Q~kv;crzu&GflDWg(U?la-d2si;ecASat;U;~kwx-fff;boOrM_^9G~f* z9SPW~-`qpYJ<;~*^cBb8_&t8V3Ao~(NY(?Hdry>!+_jX2we#+YWW3WuaLW5l8vgj6 zNXB(+fcM-J$#}E9@KNw^z*0$~(+P8Be`M-b`aO*jd z{9kzvoHxhUb@_1jIlkT714hy>Q2_Uu~* z&Dxr=FxtAd8UGV8C(1-WuWfc}7IxPJAF~^~2VJ~0`;5KV!?$?<5v)b7Z^7I;CraGr z{r6&>PFR`Q`97?jtotg1r_J$o+H^QR$Jen5*v^Tbckl1!Kk$FFZBtJE%e_Aa4=MNM zGZY?P?(2jRaB;b>8%yALxv$d_@a%G5|IC3a%KdY8EUr}BjO4$qAB7jFe<561 z?(h97cxkz>!>i$%a{s)jg;V9e9!|p>HT^nxYk9QqQ`%|U;CfB70k)bS6TpGiT_GGs zeq3AxNB$l$NjMqF_$yPvzAF5&r{Rqi{#feZEfxMg`W&vW@WV9bn|YHNd%5z8*UrM$*4=2Ao&r?~8ocR{3X^c?Nza^5e3e zg`bW5S`CZfMbY?Y%qhk!rc4$`uRqOLodj$bN3zbmc@BOqlK%)WOW-BiK3obf)oZmn zVx5-At-)oEhg(-ivc5_VjAX5?6X7=1k*x367H(G^$$Dk&;nS)kw!A*Y`{*=^ZqhyJrX~*QTbQxmHrx3*gv%i1#HH)Yk)#@qez)?wrS_T`Yk z+G$!2)A1vhPQvj_pH2d6@6mMP_>oILfwjoRn*{tH&09H)B+mi7pgNNEa2CQ(Xt_NJ zS8CZ-!6`l7bahm@-KSZFtwFM`9k%%n?{9%^jocc2IoLe)=VN;ym$w4v|JujrW8+Bj zjAe}-pXUa6r=GiSVIS&+W!CRL_ z(MI|xwk?bDzFZdVSl6smKDG#DY%}d*Si9Z(%?`MJS@gn3j04)B zUhex+%!}}gdY`^T{rQq_%UKxtHLq&m8f|0O!nOWcY+i<6j?QQsNjeiGzN9&V! zx!2x}qS>@d^I`jLlZMk;CaZbhTph`OEk-U6CD;k-pNO4|{xUP8OBpt<{scCKTznd9(W}!L-*p0v{>0jyqBk8xv zg^|?xr^9)xBl!=7eE7`OzO8Z=j3l2OVI~Mi0smK63XkPHeMFz?I2cL$a6EjoZaV=+axNyqx2*Qh%3I;dtD{@pe3ml! z_SOD5`+qQ!KIADdl5&^|Pa~ZjMe`A+P`xp;90uu{qStv*Btl_P3KJ* zN#Dy`Fp_)ZZTOwlk^FDeyKu^1hb9fLULDE*dA$d}zdDlfV;{h4R{Qtg58<_X?$*H{ zt@iK8>tQ6-aO{D@*3Z! zIt6aGCXzWv?cr0``1h~V;0|m2J8v$0x~6jmY&CuJA^f4X?bpIA(E@RyTvmRcrF(1Pp`#x~90p1YplK%nu1pXwFaYW`*_|wS$_svFlqi=7UI=D{j z&rR?)e~!$T@R!kLzq$3(zJj-_e+Spt4qrZLxPFK47ixg5`pwty*S`KV-@xB!KI`H7 zNapyM2Dl-TvA$*}yi@xDzU5i}ZFJbJL$w=5(trCMjN~2sdl<>}xd%ql*4+yuS^w$> z_^_sP1V%E}{p#j>>Xz^Q zah1UF?|mJZfUWw?9(a##yBFRY$(#c71N?)JH$PII`?NgwQJ(w!aW%kJ{boOP-G1LE zHUci*AIVtm5_p#S?}ulre-6B0zkjYRgssMypZG@hQ`G4*`Yrpz6Mu>x`&-u8X3|el zeYy8HU~R4XU;Zgd?eYFJ*6vmR53tpA%+K)8dVU+>#%RDl-8Iw1^P8r+n_uBy{qdRu@Bx30%x~~-dOiOa{;!td|KR`mJ~VTX_P{~khKa#L4*K#L3fHT@ z0k#LV|K|{VC@P)p<`n!6|E_JSKj1&23+lO-&0*TWhoeqcbFWpwsl(C8rTi~*8n)^; zN8ls=zBYfte`=r7QTV8To*K*bV0}3!;0o)nrMYmW_1AM1ywpbLxc?8WhHI?9uWR9z z)~CM;PFeqspN8qYxaCuqPm^RkOj5?==fHU;DgBxGa1WD|`=S6YGD(?J5Q8r>Ntx5p zA0B9u@*VaH_$rf>Z%IR7B>tgru}S**Xz*l{ls?-s7)ku?Fp`-6gOT{Bz-T~5#zkf- zj3nj`IBt?MmMj5Rn4~;I=bGeXR69DOXBl=H`eklL&*|8>`V-hjbozfXx;8ogJRhIH z&PJ=}WfaW8u0;<&l+ke=HgAEC&&PH}&fg8&6S?$zVf(4S5L<*?`Z4SPm$e*|lhi#LyveC_>qi@=3rkyuAG-+YtV6zWL#Q{eP8__U_VCg z7&l-yqQ&H=4!c?XTd-S^%fmM89^}&8i*5dd_qV{dK`w7?vF(t{e|v16`tz|J(F2cU z6m-INMtP5BT+{{I6}k9s*dEC3s{q>*x%~9P79p2@40{=J@%^y_kURE)*g?p}48~rA zTsqfcha-24Bd{ZpEAvsn33do_+YZHE zgIs>D#STYq+Y#7l>Yt7+dfLawu$Q6N9?9t4A3H$(1F^%AOJ@XjB$D#MwyyO49Bdop z_S+WQ4!LWfJ+=dK+vZ~PkSphW>^17Y7Rwky+16CSOHESVcdFqRIA^>Mn&mK(I{8KT zCH2?9NWMwc!mpA)w+`wGc%@0od)6xW9g~#z(|6&Nrk{p4nxuS3u7m4MQr=Y?;6~~T z_fFIVA2dn%&Th!tYoj(85dLwugpp&ma^{m zD)_Cer1Z7E4Zo9>ocIRsS?|IrVph5_ig0~avZ7g57t;XStfai-m~6O(9?P-tv3iWh z!N;k;CCAb-DetN=7|D6L1V-=8;MgyPFIWHHVRTu*yW0TxYV{9;(d*^Rr@ICoss2&$ z=$6T3Iq_p!CX2>-e+(N(F8u`7-lg#~U?hFKcf&JVCgq*(9ys38pVI`KYU#@@4cnIf zyqi{VtEBW}nB(E&lie%0e#{9;n{`5R>C$ZaH(+~$9(!xJwU$W^oRjqP$WDY$O#1(4 zJPAHYW7@!NblbLYTlJp|pPY>D;26y*N!vfyw<|8srQC9pA5}1(?e8%9!>!*t0Jf+5 z7;{F_9(#uO9|sRP!~2KA6VyKuKCJ#Dusy@4Y4SLCXZrZqnQVKePiH7RQvIXgv1j`D zaqxJJxf!0UF=g

    R$opb@XZGccksq(QjJ-4^jV6xVWR=R|z~z{rAI3^;f{QlOE&Q zoUhKl+|r%7PdodzSsh&8IVt1u8sJ9tH^H`Za_!RWZpL(hyJ(r81E1r!HRmSnA6>ow za98|Y^;~r0I_Z||;NF)Lu7G36-?Yhx!pplSrGM;2IHfUZ z_!ISi3U5?@9lWW#Ki8kZ_5$5+Pq?Q~$Mk|P)I9f2+UC8J@?E$E+`4yC-uH9h6MHA+ zo$DmHP4A?PD`*R!(%WCp?O=5OTg)wO4|nLDly}2iIIp*F>*m9qHT^Cydf`#}SI>cw z?Dt%_Ywx7Ywd@A>U|YUrn*z9~x6gkJ9@5*lONYY6y_3?vQPMjZNA6p80&6E~%%tAQ z_iy$753pa|=Kb5T2mj^$hp_KY_WlpB7Rfj9GB~cso`5TRCuRP76`bmwl)i#Ayta2T z+Mao`SqFclWwIXrSo6OD-q<^N=tyQ~QwP`g_H}Fn+}PXKV@>cu-S!Y{wMvq~S)5X@YIvr0<8h2);k~E7e~G*Yr#F za(S+W-%|hE@H-m+E}T+-8h*cD^8L=twfq2HtNwNHM%`~6yh;6^!Jn)D3wVd7`8E8F z`s-mN`EP(5wG5l!0~+%id{DPN1Y7l+Lbxy~>$;nZ;fwV={tf<{-oHg~QS#`C?td|2 za4h-DE}p;U68I8-znDwmOEsO#;LDPJzIlJ{>;B2Z+nN=cwlF%dG`p8M8Aj61IR!qe zfAZBYn-!UkFcN`ojG*rVuXDbYk#j{gd;yH9Oz*hX?de_W82erDh;JNMi=WLp05y@Ni9M1YE4! zmcVh1Pr$P^W)57T`J4+^YC2W$B8^!Lzo0S8;Tlb+7JgOpvjSeJ+pdE5>2d9c8?}6z z;DcI*hv37SwYe`rE?oMkZwpXM4Ew$fS(F>H_!Bm;$)xNdLU( z1^3bTzHmQ{DTIsEAA<*s^nD`(;UO9`6dpFxKl`qMk?i+cc)0pUz{MkzGIq2Co}k-K zgpu^OOoEZLWB&k-%SLpH1g%_xQAzZ0tRRu3q ze>GgA@wM$r5-mH1p0&mrAx4~B9%_w+OviEPyEj6Rz(OTz>;e3tp zbxsc4Zj66swTJW6pAR>VNxm2HjBA3e`b{xhs@KL?c&xtTjDyGdXOI~W->fkc;0b!o zOoS&UrF~^4v9C!!KlyOcB!3OWV5@%fPxw~77jA?9<@0GK!;}4ckSU`sD)am552II_ zGk5rM`0r)@x*Y(c9d~mt4204B+02!`0v@8<4uz5UuZFKF^ZUIPMk}*33(R#e`tnD% zy>4WK$;$heznXZh%p|IWafFNMc69NYWn#qoyokM#D&A#=ymz{}LEU{csaJR<|7o z->m-sXX#wvbg2G6e)bk3wy0IqZmbApMGzD7@0gHVPwiV z3Vv0}`5HW0{IA1f#GeBry)N}8JXT`ff`d}$A^4bV*KxQ~%1{NLl|1KQUzSy)=vPPC zeH{ze7?n3sm$N4P#3)%PZ}F$Y zd|=GJ<2st-ZnUk#GWfsI_B?(GMy9SV!&gSzJk>BVb;XCtc!$=;@NqIf=5_0jg^_-K zt>R#0_R&?Z=anGsk6m##l4H%haYr@E!k7~h9#h(l}w|P_x zxQ&z{1%6um&%o8M+wJvXWXiAJApQ-zA5-A;H|#cMz$4zU^)M1H6n_!C?G0O=?Qn36 zjR}n*=NPHa9JV({wimuC$L6d7BfBkdE%9HSlNX$5{UK}#(%Trp`r=oUa`IAS?6h_AXBaFrpi(gHECrHkT zoUbR^dhP<>H_`U__ru-9-yKeyXxl?iI9>c1@M9D0d8!XQSo}j^v_3z!l^P2FBmVR7 zg^Bk5?jn47VxF1b>L@sNiXFF!gORy@ zz6!1{{swT?6njmc4G)`QuX~5XBc|Bv>XC4+#7~7C@w+fG<3eG0))ZTBv*8cKpAUa5 z{?#xt*Z;+ErR1rC&rY%9ROjIHvg`%e&y{^K6`pGE+0`_7nyqs+9iA@ZS~K7od0XOR z+bcB_4%>aFJlHei)k@9cc${VHswP}}mOV$;fv=fm#~kXy$UfhP>&>!dh=&tr*>xqs zZD!eXO$v<6eR^9MnfEB}f|2QO+rh}(Be#d|mOS^s$i#Gjk$HckBiwnGy?*NgBl9lG zeQ;Na?*=0?Zqpr3o0Yfw>8KRd6GrCUt%qP_epB!;jLf=v!N`nR9us_R=hpX9~%Vyg=mtlXl9S>3O za&7jmy$%e(!FOeR1NOzQ-h<~z`cEH3U2J@-9y0dd!7O z=H(rk%9v6F-ZIbL2W^G7&C465=Rn&I@0n+>75Bnl&$G`x_ray&FN43CXWPJjxLo`d zus=`kgXY8YZQrgIzzgg(p;`zplw;%r_ydW_hx2WnsDeB{svxg<5%c3k!|3$kn0r+W zyioifz&97?y%S%za8O05;GXil9+5bU;G8|YVjAt>%_kv-mut?Ic$WtiGMr1bFuAbcENjO z*}d>Fi8&6RkeHM3?~83+oq|s<&YSXH)NSev{FlW44WC_X`}1?~1<834{#VNIAACvT zFT=iUqgp~cTw?1X0C!tr%hnxETVl)K6HZ@Z>n8*5EAjo{ffADmXDzX1$c9Hr%&YKg zOKkZ^!>=!~_rh<$$Q)l|;I}0{2qWVU!80W1OxTe!xNyG27r-A&{Azfu_&T3Mkdb%7@0g5 zVPE`eIc%S=LdI?4*=gY(+eXgv)9z!M`>%SuLBVc68GZG#n<;;QqCoyATWOBX* zkCT|U$sdyZSRa`&xAE{a$vGX)UvAr50gTML7A?9P&MYU#dW zC{{~vR~9xK>6j<6TKYNHQ&=rM=JPZ*2kDqMv2P=tCx{J+e>_%8mvaL49i+>Uht<+` z;$Y_@o#%b*Jn_%R7Knclb}7>NmtlSJt1sXU%k$ov&$E?{@Mfv25*X>6Dgu{E8!Ll< zl{)+lJ|XpX5=N#ze}|E&=Tq=$$#Vw&L;Qcj$mFktk$DbS1^*>E|6ZP_kdBGMYUy!| zXsrK_EPEbCX1y0+WY&8Tz9jz3Ff#eCz{sq(dU;-gZ(|x_6OpdZBy1tld5W<7?!)+% zD&$_W(DqTWaE(H{u9|SYLYp%lu3u=&(*RB=wC%YeoG39#aMMDYGZ}6!F)iR$g|?in z;dYY0J=~$t_U#?v&V}~a=>n%po&cOCd3wUVWZ6gHbSX~;JW%2@;VdanHat<{C&9Ur zXDaMSd0cpw_-Dg&Bz`VDU+QE5oG;}pfJm#$TuZ8QcvHPn5+(!H z;AbV~Ie3^XI~;yq;$MJ~IgVb0k=`!#68y5nyaFS$Uq-CSOGG**3F{-X-jVR@QqDJE zWc*`bWR}f=gR+l8@MMXZ0wZ%hlM5qLhN*C##5*uDIb9f;m@qtB{O_*Gt3Aj1>tIun zUT*-KCjOq-UP$M81iKFDnDy8a@kg+wNaruZ9uWUQ>>;H0<6-O(q?bL4J%)77%pD7sH>5|1%hw>(Bp#k?xn&IvAOHTMr|%?VrP&q)s-&$Shj|BlCPA z0+&ktl)>M~viso!YixgY5I!XS!|)Nwa}+);%btNNC1(}8 z>J#`ATYj~c{&Q_!yq<5cCVcJMykkS6?oijk^~K)+zJ6_9kD*Z=)eZ1X64MAqpAC(= zOErd($#XM|OrBd{G)^y@xHj)>lJ%d%`shpy-*dbbZX@w2a0gjeM>tjd0XR+8)e}ya zb!ETt2tE$~+HZ(|#`+55E+>~E82Tif9;^X&WKJK!A>zZ2dm_outyT{15875tUl!|sN6 zOP)QHe~-yPwqEM;Zk{zr3^kOG2g=9%Khed@OP5u5PVo- zzK6e;GW-DlApRrp5y^QJ{!y0w3H~YXJvZterOM$7@&8QS{%qHk1pB{8o@4Ma+efM6 z@Nx0~3jb>F_tkIQ7yM?&@uFd5#xY`GWS$Mh!v1fv>6y9sXVF`4q?6 zDf?`$CS327eI^(WC!UfqNx1nb`#iA)+(!HUV&b0uaf?1n@t=b)Nc=_klEhqweetW)@M)?4GaL(NY}*UL{u%NA0soOV zWR8AcM!^&xnBC4efPI*SMjj_x2)?d zd{)}_IryBkrGL0i{>Qe-^YFj_*zuhIU|;;|JbYf3y#QaxYk3#*X{(Fyzmoqy_)^}t zlbHutU8a66+p)Nduzxwv{BA{Efv-sWuV##{TE^($-qm?!`gfY?F#3D|-}TObM@h`9 z@aSsWCSR}43%+6fA?y{TpI=vFwe%REkJU2Iwa387b%tP)#lxR z05)}6wHfCOV7npxTf*+xT%^ZHr(%6%#zLo8=Z!%+CI{;yHM2Ue_B%Gd4z>}}@4Gg}`i|srtMg*eqTx|D#bRGXg}G79Uc&le>sMZNUOlA8 zd*iXqk$zva1-2E^zmI5*eNFtMv17&m7B(pU5H=U-JX5ib_+9Ker1PxD`m=0)HM=^m z2GVn)*3|r-El*8s0@8UJVq1y7HMR}XWlO<2NWTy4VlN=QjTf<(#D5v19`8eetWgY}fnM=DoNOb|TU-ld!XpF7s^cY4M-IR*Jt0>x*B_qdt*d zR|{-Aq|4tPn>OG2dt!Sbo&OQ+9P!V^`pCSSw*bz!F{%Lmu-YDLD`8~b&07Vp7Jo6k zQQGGwwjJp?3SzN7GVelfhD)mR%x{V##2`Js9g8j8T5X;+6k#tQ?Z1fiw^_g14u4sl zXMRh#gLb&f`s-jDA^kpfW32y`#P5dp*zHw&;ZpIJ!9P~p-_HC5mrMC8U|-^u&#~s) z?G3?9O0qkP-?}R0@LfE|d^772xUX^+Eo3~QA3R9>gW)XYnEBSS;ir{z@A~M5>KPcB z_-A4Cke-k6Ie3`F4~Jh=&eb~pC3uARN5c7%zW`pMoP8~s-)1RXDE=aNrQ}})uU5{$ z4bi;I4f_(KqTuTseLN~vAHLqP^Gx0V-yr@3xUu+ehLgqL3~nL*+u_?C^S+8|3Ac3Y zHBu|Mm1E~`X$`k_Oj}ZSz;`ldd?Hn_=p=uAecm7_&Z|l_E@ZC;gFoyT&?t$-dmV_81 zQXSw9lCvXxucMD0r8+r2GV6+hqdPg~-ToLD8GkHXqm$j)a?E=~sx$u1j(uMjPVDTM-;O20shu5jts8)QNz5bg zK#9qO2Y0sX8UiDeb10l8{%m-J#E*oLDbFZ)LT5+!4{9Qu*V!@iNINhxei!~x%J36h z-r2T+3ix!oP|C1dPnKoP?{y{}+sm|8E$XwsaOorab51OS0a}urGeq1@7XQ z-(sly;QOQ<-Vfg|?KTxo6@LH@IC+iPF7*KXfVAPRa5rfK-Kpmuwyh@haQx;y9P@mz z1>B~GW1iEcz^UR7z}_03qz2IJU+tnk)JZk-+M;-srqc;99d_w#uVZXQJOs5R#j+syFBK%*vZ8Mi(U;HYA z{ngjztmuosuPob-b@h{V!TJ3h^P7By=Y^VZz5b5* ztx7zc(BCo7JsZM}`rG_(-m>AKtSbcPOa20QNq@)uK4mG4%yYwKFfw!TEr*d=Zy}7# z{0v3#3d!>!yt2RDzpLQY{cRlR~&K+8l~*qP~QYS=SDDXMfvg z?t)9DKFi>8*~SWZ!vI@X8waqi0k&)rxO{+Z8x^oGel-vtC~YYd&Xi-}arklD=cp&( zC!CueWIi-ChOTi8i(>R_jlo*zB{2M0Um_uwJe zAMDt9hlUU{#4+=42Vj4QV}5g?hQdP~JI_fLIkTiaz`-or--h7aEXO>vo(kuSzW`p8 z<(S{DE{4k`rULdQMrFg7e#NoBqaOi}u*Z=aN&6gW_faJ9h}$ISVr z#=v77^WAfm1Lrt)UdlJ&H=UCCoDLc9W&Q!Je(;0BzQp3Zu>xZh{OzqgW?at zxk1N#Yi24uLtUt-jB>SVfY4^eQf z={En>a6R$I!wJ*vdA}hXl$a3gOt<}j3;W_%GvE(ozvRRDa(*m;3uN0D!HZ;j7sHEX zTb95}<+xtPwed2?yt~p59=FUMJ8#3t^mRcPnd_(!oWIPr;R3i^{1vb-dDL=vxg3v$ zaG_k+6~RT0o#%E1yux|<2j)puAHpBncCJ>!E2W-S!K>uF{1L~(N47i>xcnn~uCIW7 z@vD#Fj~zQ7>1twD+d8j+{nd{7J&`JATZ)}$Coy+l2%b~yn0a*P!uiF{twH8f#suK3^>(|mVPE{}bB>YEtv?C&KbM?ez+X6_ZTcIj8{iF&{l@V|c%y9lCdW_O zE%H0|#Szr4vQ>dATS6*y;;bAK{1Z^9EdIZK+tli<8f z&XrWyf#2WcOw#^&@KVXS3|6) z&%>`ooaIfpHyi;Y;~xnJBXS;u{fL}9w!mBLwW8VzZb8oWS_A_`U_~*j&cROaTj0JH1ZpXYoSpYBDE%&EziNr_XZIWj@ymPnn z+fw?pUGN_9?}bYxPZ@k*x6^SQzneY?Uy?kRVSl&n57i!ckMs$99Y1QXv-mTP{b;z} zUZ-ho+CV&Y_Yyl(Vza8$d*LnS>*qc>H7#aV)aN1sH zKoZxbJ>g98KMoJu>ty~P-;Nm$=ZODJIJno@+Axam6~eiD9k&th3QmQQ$vF+4ga32N zJQqgB|2|x}*Lm(no*xy#$oN;lJNG)F zpZ0KvGAH+*=<8HRxO18F<>%2!stcSd@d3D7nH?wT4*TL)-@xC{Josxet>@v{}K3z9KT2DV~;w+KBMg=!N~k3>sHu5>XG1{g(p(Lvi$4Q?qTKc~gWwOvzY<2~ zK6(|5OrDQmv||n5s{0s5=H7NSjLf;X7`{+$xBViF%s9`#FdA1B*GT;bGx4tNODo_C zX(vC!KRZ?WTOR5c_!p^@WAHJ1&QizW<8p2JEBveUjlaRa$+gD`_=LoqgiktVyj}ec z|L&A7)Yo9AsJBzjVm-EV6`Xj=mNN;?I_3PZl)2fn;c?=B8xEdwdM~05L$EJ?bs9eH zn0dC<8TgF!nSa24IQDxJf0F-C$IL031gHM#+&)V2J6YKI(=qd2y6~(&9X)@hnhodw z>6m#e3t(ho7Qx8O^SK!QQ2Z-lWc;h(Qt_9;-^+S`fXn}M%p8~%e>$m1=L}$jNG}`0 z@?6HQOI5;^&NT=1wRaU<<-FTTf8X{m_%Er?zu~_fJD=ED_^e#Jo`cWX`%3i>{EzJ4 z^YD4;2QI)Dg_+rybGNK`~S)P%O&`dy~k9S;mgiS{hM)h z1->H3MKxS4*C#&xr*He2sqhTn_A`8uQU959gbU4)n7QzLiCF;W`;PghOaaU!(PsQs zDc47h@8tc`C^%KQk=J<7IRFQhYrnq+mnheKD=h+-E7yF}tpfJNucF{6*WSZMlQY^i zbDBlLs6jfv)s2Rcxi5}^ks0fYg%hJ)a||ZIO`=_Mjn@=Tj&@DI(G0#V+BM@v&Eb|3 z-wM7{V%orWNlZJqeY9)FVeW>J$#W0fLGpKmky-D(a3}G1hEto@YZP8%>T9xMrO{;?eI_0uIUHLVPw`-0ar?%D)>UQYrX+-5xx}dn(q@`hJ9JD zigEp{7}tzNXT!l5*NoSN;QScZ+#?sjB{5PqxLo`durGcU3&*;4oH-7Tv+?RG_$s%2 zLp0y#szLr5?#eB^FA;+M8typ#4L(&9uIZXF7F7$bW%sYT8opZc)P`%jc5Jf_`=yR+ zzS9?gv+B6d=Ffbz15ZW2K#kg)90&t zEL+bt_vR7!r+Tg#yC{c|*+&&{rNmUh$h3jK;0qFe5k_Y0@n0C3JpaMfvaAmyJ2nze zdE#C3?aL%ME8aEV#LR|~@jnT_9PeJAL4W%S?2BJr3t#J+F-CPAT;DZg#i{|^zp)rTyyM)U_Ze%&rnoDxS_<{NX(6Pdqc2)qdj)iP4G>w8RJ!r;6|=J zFEoZ5%YM9>Wp8%Pm}Cg{Z??yvx&^+)?LLruB9#ay%05kklicHrnKNJA3g7CQF>uwy z_3vw9>*szrwTV400&uX2dpeJ2HzC+>BJHFp+|)JStWn9XpO9?xH-v9YcFk`?Zh{-( z|Bi9*#xOGD7&pVnjCb7vBh%gzVPxWy;9HaJG1vq~CZ;KzoNU`|GZ>jXx53RNrUiVv z#I%Ilh(85JCcZ6vw!yN1Kaw8Q6NWZKmWFf!$Q5k_V_ z^CkFY@xKC(Om?fE;2vibj7p5xv#ug|rNpm-k@0^7BU85@!>h@&j5bgVuaWKg1V*NBSqmf6 zCwvMc(0^T6&-3V_I|7Lintalf@JJ~hg*V_YsE&hElTB5H3N?~Nm zPzHY^>)H<=NOu3~t(vNX@VBzA@8Cnp?jF7DVfcI5FF(LXWZ9$ekFpGY@LAcebMPgJxeQ;CGFQXClv6c> zn@Jya8{Ay_>K1Sd*W7Qa+u_??`@Phba7)+xR!g;lTif%Cx&yvL&X0Gpjd!|#jHMr_ zfG^!?`-jW0f2Z`}ZQwSp9lK89S}Vo&39)coioNc-3a*i2ug7Y_wZ&ftu9xBlu3_9M z9Yt>z>QMeDUUG@&=|fs#qHFVd(T@^+!`o$Yiv?Yte==-+hG#i zB*jhX$MtPf7>!vN-CQNZ$XqKngKtZ52M74ZUvn6_n;7eB0kR&%ndPKOBA` z#Wl~PUxbml_In8)BRO;6u_a>Gom}FB6wwr`^lEr=4utZTJjgepQPAh zb1jV4>3aJV-jL!B7(vdB@J@-}1@Dpeuoo^(ai5>fe9>j_ffV=E5vsX52p>vu??25w z$YHo#maTw)Ca3NPeu0mrxSu`7x{kvqWZO@|$h4*3VPu}goPtkF8$JV{m7M3`3*x^B zUy|})hJA@qZE3@8?R7{J+@Y=QyE?+DZS8RvfYaOBb6*Br($=<(2<*3Y?RQe{g70$8 zI|Hg6{Yg8!Y!!T=oxS$H2>b0^^UW;Pp7pl3_hLyf`mtTy9qLv%Rr~=s*xqfTuXRIk zNqc)=7J>ctZY}eT?7QK+?eVMbf$x$2qyyYR{2k$r_B^8Qh3}Q?x=!q)PIg<$;L1*} zd6rQHU+847Z!f~W_*G}xe`kA7F&G}w*>2-dc$oNy!y`Jo=ADg^@N4294Zq&mHRD%r zbavGYyKEGexv=cD`b;=q;tSx_o!y?(xRxu1kBR>{d_mTG5&pNc?F0XVFGUR?7JTJS~>s+d)U4u1p7UtZ+{SeP_CuZ;54~6=?V9A?HI*F@I$sQQV+uq z+df3~f_vF(0QCs`h-<&y{3!gWoP&D9z1_XL8EaMPaJsDrl>ukSwf$q%^JDh9y#QYQ zm@Qi|91;H(xco8KJiD)eeetV4a39F(9`=XIKFWf#>#Aa9|mJji2o$E66s~Dus$-!=_DAL@tnz&2kCp#5Oy8X@$0c0 zkdEJoEfIeNTZwdh71l>)EPBeD?iHlVP>t2neVvchGGimTFf!|%3L{gVX>1G9*WLlF zKi%e6Gv0JpAYGmhv08dOY9%%z{w-K7oo6f7pDA_q4vb9xJUCzc1@PiG?fzNvW9@ll z7rbYz9b?%GmyUHm(0R(>17qEt`W$o+J~Y-X(f-5mk+F6h<|te~R>lnBV`JTx`rLFJ zJ|XKp37;No$9B%Zm1FJLP8EE1tR2HS2Vao#UxY7>wdcOeus_z0RjRk(x7=bqKCi~X z;H(L*8TZbH zpPt~F@$F~eVG=(aesO|p#>roTgA-gcULAs+32v(o;+iTKo+EkY!pMw`zYilb20jl) zX4&~LGC3DaaDzy%H-z;UPH@e5`v)*G-x|w@k@+rF!34J+(#ytU6OdlEAvO`|^(JB4 zh(86JhV=KXdSX)-+hqgTbflNfz-A#GlZ_pLbpDapF-U*oEC(ADe+cU!U7s#CAL*C^ z>`J7UU4>nZ^tKdZOOTF}yDuVKg>~blF1Ke598xz^)d5 zF?KD|%YKS25q|``6Y2O}*ixi(mSM}0-#-$B*I@)(igZjF_7Kwf4`VCEUxlslq0LznTN~;4I@sn& zA1^Jit;F9N+eZ8;*i>ZpHMX1hyJORkE@w|{I?_2auvti#AsZVMe+Zk4bo^ATgY`ULGCen{hG%+d(PMzq6?ubcM0XTi4S(nOy2Trv8TPFPYM6+J? z1e_)QY&ba4_A?sJ?HU;Jtk<(Xu+D+K$KY?;+$wsEp8PXK;mvdO6i!N}ws3}=Zy z8-8)JX&dS#xLlU4fYYZ){Y)W#irFre4F{*#{2};biCGP=nPThb6SzeD5gnf^@wwDn zu3c9FT#{?^M_^xK)Ku5MYO39q8gR|2_FPa4P8ELu4o0?%24M>eFAm_(&ZV6 zP3>y^0j%G{`qhIl((x({?k)aw7#V*C+<&^=j|1SW>9&1l!%xb3pMsG-#?{mC^WuL2 z9wGjb)7?a*`-&uN8>IWC6zpSfSbra^Ki2xyTa-U&{UfpYNMG9&U`vo*HiG3nNn2MT zc+zxxT`?KXo$l)Ima3`n%;~nC-+__-R;kLH?iM;WrU<(ZY5#gG?_1hsUHDzu-uGZ+ zzNa|{M&>x33nRT<>V0_rbk}@qbpf0|-Cmm&z)Qrx6fP8h5&V(V)yFV0b+{Tv`dpxj zsVk)SMG7_*>3tf&z9arT>_YK>fGrV!1Y0WpGVCFw`@O^1a-`dK1@?saPhxAYvH9y@ z`F^x*0}*(u?3ZouUfJHSDbGIZ4`BJmw5^9Sc)u)rV7eQFbp6C)Yam^Qnppp+#QcaK z>FuhC<(t%Yy%lWx3A=0xb_3G;eIwQvzd8y3F7u3n|k#OyMM74>RJCq>?Ne@=Q7qux(-$R3^&+dhN+VfHW%r7 zo{G&Ee*v}x>0>8?Efs$m)^8(aNP*k2KCXLJd$_|4TW=j_xWka%-r-ok(+s=4ooBcw z?z8@rSRa{sxSwr7x^9!Oe(DTc=K&a*{^Wrf?g*sIKN6dZ^nJ=y>}sTAim{dAufqE2 zvTO#7%szb#?lZ&g>%Q<1@ehTw#GgIG&3e*qV>Z@*%GQ;78h%Z-ee?|X52V}1pV&&I z`;98BFMjnpb%XSFUBvpx^eu0Ye~eu=8=H@GOaZoB{1w`VbQ?Q~^~JAps4JxFEeV^2 zbUkNle#`o^v8m&%KY;a-spq$0WcF7OMy73t;PJBU6X18HPTqr&IWFeF$kgFn@~^h_ z5Wr?3eSBqOeetVe%85+-#5P5`9VTO&BfTG6U`rx4CV~y_urVR5zf<wRPEKOXDvw|;d1J|z3)FnmPX)ls-y z_E80lOr8G>|04V182p>~Pr#MpuY!?@{|o+G{AXvlHIV5iv3|AGtq&*8wEaoaOxpiU zyKFW*Li{7)u`_KOcnc0nObDJh)8tf>;Hfk1aXJmomt_m!l9~1zECQd9n3F7rbbUr+ zYardmYGSjHE`K(57&3hb_GP5wU%`$L|43{Q>G%+K2GV(EVzu;sc?YYd^WlG4^Jpm%Rm> zh;)1swiVLrZH;Y%bX}!jJ0RUxbi}429TUK&Bb_q?I}qtQ%)|~tI{#p-@7s8#-htnd zai=`mSe|Qs+m!_Sc`_dBz^=rE;jn$iq&(OY|16fBWyg4vV1Jg3^Uvm)Z-IS&5nI4H zvA}Jr_&HvaQDXYZN&TFtOD13r#l-C7P#h{tsyvH`~`5K z46so4+O8s>nWX zZ4KWc{yX7zMRwe^J=~$lHS@Z6go8yke+Zr~F*D$IWZ68}m6$M$%=oPb&lCTAIA8n) za7mGCzGD)Bw-mYNyANAoU;JtXyh5Jod4WZAdjpwv$Y_E*_`tv-T3a-UtKZcyrD_+xkcQGU~;R>P}h z47r#(Ut`;0U=8)W#;uwk)kbxNv(~uFKa06dWy4ReaWfv~9`G4BxW>MB5rTbLR(;~8 zqP9Jvngy^Apgl!#_jJWN;&-uOw6#an9UgX$_~&BZ7ymqLsrbvV-yof5Kh_t&iu%Nj zLEk+X)g%@hhoV-*wY&;jTl{sf*NDF^_D1pFgl#1L#@Ke^Z;!oO{P$pe@vCTZqt73W zN{q(Fpe7GS-5QIHL#HW*lUoEsf(?Lx;+@xEFOC;(lOUz>mwc00DHao zZ@?y?dwNGTX^6cM>1A)iHbQ+?#3eSyHbXkkZP?~W=V^g$gLHffwk^^zcVXKhowGgm zZlq)G!FE7;*^bzI#or0r8R_^g*!#qPKQ{Y=NsK=))sHJOQh2dyGL59^=_8Br}= zY#8ZvdDvNK)QY$}W@Fz)I{rQE92Aot)nqRAeKedh%)`z{I%WZOA=2yp0Gp38$zOn7 zgmnC3>=LBQzZAO+>1|(*Ekrth5q1UAIX}d%L}RFvRoIWj|1owo(sfddU4urYMl%b_3FNvJtxpMQ9J3u_Z{yN3dH^IsUEKZAfp|cI-}6 zy&|sJF6>uG*VS(99;Da17yC8RW!r}>MLK60_8X+@c|Z05(%XIzdj+lR5tUGl^^uNI zF|>cAx4ka59%}GNRLgkmwW#Tbad%vYy&mb98?Xr|TGR_r#U+rxJ3m+1Wu<67>(?nEWj!!GPs==VpW zn(W5zK{|df_G{EEo%+X?qICRa*l&<-C;PDnkP9Egev4Ma-(e4-%-&Inhq2$IedPH8 zdqn(4vE@jws{;Eoy2!G>V2>f)#*SluMY?RiVNW2vjVHAa>G)IFe~>QEdF%zWjeU0! z>mwbnVn1=Ubo+_I`bf7E6^9?`J|qfT18ILvY%TF$jjfGz8>@r82I)SwF18-h%f@4` zM>^&PYy#4KT0`uONXOiSZG?18W9-f1zXh9!bX!Wo-iq|HO|VUo?qid&&5_R20((2s zd0Jxc5dWRnw&K4F+YaeG?Xh=@{~qkU;_rm*jC9T}*!z$!!~NJ)q?Zj~A3%CtU9oB6 z?}>c~>17|r_Ch-55$vN#FWVcNj!t|S*E|E8g>+0db{x|6{5Cd-^zj(NYH9y?td@?S zfYs9eiC8V&t|no%bj)PzY@}n}#cFB)dsr>)pM%xXZD208Q2a&M5~Rxz!D{LFE!eF{ zAJ^Nk+r|GSR!i5_4(v{(kM~{JuaS=5hb=`qXBk#Y`@g|z>HPb#TDt!^fYs9egIFyc z|1I`A@gKr!Y5!sD_el3qKVXlD|0woHq|5UYwjAklR$#Ss{-3d0I?pdyAL)2?6~_Y7 z$4eBpCenRNEv%OIUyZ$1{MTXYi@yQ3nfPzRHWz;jY%B4%#sAtQ3_IjlA-+)a( zy8Sf7rXiibC-xzvV;;u#Lb`8x1p6q`eM@g_I@0USz&fxwlbq$P)SH`tcbz!vd(Wu6%9*q8ei1+>C;Z(LQ zjXVMP0nRaVdB3GAoW-#;oA-pX;ov9s{i_gM@`?S;LIf_Cmd__e_`LrQ5z`d23v*z9Nb{v#SOtF8|-~b z1iodXYktp_xRHC+jrN`>3HCQxzuL@u_?vCcFW?QEZO)DGrp@l9S-gL^8Aj$^pb{9F z-`PcAU;L_sGL+bIhG4(MHS_$a2po~}Z(*!#i>-$$*x%xI{z(6Jax43EtG!pP1=ri^ zn)!<3;RNwFgcG;g_xh4xUt-iYc$vv%0u5M{$b@rPhXmUZFzJM4S83*d!2?7Ng7 z!1>}YfOqb&@7V8x_ejiMc%S%7VPxJ3FN1wqm)Z&Mbld!2bW^2v!Mo&L$FJb8X=vyRrc|t<0{sC!Ahp z@7XipzGbfYzF|LjV3}*?kjaFR`7ZF|FfzZZeF8@HkI*L!f{_`o7z}5X**eUI(Se;D zFHge5%4~Zc4!>At+viI#GVh(f3?nmk@k*H+MEduVA*_#zqvH6kAB@cJC`ZDtNzT#m z|H|B_av9?q3nQ~n--3gZGXx`3C*$D~sgnr&jrjM&2g=;$-_oZYgprB=7WT{R@3Yi5 z@Hg_V=6?3?e%r<>V1K{t(*xA`0o&&U;H(4oc+ZBB`5o?)FfzY0eG2v^ULAxF+T&4u z3xDhW-$MFf^&R}3T~-}}56QX?!-wsDQQyPgbN|VFFX{*Q2kB>yz(?d=yQAJyp$b z{An5$u=bE?`fie1PY5q02t;*W>xm%G2|oDIr(CRpz3`C&p> z|9bJ?0Hggoh)IA^)DG6w5N<3vZ-!A=$J_!Zia!ZPW*cvXQHsxRB%8oZ#h(l}lla?U zWXjXL+)YJK?ubbVV1r24NeJtUU$uZ+mAgmvwzr1wEO+y_vAu0zWXh8QcaZJv2&dUR zswdp5+)dJDeguA0VtT{rQqLLiW99A@pWkcrf%{7Se(*r4hfFw2{Mm4j?fR1Pgy2c# z?m1moli}QQ_XPz{g^}JCH4R2bxL#7zVPy923>cYun+c;Cx}CfOBNLwoBeO0CMkc2V z&ysDQ4bKt(TzH|>{|7KK`!OFzX1^4`OQg(8;X+xq2>w{w+iDn@?J9=XNSQx@*Ot36 ze)JvcQ+Qpuo9Qsu+OS4;VQ7@6{`3fgCdyH?j*Je*J=?G3)M!tJX4 zH^JzpUF^F?aN`QbM`By5o8d%RHVO8R*)pi(93#hVyQ&G-J8tVa9!@-N_e&DoT>LFy zWa{L0xYcpD+YcOTt>HGuZ8=lm4#(ZNRdLCxBYf|1+m<@PosZk&r3;)UF+JgQSvCXC zI&SMQ8%AbdJP9LnEI$PgJMO-_o$VbCzkJ-*?JMvI$ukm0E6>yBN5ROH`BgZ0+-`da z&X;u+z-y1YpHxS;RG-4@BxXJQx#au;Mkdb&c(eFRU}WZxiopJ_Qn$ZRhrijnO@dQ@ zv->Cjm;YwlX9axYNgIFDN%q}I+qN6QiQ-R!Q%~AD48TG0hhSvd`FJ?@q|HASMn|jp zJ=!#Q#!1`n&4lyB@4(0&7jXEb-7XJC#y<;2W_xGDb57cAoD1iRzW^?j@)W_y^a(5A z67fgiFD2&=c&C(k7mQ3l^A)^L{G~85$8{NuOq>4(K6KKyjl=MdlJh4Rnf{?1MyC7~ zaOFwcw^zZ))YV@wGBJO{zWCMe@ZWNtI?MUxti6tkhGWm#XD)FtGS}Ew!N~kZpazW0 zGme@tGQYvB1=l`n&&zdSWc=5__0Gy~OkiK~sB`c+xxe^_dj7{Xb8i;F<>#%x;yf|u ztzTV$FG!g$!WUgTr}4k=zxLWs{l_`$KiABidjpJ~FXXsLfKkUwF?XnjFj`)de&a^? z=Kt)q^eu3r#3#YcB~J_Z_W$fPKug#czq&;HC0m{(IQ5dfHwnNc;*Y@P;;(>x@vF!>$Ggx7r(j!Uy9eEYkGBskT# zzk>+CS-$-pK{j0C%Wvpl-NPf8#cdR z3&G>-hRyS`2{1Ch-=7F0^K5PsjJkw47f*(fiJt2AE4xoG!+tBt(;99a-dCab^&PaIJ8YgP zc-$R!*|*`K_(QPYS<2IeHqa$(j^B7Vp-Z@h9@A(D`{Gyk!S_l0{qX&=-qf%kood$= z1N#q2%){`*()N16{lz~39w6l$NV|H%`U6i;wkK?x55Xl**lmx%{$Qz-A@KK-=Lh%) zTTXQZE*F0V+g@R}B??Zgu;omG+f;;mt)-q*U|;;|=dgd(&$b=bfNTG3s6B`W60F{J+7! z*>b8A@CjM=Bz)4gPxU+ed$`q?`ge$@;8Ws14WAC%Ia1ERXTqK4>)(q00smp!u=*4J zGu&jJUbd2cpfcR-ARG(Vs0`cl2wbnyt~VY|tPEe8OH2}+F8&NSOZ?gJS@EBP|C5}T zD#I~IZ+k43d9iGMRRveccKrqaCCAj?@ZaJ;3!k<7MV*7sNz6a+KeD~&;qy{&7vKwF zJ1@{hj_ZpyPZ@mZV%VHF55vCr)xVVg-|!rLZ=MYg``4~(IQ-JTw!OU!qlWL&AHD*k zm-IYKBVc6q=}7oh@xKP6-LuI#8XohnEn5!k6TeU&oBzT8N%=3qmt=okhA)f%N;vrO z71IVnSRXyRmbv&=UkRsvZv6pl3DW)u))&9}0^V>XT(p*Z+l_FEjaLzJqQ7SG{d6qn zENNraVLz(c#z(`!YU>Zd)5Jd=Mw8akR%gJd(OTwRoC&{EZE~tS7%l&VZ{0dDGRK+= z&#w+&_bKBx3t(ho7Q$%%Cv4XTurKk-r#yam?=j|YjD}drw8G3iK&2nDZh#$Pn2iod=9}SQQnB>Ilo8Xa`9Kdr^SB; z_QkKF;b?D}nLj)RjU*p+1%IdP;>v`rnKdB!6c+Y;z<68Jy z@5T2xN2}}L>pU~}m#Pofx9vnVfE##bOj2DBUoU08!Sfp>c;?!vae^1uHNn$!1zd&o zyTMbL=fCQhWV?+O z$!vSF*+!+B!FO7}Y6G|Na`iikDg{pQ`nHbcI;}0-R_gXH_%6>}d#iSEJ6kr@-t%v0 z?@jrHJ|qD~x?fcd;Su5=2~QUP6xeU?nf_4S?fF~ow)MOf_V1Q`dXMKXy2tt#!^pJZ zC2+a;E8xm|JTre_6 z%RAWpTLJsxR~^}>9ql$o;4K}!s@s{zW-IJ>^p>4s%uU@3-|N|V%{o#i;~ z;`z0^*zK(Y*X!b$K0h8#?Bac`&t*w)(=Og$pQx598E!8A7VsX4-wT&_@yxle0zM`= zkHZ%v<|6EO@yvNd-3Q-iw@cj*-*4NVN`+HBGuMX-zyZ(BC;tHafW&w8{2E*|^34)Jh8SKF={!iilybB&P%r%HSP?%mZh?*yj9nO$w0c^n?v)gBjFFfwf^8y+U{ z!(n9lhv#8rj-wagw3nx=SxfhT-wz$=d3cgysKyCL#u#KbhYQElW=8M+lN%aKD;27dzNl+ zH|dAF!`-FN=>hlf?7SZj!VlWIRcW3dlV)RL;Tmb4d5^RvTrbTt@4m*vscH5&4Zvw> zcHi}cd!>2iS;-?XGJW- ziQh<>(ZG!=C4}|2N&fBdPT8(qaH-T!8GJ-yj>13o@qXG&-}Mt*F8&G_Ej_{b@XzoG z@t=fGOTC?ek*ViDU}VbwCtNB1D)_8y%Q^U>l;L04ml)L-?(3PkzEwZ=X+PWk`@z9} z_Sgx*en08o`osODoeY2ncy{i}f$%`@ulMx5NhZf&roE1ehmpD8xfZ@I(;idxVPyKE z2JrQno|*sZ1~?(ptF@T%sD|*3ncn|puwQP1(bes^-fILS<8KTj(`VicBXj)T0w-qL zVQa<=u>A_|8l(ZyWtjn@leeX@3&dN5-E5x6SkdcST*N?t(jr zza!j5^4tfb$NTdh$o+7t_ycfyrf255%z*o5dSOZuwkro7o9UTv9J~bwGwpr}!Q(SM^E`9{JW=X)5$LaaIhmfB<8&^JOnKgi z^JTjV;3b)!nUixVj7-cj7@0a*4zHG&Vt8$)y-xTPE|GeOz{t$uvjs-x9I+Kf#=i|l z=2`Z3cxR^flN)`H+69+pdghx)W$>X)+y5Vi%QHRmJ*f)#1nuoHu7ys*m6`T_rwaDP zuO5dV_slqeOaQJyrl$ioXi>#jl3IL*!a$C_L0& z+p8=%Tkaj6grAgkJq14{@lV4~%eCb*@H6&)NlprnoVj<6eeemTQSu;8#35el-FfA$2&?^VLXuUmOLyBkjFF7)HZJ zN3~TRj7+~Y3w~E(-h+`jx6Xl)xqg@nBlEt*`!F)sWAk8S?v>`l$lQ-FfRX917Q)E% zV;{iCT;t`#$ow9p0A4iGo|hNHOGeu3pQZ4!k@o(5Ib10Di{PVD<{x2X%J376OrKm1 zBa^=ZMkC+n9QQMf%pAYJz{nh5$6!?Q4Sn))7@2FlUtwg%1b%~&8BaI?BXj+85=Lg8 z%->;T#^F!F$jr5V8b&QnG6r%6MrL390V8w1_!CB^o-1Kw%3lQ|Q=fmq$SnIejLh}e zSs0l<@EnXxJ^uqEQ~&2-^y_iv*S!EEv#&40$Xw(73nSAu{)3Te1D9ZA`n1b1GHu`r zjLd$ohSBYPx!3byWbQ-ND0r0ZbJVNwt9E~>*SN2F&C~O7sTOdX*KGfm0+))v4EA4> zzG5`T@@RX{k_7vsJu~l-plwz+>dPE{F4Pj<;KnJvM|BbL@Cd z65Kq;Yk8P)o)++s9DAKV6h`JACkuX7;-7pX5cO#I8?Lh%>D>m>hrcteh7#u7Ken0}cxIejy$QeR*>7+C5B{HAPmYDhN}GQRe#@3ejf2P8`!)48{I>0vRFLfo+Iz7I z*bhqI9)d&Gug1gU<$h-Z=d}rT3?~2wC&;xE?2BJbgeQ9DyY^}lJjsrMsL8Brvh5oy zV1KflTc^NNJo`BS$MpJXpZEu3{e-Y*=5THZBQvgeW7vy9Z;a!6(AY*u$27+J;#W7pt}Gjd zk-10q;P=Eo2S#QraW3qOUwQO1p4~4=aH?nbO90Lne*s(w>v6>*c(rHiq!?Z&G3((H zSvCUu;#afaSzeFE|IgC7$Jtc%e|*gixlW}hGAEaKx|yQT$ed84hsLEsQRj$46oq&m za*n7`6rFwcxMn7oMkzDy*E**t(uJa^aHcDz=RrI_VpzZTTI>7A=k_uoq!0U2x5aRA z%zke|&4K5{+`(lGjTMMfK?=E3t~?j51?;rVi3wg6rr_i+p1h2nn$enaL47crl<$o1{D;d+Z? zZVJA9k?X7L!wnY2o}a@v?;6657P&dA#_%<=Z4(&Tej^7)wm%8Ltrx}8cqgRFh1-e0 zJ)AGw2H`G?V&DENllft|K=#`WMs^%{FWg6Y!};vE_%jS3M2uMX@LB_a;i<5;-4B;ZnI)z6rk>dwNeA z&($u57t2_53A{wk&86^C=?9j<%UnBGZ^3WHy3C=CsWP}s?hBSP4qxut&t>ox%iXzl zC5-Gj(f~$w-o7D>YQfhB@$l>FP8i)ftSg)Z^0|YUk)c^Ur9J6+g8GQx%BgI!*9E>ka`Dx$NhJs zR=_J_#dq_JjCwbwpL#cD*X=(I>vv=GPMYtwzX!i3b6+dT|H_#C238P8Z@rh*RNV!K zR>tgi1H*8+#8kj*R>pR|m(^IUg*U8>*>B!$gcB=c_MO#9_;-o_13tDgc5w@R^`9{M z$70^~{T~?F{r(p|zA{$0p1%DA{6F#kAADvdLs9+U zE-T=QnEeKpS_Q9?`dJOHmO1A&@EY;2h1W`bu7lUfcyB$tKK8~tnasUxpzIsmTxbQn zcZ2JH_Q7p+mYZUB zU3x3H^(Hs|&xPAaP04oR9}II_vj2}j|?CN~~S!XIvO{mDo0j!kZy zxfA|!Q_Q}LemA^N{NKPR^cCmwxA1=QwvYda55UOY7kmdJJKp;q{z0}q2p^L8!|)OD zABBeHeW^n{mPwuol01AAaB63#bp^59F98;6!Zdz)Z#fNjNG0p?nB`7<2FX z{s{g^`mSy8HfdwqIi}m)eOUl*xjkmTEz%0UVSB8}lJr*UM!5C%n0=3ZF5G5&%zmq- zE!=LqyWeRK=WUO@yovvMI>PzeV+UH(?*-v5+hY&i#`h4r!Ufx7lVaHC!B|GUQUHL`6JIA@oe(+j}OcDeh+=5WhhZqBe3e8Vo+ z4sV2SlJswewWOmygFlmT&gbywGXD93^uKWV3BdXb@qY<_>H18y8{Qq;GR*uxz6ahD zyS*RRdi53jRm`phRbRtj$K3k2z3^VS_uL2Xi`g}V>KphQX~W+#X8Sg_Y)eLKl@3?? zHr8)7{d08~S$_?<-nZ`m_iVVqw{HB|5Z2;X`{Dg^O+Nr1kZb*S@ON@u{vQ5b&dnd- zA7pHBknzSrcfR+6LkC@77lyU?)gky$%)LkbF!M`?UHzoNwGX>@HK~B{+qx}566Pv^WB+daPz~lPR$q_w}7uZ?B+>Y!Z%7f zH^HdJO6I_ChI0?Qe)1MLPtxxQ=SzGL?kefr4I{hlJ#eAK^n_7*SI)IwFtYO=y zuH^ZP{V=k1egHlMuguC(hv7=`{|KW-JNf?6PcX9aKf}oO!@s~s4#zfSQ-??4|4GdM z!Dl27XJIXVm4Z{!{wv{1Y0p2xKgQfQF@J)8ish7<|HOZWe~!8DrTzl{BJJ~6_*XYC zt$u@lll#6S@R8Vvm8_LjN8zL5|DCq?yRl^Yw@c;;o~wkK0*8m*PjI8 z&w@M$-ga1$R ze}?|yjJw~d0oOa@>N6W|aK_!sH-vM}xIQNUx0Lu+@J(l8_WPSR!|1U%_cg6yWXBS@ zaQ>Ot*?r8F1>u4-u`iaTH&Wf;o@d+~buYNz88>$A4~NdU|JK9s2Ys}w#W=^TZROUw!Qy!fkNE%E9sd{)}e-|*kEp648VPVNoQ!{=l6 z8y2dHYkF18ekY|Z+^))9o7%&9Rqoo+5$+-}UE!Wpu_1HRRjL=&!e=C%v+#LIzY5k>ZeChlfG@~>%|-a4%sj*+3`a|<&7VwJhLWY0ycuoGaylH5o-8k+SSvsGm!Z{=1lAy zWVW4)Ekh=LIW{5wBz8A4Y3{-9MP}Q5*z@AA!nS$NrQa5thfJCsv3DU8-x*tgOgi1L zJ(1a0FYNuu#5{l|KWasY2D=!0?m`rRtWXjSWn~zLP5ZgukU9kn??}qJ;OqxBgqmbEl zGdK#2>{@MJ9e4wg{O#Psh$cCVnP%7BcC~#^z6O@j+})WcR-yMhfGX1_HtzExjwdm_#0vyA(LifYz{Ip z0c@V9z5HUxn4k#HdNs2{PpkV}~N+ABG))Oudc7mLL;TYJA9~vmCnu znf<%A@} z7uyb*nD*Fw@dvTx$mFvEy8)SfZNw&!$y*YeLMA_zSiRr*)dA%#IO6;Zu_efCTZ%11 zW?##(+mP9IJ9a;^Wx;CktE0+0gUr6pV(b0xVzRLvE|4f3*$p3el2zbGVvR+3GpYfyOD|CgKhJN zi)o9^L#94EV!MdHE4Di_`R{=pApU{a5VCCv8$o8jQEbm+F3n!pGGzSAvE|6*xx!dv z^0pRx9+{Xb?1n!j&)99q__t$sAd}~v*xktFXAf43U;T%^3mJbVwiYt!*T%LJe|u~m zGU;^0<|EsuVY`UGE4JvQ+jcs37BcJQW@G0dQ{K7Q5@hyOicKJsW)iy%nV9X^9mvG& z#Qq@ugV+=@^-zh;`OEDqfYr#PqfSv4Wb&Vht&U854QxGR(#*y-Lnfv72lx zK_>mPSdC1KI!*qO@z=oSAd^l2TY${A-LO58iRp#yhs?J9u_5t?u|ttrZ!-)#3YnPE z*a))a!WM~tI(7~+>CeS3Kqh7(wgj2_EX5|opTzD*ro0ERDe+fgk07(Jqu9j%T$)Mj z4rI!*6T2IkZTA@e8Mm*U*bQf0{6=g7nRJra)_=R0Tx?Hd^4SYJ5t*1t*a$NDjACaY z6EhoIf=pRTu~Vy@e;T$3nQfMYnB3Yz{K{3}9P}KNs5unfSKY z^V-E%VR@#*#w(TP=}?-NeVFH=!tl^E&#tE(1|z#3V>mof{FC5FnrG*$qi~6ATMBPT z^X!`TjWDw7E;hl)`ZvSKj%l~R3GpZ4Q81~7S`fd>2SK|zE_?BXL$B`4V4LJ zdhS_|EI3R2)!=HL{r0P>4p;Zw8l)O<4bRSds7v5WTzOSZPp8%N%)8cAI-FC}Gw+L5 z0l0Nd&%B>m<-%=hdgi^&sx913{O#e8_`~qXnx1_p{8MnGrf1&atfKI;nx1{%{#$T) zP0zeDTvfn{nx1`cd=mb!rf0uZ@lj1Lf=nKwSdGkgrqnhV*}QFscZh!{{8>%Uyn|YO z4kP7N-emS=jI%0d%9k2&#wE*hI49r_Fg*x=hya@ z&F3B@2#0EWcAZ!lj@0(tvqiA3?T)*u1K07~n&-N3UC*vpSM}g}vaf9Ta?h@-QT5>~ z#oqwFO8i&DSIaSN1UK^R8VS`HZtU5$KSoun|StrNtFZVc&ywpIUt|KUBgCX?q=u7|Iem>b|5q%~eu62WZioX}! zPvZN-10-f39O~}bb%0@bgv5`8pOToT;ZYJZ8jf`Lo_Z&}p^C!D_W4s_WUo^%z|*8| zUxbmp2E7E&lDeG@mvr~+b5Eskd3SeBseqB~16RSwt`%GjuaUZ43%@ThAHa$3-bnKt zaT4Ak`QHhDCi(vy{zA(BC5-Gk#@#To{mdR1*}DA-PRV{NVPy03BaG~|>?au6`u`dJ zt-JT%vHah91V*-v9fgrScYcSFJzxHSk$qsNg|AdjPtN*~rwt@e`$hNEFFtYz6 zpMcLu-p<0v#{3NTipn^F7)jG>A7$lNwY27uF$j3kGF^O3cXwAQkIS|viZ3a&X@cL;Vy-) z-|h+*6uN6=H@Lgxp$FWv(6i4V_k!=I9_G+DJ^=SC^se}pXTkczA<07+9$e_z`Mn|V zDDjVm#}s<@fBCWS_(IRF3z`5=6#pbRQYd3Kcxs^+_>z51gNq8iQuCkGba+Og>z`-B zvm|e`VXx4$>x$#>oI>wyGfy}dUQp=9Q48UcLeD-+TM92J^d2$KJ}-sKrEV+WHInDG z@CG@)8{sX5o?Y|26;6mh32&49Y=?J9S$4voNt^i`-YxaN2i`03`{4bB-U+j&=m7jf zp=bZoJP0E@RyhPCdwv~;ksZ^fVAO1>YOX5bpXHeT0w0kw9)*t;dUpNipYZWQH(ojc zpOG}r!siP;yB@v@){-C96YeQvk6v&u8Qb*s^y%K7eOBv#@R{DOPdE$f-V)OX?&G=t z3+{*S_YTfwt+;vse!weQs959lAnp7?SFQlu^Fh~7_JSkgkHT8~sxRDMuFDU>56QXt zF!k`T>rX0S{jf_@4S)xDy+1eS@<8@A(6iq+55TPly7rI@w;AZ!XD-^p?FPDS+ru3O zx_Z6?&Kv02bxDU>_#LvXeLiT6*M;G*Xa9>)gWy4KoTeW0bj`=y zd0h+cH`s04e=vC)>=m1J=3!V5ku)ENANSnz^-sW0c=disYoOFn&i$e8n3lqNn2dXe z(?1XQ?6c3=aQ<*t-XNS3e$hH3< z91(vM-d*JKya(P}${;7oZ4DY~k^DfYt@J!FHqgJoNugbmTYw&B{Wt_{b(}risF`5m}c5@)=b@+Af zwZ^QQQZYE@#?MUYu?AS;=fU%&JjDi);a*EB&HJ9 z^S#|XxlhvE>n{K?P7Q>6Z;C9x4sU@7VOT2lv z^FOmch&9e18jm%X821mBD3lJz5Sg zmomQ1`0#BzSE*{i`fb_v9rztN7AxQtu1{0%!tcsG?0fKga=xsDS9*3GyDEpv-B?al zz!jc-XN6itSys7oCk)S8<=WwFxKjK-!dm=lHT}tISKcJNZM8d3x5GPDyL-Kz@Mo)C zJ$w%DUhVE3_P}4Qc5UNp_y)>^6oTJt=XR_Y2 zYfjQ(RQDa;0hj?J`;Np+IBUIU-=|s)t}gx>aQ=FC9SOoc*Sq`KUa%Iw+5m5mzJ+9F=Rj--nQg<^$Iy?LW?nNGI|P|+AIIv8Yi zs>Do#V+n8IAjXOwTp}^0aJk#Bs(?4R{HTra7V&R|waWu*cS%3#W!;<3vqJFHq<2p< z-UBcV)=4kBSq6Rehwz8e9zOC)YJFtye@n6D=*+mZ8!E5`wVl5kwkKLQF0Dl`YzTFI zF0DlvI|_Y2j{jV+XOOv%K8rOn{=czC#(xfb9<7;?*0c(%#jomo=>)L($fOg*hLA}oj2((h-iBdEAQLkZJ4*bcvCp8_pG#}?EOrd)!E;Yz zv7aHc?dRCt$dqdjc0V%dAHZs4VpR4=UIsGTW@39@>ioU1A!PO&#-`A#NgGWF04J06)lOu$COAH_~ZCY@L2boWX_rU*@`0m8?_{e*4ep=HgR`(Kr zZ~PCqeMPa62i>+&tVSlEsxRD6((Dh<5&v9xvD;QHf!`8;8N5p3SHpY7zYjj->P;Pn zQPbyGE0ThLlb9p$QFp$m-{C*S{~s8c^GN*{KIz(q`U^fUF;%d3=b%#CIF8%g_@_SH zV4J)CHiWhK)pmHhj14}9KlWxXHt%Wq1pY+E&pY59G7i}Z?{wE(^(p+R^aH!-b9TA$ zTPd8_<^9-~x%4EQ+U412(<)&tG3qn;Gta&oL46K?E@PE1;4fsqU&3E{>lc~v`EJtR z?afMXzh4TYwOe^_$(t~;{>3ob@Ch+X;IiGGeSgbxSWArBL%+Jmv(MKA;K&{~CmDqk zdp!I7!6dB3ufBr6lDWID;jg8x_QHGJe^qK9yia1jfxnS4)wl4sazC;k-tYZk*UBE? z+&tipMK+vsK;{tO`~&WI1>w*EcYhs*OC+Wg)(7PN~fSUnfMOZ=VT z(04K}h4ptb&io$!UXJMx@DDCO>L7ej@_YzBB>OrHAC~_?QgEf*r~F7+e)Q}+@v`A- ze)PUy&byJDz&YX%!1_nezAI1t1pj2`7Fcf#|19bM0w3|*dl-(wN2LybhyNqv@c)wL ze_eb4*8i3Jwc{MS zHBMqfX{YRcP#DX*ti4&+q~)sgQ(g(0+9a)cDKswebR0U8_q<;hq1i- z+TBlOu`M#`mtqsBdU@8hNo)%J`&7oYl~|3ug;}|(8hJy;AHarCE8@dg-ka^ccP_Jy zs!mJ|x8DF(qnrEi{L3ZyYq`7yuo3jO2r}tJu{!^hH>R9#9tBC~u2Wv~YtnLp*wEdlypxU7+JvzY^h$Zw z4N+_g^&ii53ain&a^`sNA$_#FJgaE{8$l<_vzkY-CFu8487)e&2{h%w^u|eS3N0c3 zmDrpD7ZbqdBeQJ~n?iP9SdDVu$l}=|;?aK=W;G6AOOQ#k)cEg}bg&_G$s1WM!`KMA zq9Q90#g?FF&t>M6VpHh0imdA^u^NRcSa1JN(m`h105%_)_#iffOgdp~1etB4*qrXC zyh#;V4FcE{Dr=H8++EQ!+74}WPK8a1CEf1u(ti+bgbm^30Q^@+UkyqWeQEdL~Q{D?Xe2WlUf^3@D z6f$X6Vl}$031xYm`a#{!WnLe^hLG7djE$fLr!rbbu?b}Jk4=fc606a*=QD3tG4_Q{ zKbU@fDK>#@onTYQ?5h&1(X;0>8?d6(%SUtH;C#o1kg5MLHiAsuMzJNx9HUZf3Yj!3 zu^O3jsW|yZrd$DRK2oc)a)Q_pGUoVwutpRI)T1(_$g2w#*uYsMs6##e9y?dCQc!mY)h3+IbJ2#*r~XgDJN zC|n}`Qn*a~%i(hE=0Gaog!q$iO5!WwBiiNjD6GZL3m{l~7XSTw^IhyTI4y4HCsjI} z9(U`7GU5@H5s$4>&7xSHo)K^JF>5?BU}XF%6Rw*P|8gboDXK?2vhi4rtUnvRJR_c4 z&OKm#xLHR0p^v$*Zw_CV5x@U8=7C$ns9rhG(6xeFOMEVABD3G9;agmqQLIKbKexij z=BG_YyaXA4DK>#j9+Frse$^IkCwXX3n%yN$Yyxd2KS`{)aVhT*}o z-y!hOjJWzu-KvJc<0WPS{BMbw2qRk$lVD`)`FZkyaw}AeC{|Ave+2(jSC%MNqjjcS z)8HaG7SrK5lKxzHfs}V4+b(i3QLIMxc$L7&9>-F6x$Nt0;?XZ0_b67ckTl=Lzf#h{ zYGl(XhmlRE0$wBgT?=oJG&jNtNhb+!lbG$K`H8d>Y-ERviDEUf^|KS+C3XH8yjzax z9{2}I{~-K-lKvUeLAE_(HL~fPh5wdq&%x&<&sFdR+4dsaYAGX@b&{@(Dih9(%Q{Io zEAH06RfDU=JAG~bYp4!akGuaqYQQz(W=*M5m&A4cC2_mnG6+X5iJSjPRTNHK61VU0 zOv3vwiQBcK2jC+Te-u7`N!+f*Isv2pg`Be|VPxMY`4{{@N%Q|;l(UL&Yl%^Jz;{Sp<+0zqxP8}R0KPUaZl4ox3OCDhbOBmUhRxq;r{RfO}o4FpoLH2bcjBGkL!N{%$xEV%v4M1xcnKjHR z7Y@m`VR(36{G*A?jXVjD$cx)GDkI^i^5S+~)6?)Mi5U$)Bl~(5Mz*|TU^K{lUt=tc z?0UIzFtYi74j!KuH}kq`0{pMMxc%S%-|$2!`y?3Ib!gAS$gCewlVN24>yN<5u33u0 zC_aJz{indlei!ux7`2+6)>ci0k^OIO8vLT<|0Njx@ha~~EP|0;S1=t$Cx2#5+RHGq zb^Z#B{vAxuQ8Qp<{WD=?*C@UUBYP}fgOU9|WfqL=TF2Qivgg<9Ff!}aRSZV9j2?_^ z`f(W9y!kLnd!D(wVi?(U=D^7Q?>`qthxm^}&4ZDx|M@Vo=j;L)*>iazTp}^0FtY0^ z--MA(e=)oyFK*wFyA($D|F2~*vN3PL$mYKcMs_{?av0e)3~$58w(WOdWY_GifRXjT z3nSY$-h)?3`m5nJd2#!W=(RAiZF^l_JcR80Ggc#;&UzTxI@|ywv;JRggf~e(H^W<` z?QMk8y#UVNlk_xL%C>^mO6;MgM5hSRY|&&^7^IRmT3ufBwLOa1JDzmmLt4eyonaUc9m zUfix7`WD_V@dx1V(2LyneNVli_nuGtM;IGHJzq;}8^!7$oL?P;59P(}`1vrL%8T1I z-j(o=d2zeu_9qy*_iDmFOZ)i+{#EMXH~0wgysJ$eg^~T={C61H`P)BWWZT{`7}?|X zCwyGm=Lz_voKt_n$hLt~Ff#d9r{Obs?z(&y)^hHvj&R4gU8AV(gzt2Hm+Ay}a{E>J zaDKe{9`dPzT&IF@`;0>xjGA?2PBESIk6IT-_B^TwBYQ8C4PP2`=gVa;MjuD%TdstWjc))WyWfT|`qjK6^ePzHHLF*{O(dV(S!!g@@c`U9=&r4~aJ!)E zSKGsRK{r0>2;UiuuROrDpc9-QjNALTARG$X^Hhc5Q9;)~jD{n@_@=(RpC=0IyIek1 zXZG9K)qeoKwzKQ=o5IaH$Nk;(fz9ETon8Od3U1xmU0-tHeAzY#M>@w-rRF_3a7kx( zyh`CjXV=D(@Q%)|4ex|^OPYJ&Q{q1jpXu!Sy|eK7&aPZluIq3Qy6jk`4fcf$qJ zmby`vZtmCx;7B)j?nL24w|M6LlqCuO(9PxTAe`zZ=NhcVukMBKb$z4yCuQ&9`jb{Y zsM{W{e!_67hdW-Cuy6cYwBh?)d^((UpNp>sBfF-nI*jbKwFayuUKPe!OYHJr z8?IOA+G;l3s4#Ayp=b=}6uSHe;C6-X__l{TO3a-wvVDFhIA3CdFtXRmyWq}+al0O} z3yf^r>k8jp=&r5z!1orq{_USIvgb>87}9Fo4F}>m5ak~~v^?~n?FEh{hs0ZK&T%D^2 z;RoaHIi0?gy|42J;ZR?f|1hk@ulf2${S1YN#`~<|o!e>{JWRG74i9(NU-cyX zr1(cr|0CS_o(>~>4a$I#9p_}ii4k%8PWU988sYL*32X7Ik?=@2Hc(H&Pr31xdK!K@ z?w)@c1&@lmb;6_J(e4~k&%n>fz09+W8=s9A&t!}`9iH)Q-2Trv6D}41n{fHFal2Nk z0#1lO3GaT^-52bEQ_o61pN&U;axqbC5J%nl!{JcAl)MR+F>swR=j<~$3C>)iTDex3`AE91=Uy$QF6`mG%-(z|aeo@;0 zOYlo^`yLWi1W%8J|7E@y~!~#Q#q4->aGl&y@4!RrpmoF0auiyynLL zcfq08;$O^UtR9B7_|+_UmR!?k!?UHGybiw}ch5@1;F#2#M?3W5=DAT7g|+AUD;0<1 zk~bgr<902vDu#<)KdE5RsuV7j`g{|9Q?7}N;l*UVVOI2L3m=B>rW=ZTKsA` zyj=G6HvG1nr|-b;xbd4>K|1eAI`7e*-*aUT!-L;*?QjT;Y(M`vJVN{<;mCWg-;2Up zV$@1_W!!yxs2nbL_pPb|u5e{ktC$mB<<7@maA;NBKHC+BhpuvUH4H{?zL9o?8V-+< z_^~ju&(Mv7kzF7192}9DC|tBEZlCR)4ws34Ib6QV<)H%JApVW;mR0T?*$Tfe{tsYe z$CC*d*|Av?-m%K{Z#&^HR=I1zmoOS}E%PC}VPxmx_P`pyS?8%%!>e7Nqt?J{q`zGY zuXSS~wGLh;<4sVydeGGpb&s$=i{rLp`ByOK;Q#;@tt`Af@;hphf z`+W4L@IiN*~W-T!`Ce46lT*y5QQw)iARDMsSX78-S60UglaD z*?ZWgaI*{U`q&)KmplaF$OU%~8@&*ZOd*}6>dGiqqup=vztRgA;^oNrE3gT)g8S$s zRwFw%J{2yK_~|gR{+HodZd)}QMrK>}I{QK<{U}y@5+8@>NIG+gnJ4+dYGm^>A4WEv z1u)vWjB)tF3-NqpVuIM7$mF>fwjVMv{jnir@)pL9LMDDRHiB%~u_fX!#g>b|0=og3 z{cgl2kV!L%)#6ugz{uuv(S>*hGVz&MjclEiz{u=Nm0pOKExiz5cT?uo%dt7jTucDl z8hsbcY?O=biA+o{Y{6U3-wnID%=x!qjZFMjEdQ&zeW{Ba-;43ff8bfCC|q(e-mE?I zsHLzLztYS_Yj?l!Bs^Znd;O5nOih3poVouxm9MKSzink&GgSkwr~EGtagUP?=PCc{ zBV2zw!f2t1xf9M;ergrp3<|;p%1>X-dW>#xPl@lP{0PcEoEC^;HL~gShEa19-v>tb ztR|iN;eN^=Zn!@jl01ar!O9<&V%^jb_;E?+33#aT#~fzNISd}5`~!!H83{inWqBGN zBk^P5amvp%G0(x{CCv%SPau=GB$jt)xq6rcM`YV5JWcZRB3vT=Qn+0F74T=`{~X>e z>Fj~`NR0%ZsPiD0dBO^VY)~ zB%O_LBE!!%-&0P)n*7*rWM{&ezWnFt>+~%Do{Q;iR7RGst7ZAug;-ls9j+<*G5ehg zqYun}r@=*%&UARc#2sv2Cqn%~jH*MKjn z=0CKSyw!wjRdeO74I^8|Ixw>NtP7)YYbkp@7+HTdd}%ems(^Q)Uk0PNiMbp`Hl{v| z&iA2QSHQ^nuY?=$&ubr!Z$tR1YW|wFtj)U`M&Fx!HiD6jZw#X|Yw6Rjfsyq$fzj3L zh|hsri2pjcWi|i!h4kxHD;Tv~M?d)w7};&Fhi|CnUv)A4CUql>=7)GE>P;}RZR2Jb z*?hK!k=-^IMor)1+nTq)$og-E+fcXb_+DFE7>!IZ$9@}(Y|QO2vTdUsjBMLz52I=8 zvaV7cU}WR(fRR1cc`&m6jxe(4&YkdG;_nQ1sph}2j=Jg!-(Ag5u4Ap{J#axa|HpM4 z_iiw#Bi@x}DUQLG+Q&5!oZ zY_7(_I~gv+b>|GLOKz$@TY)%5@0oU;DoUpnCzQn(nM}MVi!ZrP15#vTx z%h$*pJCz1!)N*;ttmThFrjHtp)mh@N1|xfpSBI|^e^VIQzOEUJY#E!wEo!-I#C34X zTCP871tWXx{sG@0@i)RZx&5k};akLiD~zTn`p-5nvgx;l(bC?T*Qwj!eDMe2yJTOT zVPyN;E-7c!|#TX_1^;*)N8 zzIwvQ#`J=b?Mr*ZGsHg=o+a_KVf21C#s;s$$Zi{hk?r$67+HTDMz(MF;S%we!f#5N zi(%AZ1LyJ*c$vh!1(%VgxkfLC-xmKn@QPZl|9KaFPtsXg%U@CM%Kk1^BYW&BU@hCK z+FZM9yRv7)LuskZ+h`43?8k+~KG zv0D6U9gOU@>)|c3?N)fd_z%FT+Wx=0v3|G`*5X%nX#aKGbtDb0UdN?V1Fl!c3pj=K)Ffb(VBARMaW&V?{MxQ_qK2F7MX;87AY8XjB6wWV<|vi12K zjO-Y7JdA9)CcqQxxNFcP7}@ye;mP8Uz{s}GC_G!XeI1U~ao0o-M$6%>iEk| z-!&IrApV7LNgdb!l)}jF>rMEUx-LJr*5!Px>)L!97}y+i*PUMvz$kMgi&1avc8$Yl&C&;Cgb8 zmJMgSb4Ojud332izIxj2DjUwZ)W6~~H~{NQ{h;~oiMot-ewiENO@JepxxP0FC&ZtG z^<{EzdpUf$?5jTU^?m!FP82Sw@7uMbrSQ`F{x7faEum#_nZzuI%j^4gEnEe>p}ueb zo7f0%k(jM;qP}m}cO_wD*OPn*@0OT7aH_s<|4*-kkJR_=e?~{)no+~4d4d8T^ptvGJn$0w`=E~ zhLQchV-$?+b$>KGrlD{D`xpyHBt8mHZRp!Ib<^M%#s3ogs>HtrBYWRH3r04b*|68p z)kz$lBiqh}OB(uiU2ZA-9x>+spp~$e7&(V(Us*7+YdEXH z)f@XG%{s9faJ|O9U7wQ;=QQ^1dZYlH-`KbR3k2a%V^_CfcvNHGuCp2qM;bF8W_@fF zE@|xBHA|&%qOot+G9}@Z?5h$!E@_^Cbz@hz>KevK*SKSpd5vEknR|yCSdHwtnFZ@6 za=dcj9BHco(hvA{{X-?J12Q(d7QR;En^LZ(?phOoTQ~Jf=Vdifxp2Ft{*aB_XSIj( zoBHn;Wag+K9BJydjl#OAyBAZ?g&d3P zxb9!)#yM%QzE0|=CH2tK#bm=dEnT|`z*_vO72HbV{{jEQ#i;Ay8zlW3;TwJTp5dF| zo5X)Je6wuZ8gA|SAC(K|y7NWdLYutB&7mb>eT(nbFWpKV-s*4L$h~J2*0)JIx8uLv zZ}UF?(?wx@yKnz5Q|;h(a;~+9+xzzYOR59hLAJdEzC+q!9-Qa9|93jV9i@-D6TVaO z--$Zu9pU2R%o-s)ThX|IkLxFO|=J^Ie}Gg>}9hmmuvb=<4SLtb=ll?t<^~ z*O_OuRcE-f)MppCi{CNIT({~9-y`)_z?@Qni)jMq6u5C?0B%{}pEuXjR&eVAcV6eh z?F#%ueKMP<_As*dJ{{n^0{>tE_Xr)~I}6+xqZ6Dj=?CFZft#}m!$S*Pe=-anCEJdM zBL#kY#eH!UE-LUFZlWHh!!ru}+cz=iFcY3t;QEl+@SFm_zloU(FDUSz+r+qNA-qWZ zB`_-9#5q_BFDY>2nWb<-@|J|R6}bLqJG`U7otr!1-QwQ^rwUyEQwblDZI8moq`ZH^ z$7S0Sur6?8Mb(Y-x|=&jX)v;Vemb1f%^iyX9O>rU^}115ON_dge0F!oI@uk6cj@zc zz&+$R-bWelbLV?0yx~6o^KHon3Z~{j5J-R1hEitMPE_COz>IwIh z_S1{J^>SmFD6D(=?)%ZbIljI95$6BvAROuK&aWt}#jpCneSG&!%Kh;D(l0##KOp&k z5Pr}jv0?CtzAm35VPxCnQ!uh)>8IgQ zeO>z;4M+OAYh@HJ>Fa-Q=KV_HGVw2m%lo=xT>&Th+BqVXgj0Q88?J=zre>O zZzte0ecfE**}lF)>o#RINW-#*Q0A`t(VzEo^_&go_j6;aAgudIo%e_P%dvO}en{%- zVfbO+t%V*y`x)TsBmlP@;P%@J&KG|W?lQn#f4jmx2e|Zm!2<@k^K>AL>^=S?FtYRE zkHW~^kHDb;?!G<@M+W%SLY(hWxM+YIhfjym=bNa{mtkb*5?_IlO=ku?OY$}wE*aqN ze@o%A0d6j9Ib1H=R=}$U_`jKRe>IG3nrqk;ObF0B>phxY1p^#F;0Wi!@gZFlmR0Q8CF=2n_&CKnOg~x||`z_-M@I)!& zBsd~vjKWhT|I^@?B>zP)vSptRBU|>D;aL(h8%B2A{yJPD@uhINl(zz26ZYHg;`y?* z@P@GKTQ?k)GylshhgS^ppEvRE!sU{F1-wD> zvk~4R+iryuvack(P14y8Yl%^h(N-UGW4QpVACo?6F#f^57vsPF0Ni@8U-1a)dz049^$;0yr_)&z?hk5?Lou5VP2!;iarH}wQDPq^!H0B-h#zicye?9E~Qgv1Yphss>^FnE~s55wW%{_y2| zA67jHKPlxMLHiluw>R^6L0FHFbVkA>W!tCVr`-S4>S_3C@sEN>`Sw{1H5wl6+KhSz zenw)RrT=->U4JuS{jBVF4E@F!|7e8wCuGApWBkjaZ~$&S#*O!K;rucFr<=_^7aSVn z?x(`=&@q0scIi#kFnEOcN5Z4VxW0NcjBJ|E!06~^{*!tZM)p7bG4R+i{^xh6w^ZX` zRBsFQ`5cUF%y<~J*}`>U0$d{dDuokc{IwmJ|4+gx@mIoH@~_6iW8FEW#?e2I^X<1y z(_m!B9_cXpcr)vfGGHw+>N)s1xnCF$kC*wM3G8cv%UdO^C&<|NU+}+VU;l>xEyrad zJW-CtBzTgAeQyeAnRI@#S54TDEb_U$^Q(Qst4|L|wT zMB$Rj?*6D0E}QJ97V=-=a=2W!t$;U7cK2Kx;VqN>m%e1%t#Cr}lY~&Sc_jxgQvMQFzQA4Mc05kHJ3Chw`Q^xbXQu+2LdIW-&1vNP0c=au^~Q`2t+4sx4`K_@BEI|64ZFLk+jb9j zFEa7_uqp9ZVl}eg^l1j?OCEx7sK~e93<|@8ihTQhpT}TizvD9)M%F*1$lpJ-$T#2d zIe<-}?{CQHP>I#Ze#d86kzXB|ebvC04|n^jz~($D<-+O_l82G-XvxDfloy$8TVeGW zi5Xku*F&aU+1Q-toIij~AroJT)#D|80vwSvqi{))Z@+U?3hN@@eOG8Y{Ic{dufVVP z$3Eg66lw-M!_5zI|?6{{G5Q1T~~GzMlYw>*I)4eiT?~`LB=1&YGmWj!hg^7 zHy=)GqRzqRB@b0FvU#`wBO8Aa*5X&M!mmj^&w^*k+|g`!w*TiA&O7xw{JP(NyQ%*e z9FzGX5BB^Yf91JL6^G-#TR-f>zMF4X#qb=tC!Gt=_3blvY92h#KXTG+JDEljKZ_#yFPF>JZHWe56^`c&i8A4NB{W-jO^OEMKH2+3nehJ{d_50Ci!0u zubA(~|L?-(^WFHo0#3|#*Rmw6=S!cnfNSmo-@Z384Nfd@{eKcpE%3K4ArFWF;%@{a`z^D^Wqv47X8WHoRyQs4?YGaG!PhyzY6&CjZ&l{! zBhwEA4Yw(?eQ6MzLbiXv9vA-!tQNm&OZ@F+woeOUb-OaxkF_VC$n+agEYD^5_Pc38 z^48VmGmK4yT>g_-jcoqIWq!M%E)VUoiD51eNvs~_{Ax7&9Vh$6M#j7SMzJYm`q)aW z7QdQ6%tV)mC^ivsc}rrCBa^oiSS@}PgUEO;_3&0X zF7KE5ImnbNfNhO5{ctX}o%q`u-v<((AfLz{U+fuVt}kb?TKp6uMnU7uG z&SLd$$=e?48JYSIV|7aEzp~69|C6i330QsH)vY=KpLF%6{(?`*aXbxc*;Xxwm%Hn@ zdK-RQ#u)Fw@Az&F{|b18y9ZbAGKP8Ax9{Zt6F&Z~8^4`^wfNP0@OzTxN_eG=|I6WW z-@V7Cg7vx;zI|@)5UeZY8ng=D?#@T`G5oRXH`FKaC(>u`fOoh#1htdnyVH$1qj2#~ z-@BEypmTQm5j3Q8<~30)&r>+R`V{`u^*L%6yvwb{RiD9M_;cEt`MNLRJ+55pEBGtl zJ!AVd`}*3gvyH;~YuA6Oz3^U%-v{sWTiItfzJU*k|1f;mANeEK7nOojQpQU7h=1K& z?jzJu(*MK7NB>}b)E}--`v6AvKez;p?6dz#SpVVvmsH2-&yTsWaSgcMF_*V&xWO^k zXEuZ{9&_ny7};^P`V;=IJErP5d_wYkk~B|Bny@}8dHxIj%Z+u_Dfo=UpJhC7)*Yh& z-1@AW3(AG_&-(T~6+yV*tZ&~>(hb()SAWBQOFHM^b1u*7JbYe`Q5F4vl^bW4!ig%k zuOzI+uP(qBq`h5)FG`*@Ygx6s?$n1HXg_T)^G*%n9PtO>rrKR=n!(MrYhx|omfHVi z57)s~aBJ<-%!S*T6@T2bw1@MxJ70ouNW1?~!rG5K?c$?Y-rMG1vY2(Gqv7$|-9t@) zBihw-6rQU6s%U0IH4QG(?piz@o~2zq%!W&}yH6>F%OwBH;d1T2Yo4>HfH!Er)^45? z*$5{j{iOEuzv7|O+tRNIVk4;WR^CC1)jv4DItU+fesvf=CH~W}7Qa%(tc@>z{+f(y zc`qDXquBiyb_sk*v7M(B<8wtsaU++O@0;0}_`9q=9E&x7-d$E`K{>Iio%ZrOtW?9`pby5t@gQ+iLaF2ASP zu3@NvcidBK|NGtvrzEBlK7LQJ{jco=tnVqdV-HmT7f71j;NG&|K5!o?;_5!xBFL9#GupR+G^C0P_eETa^=m2FAo(z zUdnSW_2HqRV*BmLVQ@tJQCNp0op3Spz%I{eunx<<2El_QpO3+hiGMKlGr0JNH?n9; z@cO~U1zY(~Y6FZOH@tChaXy*~2eA?KCLA?Blz^vUmxzBUwhSG@zZ|<;{Clu_(Ruv) zuv+|T6O68UKdX`2O!~;=CyMn@+xN4Y#j$fxzxT76%*A%!GPrmg{vOz#XfFO<*ahNW zh%G@T52aWwezkRQaRypXd?r?ZFt~UhtP(IXe&+6qBj_(Uiq#(uF3$b{|3}mVGGz~9 z6X<6AN$mJ-F3%IN6OqZ!By2?dQLNq}``QVg8RF{v>=2H{km4R6Pfu#pE(XsVMY38Ol`xWh zwSkdKW7@*)wCwHSPPsvMmw#vY*4$wCTz(648{Cz8aNm>d26xX54JN&o*6{#v*F2Cm2rJylG(6T zzZnIO(lyvq#P(G1bKz+`X95>K74&(BbD1L8J{|C(AKn-G3_QlKdCar$bGq$V>SSyn z&jDt@nPYuj#o#RUXTybK19{g?5nM9XA3I86t7*(Qcw8XQdzkU?_`rS7(U|Aq=k-_< zhvR|&twaJ&1aeQo}&=Z_;zVYI~^BQAh1(tTYFBk6~iz|Hb}AI^YVcer`9oJNvzn`@DC;_h~%6;NDt4ePAT{ z^o7wE%W7R_9)$a8+55v;dHy((4G+i*uI$A(!Un=f=9ZkiAU-Hh#%}^^k@yG0xmw0y zFp@Do93G)*M#4{MnkQj2%stOD3Pv(-JO!fzvzf!6hLMc@XW-H59|MoodL9Q)(fp^v zGxCD`LazPJglFXiCCyJe*W|;q^W+$3=D?xuD}v{0T@}EE+8>JGH}ZlFHEVPz_%JUs#Dseb}&b-!jJJTZ`Wa+*o-q`<#dYBD_8 z&%@>g_=UhfQ#}QqqW-Dy)Igs7Fw-d4wBW@l9D_38tZ64CMFS=0*5Lol9SWUkd#1%Vxo|eEpbwIN#6b=0EVu z!BKbL*31s!7rD>>)`FPgYTUGGx%%G^Befo z>_EQV_7`kt2i?25>u+=5IU4^fjLlbk9TvfbSDRwESo3^~nBVeih6G&r zRv^#17r`m@r{RjX0(maF61M6$Z&O!q2hWVBf5zafxBb4d;R^Lv!dCreF}ygq{bHWM zFiYSiep~Yn{EpV`Qg~?~&j^_kxFqoJJ}rey^}KQ!>!M}8O{c>%mihh8gsu9`a(H>* zzgt=cmj(X4h%4xyD}1|Tz&%#@ZF|C2{bprQ2f6mDi>-&;yDsZv?P=a`YLEuGcP7`x zHbU+hmB!dk>hFxbLH%8@7Rfnp&6PoSX06}{A1W2j>*3#_CDnD>4oi$-1@B#wx9a@W8=uhpTLIdkFax* z%d-G$9h0Z23!kyluU*fC>#Ypr`hR`6!Ajqb4dHWE`ZeLXaHExhyid3>eBR1H-e-9J z%Ah84_c3c>ZIhM0&o{-7+&iCZIlf?JaBFzlg|)EuA}#O5Fp_vKfvx(@D#p>O;JPz- z{we|6RX&Yb4X^g|iCF`$@qN#{3%?g!zorK7L3*D)`FINfOul^s5WUc#exO=rfr@IsGp)vG?@2d{FT*`iX!S`$W2Vf-o>J1~w zvk%;_+P80iI7{=%h6hv!H@KJw!a3FcJpD0vP_;kD91Q1H`*Yi2@CfSXof_wvk?^SM z;DHg;$y4y?YQI(-13yA@l2TNT&Y=k#y zSvJF4H2qe1oBFrIUu*q*16OE!Rl<9#gZsvk&pxyG5C+_;QLYVarmUha|%XsUE;6mAdXz!Ca@{w{AsLJzxf-s)xp*7I-&U${#EDg zWAL#+p0PB)!N2L8_B(6%-~GCJ06hHn;8C~sejFb2doa|kv7d$K|L)i13*eI9g9FZA z3a|Y=XzO?#y#4oJn&Z#l1M07W?eBh_Z~lOf>wZsgkLg5E+>K`uPlJ)c5HMUqcF{7C%R6msQCV>9df zG%;)($-b~w{pKvvAeTOdjU!iA39Lnu|JkHLZrd0(jwCj$MG|uZ{K(~#z*;2bZHOO9 zY>v;-ZL#)T-L?^oq>PP8gCxD<^E5ryB1v;Te1YbFA&ex3i%5@TTdYNr{$l({V#ZqJ z(wIvq7jkjNuyN$lC$JVt+5Z7I^W`!bFp@l*lO9QV9kD(`zk+;_+ctruGEKazN`7K#5J>L0oO9K*(uq`{_;%O{P^yw}GQ z!^V-M!KRR;!PFNICg4Rj7&@BuQZbxT ze;VFqgNobnZ-;lQe-B)t=__F_UPwO1guG8Od?4VuO$OnCP$(=vwT zosiz24G%Ekle<{+41}NcY0Pu*c=bPT!Z=#?e(h!nEbnrZd`tqi1H+?ojVLFyHFH8a zPpk#k$qD5?OI^5LPAK(RA8wEn%Cis+;YK;(V)q-a#&DCIQ0^}`g)hnp-MwjZG2Dza z?l)W+aEqK!u9dZfTjhjO=dIy3Iib6+ZQ8=^azc6Lvpw7)CzSie9pO$nq1+?r4BwCw z%KhaoaAr;@-#v-Jw`%;i!CiAgxgXID?w%9MGbDGyJ#s?1UfL7BFDI01hP~k4IpLvC ziMbElk9^$wjr+q{IidV+E*l<@6UuMU2Ev1MUxVRXVqVDld>A}J{UhN~T31iOqjN&} zjp`V9Y)&Y@tsV!*b3%DODgjT_Z70D~azZ)2PladXgz~MZneeQfP_C2b!?SZj`QFwX zI3zZ%QJ4sxn-j|VtpF~}31vN81kclYo)0g|316GZ`lJ|Mtnn;?OLD>$TR6Wfh0Ain z2Y=vq0W09u)bs7!cUS|j(>7WUr!>zrT(0qNgg0p)*bHyccHatb)3)0V@5l*dJnn>d z=Y;ZoqCN1}IiY-0<{P*oC!BH}*WoMSy&Bs-xJujfAbcn%yzIW3|1gJPt1+0z;KxEa z_cw#!L7~51Iv5`8`=J>E4+-VB^JXZ0b!aGaMFxzdjhe%m>W{(QhlcVyzB}Rg&`{pP znScw2hVooQ5u6$t%JuCujN}^K1{leB`2a@ZFNcxz$&K)bn$IQ}$v3Sw!$|V{2u706 z$MBa!{doKeMiRrlJ0!`N$UB@P|lq*VEd%z zISL-->)bp=oKJ^xy|nUa{7;8+-NQT++H;=?&skHmt!V`R^-TEAYK{wk!&d!fG(6gG zYsSE1cpIO)UhypaY$(rtndji=biZTav7!8y+>B$tP@3{_%cptc30J zp`7oVcxX??eV;i6+qlM`fD^ubO&*-*+r>>KcV?N36Ih=Pr*-XJwF4F zo)LcQ?q83ApPk|R_H*!9-Pbr6Nn4MHk<7!-!*Q+K1UzeoACLL)a^1EJMw0&u7)jq) z2_tFWRWOqIa5aqNxW5KQa?E`fM$%8#!btkhIvB~EupUOzZ{LHF^riPg`HBT1iz z|I+>b4I}AS7DkefnMu3M^y4lYj?eUSNCGZYe-T_U)6bukuvNc#5q?pRcQ0`qe<_r2 zU6sPAmqPijVj8Y^$sflnVXJA(EO?gA)%kFK=)b@7ANW6^d^^m%48QE_+{}hw(YY&t zgV6szF{Gb|ejO5nk<=tws~Uk?t!AC&OeHt{a$FDdVetZYhFOuj(-rw(2)? z;kluI=T8A#5c+$yufeZ{3*>uPufwm0{+Z-LxG)T6ur4x1a8Y>a&+a<#8}J*UT*EhS z!f*OIH}l|mp}eom%%^Y65BD0Lb6W$a=7(~vH4US)YVlj|4e%ySvl-qpKRo9&{9EB| z>fa8dck1wb;Aij-_3wnyGc`!R3%2Sv3*ZG|{X(8wGYdIZF7*8;1GWo8`39(21TWJ1 zEQX8qSo0SAR``Wm2b#CxxAnNQ7+xIu>;FsOC0al4!0&|L%R9iA!b?MUPs*4QxFl@l zev@lT;nMKw`tG|M%iv{N=gZ;cVT%~QnKEVc+cICD*>Jqfw{HTr>NhLk6&lY<=G&Ei zZoeExQs=E;ByqNe+pP4*=(h0fD?|A$+Z`~H^+s11$uXiEjJi$Z`t$$6NYeisF4Qzd z@S>HWJWo{&f3N-@;QgBZ0F2~5X%&p*{V)e%B>VjlKCJ0~f|11V^U5$2wcE`#BJ4@z z*0-myR{iD(jO0CaM`5emnpL#*s!+boodGvr70P$6FNLpJ70P#tuZ91)DwJ=CUk6{W z{(r$Yt_t0Ew9QTMt?IuGzI|0F-#fko?z<|KZyY}eKeQ_J-xi05vR}RfZgSyatHN*h z^E~Qs7(HFW_1MQ@G;lfVw-GRs?{SZWpIjAoU1lyfqhNHI`*!(LFp}?~KMkWZO3CLL zc(iUi27Y!`=)R?Ho`cc-rJR3_g~!1q@OT(q;`aMI9A6ctOH51d*@gB$T30W_Na|`f zjHIsSz=4)Ggx^sAn=q2^t}x)Zq+APDg>mHSGl8{8>S`f=AgIs$hu=YD0rxp0W*L<)RJ$-=v{(v8S zLwhB#cCYraefW{|8La)EFN-+@Bk2!^;h%K8{0tw_{&p0u_U&kXg^~2bV=$6>_zgxf z27iaG=4n>5K40zU{DyF|)qdTQ0k>Q2*H`Uf3(I-d8hB0U-*NXY{H{NKnYHj*KTn!< z@H#zSuZP#`apyhwy|8VAzH)%Mn>xT^-XE*qD&USdm2EVS`30w7> z58w|%d4AQD!{vJ1-w1CE%NEsS?eSl(v;8-$S;}*dH^XSfG5oi{i~buX7S?QSieam1 z%!lxY;ax-A`@J_&Kbyi4Ls-)`gflmV-@ipZF*tjZUq?Lx7j5=w-q_4qVzb|G8vftr zaQ5Pw*O^0bwWj$MM&dsPBgy|a_z&IoIDB$*`0zsFJOx`#Z$5%Q@-dr_;g3WAj+ZT* zFKqF#^@7t|LV35|2H2|KY~?t<)t4(9F4^k0Erl!8UkTf-J|FW**aErOT4GzF8{V#Y zRcowOzc~#q{KS{H2u^+C^Gw4>KJjrLh3zN0=KK`?)E~#qHh7!%jqUJuJyFp{-mYq;&M@E7+!rK@&@HLv#mT3Fjo{q5mQO&^21!tPm!ZgBTqKK?slB;T^U z3+}Nil;_)f!o4+yK5&+9n+*@qG(&fVb&z{Lr!Lka**14qSP!}Q>tihv|1cQIImmDr z$+efq;Sri#2mqeyFz((t_UvCd`jVzrccA=8uLaN$+eOH!oTRgs^MRC z+hZ`2`uq*Hn#O!VfB3>*hdBz{FZ8;{Zg{tEU$ckn7<)o_r)3Se=AQ6l_uZUYaP2*z zd`IkbxXvCwU)6;h>!e8ojm9O9mT?1FL z?Y^+Ze2&qveYEMmaOs=;CbS#eeP7shKEJiR6YjAuJU-vOGXcJDU-+i`)>|*Q_db7( zx)0oMUl_i@nz=umwJ+TICY%iq*cXm{gKG-|;X(VtuUtNZ;Su{n`CaEocoh3uz`E!u zc=Wz-&;qW_j)BK&{^MY~FO=Vzn*G$zejjHoxX%7?z?;-nUAWPHA5UYr$^KBD?P&^M zv_E{(y#wK5xY_EXtNr1=H;JJ&+-ARztu5S6_thTmu-}ibj&P^_ zzFeK*%>7}`8|HiygS+kz`yAJZryiuY9;rw=II_ z>3-+Ki?kk!;l=xXdo6)W_WSxTh0FGb@{O|>-q4o$xk z-o4-VjXiLM)=4F7b-(5S?Q+1^Ne0~FfUm=raH|8pty{xw4*34l7H)UI_uKYxhXbL! z`=TSEWfN!HTTzON5$xe9pf$;ZT`1inH zAMkzn8@NKtUJ38jy4?p?Y5g384;}FR{4jh(%X<|5^?)B=$6%}Rm@39;mG{?z>s0x& z*M;j<`L?JJH>mRM-Vkn7GTac%lqgukPs(gQF4Y#TC zakhoqRr$Wu9`2yqc7!{rzcYM8m9Nh(aAuY7|1tR1s_^I=jH%n;t{P`IxVxsg6Yf#v z=Y*c{eO10bd%?Xm=00#gP2V5Rs`AI{Ya@Te-^Kc9j} zYd&M(u~mLf7zf9zd|M~ri5kx&c#7sT6`oP$=eL>gtg7&~H|Y=g@NCV04jfkbeigxU zwcZNgLao~(c%Ihbe0Y(Tr5IkUc`kuVwCtsDS(P8BE8x`{&l-50rdbcCv>nrMxyHW{ z-lXN)3~#COV__@2P5Z!hc!$Qb6W(1FR=eZW9{B63@cad|<2P`H=3fc#)%^FtRaz$p z;X_s73kx`A9fpro`8nq({Hx}F4E{sw;W%uyEzCjqQ25glcYWz_XzL#izj609&VrG= z3+QYZ$vxr*F!J}E;f9C(b;5ICB>r<@B-d;k!N}j6h8rLD*Wu5Dkz7wcA4YO7qX~?P zzh#Uxg^_%l?*bUf?@%s;k-SIrA{fc}&c*O08s|UYW*UD6oOw9>U_NtN48HBKU$@*2 zBU!iH0ryh>{qO_o?+qha=k$Tmm3zpiFFZ*7gJC4^-x~rWNk0@uT`D=>&xMDp|8aPP z=06f1um0!ZxcU=t;o(qzXIBKL4u?O!&pW8o@TS9|d@FD>yzQ{RX1*Q%;; zRCt#9^Wnmud^|<)qMv*}DTYga@^xDZr+)Hrrs0a8!pGcm4wZ1#Pocc${2+YfC*Mzw z!hie}_Po7TCvzOOKZWxC2lF%hhxXOu%+JSto^|0fkNf^s4{mVWKS$9JZgSkOC!4~} z@VmClfZHASeW^X%Nz-(OGu0o1vySt%2hwN5j~oxrNb&ukN8u62LwWbtNH~7nw{-%x z$MwAX1as^O-xfXL-Y5LN`oKu~d|&v%6Mnq(gOS|(=no^g$MF!1B>lrMl5vy;BN=Pi z@Sqd^8I{5Ch!eg(N5b(F{=7Z`+Y`Runm^$`_1@)4_@r-lbBg*r<&Qgc;RdJtwhiGX zr~Ep+DctOok23>qb;_5wHQe@8cy5w);8ie^v3WJzPW|oSOwA_-XPxqWBO4xcDwKCZ z4u(gZ3cD0BUPi*BPx*c_29BTdWlzAVQ~sPH4R1T;bIbw1B&M zKi`&(YvAqkf&^#;QKh%F5wwjMQ4L&=Pb3@YrZV<_NsA(A4%na|3 zWkfcf5#7Fk-+d?GDH)MGpD-0h@>}C+@QjQ|-bFAIo|O@Ow3y#h=fkrzq87JttegXf z8Ijy~j^Mc&k^KI#04~gkI!aZC|nGY}0{EOkV?so%hGol%m-*uYi@Rb^W z8@P?e-sam^L;w%0~u*Kz&RbbvcV^4m$%F|su~Mg?!w zy28|gQT7|PuQs*eI_j?r*XtM!O)>Y@hcE3IO;7RO;}&qH`eX2|9iy@D^Uj3Z;M+By zJK!w!XT$N1(aKb9-fIdMs=o+c+cAp0LH_GttA6uOxRaKpGkinzNs4#mnl5k`_1_5J z82Ni@H^DbW@*IoFr2aFb>2GsADg%yZM(L$|GdBUJG9&q&MH;TijO5;8C2TXJk#D){ zZ!yXhi{x3L7@QUJZIlgL^_!dFn~T++0*-DuvNdg2fj!1xfi}S%5~o$F!#at zMJ?q1S}(X)B+o0F`{CY^f3B$y+$ZwaUHj6n`ucjP1=r~t$u-!zaJ{~f98>DU4f;m1 z?rI1(>l?{&IRkFdHZl~L}hdcE3b=VQ^)Hk~2Yp!v1 zhHub(y1l_4VcI1^3pn^nv?n zn*MOSZ{(l9f+uPjC&5VGQ9Kz&vetS5o}&J#@Ql8Z-0PnS&+6;zKOdg0@y~%n^+)hr zEqei6sC7~VBe_rd28`;5+zWdXMshrw2O~Ld&W9K2ev9G7TJ|MyiSDZuF4OcY;MIMj zDFv+0*TC!gMskmPJ)G(r{UhKSQ5r7q8?D~YemBCKw4OJ^TeLrHg}3#M+PNJZY|3m`0KurtS!HR_x6ost-cSg()bU;hx$hHO_{^+5sm*SjAUK? z3;e6r?J@WdO>-PRscm`+wi>f}5Pr~?*Yt~Q-G0%rRP9dY47gdps7<)3e+epvI&g0pnIXT#Y#jvj#@(ed>t{AeW4e3}99 zfJok}V+O(lBe~~ma^M_)d^C^2k45s#i5WyZgS|g{Fnx7!B=6!#z;znSk@I&As zkz6x0L*d*=p1m}~;9-&6r#8dkk?MZ}enRJ>C*da}xt?Q2!K1V+PqE*pBDtTQ4cn(8 zf8YOU_~}S~duX14pNVc-<9@3+8Xl{8j)TWV{#m~9aGuUZ6C!)|1fQk>+-yQ5_rx<` zt9~;Po~ZNQBzRKf-}Nz>IcIVt&n`BEn@#q|(+t?E-@E|75Ov954lz@xt0_L81e}`U z^GU;2{bnldJ~fix_{89>sZsGg)Mqwqr$!6@$Me``8u?6%Bw zegCfmpE2FHC2S?XU+6!vSIs@_nTSpEI&t? zeB#NElaaqC@+$nQrkM-R)#G>pTo6U++HH+_4Sr4g#_PoVdK6Z(-YA0Y>rqU; zEm#N_`ua3QaFOqO<_-AGNbXyidGI{l*L--s`WHmD_JT-$3vfD&+;0R-9T>@P0qVkM zEQsW{OJ~CM7DV!!k@_%_^k>0He(!KL+(7ee2%n>A&V?Ikn#M4a{hkLS$>)3+Nj^tvwT+=6DyCCwvL0AYcitb&;H=|84yf}K}HP*~#30$K6q?CA;`|>tiPM*snxgXaQ zZnix7cp=~5$befd_iLoqaJ%KvSMIx4?P06inzG2&D2wFYVoexHKDFT5Wl=Tv-OTA_ zQDL33=x)|jMOcf5?&0^sb>TD0BDq(1CX9wG#$OMvUlz%I%(Kd(5h!n6>?F z@aq(Bz@*y7)gEJ2P4_G7mTDH?uU_-{Q(%sw!L8_arS}Hlw-u)mvSK& zTLNp5_#cG(X?^yGk;L;5j3kDKVI*TG3r23tnrs-!*n9*=Qm#i~ByBVRMpFL+VI*bA zfsv$n3`R2U2Ej~{o=q+BCm zB(XgKBWcqoVI;AQf{~1)r(h)eeHunm-e+JW`HzN?wEGwsNj}fQNYXzCBbl$p!bsAL zgOS8G9!3q`;aQ94VI=)34kIa70!9)~9*m?-C%{PZoCqT+<0KeKoReWB@w@;d$#V*f zq@Jh3Ncz<@7)hSfVI4vZxJr7)7%N?;^yR0<=Ba~X`JT+3l3^K%)Dq@Gv6NcOuDMiTQX7>R#1 zj3kCN@VgqrS{O+_>tG~hTn{6etKWl>#QZ*tB%c(Fq~E6D&os`@VI=8yz(``)2_xCp zE*MGKzkrdX*$pEp`yLoc*}sI5?Ds1e$yoauMzZZU@VC0{cQBIl6)=)Isf3Y~@p~9a zo&NwMiFq%KB+h*>lD6ItBZ=(*j3oam7)d+_;U6`g|G`Mo9D(;v+3#;KlCu8}BPrt_Fp{zyhmquS z0!C8yKVc;PlQ5FHIt3#+?)(KKsn5S*B|9cz*J z&xX;qOL)&o0~ksC4Phi{&Ve(_y+2mY@v+<=-*1DvmiuybgS(ge*zSaTl>69v!uOT? zI_w4aF86DRK5)Ns-!A>(EZD8(vf%;c(c_zWN5?>TP&!5C zM0xb$i+sO$Bs{7-+L-1#-c#_?#NhZD7@fO;cYlqBk<`@~_*sqlIe4u4$HC(@{^#Mi zmN5b6mHRno0z6UUp9D|VI(Y$}qGg;4Pt$m&!!tDInedBRu9x6hTCRNfKjl&O%vzV2 zm*H2+qf3i9Rt9jWbrQkJ^60t^d_Uz?c&^r40sLBd^wP1diN;?FzpHVs zh2JZWuDFnTdmm1zKMj{_`i<~M<K=dY))2Pe`*U{l1N?(tqu2}Y z)$_7_@V>}@KYc&vCi}fV1J2ynCoPDi;S5`;w zme;<9|=G4n~&{DIIjK# zZ2!=*AE#Z8`#dXQd)%itC*Z$zzZSOYH%XgolJeX0Vem61DZf=84Hv4v2wrNE^4siGdzjjA?W9~MG^fLLlX5@BoB^Ma zl>0K~O!!Ro*MsZnw)Nrq>OTuUE9vhAoDH9y^!Fedzzvdejnp)R8z%klSCX$&_``fGRR!RIIab@(Pp+n|Y$tsz`;K~jE$Q+h$trY`XQG;A;Q zesd9gv2J?_e2M!10slk&&DgeCQtlI_VcRTOIl*0<%78PHa<9rXPukO(C*@hn8ZZiG za{r%mB#`K%A0)jauF0ne|V4L8vA4dHW| zC*?WMbKyq1-^TEH&6D!G@AKg%n!YJ~QS+o+)4LeHMDza#jHDf#!AR0%z|ET{U)jcf zFNIrZJ}u$PnkQQxd$i1`H@D*B?D`6z{&;~{_U$up=(ipCWuW6o? zdu`Xk9W+fx7)hP~6Gl>3*TJ1M&(84m&6D!1?7!elO&^18b8Wjz;Y*Vbx8r>drbW_@ zZIQfWx_i$OT-d_RLOjJxzju+=o?a`^J3|2<$Uwr!P^^-ngOYUTZDxI+DvuvNcl4YyAE>*QC!SLnFA z628*6g=v$tr`mY`U$AYHl;7Ezws2b=%U8iyC;fe{c1dg6B|Cq~^V_Gvww-TB(;jZG z`CkKHqwRGqF<|TR+ zKA2nJ9_sH2_e{#~I?X*v`*CmY-_jd@@1(!3-UsfJ^uJr|3-?W~-s|oWKL|hQ$F=DP z_e;wCXw#qa_D{s+~~G6_rTZ8xzUr*7G~-o8ZhuGS!P1 zV({LCk8K}ZrT&BPU+VuGwh14z$z$D;mn`VbyM`LWt@4t$_kml(*W~&9uZ6G2e?R_z z!8hb3FLc}m&dp2S;kF$H&(2G}*OKp#&w;n)X`R43G|f)<>%8P`50L&FxI*)OrD&YF;%>tf4>ADNK6z~%EO{Mm$Lqs!Ru=kSjcl5=|D{~vt8 z#N?|k&4m+Lw@gfacsXgVgEJ>4=Q@tT|2HxD?^f`?;X?c_{~~zN#AM3lSq#53(eG<1 zTsART?#jLbF4z1w!h0ts=eYFy;6s|`F#PMp0aCe3FvY&9PIG*__T|ln0xq25V=ID7G@nvic9z_=c&zpLc=#O-+t)ZQ38so$AN+FnI1%-_Hx+byIykuZK@+np3cy>f6Xn zqi;;}F|UAEPV;rL3f?l!mvJjxG0peAO1MhX9E1-|OCEG%`7ms!`T8-_;TgU@%}maZ zX8Qc=!%zZl-8{_XI(7k&EmFOtuTKD~Jh@w7$vkig`5-rs#jtVY=9UCDh1|TF##$tE_&-RG+dd^9J%8~0-HjzE!HAAcC><#94}h4Epq-CHjboR z*c5VQPh+k7+m-7I7|DElCEFrbmKZjUWWU%Hx}7}JSc{6>aj*@HYGB=KWY$iqw8J-(urP+6bFMu3TxX zMY8tj1S1(Eona*Xdd^97&(SrjUz2jkWG?;xRYCNb0`}oT+UcBOm12 zD~63D*NzEn3Q1dFEt2)m%`lP}Zh?`+b}RWHsS|7*xq3)oQ^?hA8f%fPA8vz@^tapL zdr0TT;JxI7T+A_S9Jw+koDWG`V=LU>q^ZPO$8OvE*cM5@!p4!S^8_}9WGrAUlCjVW zMiRsQY>QmXF>D;U@tDA-kklvEy1z+d9w0rEK97wf*WVJ@6moTy##$tOtT&8gO!a}0 z)L~y3$y(?^7)gEhW2_+;TL!ira{FqJ%|tTZv02Ea$;OUAF3m`69Jw?JtVJ>g`{PG0 zo&+|9T)$0YEt0YJ5R4?YhhZf3lf{0K8w)XP%E@huwMfQAHffNg!N!sEC$K3emmX`8 zjMGP8Bz^Kx7|C2ZfP9dv!x%P>Wc*@NNMgoXBz5 zhxAD55F1C*=dmdy^8?l*nX4azk;FL&M$(Rh$p^XgF>D;UzL&tJkgMl3)*{z8%n%q! zeGVo4aMICl6WBuJ@+`uZAeX)rYmv0w<1mtKN5DwhXe2Qp>GRk)l75IyAsN3|i(DDa z6EKqapJZF)>LiAZBUgtBXOYZ%Sc_y{8U-VX;VBqNUws-L?aN}uz+*MGaWIl~%Xs#M z-1;YmjU!nXVN=MhThdsIWX!MfTxw?idfK$3IO2Zp; zE%yOjuJLb#|Eu-zA-qZ3bThn7x7`jSSqFXw@6hx+VdUz{?1GWh$rsciaxo{cDdg5; zX{<%EzTFKYS$FM$zt%jzfsw4`zJ-yj_rBv;k6ikO*k;JBGc&O5kZZg4*i7WsjWKKw z%|b5zZ0rd2kHp52%QJzsNcuws`5;+iW8=uRdjgw6vQEZY&kiNW!FUvCL`V!l6jn*_g* z?_-_Qq55T2j! z$JYY5INz7|EqICM{|;Q5@B7scz>)=uZZNap`@NrUA0g|*1d`KA$!WOq zAbBft$BWyr7D=D~2aKdF&0r+{47f$$`&dgD$#LN_xRs`94PO!Xw!RWZa_-*-Mv_lk z7|9%R6^z7xHQX-neXKovP2k)2TDU{t`#?wdpMmci*TG26**n2V^63m;ANcjN3scF6Ua_En{K-u-l6`T@NV_*fsxF&U&8Uw?<)}|Eplr%UQ?aq z)zp4ong~x1{hDe9{A%dew{zjQLqCod!%IRxm%aldIlov6BiD|+MwD`eeoU=|k*v2@ z!K*`muCWIGHT2~=2LB%Ve)tD$LtoD(O4?78KIUyn%A555?eI71|2COyhFrU3U|S*A zA6jEOA-AsRjLkx>O|!A1kxMfM8%MH+!4|5&2y2l`Z@z<(OK&QY$$H2gAM0ZqAvY&9 z#x_ANO;c<;b8by&X&@8z2`$Lu@8;>0{Wg$i>hN+XKmdvAvP&&wa3?kxM@YI|aG^HWiyve;V81 zM;}{5Y%}E2XJFf@zdg1Ca&_1d+X=Zeov}TT>=$d*Z~jL)kZZ4tu_KU6KN1^9vZlgX z^_xTN7rC-zVB^T8PhjgDPRbapi?u&{zd1r5KyIFIjm<>v*c8KNA=f{%u_1EDpvd`< zoTp%SBX=y=gSAM`?~cO1(B7_ZS5qg*`5R(8A$NS~j2(pBwu7-FkUKVw#4bYaJhT{V zksObHrOzN2XH#q@l4~H?-pIw=2RjJ4eGSHrM(#X)3^tDBoD@3+x%j7IOOV@dDK>@N zwrOkyaxqk5_ae97eb_4G_InU}2)X?p#{Pudwm)N!Ah+M6SSPpNU$9PYztz~^k=ySd z*yG4;djfkBx&5BPTIAZ!9HUK<%O?Zd3c0pujcteA@x47Z(=qwSusx7m)5A_dt`4U< zi`=$ptVJ%p`HjAT+<9?bY!l?p*_&cpA$Ps2HMTc$=jMH|amVhQ9UCIIZG>Ho+_r15 zn~>YrX6!cPj#JyQ70BgTiTxhAZGXV-MQ+=D*!{?*Ie*Vr0g|$fP_IK(Qx%E#5wkvYy(cQ2;kXyg?#AYGaSF^EG z)ISv)B6nPfu!YFAQ4w|#a($o}TY}tvOR<}fYp>1N-N>cigSE(&#r(k-L9SnQ#%3WI zgV@o?9XrNg3y~{V5q1%B+ZJO}$mO5L?nW;C9;`*KkD24NFLKw}nqqq+cfGC;b{2AF z$;U22Zv9z|wMfSD3ARP9ZkuA;A=ii7V>6NKV=-)3 zKI!Y$oZ@(aTs-x$O^~a%rq~w9<=GP34#|G8Hy~HuF4(TfwNW?heaO{+FYH|8Vk^MT zbAQw4=VKQk7eg_&1i5-H#g?gmh4Ud7e;T_5xqh-0yBo>8hy4<{n7_h)ja^|wi}L{X7v$os#{P<2oX4=gIX~%t$Nqs_Jjbyokc;O}>`CPE zJcYGL>h>?jHF9a{VjCbgjv8W{AeW{owiR;mx5jotZjS1V?TTC<>xS)tTs%FoS;*}x z8#@TO`D!qB1akdwBsPv*KS^L`A(uWM8zR>yBWxjZbyb92gj`(}V^<@WehqdLk~svs z8@cnrJy?reeVV^v>-!b&#)n_kwa{F6uGFV71>9RK@axZ7aP0zrZgM(Yr@*go>%wOg z__g1eaJ>S5Zc-mUtH7U+oDDZ9@aG^6;d2W7Imo$iqXNGcZ494R;LkzMhnp1mbC9O+ z1qJ@R<3jkN0)O6dF`QZ8*C#Rf<^sQtx&^+KJgGx-8{DJ7m#Zg?WQ}@HK{E3}?~h^Q z$gLj|*p&Ly*lozIVYXu{kV{jEwMhC&KNz`sHvM7b`iyx9My@T)!|V&Wc_4<3BN@xs z6msp7##-e1gUN!C>pvzNF4TP$6(pOz;p54`W+J&(gUv#2EtidrBe(ufU<;93YZYNr zNUn8YE09}9Rbs7U7yp~&iR3y7Hjdm{F@a4Xw_ZwPEs|?2^N0tzI?2Gsk*li&)-KRG zUkD?~e-VsadQ%J|Ij?z({UR4n3>!ysEeM-JE`~JLA~`R98%A=jv>0BZ`+5idfNhuu zOgVWXcMOVQlb}z!FkZboewgR~^Sc$dBwXfL$Be^!a6GqZcb`b+| z{WgY;Bk7aa6mtC}jkU=2AM-^)vH^1WH^eqW?p!7V+YY%t+#Z{W+_o`n59In`Piz)) z`_0CVK(3FC#Kw^;O9Gohu8e8yHssQ8$5tShz7lKIZ+5dUBa|<>LNu6NhNX9tU{!h0(1S1)bhhgN7%jPE-NniaLMsnOaLjK5&sTekn z+}bIDO(8d4(pZaJUo}Tbk7PVz(j(VbW7s%y{WIZwNcuU} zBI)PVFp}~6D~u%OW8{Nmzt}i(<2`{*A(^+a7RmbXH_{`Qe+(N(ZoDV3Ddfg`8f%do zunH7P^=nkNwW`{qq!T=lSEcna_30 z`O-g4YxtV^{&;aMeCvGQ4{w8K&-Z<14xCbd8s0SD=f4>~GT+Y+N8uCm{rvDJZ0Gy6 zhgrbB7Wnl>YdF5Z?>7M#F7Wvj!5bF%aq)pmztHcu^+K*;F7#=-z&#fFvh;*UFZ5$% z3|zR-&n-o8*+O5I74SOEXFZ%+=wnO6A1(C9sgL0u3w>-m;oS>;Y?=isr6{JzG) zs~7ng*1#2ue4Lf=p+&wP4#QUSF~!7C?Dy3ezQ5R~c>o?;?Bf{+¬L=EL)feV+5- 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Í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≷4$Fxr`fcwOPpMG?gxI(zdwk?JS#{&7? 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 z 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

    tqs){B?FRjQp|gBtLTNB!-P6S95?(BDa=O*bw>r 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

    ielUEnDBwPRALx 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%0A&_y#@q3*btNse-+=>yrFVOlrHCa8^?5$%b>1 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

    }zl0 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

    0Lu^IzK-i-{IJ&85&TPy^DEW{ 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

    #bzMypS=P2AgvEBHcdeKo03WJ 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 -var_export($info); - -echo PHP_EOL; -$info = $ip2region->memorySearch($ip); -var_export($info); -echo PHP_EOL; - -// array ( -// 'city_id' => 2163, -// 'region' => '中国|华南|广东省|深圳市|鹏博士', -// ) \ No newline at end of file diff --git a/vendor/zoujingli/think-library/.gitignore b/vendor/zoujingli/think-library/.gitignore deleted file mode 100644 index 301c8c264..000000000 --- a/vendor/zoujingli/think-library/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.idea -!.gitignore -!composer.json -composer.lock -app -config -vendor -public diff --git a/vendor/zoujingli/think-library/composer.json b/vendor/zoujingli/think-library/composer.json deleted file mode 100644 index 9b57bbb6f..000000000 --- a/vendor/zoujingli/think-library/composer.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "type": "library", - "name": "zoujingli/think-library", - "license": "MIT", - "homepage": "http://framework.thinkadmin.top", - "description": "ThinkPHP v6.0 Development Library", - "authors": [ - { - "name": "Anyon", - "email": "zoujingli@qq.com" - } - ], - "require": { - "ext-gd": "*", - "ext-curl": "*", - "ext-json": "*", - "ext-iconv": "*", - "topthink/framework": "^6.0" - }, - "autoload": { - "files": [ - "src/common.php" - ], - "psr-4": { - "think\\admin\\": "src" - } - }, - "extra": { - "think": { - "services": [ - "think\\admin\\ThinkLibrary" - ] - } - } -} diff --git a/vendor/zoujingli/think-library/readme.md b/vendor/zoujingli/think-library/readme.md deleted file mode 100644 index a7bc0466f..000000000 --- a/vendor/zoujingli/think-library/readme.md +++ /dev/null @@ -1,225 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/zoujingli/think-library/v/stable)](https://packagist.org/packages/zoujingli/think-library) [![Total Downloads](https://poser.pugx.org/zoujingli/think-library/downloads)](https://packagist.org/packages/zoujingli/think-library) [![Latest Unstable Version](https://poser.pugx.org/zoujingli/think-library/v/unstable)](https://packagist.org/packages/zoujingli/think-library) [![License](https://poser.pugx.org/zoujingli/think-library/license)](https://packagist.org/packages/zoujingli/think-library) - -# ThinkLibrary 6.0 for ThinkPHP 6.0 -ThinkLibrary 6.0 是针对 ThinkPHP 6.0 版本封装的一套工具类库,方便快速构建 WEB 应用。 - -## 包含组件 -* 数据列表展示(可带高级搜索器) -* FORM表单处理器(表单展示及数据入库) -* 数据状态快速处理(数据指定字段更新,支持多字段同时) -* 数据安全删除处理(硬删除 + 软删除,is_deleted 字段存在则自动软删除) -* 文件存储通用组件(本地服务存储 + 阿里云OSS存储 + 七牛云存储) -* 通用数据保存更新(通过 key 值及 where 判定是否存在,存在则更新,不存在则新增) -* 通用网络请求 (支持 get 及 post,可配置请求证书等) -* 系统参数通用 g-k-v 配置(快速参数长久化配置) -* UTF8加密算法支持(安全URL参数传参数) -* 接口 CORS 跨域默认支持(输出 JSON 标准化) -* 支持表单CSRF安全验证(自动化 FORM 标签替换) -* 更新功能等待您来发现哦.... - -## 参考项目 - -#### ThinkAdmin - V6.0 -* Gitee 仓库 https://gitee.com/zoujingli/ThinkAdmin -* Github 仓库 https://github.com/zoujingli/ThinkAdmin -* 体验地址(账号密码都是admin)https://demo.thinkadmin.top - -## 代码仓库 - ThinkLibrary 为 MIT 协议开源项目,安装使用或二次开发不受约束,欢迎 fork 项目。 - - 部分代码来自互联网,若有异议可以联系作者进行删除。 - - * 在线体验地址:https://demo.thinkadmin.top (账号和密码都是 admin ) - * Gitee仓库地址:https://gitee.com/zoujingli/ThinkLibrary - * GitHub仓库地址:https://github.com/zoujingli/ThinkLibrary - -## 使用说明 -* ThinkLibrary 需要 Composer 支持 -* 安装命令 ` composer require zoujingli/think-library 6.0.x-dev` -* 案例代码: -控制器需要继承 `think\admin\Controller`,然后`$this`就可能使用全部功能 -```php -// 定义 MyController 控制器 -class MyController extend \think\admin\Controller { - - // 指定当前数据表名 - protected $dbQuery = '数据表名'; - - // 显示数据列表 - public function index(){ - $this->_page($this->dbQuery); - } - - // 当前列表数据处理 - protected function _index_page_filter(&$data){ - foreach($data as &$vo){ - // @todo 修改原列表 - } - } - -} -``` -* 必要数据库表SQL(sysconf 函数需要用到这个表) -```sql -CREATE TABLE `system_config` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `type` varchar(20) DEFAULT '' COMMENT '分类', - `name` varchar(100) DEFAULT '' COMMENT '配置名', - `value` varchar(500) DEFAULT '' COMMENT '配置值', - PRIMARY KEY (`id`) USING BTREE, - KEY `idx_system_config_type` (`type`), - KEY `idx_system_config_name` (`name`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=81 DEFAULT CHARSET=utf8mb4 COMMENT='系统-配置'; -``` -* 系统任务列队支持需要的数据表 -```sql -CREATE TABLE `system_queue` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `title` varchar(50) NOT NULL DEFAULT '' COMMENT '任务名称', - `command` varchar(500) DEFAULT '' COMMENT '执行指令', - `exec_data` longtext COMMENT '执行参数', - `exec_time` bigint(20) unsigned DEFAULT '0' COMMENT '执行时间', - `exec_desc` varchar(500) DEFAULT '' COMMENT '状态描述', - `enter_time` bigint(20) DEFAULT '0' COMMENT '开始时间', - `outer_time` bigint(20) DEFAULT '0' COMMENT '结束时间', - `attempts` bigint(20) DEFAULT '0' COMMENT '执行次数', - `rscript` tinyint(1) DEFAULT '1' COMMENT '单例模式', - `status` tinyint(1) DEFAULT '1' COMMENT '任务状态(1新任务,2处理中,3成功,4失败)', - `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - KEY `idx_system_queue_title` (`title`) USING BTREE, - KEY `idx_system_queue_status` (`status`) USING BTREE, - KEY `idx_system_queue_rscript` (`rscript`) USING BTREE, - KEY `idx_system_queue_create_at` (`create_at`) USING BTREE, - KEY `idx_system_queue_exec_time` (`exec_time`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统-任务'; -``` - -#### 列表处理 -```php -// 列表展示 -$this->_page($dbQuery, $isPage, $isDisplay, $total); - -// 列表展示搜索器(按 name、title 模糊搜索;按 status 精确搜索) -$this->_query($dbQuery)->like('name,title')->equal('status')->page(); - -// 对列表查询器进行二次处理 -$query = $this->_query($dbQuery)->like('name,title')->equal('status'); -$db = $query->db(); // @todo 这里可以对db进行操作 -$this->_page($db); // 显示列表分页 -``` - -#### 表单处理 -```php -// 表单显示及数据更新 -$this->_form($dbQuery, $tplFile, $pkField , $where, $data); -``` - -#### 删除处理 -```php -// 数据删除处理 -$this->_deleted($dbQuery); -``` - -#### 禁用启用处理 -```php -// 数据禁用处理 -$this->_save($dbQuery,['status'=>'0']); - -// 数据启用处理 -$this->_save($dbQuery,['status'=>'1']); -``` - -#### 文件存储组件( oss 及 qiniu 需要配置参数) -```php - -// 配置默认存储方式 -sysconf('storage_type','文件存储类型'); - -// OSS存储配置 -sysconf('storage_oss_domain', '文件访问域名'); -sysconf('storage_oss_keyid', '接口授权AppId'); -sysconf('storage_oss_secret', '接口授权AppSecret'); -sysconf('storage_oss_bucket', '文件存储空间名称'); -sysconf('storage_oss_is_https', '文件HTTP访问协议'); -sysconf('storage_oss_endpoint', '文件存储节点域名'); - -// 七牛云存储配置 -sysconf('storage_qiniu_region', '文件存储节点'); -sysconf('storage_qiniu_domain', '文件访问域名'); -sysconf('storage_qiniu_bucket', '文件存储空间名称'); -sysconf('storage_qiniu_is_https', '文件HTTP访问协议'); -sysconf('storage_qiniu_access_key', '接口授权AccessKey'); -sysconf('storage_qiniu_secret_key', '接口授权SecretKey'); - - -// 生成文件名称(链接url或文件md5) -$filename = \think\admin\Storage::name($url,$ext,$prv,$fun); - -// 获取文件内容(自动存储方式) -$result = \think\admin\Storage::get($filename) - -// 保存内容到文件(自动存储方式) -boolean \think\admin\Storage::save($filename,$content); - -// 判断文件是否存在 -boolean \think\admin\Storage::has($filename); - -// 获取文件信息 -$result = \think\admin\Storage::info($filename); - -//指定存储类型(调用方法) -boolean \think\admin\Storage::instance('local')->save($filename,$content); -boolean \think\admin\Storage::instance('qiniu')->save($filename,$content); - -$result = \think\admin\Storage::instance('oss')->get($filename); -$result = \think\admin\Storage::instance('local')->get($filename); -$result = \think\admin\Storage::instance('qiniu')->get($filename); - -boolean \think\admin\Storage::instance('oss')->has($filename); -boolean \think\admin\Storage::instance('local')->has($filename); -boolean \think\admin\Storage::instance('qiniu')->has($filename); - -$resutl = \think\admin\Storage::instance('oss')->info($filename); -$resutl = \think\admin\Storage::instance('local')->info($filename); -$resutl = \think\admin\Storage::instance('qiniu')->info($filename); -``` - -#### 通用数据保存 -```php -// 指定关键列更新($where 为扩展条件) -boolean data_save($dbQuery,$data,'pkname',$where); -``` - -#### 通用网络请求 -```php -// 发起get请求 -$result = http_get($url,$query,$options); -$result = \library\tools\Http::get($url,$query,$options); - -// 发起post请求 -$result = http_post($url,$data,$options); -$result = \library\tools\Http::post($url,$data,$options); -``` - -#### 系统参数配置(基于 system_config 数据表) -```php -// 设置参数 -sysconf($keyname,$keyvalue); - -// 获取参数 -$keyvalue = sysconf($kename); -``` - -#### UTF8加密算法 -```php -// 字符串加密操作 -$string = encode($content); - -// 加密字符串解密 -$content = decode($string); -``` - -## 赞助打赏 - -![赞助](http://static.thinkadmin.top/pay.png) diff --git a/vendor/zoujingli/think-library/src/Controller.php b/vendor/zoujingli/think-library/src/Controller.php deleted file mode 100644 index 74f2ad216..000000000 --- a/vendor/zoujingli/think-library/src/Controller.php +++ /dev/null @@ -1,259 +0,0 @@ -app = $app; - $this->request = $app->request; - if (in_array($this->app->request->action(), get_class_methods(__CLASS__))) { - $this->error('Access without permission.'); - } - $this->initialize(); - } - - /** - * 控制器初始化 - */ - protected function initialize() - { - } - - /** - * 返回失败的操作 - * @param mixed $info 消息内容 - * @param array $data 返回数据 - * @param integer $code 返回代码 - */ - public function error($info, $data = [], $code = 0) - { - throw new HttpResponseException(json([ - 'code' => $code, 'info' => $info, 'data' => $data, - ])); - } - - /** - * 返回成功的操作 - * @param mixed $info 消息内容 - * @param array $data 返回数据 - * @param integer $code 返回代码 - */ - public function success($info, $data = [], $code = 1) - { - if ($this->csrf_state) { - TokenHelper::instance($this, $this->app)->clear(); - } - throw new HttpResponseException(json([ - 'code' => $code, 'info' => $info, 'data' => $data, - ])); - } - - /** - * URL重定向 - * @param string $url 跳转链接 - * @param integer $code 跳转代码 - */ - public function redirect($url, $code = 301) - { - throw new HttpResponseException(redirect($url, $code)); - } - - /** - * 返回视图内容 - * @param string $tpl 模板名称 - * @param array $vars 模板变量 - * @param string $node CSRF授权节点 - */ - public function fetch($tpl = '', $vars = [], $node = null) - { - foreach ($this as $name => $value) $vars[$name] = $value; - if ($this->csrf_state) { - TokenHelper::instance($this, $this->app)->fetchTemplate($tpl, $vars, $node); - } else { - throw new HttpResponseException(view($tpl, $vars)); - } - } - - /** - * 模板变量赋值 - * @param mixed $name 要显示的模板变量 - * @param mixed $value 变量的值 - * @return $this - */ - public function assign($name, $value = '') - { - if (is_string($name)) { - $this->$name = $value; - } elseif (is_array($name)) { - foreach ($name as $k => $v) { - if (is_string($k)) { - $this->$k = $v; - } - } - } - return $this; - } - - /** - * 数据回调处理机制 - * @param string $name 回调方法名称 - * @param mixed $one 回调引用参数1 - * @param mixed $two 回调引用参数2 - * @return boolean - */ - public function callback($name, &$one = [], &$two = []) - { - if (is_callable($name)) return call_user_func($name, $this, $one, $two); - foreach ([$name, "_{$this->app->request->action()}{$name}"] as $method) { - if (method_exists($this, $method) && false === $this->$method($one, $two)) { - return false; - } - } - return true; - } - - /** - * 快捷查询逻辑器 - * @param string|Query $dbQuery - * @return QueryHelper - */ - protected function _query($dbQuery) - { - return QueryHelper::instance($this, $this->app)->init($dbQuery); - } - - /** - * 快捷分页逻辑器 - * @param string|Query $dbQuery - * @param boolean $page 是否启用分页 - * @param boolean $display 是否渲染模板 - * @param boolean $total 集合分页记录数 - * @param integer $limit 集合每页记录数 - * @return array - * @throws DataNotFoundException - * @throws DbException - * @throws ModelNotFoundException - */ - protected function _page($dbQuery, $page = true, $display = true, $total = false, $limit = 0) - { - return PageHelper::instance($this, $this->app)->init($dbQuery, $page, $display, $total, $limit); - } - - /** - * 快捷表单逻辑器 - * @param string|Query $dbQuery - * @param string $template 模板名称 - * @param string $field 指定数据对象主键 - * @param array $where 额外更新条件 - * @param array $data 表单扩展数据 - * @return array|boolean - * @throws DataNotFoundException - * @throws DbException - * @throws ModelNotFoundException - */ - protected function _form($dbQuery, $template = '', $field = '', $where = [], $data = []) - { - return FormHelper::instance($this, $this->app)->init($dbQuery, $template, $field, $where, $data); - } - - /** - * 快捷更新逻辑器 - * @param string|Query $dbQuery - * @param array $data 表单扩展数据 - * @param string $field 数据对象主键 - * @param array $where 额外更新条件 - * @return boolean - * @throws DbException - */ - protected function _save($dbQuery, $data = [], $field = '', $where = []) - { - return SaveHelper::instance($this, $this->app)->init($dbQuery, $data, $field, $where); - } - - /** - * 快捷删除逻辑器 - * @param string|Query $dbQuery - * @param string $field 数据对象主键 - * @param array $where 额外更新条件 - * @return boolean|null - * @throws DbException - */ - protected function _delete($dbQuery, $field = '', $where = []) - { - return DeleteHelper::instance($this, $this->app)->init($dbQuery, $field, $where); - } - - /** - * 检查表单令牌验证 - * @param boolean $return 是否返回结果 - * @return boolean - */ - protected function _applyFormToken($return = false) - { - return TokenHelper::instance($this, $this->app)->init($return); - } - -} diff --git a/vendor/zoujingli/think-library/src/Helper.php b/vendor/zoujingli/think-library/src/Helper.php deleted file mode 100644 index a1a11792e..000000000 --- a/vendor/zoujingli/think-library/src/Helper.php +++ /dev/null @@ -1,77 +0,0 @@ -app = $app; - $this->class = $controller; - } - - /** - * 获取数据库查询对象 - * @param string|Query $dbQuery - * @return Query - */ - protected function buildQuery($dbQuery) - { - return is_string($dbQuery) ? $this->app->db->name($dbQuery) : $dbQuery; - } - - /** - * 实例对象反射 - * @param Controller $controller - * @param App $app - * @return static - */ - public static function instance(Controller $controller, App $app) - { - return new static($controller, $app); - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/Queue.php b/vendor/zoujingli/think-library/src/Queue.php deleted file mode 100644 index cb4024a08..000000000 --- a/vendor/zoujingli/think-library/src/Queue.php +++ /dev/null @@ -1,117 +0,0 @@ -jobid)) return false; - $queue = app()->db->name('SystemQueue')->where(['id' => $this->jobid])->find(); - if (empty($queue)) return false; - $update = ['exec_time' => time() + $wait, 'attempts' => $queue['attempts'] + 1, 'status' => '1']; - return app()->db->name('SystemQueue')->where(['id' => $this->jobid])->update($update) !== false; - } - - /** - * 注册异步处理任务 - * @param string $title 任务名称 - * @param string $command 执行内容 - * @param integer $later 延时执行时间 - * @param array $data 任务附加数据 - * @param integer $rscript 任务多开 - * @return boolean - * @throws \think\Exception - */ - public static function register($title, $command, $later = 0, $data = [], $rscript = 1) - { - $map = [['title', 'eq', $title], ['status', 'in', ['1', '2']]]; - if (empty($rscript) && app()->db->name('SystemQueue')->where($map)->count() > 0) { - throw new \think\Exception('该任务已经创建,请耐心等待处理完成!'); - } - $result = app()->db->name('SystemQueue')->insert([ - 'title' => $title, - 'command' => $command, - 'attempts' => '0', - 'rscript' => intval(boolval($rscript)), - 'exec_data' => json_encode($data, JSON_UNESCAPED_UNICODE), - 'exec_time' => $later > 0 ? time() + $later : time(), - 'enter_time' => '0', - 'outer_time' => '0', - ]); - return $result !== false; - } - - /** - * 执行任务处理 - * @param Input $input 输入对象 - * @param Output $output 输出对象 - * @param array $data 任务参数 - * @return mixed - */ - abstract function execute(Input $input, Output $output, array $data = []); - -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/Service.php b/vendor/zoujingli/think-library/src/Service.php deleted file mode 100644 index 42d9ef8a3..000000000 --- a/vendor/zoujingli/think-library/src/Service.php +++ /dev/null @@ -1,70 +0,0 @@ -app = $app; - $this->init(); - } - - /** - * 服务初始化 - */ - protected function init() - { - } - - /** - * 静态实例对象 - * @param App $app - * @return $this - */ - public static function instance(App $app = null) - { - if (is_null($app)) $app = app(); - $key = md5(get_called_class()); - if (!isset(self::$cache[$key])) { - self::$cache[$key] = new static($app); - } - return self::$cache[$key]; - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/Storage.php b/vendor/zoujingli/think-library/src/Storage.php deleted file mode 100644 index fbfd36316..000000000 --- a/vendor/zoujingli/think-library/src/Storage.php +++ /dev/null @@ -1,129 +0,0 @@ -{$method}()"); - } - - /** - * 设置文件驱动名称 - * @param string $name 驱动名称 - * @return LocalStorage|QiniuStorage - * @throws \think\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public static function instance($name = null) - { - if (is_null($name)) $name = sysconf('storage_type'); - if (isset(self::$object[$class = ucfirst(strtolower($name))])) { - return self::$object[$class]; - } - if (class_exists($object = __NAMESPACE__ . "\\storage\\{$class}Storage")) { - return self::$object[$class] = new $object; - } - throw new \think\Exception("File driver [{$class}] does not exist."); - } - - /** - * 获取文件相对名称 - * @param string $url 文件访问链接 - * @param string $ext 文件后缀名称 - * @param string $pre 文件存储前缀 - * @param string $fun 名称规则方法 - * @return string - */ - public static function name($url, $ext = '', $pre = '', $fun = 'md5') - { - empty($ext) && $ext = pathinfo($url, 4); - empty($ext) || $ext = trim($ext, '.\\/'); - empty($pre) || $pre = trim($pre, '.\\/'); - $splits = array_merge([$pre], str_split($fun($url), 16)); - return trim(join('/', $splits), '/') . '.' . strtolower($ext ? $ext : 'tmp'); - } - - /** - * 根据文件后缀获取文件MINE - * @param array $exts 文件后缀 - * @param array $mime 文件MINE信息 - * @return string - */ - public static function mime($exts, $mime = []) - { - $mimes = self::mimes(); - foreach (is_string($exts) ? explode(',', $exts) : $exts as $e) { - $mime[] = isset($mimes[strtolower($e)]) ? $mimes[strtolower($e)] : 'application/octet-stream'; - } - return join(',', array_unique($mime)); - } - - /** - * 获取所有文件扩展的MINES - * @return array - */ - public static function mimes() - { - static $mimes = []; - if (count($mimes) > 0) return $mimes; - return $mimes = include __DIR__ . '/storage/bin/mimes.php'; - } - -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/ThinkLibrary.php b/vendor/zoujingli/think-library/src/ThinkLibrary.php deleted file mode 100644 index 6361ab819..000000000 --- a/vendor/zoujingli/think-library/src/ThinkLibrary.php +++ /dev/null @@ -1,80 +0,0 @@ -app->middleware->add(SessionInit::class); - // 动态加入应用函数 - foreach (glob($this->app->getAppPath() . '*/sys.php') as $file) { - \Composer\Autoload\includeFile($file); - } - } - - /** - * 服务启动方法 - */ - public function boot() - { - // 注册访问中间键 - $this->app->middleware->add(function (Request $request, \Closure $next) { - $header = []; - if (($origin = $request->header('origin', '*')) !== '*') { - $header['Access-Control-Allow-Origin'] = $origin; - $header['Access-Control-Allow-Methods'] = 'GET,POST,PATCH,PUT,DELETE'; - $header['Access-Control-Allow-Headers'] = 'Authorization,Content-Type,If-Match,If-Modified-Since,If-None-Match,If-Unmodified-Since,X-Requested-With'; - $header['Access-Control-Expose-Headers'] = 'User-Form-Token'; - } - // 访问模式及访问权限检查 - if ($request->isOptions()) { - return response()->code(204)->header($header); - } elseif (AuthService::instance($this->app)->check()) { - return $next($request)->header($header); - } elseif (AuthService::instance($this->app)->isLogin()) { - return json(['code' => 0, 'msg' => '抱歉,没有访问该操作的权限!'])->header($header); - } else { - return json(['code' => 0, 'msg' => '抱歉,需要登录获取访问权限!', 'url' => url('@admin/login')])->header($header); - } - }); - // 注册系统任务指令 - $this->commands([ - 'think\admin\queue\WorkQueue', - 'think\admin\queue\StopQueue', - 'think\admin\queue\StateQueue', - 'think\admin\queue\StartQueue', - 'think\admin\queue\QueryQueue', - 'think\admin\queue\ListenQueue', - 'think\admin\install\CommandInstall', - ]); - } - -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/common.php b/vendor/zoujingli/think-library/src/common.php deleted file mode 100644 index 09239da27..000000000 --- a/vendor/zoujingli/think-library/src/common.php +++ /dev/null @@ -1,196 +0,0 @@ -getRuntimePath() . date('Ymd') . '.txt'; - $str = (is_string($data) ? $data : (is_array($data) || is_object($data)) ? print_r($data, true) : var_export($data, true)) . PHP_EOL; - $replace ? file_put_contents($file, $str) : file_put_contents($file, $str, FILE_APPEND); - } -} - -if (!function_exists('auth')) { - /** - * 访问权限检查 - * @param string $node - * @return boolean - * @throws ReflectionException - */ - function auth($node) - { - return AuthService::instance()->check($node); - } -} - -if (!function_exists('systoken')) { - /** - * 生成 CSRF-TOKEN 参数 - * @param string $node - * @return string - */ - function systoken($node = null) - { - return TokenService::instance()->buildFormToken($node)['token']; - } -} - -if (!function_exists('format_datetime')) { - /** - * 日期格式标准输出 - * @param string $datetime 输入日期 - * @param string $format 输出格式 - * @return false|string - */ - function format_datetime($datetime, $format = 'Y年m月d日 H:i:s') - { - if (empty($datetime)) return '-'; - if (is_numeric($datetime)) { - return date($format, $datetime); - } else { - return date($format, strtotime($datetime)); - } - } -} - -if (!function_exists('sysconf')) { - /** - * 设备或配置系统参数 - * @param string $name 参数名称 - * @param string $value 参数内容 - * @return mixed - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - function sysconf($name = '', $value = null) - { - $type = 'base'; - static $data = []; - if (stripos($name, '.') !== false) { - list($type, $name) = explode('.', $name); - } - list($field, $filter) = explode('|', "{$name}|"); - if (!empty($field) && !empty($value)) { - if (is_array($value)) { - foreach ($value as $k => $v) sysconf("{$field}.{$k}", $v); - } else { - list($row, $data) = [['name' => $field, 'value' => $value, 'type' => $type], []]; - return DataExtend::save('SystemConfig', $row, 'name', ['type' => $type]); - } - } else { - if (empty($data)) foreach (app()->db->name('SystemConfig')->select()->toArray() as $vo) { - $data[$vo['type']][$vo['name']] = $vo['value']; - } - if (empty($name)) { - return empty($data[$type]) ? [] : (strtolower($filter) === 'raw' ? $data[$type] : array_map(function ($value) { - return htmlspecialchars($value); - }, $data[$type])); - } else { - if (isset($data[$type]) && isset($data[$type][$field])) { - return strtolower($filter) === 'raw' ? $data[$type][$field] : htmlspecialchars($data[$type][$field]); - } else return ''; - } - } - } -} - -if (!function_exists('http_get')) { - /** - * 以get模拟网络请求 - * @param string $url HTTP请求URL地址 - * @param array|string $query GET请求参数 - * @param array $options CURL参数 - * @return boolean|string - */ - function http_get($url, $query = [], $options = []) - { - return HttpExtend::get($url, $query, $options); - } -} - -if (!function_exists('http_post')) { - /** - * 以post模拟网络请求 - * @param string $url HTTP请求URL地址 - * @param array|string $data POST请求数据 - * @param array $options CURL参数 - * @return boolean|string - */ - function http_post($url, $data, $options = []) - { - return HttpExtend::post($url, $data, $options); - } -} - -if (!function_exists('data_save')) { - /** - * 数据增量保存 - * @param Query|string $dbQuery - * @param array $data 需要保存或更新的数据 - * @param string $key 条件主键限制 - * @param array $where 其它的where条件 - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - function data_save($dbQuery, $data, $key = 'id', $where = []) - { - return DataExtend::save($dbQuery, $data, $key, $where); - } -} - -if (!function_exists('encode')) { - /** - * 加密 UTF8 字符串 - * @param string $content - * @return string - */ - function encode($content) - { - list($chars, $length) = ['', strlen($string = iconv('UTF-8', 'GBK//TRANSLIT', $content))]; - for ($i = 0; $i < $length; $i++) $chars .= str_pad(base_convert(ord($string[$i]), 10, 36), 2, 0, 0); - return $chars; - } -} - -if (!function_exists('decode')) { - /** - * 解密 UTF8 字符串 - * @param string $content - * @return string - */ - function decode($content) - { - $chars = ''; - foreach (str_split($content, 2) as $char) { - $chars .= chr(intval(base_convert($char, 36, 10))); - } - return iconv('GBK//TRANSLIT', 'UTF-8', $chars); - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/extend/CodeExtend.php b/vendor/zoujingli/think-library/src/extend/CodeExtend.php deleted file mode 100644 index 913fd981f..000000000 --- a/vendor/zoujingli/think-library/src/extend/CodeExtend.php +++ /dev/null @@ -1,71 +0,0 @@ - $value) $headers[$key] = iconv("utf-8", "gbk//TRANSLIT", $value); - fputcsv($handle, $headers); - if (is_resource($handle)) fclose($handle); - } - - /** - * 设置写入CSV文件内容 - * @param array $list 数据列表(二维数组) - * @param array $rules 数据规则(一维数组) - */ - public static function body(array $list, array $rules) - { - $handle = fopen('php://output', 'w'); - foreach ($list as $data) { - $rows = []; - foreach ($rules as $rule) { - $rows[] = self::parseKeyDotValue($data, $rule); - } - fputcsv($handle, $rows); - } - if (is_resource($handle)) fclose($handle); - } - - /** - * 根据数组key查询(可带点规则) - * @param array $data 数据 - * @param string $rule 规则,如: order.order_no - * @return mixed - */ - public static function parseKeyDotValue(array $data, $rule) - { - list($temp, $attr) = [$data, explode('.', trim($rule, '.'))]; - while ($key = array_shift($attr)) $temp = isset($temp[$key]) ? $temp[$key] : $temp; - return (is_string($temp) || is_numeric($temp)) ? @iconv('utf-8', 'gbk//TRANSLIT', "{$temp}") : ''; - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/extend/DataExtend.php b/vendor/zoujingli/think-library/src/extend/DataExtend.php deleted file mode 100644 index a83f80a66..000000000 --- a/vendor/zoujingli/think-library/src/extend/DataExtend.php +++ /dev/null @@ -1,115 +0,0 @@ -db->name($dbQuery) : $dbQuery; - list($table, $value) = [$db->getTable(), isset($data[$key]) ? $data[$key] : null]; - $map = isset($where[$key]) ? [] : (is_string($value) ? [[$key, 'in', explode(',', $value)]] : [$key => $value]); - if (is_array($info = $app->db->table($table)->master()->where($where)->where($map)->find()) && !empty($info)) { - if ($app->db->table($table)->strict(false)->where($where)->where($map)->update($data) !== false) { - return isset($info[$key]) ? $info[$key] : true; - } else { - return false; - } - } else { - return $app->db->table($table)->strict(false)->insertGetId($data); - } - } - - /** - * 一维数据数组生成数据树 - * @param array $list 数据列表 - * @param string $id 父ID Key - * @param string $pid ID Key - * @param string $son 定义子数据Key - * @return array - */ - public static function arr2tree($list, $id = 'id', $pid = 'pid', $son = 'sub') - { - list($tree, $map) = [[], []]; - foreach ($list as $item) $map[$item[$id]] = $item; - foreach ($list as $item) if (isset($item[$pid]) && isset($map[$item[$pid]])) { - $map[$item[$pid]][$son][] = &$map[$item[$id]]; - } else $tree[] = &$map[$item[$id]]; - unset($map); - return $tree; - } - - /** - * 一维数据数组生成数据树 - * @param array $list 数据列表 - * @param string $id ID Key - * @param string $pid 父ID Key - * @param string $path - * @param string $ppath - * @return array - */ - public static function arr2table(array $list, $id = 'id', $pid = 'pid', $path = 'path', $ppath = '') - { - $tree = []; - foreach (self::arr2tree($list, $id, $pid) as $attr) { - $attr[$path] = "{$ppath}-{$attr[$id]}"; - $attr['sub'] = isset($attr['sub']) ? $attr['sub'] : []; - $attr['spt'] = substr_count($ppath, '-'); - $attr['spl'] = str_repeat(" ├ ", $attr['spt']); - $sub = $attr['sub']; - unset($attr['sub']); - $tree[] = $attr; - if (!empty($sub)) $tree = array_merge($tree, self::arr2table($sub, $id, $pid, $path, $attr[$path])); - } - return $tree; - } - - /** - * 获取数据树子ID - * @param array $list 数据列表 - * @param int $id 起始ID - * @param string $key 子Key - * @param string $pkey 父Key - * @return array - */ - public static function getArrSubIds($list, $id = 0, $key = 'id', $pkey = 'pid') - { - $ids = [intval($id)]; - foreach ($list as $vo) if (intval($vo[$pkey]) > 0 && intval($vo[$pkey]) === intval($id)) { - $ids = array_merge($ids, self::getArrSubIds($list, intval($vo[$key]), $key, $pkey)); - } - return $ids; - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/extend/ExpressExtend.php b/vendor/zoujingli/think-library/src/extend/ExpressExtend.php deleted file mode 100644 index 95104c871..000000000 --- a/vendor/zoujingli/think-library/src/extend/ExpressExtend.php +++ /dev/null @@ -1,58 +0,0 @@ - date('Y-m-d H:i:s', $vo['time']), 'context' => $vo['desc'], - ]; - return ['message' => 'ok', 'com' => $code, 'nu' => $number, 'data' => $list]; - } - } - return ['message' => 'ok', 'com' => $code, 'nu' => $number, 'data' => $list]; - } - - /** - * 执行百度快递100应用查询请求 - * @param string $code 快递公司编号 - * @param string $number 快递单单号 - * @return mixed - */ - private static function doExpress($code, $number) - { - list($microtime, $clientIp) = [time(), app()->request->ip()]; - $url = "https://sp0.baidu.com/9_Q4sjW91Qh3otqbppnN2DJv/pae/channel/data/asyncqury?cb=callback&appid=4001&com={$code}&nu={$number}&vcode=&token=&_={$microtime}"; - $options = ['cookie_file' => app()->getRuntimePath() . 'temp/cookie', 'headers' => ['Host' => 'www.kuaidi100.com', 'CLIENT-IP' => $clientIp, 'X-FORWARDED-FOR' => $clientIp],]; - return json_decode(str_replace('/**/callback(', '', trim(http_get($url, [], $options), ')')), true); - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/extend/HttpExtend.php b/vendor/zoujingli/think-library/src/extend/HttpExtend.php deleted file mode 100644 index ecf7c5d19..000000000 --- a/vendor/zoujingli/think-library/src/extend/HttpExtend.php +++ /dev/null @@ -1,142 +0,0 @@ - $value) if (is_object($value) && $value instanceof \CURLFile) { - $build = false; - } elseif (is_string($value) && class_exists('CURLFile', false) && stripos($value, '@') === 0) { - if (($filename = realpath(trim($value, '@'))) && file_exists($filename)) { - list($build, $data[$key]) = [false, new \CURLFile($filename)]; - } - } - return $build ? http_build_query($data) : $data; - } - - - /** - * 获取浏览器代理信息 - * @return string - */ - private static function getUserAgent() - { - if (!empty($_SERVER['HTTP_USER_AGENT'])) return $_SERVER['HTTP_USER_AGENT']; - $userAgents = [ - "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1", - "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11", - "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0", - "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko", - "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50", - "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)", - "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11", - ]; - return $userAgents[array_rand($userAgents, 1)]; - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/extend/ProcessExtend.php b/vendor/zoujingli/think-library/src/extend/ProcessExtend.php deleted file mode 100644 index 9612a3e01..000000000 --- a/vendor/zoujingli/think-library/src/extend/ProcessExtend.php +++ /dev/null @@ -1,141 +0,0 @@ -getRootPath(); - return trim("php {$root}think {$args}"); - } - - /** - * 获取当前应用版本 - * @return string - */ - public static function version() - { - return app()->config->get('app.thinkadmin_ver', 'v4'); - } - - /** - * 创建异步进程 - * @param string $command 任务指令 - */ - public static function create($command) - { - if (self::iswin()) { - $command = __DIR__ . "/bin/console.exe {$command}"; - pclose(popen("wmic process call create \"{$command}\"", 'r')); - } else { - pclose(popen("{$command} &", 'r')); - } - } - - /** - * 立即执行指令 - * @param string $command 执行指令 - * @return string - */ - public static function exec($command) - { - return shell_exec($command); - } - - /** - * 查询相关进程列表 - * @param string $command 任务指令 - * @return array - */ - public static function query($command) - { - $list = []; - if (self::iswin()) { - $result = self::exec('wmic process where name="php.exe" get processid,CommandLine'); - foreach (explode("\n", $result) as $line) if (self::_issub($line, $command) !== false) { - $attr = explode(' ', self::_space($line)); - $list[] = ['pid' => array_pop($attr), 'cmd' => join(' ', $attr)]; - } - } else { - $result = self::exec('ps ax|grep -v grep|grep "' . $command . '"'); - foreach (explode("\n", $result) as $line) if (self::_issub($line, $command) !== false) { - $attr = explode(' ', self::_space($line)); - list($pid) = [array_shift($attr), array_shift($attr), array_shift($attr), array_shift($attr)]; - $list[] = ['pid' => $pid, 'cmd' => join(' ', $attr)]; - } - } - return $list; - } - - /** - * 关闭任务进程 - * @param integer $pid 进程号 - * @return boolean - */ - public static function close($pid) - { - if (self::iswin()) { - self::exec("wmic process {$pid} call terminate"); - } else { - self::exec("kill -9 {$pid}"); - } - return true; - } - - /** - * 判断系统类型 - * @return boolean - */ - public static function iswin() - { - return PATH_SEPARATOR === ';'; - } - - /** - * 消息空白字符过滤 - * @param string $content - * @param string $char - * @return string - */ - private static function _space($content, $char = ' ') - { - return preg_replace('|\s+|', $char, strtr(trim($content), '\\', '/')); - } - - /** - * 判断是否包含字符串 - * @param string $content - * @param string $substr - * @return boolean - */ - private static function _issub($content, $substr) - { - return stripos(self::_space($content), self::_space($substr)) !== false; - } - -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/extend/bin/console.exe b/vendor/zoujingli/think-library/src/extend/bin/console.exe deleted file mode 100644 index 6d8e8df799cf43c41ea1ffc7217f83541332e8ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmd^7&1(}u6o1ub8YoRK#*-V-($xhjwB|$tC zS`Rjjc=12*pm>t1s0XPZs0Rz4dJ^oxL!k;qt2bTWY_cjU;=!8_-uu0IZ{Ba-%)Fyx zmmvTE&8V&ma2HWXk7xgEo@2Ug`~5b!6N*(n>_vOp|evrNnYf zVwfa(JVQz>M`Nw6A-O@_y6frdp@D02zRu@v&MDsd`rI+ZdHwd>podpHOdEPZ?ESg3 z;S_)(Nzg7o?DKQWuvyw9ZLD9;54NKdK_w#4Q}>&`ZxQd{2|kpS^iu7jyc9@g=6B2Xj1egF3{*3Jx>TUFE`v@U=sVDLcN4~74;746I3B@ z8YukUEOU4~6e<`wsuN*tqBGNGMM}zsnPX+b^2Fwv#cA%_2<#$d&EPiK!zOubFUd2D zh$W|1$uKo;Ff$ZVZEc()bFfZ*s;hj4B=Sa)np%k-3WY`s)Drowa!`sr~NaU9U zX@%+z*Rt4|h!Md9Da&G3oD7*dvn;A};)r7brr(Za)RW!sx_1J##P@tw}b z`JJnQ+7Qh4NqzChe8bFwv%cCf6$idmgk~0aI6?S&BFNV;)u9$vu(YrTjp{}_>kvUm zbUE9wAWRZvr)}z76LDG|Ncf)9j{>tz$Pz)8=0wnGsk1t3qumSl#EjO?%jCn2nj%L| z)RMA1tf~_cRaMjKv!pzj#0`jCFy${6<%$~(<6##T&hp&{Kl0Y9B8Mm36K=Exqty{P zTs_c?UfNx%CgsSmyR_QkMnU9OuwBvTi_3LUwjgCgmV}QpRrn$H9{tY7{QLWS{F_-C zlLjbPG@E-L0where = $where; - $this->query = $this->buildQuery($dbQuery); - $this->pkField = empty($field) ? $this->query->getPk() : $field; - $this->pkValue = $this->app->request->post($this->pkField, null); - // 主键限制处理 - if (!isset($this->where[$this->pkField]) && is_string($this->pkValue)) { - $this->query->whereIn($this->pkField, explode(',', $this->pkValue)); - } - // 前置回调处理 - if (false === $this->class->callback('_delete_filter', $this->query, $where)) { - return null; - } - // 执行删除操作 - if (method_exists($this->query, 'getTableFields') && in_array('is_deleted', $this->query->getTableFields())) { - $result = $this->query->where($this->where)->update(['is_deleted' => '1']); - } else { - $result = $this->query->where($this->where)->delete(); - } - // 结果回调处理 - if (false === $this->class->callback('_delete_result', $result)) { - return $result; - } - // 回复前端结果 - if ($result !== false) { - $this->class->success('数据删除成功!', ''); - } else { - $this->class->error('数据删除失败, 请稍候再试!'); - } - } - -} diff --git a/vendor/zoujingli/think-library/src/helper/FormHelper.php b/vendor/zoujingli/think-library/src/helper/FormHelper.php deleted file mode 100644 index b3bda10b3..000000000 --- a/vendor/zoujingli/think-library/src/helper/FormHelper.php +++ /dev/null @@ -1,103 +0,0 @@ -query = $this->buildQuery($dbQuery); - list($this->template, $this->where, $this->data) = [$template, $where, $data]; - $this->pkField = empty($field) ? ($this->query->getPk() ? $this->query->getPk() : 'id') : $field;; - $this->pkValue = input($this->pkField, isset($data[$this->pkField]) ? $data[$this->pkField] : null); - // GET请求, 获取数据并显示表单页面 - if ($this->app->request->isGet()) { - if ($this->pkValue !== null) { - $where = [$this->pkField => $this->pkValue]; - $data = (array)$this->query->where($where)->where($this->where)->find(); - } - $data = array_merge($data, $this->data); - if (false !== $this->class->callback('_form_filter', $data)) { - return $this->class->fetch($this->template, ['vo' => $data]); - } - return $data; - } - // POST请求, 数据自动存库处理 - if ($this->app->request->isPost()) { - $data = array_merge($this->app->request->post(), $this->data); - if (false !== $this->class->callback('_form_filter', $data, $this->where)) { - $result = DataExtend::save($this->query, $data, $this->pkField, $this->where); - if (false !== $this->class->callback('_form_result', $result, $data)) { - if ($result !== false) $this->class->success('恭喜, 数据保存成功!', ''); - $this->class->error('数据保存失败, 请稍候再试!'); - } - return $result; - } - } - } - -} diff --git a/vendor/zoujingli/think-library/src/helper/PageHelper.php b/vendor/zoujingli/think-library/src/helper/PageHelper.php deleted file mode 100644 index b198fc48c..000000000 --- a/vendor/zoujingli/think-library/src/helper/PageHelper.php +++ /dev/null @@ -1,114 +0,0 @@ -page = $page; - $this->total = $total; - $this->limit = $limit; - $this->display = $display; - $this->query = $this->buildQuery($dbQuery); - // 数据列表排序处理 - if ($this->app->request->isPost()) { - $post = $this->app->request->post(); - $sort = intval(isset($post['sort']) ? $post['sort'] : 0); - unset($post['action'], $post['sort']); - if ($this->app->db->table($this->query->getTable())->where($post)->update(['sort' => $sort]) !== false) { - return $this->class->success('排序参数修改成功!', ''); - } - return $this->class->error('排序参数修改失败,请稍候再试!'); - } - // 未配置 order 规则时自动按 sort 字段排序 - if (!$this->query->getOptions('order') && method_exists($this->query, 'getTableFields')) { - if (in_array('sort', $this->query->getTableFields())) $this->query->order('sort desc'); - } - // 列表分页及结果集处理 - if ($this->page) { - // 分页每页显示记录数 - $limit = intval($this->app->request->get('limit', cookie('page-limit'))); - cookie('page-limit', $limit = $limit >= 10 ? $limit : 20); - if ($this->limit > 0) $limit = $this->limit; - $rows = []; - // $paginate = $this->query->paginate($limit, $this->total, ['query' => ($query = $this->app->request->get())]); - $query = $this->app->request->get(); - $paginate = $this->query->paginate($limit, $this->total); - foreach ([10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200] as $num) { - list($query['limit'], $query['page'], $selected) = [$num, '1', $limit === $num ? 'selected' : '']; - $url = url('@admin') . '#' . $this->app->request->baseUrl() . '?' . urldecode(http_build_query($query)); - array_push($rows, ""); - } - $select = ""; - $html = "

    "; - $this->class->assign('pagehtml', preg_replace('|href="(.*?)"|', 'data-open="$1" onclick="return false" href="$1"', $html)); - $result = ['page' => ['limit' => intval($limit), 'total' => intval($paginate->total()), 'pages' => intval($paginate->lastPage()), 'current' => intval($paginate->currentPage())], 'list' => $paginate->items()]; - } else { - $result = ['list' => $this->query->select()->toArray()]; - } - if (false !== $this->class->callback('_page_filter', $result['list']) && $this->display) { - return $this->class->fetch('', $result); - } - return $result; - } - -} diff --git a/vendor/zoujingli/think-library/src/helper/QueryHelper.php b/vendor/zoujingli/think-library/src/helper/QueryHelper.php deleted file mode 100644 index 5f049783e..000000000 --- a/vendor/zoujingli/think-library/src/helper/QueryHelper.php +++ /dev/null @@ -1,227 +0,0 @@ -query, $name])) { - call_user_func_array($callable, $args); - } - return $this; - } - - /** - * 逻辑器初始化 - * @param string|Query $dbQuery - * @return $this - */ - public function init($dbQuery) - { - $this->query = $this->buildQuery($dbQuery); - return $this; - } - - /** - * 获取当前Db操作对象 - * @return \think\db\Query - */ - public function db() - { - return $this->query; - } - - /** - * 设置Like查询条件 - * @param string|array $fields 查询字段 - * @param string $input 输入类型 get|post - * @param string $alias 别名分割符 - * @return $this - */ - public function like($fields, $input = 'request', $alias = '#') - { - $data = $this->app->request->$input(); - foreach (is_array($fields) ? $fields : explode(',', $fields) as $field) { - list($dk, $qk) = [$field, $field]; - if (stripos($field, $alias) !== false) { - list($dk, $qk) = explode($alias, $field); - } - if (isset($data[$qk]) && $data[$qk] !== '') { - $this->query->whereLike($dk, "%{$data[$qk]}%"); - } - } - return $this; - } - - /** - * 设置Equal查询条件 - * @param string|array $fields 查询字段 - * @param string $input 输入类型 get|post - * @param string $alias 别名分割符 - * @return $this - */ - public function equal($fields, $input = 'request', $alias = '#') - { - $data = $this->app->request->$input(); - foreach (is_array($fields) ? $fields : explode(',', $fields) as $field) { - list($dk, $qk) = [$field, $field]; - if (stripos($field, $alias) !== false) { - list($dk, $qk) = explode($alias, $field); - } - if (isset($data[$qk]) && $data[$qk] !== '') { - $this->query->where($dk, "{$data[$qk]}"); - } - } - return $this; - } - - /** - * 设置IN区间查询 - * @param string $fields 查询字段 - * @param string $split 输入分隔符 - * @param string $input 输入类型 get|post - * @param string $alias 别名分割符 - * @return $this - */ - public function in($fields, $split = ',', $input = 'request', $alias = '#') - { - $data = $this->app->request->$input(); - foreach (is_array($fields) ? $fields : explode(',', $fields) as $field) { - list($dk, $qk) = [$field, $field]; - if (stripos($field, $alias) !== false) { - list($dk, $qk) = explode($alias, $field); - } - if (isset($data[$qk]) && $data[$qk] !== '') { - $this->query->whereIn($dk, explode($split, $data[$qk])); - } - } - return $this; - } - - /** - * 设置内容区间查询 - * @param string|array $fields 查询字段 - * @param string $split 输入分隔符 - * @param string $input 输入类型 get|post - * @param string $alias 别名分割符 - * @return $this - */ - public function valueBetween($fields, $split = ' ', $input = 'request', $alias = '#') - { - return $this->setBetweenWhere($fields, $split, $input, $alias); - } - - /** - * 设置日期时间区间查询 - * @param string|array $fields 查询字段 - * @param string $split 输入分隔符 - * @param string $input 输入类型 - * @param string $alias 别名分割符 - * @return $this - */ - public function dateBetween($fields, $split = ' - ', $input = 'request', $alias = '#') - { - return $this->setBetweenWhere($fields, $split, $input, $alias, function ($value, $type) { - if ($type === 'after') { - return "{$value} 23:59:59"; - } else { - return "{$value} 00:00:00"; - } - }); - } - - /** - * 设置时间戳区间查询 - * @param string|array $fields 查询字段 - * @param string $split 输入分隔符 - * @param string $input 输入类型 - * @param string $alias 别名分割符 - * @return $this - */ - public function timeBetween($fields, $split = ' - ', $input = 'request', $alias = '#') - { - return $this->setBetweenWhere($fields, $split, $input, $alias, function ($value, $type) { - if ($type === 'after') { - return strtotime("{$value} 23:59:59"); - } else { - return strtotime("{$value} 00:00:00"); - } - }); - } - - /** - * 设置区域查询条件 - * @param string|array $fields 查询字段 - * @param string $split 输入分隔符 - * @param string $input 输入类型 - * @param string $alias 别名分割符 - * @param callable $callback - * @return $this - */ - private function setBetweenWhere($fields, $split = ' ', $input = 'request', $alias = '#', $callback = null) - { - $data = $this->app->request->$input(); - foreach (is_array($fields) ? $fields : explode(',', $fields) as $field) { - list($dk, $qk) = [$field, $field]; - if (stripos($field, $alias) !== false) { - list($dk, $qk) = explode($alias, $field); - } - if (isset($data[$qk]) && $data[$qk] !== '') { - list($begin, $after) = explode($split, $data[$qk]); - if (is_callable($callback)) { - $after = call_user_func($callback, $after, 'after'); - $begin = call_user_func($callback, $begin, 'begin'); - } - $this->query->whereBetween($dk, [$begin, $after]); - } - } - return $this; - } - - /** - * 实例化分页管理器 - * @param boolean $isPage 是否启用分页 - * @param boolean $isDisplay 是否渲染模板 - * @param boolean $total 集合分页记录数 - * @param integer $limit 集合每页记录数 - * @return mixed - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function page($isPage = true, $isDisplay = true, $total = false, $limit = 0) - { - return PageHelper::instance($this->class, $this->app)->init($this->query, $isPage, $isDisplay, $total, $limit); - } -} diff --git a/vendor/zoujingli/think-library/src/helper/SaveHelper.php b/vendor/zoujingli/think-library/src/helper/SaveHelper.php deleted file mode 100644 index 475fb6223..000000000 --- a/vendor/zoujingli/think-library/src/helper/SaveHelper.php +++ /dev/null @@ -1,91 +0,0 @@ -where = $where; - $this->query = $this->buildQuery($dbQuery); - $this->pkField = empty($field) ? $this->query->getPk() : $field; - $this->data = empty($data) ? $this->app->request->post() : $data; - $this->pkValue = $this->app->request->post($this->pkField, null); - // 主键限制处理 - if (!isset($this->where[$this->pkField]) && is_string($this->pkValue)) { - $this->query->whereIn($this->pkField, explode(',', $this->pkValue)); - if (isset($this->data)) unset($this->data[$this->pkField]); - } - // 前置回调处理 - if (false === $this->class->callback('_save_filter', $this->query, $this->data)) { - return false; - } - // 执行更新操作 - $result = $this->query->where($this->where)->update($this->data) !== false; - // 结果回调处理 - if (false === $this->class->callback('_save_result', $result)) { - return $result; - } - // 回复前端结果 - if ($result !== false) { - $this->class->success('数据更新成功!', ''); - } else { - $this->class->error('数据更新失败, 请稍候再试!'); - } - } - -} diff --git a/vendor/zoujingli/think-library/src/helper/TokenHelper.php b/vendor/zoujingli/think-library/src/helper/TokenHelper.php deleted file mode 100644 index 973d8e834..000000000 --- a/vendor/zoujingli/think-library/src/helper/TokenHelper.php +++ /dev/null @@ -1,77 +0,0 @@ -class->csrf_state = true; - $this->token = $this->app->request->header('user-form-token', input('_csrf_', '')); - if ($this->app->request->isPost() && !TokenService::instance($this->app)->checkFormToken($this->token)) { - if ($return) return false; - $this->class->error($this->class->csrf_message); - } else { - return true; - } - } - - /** - * 清理表单令牌 - */ - public function clear() - { - $this->token = $this->app->request->header('user-form-token', input('_csrf_', '')); - if (!empty($this->token)) TokenService::instance($this->app)->clearFormToken($this->token); - } - - /** - * 返回视图内容 - * @param string $tpl 模板名称 - * @param array $vars 模板变量 - * @param string $node CSRF授权节点 - */ - public function fetchTemplate($tpl = '', $vars = [], $node = null) - { - throw new HttpResponseException(view($tpl, $vars, 200, function ($html) use ($node) { - return preg_replace_callback('/<\/form>/i', function () use ($node) { - $csrf = TokenService::instance($this->app)->buildFormToken($node); - return ""; - }, $html); - })); - } - -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/install/CommandInstall.php b/vendor/zoujingli/think-library/src/install/CommandInstall.php deleted file mode 100644 index eef053ac1..000000000 --- a/vendor/zoujingli/think-library/src/install/CommandInstall.php +++ /dev/null @@ -1,122 +0,0 @@ - [ - 'rules' => ['think', 'app/admin'], - 'ignore' => [], - ], - 'static' => [ - 'rules' => ['public/static'], - 'ignore' => ['public/static/self'], - ], - ]; - - protected function configure() - { - $this->setName('xtask:install'); - $this->setDescription("[安装]在线安装或更新指定模块文件"); - $this->addArgument('name', Argument::OPTIONAL, '模块名称', ''); - } - - /** - * @param Input $input - * @param Output $output - */ - protected function execute(Input $input, Output $output) - { - $this->name = trim($input->getArgument('name')); - if (empty($this->name)) { - $this->output->error('在线安装的模块名称不能为空!'); - } else { - $this->service = InstallService::instance($this->app); - if (isset($this->bind[$this->name])) { - $this->rules = empty($this->bind[$this->name]['rules']) ? [] : $this->bind[$this->name]['rules']; - $this->ignore = empty($this->bind[$this->name]['ignore']) ? [] : $this->bind[$this->name]['ignore']; - $this->installFile(); - $this->installDatabase(); - } else { - $this->output->error("指定模块 {$this->name} 未配置安装规则!"); - } - } - } - - protected function installFile() - { - $data = $this->service->grenerateDifference($this->rules, $this->ignore); - if (empty($data)) $this->output->info('文件比对一致不需更新文件!'); - else foreach ($data as $file) { - list($state, $mode, $name) = $this->service->fileSynchronization($file); - if ($state) { - if ($mode === 'add') $this->output->info("--- 下载 {$name} 添加成功"); - if ($mode === 'mod') $this->output->info("--- 下载 {$name} 更新成功"); - if ($mode === 'del') $this->output->info("--- 删除 {$name} 文件成功"); - } else { - if ($mode === 'add') $this->output->error("--- 下载 {$name} 添加失败"); - if ($mode === 'mod') $this->output->error("--- 下载 {$name} 更新失败"); - if ($mode === 'del') $this->output->error("--- 删除 {$name} 文件失败"); - } - } - } - - protected function installDatabase() - { - - } - -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/queue/ListenQueue.php b/vendor/zoujingli/think-library/src/queue/ListenQueue.php deleted file mode 100644 index aed190228..000000000 --- a/vendor/zoujingli/think-library/src/queue/ListenQueue.php +++ /dev/null @@ -1,72 +0,0 @@ -setName('xtask:listen')->setDescription('[监听]常驻异步任务循环监听主进程'); - } - - /** - * 执行进程守护监听 - * @param Input $input - * @param Output $output - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function execute(Input $input, Output $output) - { - $this->app->db->name('SystemQueue')->count(); - if (ProcessExtend::iswin()) { - $this->setProcessTitle("ThinkAdmin 异步任务监听主进程 " . ProcessExtend::version()); - } - $output->comment('============ 异步任务监听中 ============'); - while (true) { - foreach ($this->app->db->name('SystemQueue')->where([['status', '=', '1'], ['exec_time', '<=', time()]])->order('exec_time asc')->select() as $vo) { - try { - $this->app->db->name('SystemQueue')->where(['id' => $vo['id']])->update(['status' => '2', 'enter_time' => time(), 'attempts' => $vo['attempts'] + 1]); - if (ProcessExtend::query($command = ProcessExtend::think("xtask:_work {$vo['id']} -"))) { - $output->comment("任务正在执行 --> [{$vo['id']}] {$vo['title']}"); - } else { - ProcessExtend::create($command); - $output->info("任务创建成功 --> [{$vo['id']}] {$vo['title']}"); - } - } catch (\Exception $e) { - $this->app->db->name('SystemQueue')->where(['id' => $vo['id']])->update(['status' => '4', 'outer_time' => time(), 'exec_desc' => $e->getMessage()]); - $output->error("任务创建失败 --> [{$vo['id']}] {$vo['title']},{$e->getMessage()}"); - } - } - sleep(1); - } - } - -} diff --git a/vendor/zoujingli/think-library/src/queue/QueryQueue.php b/vendor/zoujingli/think-library/src/queue/QueryQueue.php deleted file mode 100644 index 8b4b581b6..000000000 --- a/vendor/zoujingli/think-library/src/queue/QueryQueue.php +++ /dev/null @@ -1,52 +0,0 @@ -setName('xtask:query')->setDescription('[控制]查询正在执行的所有任务进程'); - } - - /** - * 执行相关进程查询 - * @param Input $input - * @param Output $output - */ - protected function execute(Input $input, Output $output) - { - $result = ProcessExtend::query(ProcessExtend::think("xtask:")); - if (count($result) > 0) foreach ($result as $item) { - $output->writeln("{$item['pid']}\t{$item['cmd']}"); - } else { - $output->writeln('没有查询到相关任务进程'); - } - } -} diff --git a/vendor/zoujingli/think-library/src/queue/StartQueue.php b/vendor/zoujingli/think-library/src/queue/StartQueue.php deleted file mode 100644 index 79d71ff5e..000000000 --- a/vendor/zoujingli/think-library/src/queue/StartQueue.php +++ /dev/null @@ -1,61 +0,0 @@ -setName('xtask:start')->setDescription('[控制]创建异步任务守护监听主进程'); - } - - /** - * 执行启动操作 - * @param Input $input - * @param Output $output - */ - protected function execute(Input $input, Output $output) - { - $this->app->db->name('SystemQueue')->count(); - $command = ProcessExtend::think("xtask:listen"); - if (count($result = ProcessExtend::query($command)) > 0) { - $output->info("异步任务监听主进程{$result['0']['pid']}已经启动!"); - } else { - ProcessExtend::create($command); - sleep(1); - if (count($result = ProcessExtend::query($command)) > 0) { - $output->info("异步任务监听主进程{$result['0']['pid']}启动成功!"); - } else { - $output->error('异步任务监听主进程创建失败!'); - } - } - } -} diff --git a/vendor/zoujingli/think-library/src/queue/StateQueue.php b/vendor/zoujingli/think-library/src/queue/StateQueue.php deleted file mode 100644 index 01a6c88c5..000000000 --- a/vendor/zoujingli/think-library/src/queue/StateQueue.php +++ /dev/null @@ -1,52 +0,0 @@ -setName('xtask:state')->setDescription('[控制]查看异步任务监听主进程状态'); - } - - /** - * 指令执行状态 - * @param Input $input - * @param Output $output - */ - protected function execute(Input $input, Output $output) - { - $command = ProcessExtend::think('xtask:listen'); - if (count($result = ProcessExtend::query($command)) > 0) { - $output->info("异步任务监听主进程{$result[0]['pid']}正在运行..."); - } else { - $output->error("异步任务监听主进程没有运行哦!"); - } - } -} diff --git a/vendor/zoujingli/think-library/src/queue/StopQueue.php b/vendor/zoujingli/think-library/src/queue/StopQueue.php deleted file mode 100644 index 8085217fd..000000000 --- a/vendor/zoujingli/think-library/src/queue/StopQueue.php +++ /dev/null @@ -1,54 +0,0 @@ -setName('xtask:stop')->setDescription('[控制]平滑停止所有的异步任务进程'); - } - - /** - * 停止所有任务执行 - * @param Input $input - * @param Output $output - */ - protected function execute(Input $input, Output $output) - { - $command = ProcessExtend::think('xtask:'); - if (count($result = ProcessExtend::query($command)) < 1) { - $output->writeln("没有需要结束的任务进程哦!"); - } else foreach ($result as $item) { - ProcessExtend::close($item['pid']); - $output->writeln("发送结束任务进程{$item['pid']}指令成功!"); - } - } -} diff --git a/vendor/zoujingli/think-library/src/queue/WorkQueue.php b/vendor/zoujingli/think-library/src/queue/WorkQueue.php deleted file mode 100644 index 8ad5b1b1e..000000000 --- a/vendor/zoujingli/think-library/src/queue/WorkQueue.php +++ /dev/null @@ -1,109 +0,0 @@ -setName('xtask:_work')->setDescription('[执行]创建执行单个指定任务的进程'); - $this->addArgument('id', Argument::OPTIONAL, '指定任务ID'); - $this->addArgument('sp', Argument::OPTIONAL, '指令结束符'); - } - - /** - * 任务执行 - * @param Input $input - * @param Output $output - * @throws \Exception - */ - protected function execute(Input $input, Output $output) - { - try { - $this->id = trim($input->getArgument('id')) ?: 0; - if (empty($this->id)) throw new \think\Exception("执行任务需要指定任务编号!"); - $queue = $this->app->db->name('SystemQueue')->where(['id' => $this->id, 'status' => '2'])->find(); - if (empty($queue)) throw new \think\Exception("执行任务{$this->id}的信息或状态异常!"); - // 设置进程标题 - if (ProcessExtend::iswin() && function_exists('cli_set_process_title')) { - cli_set_process_title("ThinkAdmin " . ProcessExtend::version() . " 异步任务执行子进程 - {$queue['title']}"); - } - // 执行任务内容 - if (class_exists($queue['command'])) { - if (method_exists($class = new $queue['command'], 'execute')) { - if (isset($class->app)) $class->app = $this->app; - if (isset($class->queue)) $class->queue = $queue; - if (isset($class->jobid)) $class->jobid = $this->id; - if (isset($class->title)) $class->title = $queue['title']; - $data = json_decode($queue['data'], true); - $this->update('3', $class->execute($input, $output, is_array($data) ? $data : [])); - } else { - throw new \think\Exception("任务处理类 {$queue['command']} 未定义 execute 入口!"); - } - } else { - $this->update('3', $this->app->console->call($queue['command'], [], 'console')); - } - } catch (\Exception $e) { - $this->update('4', $e->getMessage()); - } - } - - /** - * 修改当前任务状态 - * @param integer $status 任务状态 - * @param string $message 消息内容 - * @return boolean - * @throws \think\db\exception\DbException - */ - protected function update($status, $message) - { - $result = $this->app->db->name('SystemQueue')->where(['id' => $this->id])->update([ - 'status' => $status, 'outer_time' => date('Y-m-d H:i:s'), 'exec_desc' => is_string($message) ? $message : '', - ]); - $this->output->writeln(is_string($message) ? $message : ''); - return $result !== false; - } - -} diff --git a/vendor/zoujingli/think-library/src/service/AuthService.php b/vendor/zoujingli/think-library/src/service/AuthService.php deleted file mode 100644 index 86b06bdc3..000000000 --- a/vendor/zoujingli/think-library/src/service/AuthService.php +++ /dev/null @@ -1,108 +0,0 @@ -app->session->get('user.id') ? true : false; - } - - /** - * 检查指定节点授权 - * --- 需要读取缓存或扫描所有节点 - * @param string $node - * @return boolean - * @throws \ReflectionException - */ - public function check($node = '') - { - $service = NodeService::instance($this->app); - if ($this->app->session->get('user.username') === 'admin') return true; - list($real, $nodes) = [$service->fullnode($node), $service->getMethods()]; - if (!empty($nodes[$real]['isauth'])) { - return in_array($real, $this->app->session->get('user.nodes', [])); - } - return !(!empty($nodes[$real]['islogin']) && !self::isLogin()); - } - - /** - * 获取授权节点列表 - * @param array $checkeds - * @return array - * @throws \ReflectionException - */ - public function getTree($checkeds = []) - { - list($nodes, $pnodes) = [[], []]; - $methods = array_reverse(NodeService::instance($this->app)->getMethods()); - foreach ($methods as $node => $method) { - $count = substr_count($node, '/'); - $pnode = substr($node, 0, strripos($node, '/')); - if ($count === 2 && !empty($method['isauth'])) { - in_array($pnode, $pnodes) or array_push($pnodes, $pnode); - $nodes[$node] = ['node' => $node, 'title' => $method['title'], 'pnode' => $pnode, 'checked' => in_array($node, $checkeds)]; - } elseif ($count === 1 && in_array($pnode, $pnodes)) { - $nodes[$node] = ['node' => $node, 'title' => $method['title'], 'pnode' => $pnode, 'checked' => in_array($node, $checkeds)]; - } - } - foreach (array_keys($nodes) as $key) foreach ($methods as $node => $method) if (stripos($key, "{$node}/") !== false) { - $pnode = substr($node, 0, strripos($node, '/')); - $nodes[$node] = ['node' => $node, 'title' => $method['title'], 'pnode' => $pnode, 'checked' => in_array($node, $checkeds)]; - $nodes[$pnode] = ['node' => $pnode, 'title' => ucfirst($pnode), 'pnode' => '', 'checked' => in_array($pnode, $checkeds)]; - } - return DataExtend::arr2tree(array_reverse($nodes), 'node', 'pnode', '_sub_'); - } - - /** - * 初始化用户权限 - * @param boolean $force 强刷权限 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function apply($force = false) - { - if ($force) $this->app->cache->delete('system_auth_node'); - if (($uid = $this->app->session->get('user.id'))) { - $user = $this->app->db->name('SystemUser')->where(['id' => $uid])->find(); - if (($aids = $user['authorize'])) { - $where = [['status', 'eq', '1'], ['id', 'in', explode(',', $aids)]]; - $subsql = $this->app->db->name('SystemAuth')->field('id')->where($where)->buildSql(); - $user['nodes'] = array_unique($this->app->db->name('SystemAuthNode')->whereRaw("auth in {$subsql}")->column('node')); - $this->app->session->set('user', $user); - } else { - $user['nodes'] = []; - $this->app->session->set('user', $user); - } - } - } - -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/service/CaptchaService.php b/vendor/zoujingli/think-library/src/service/CaptchaService.php deleted file mode 100644 index 082d994b8..000000000 --- a/vendor/zoujingli/think-library/src/service/CaptchaService.php +++ /dev/null @@ -1,143 +0,0 @@ - $v) if (isset($this->$k)) $this->$k = $v; - // 生成验证码序号 - $this->uniqid = uniqid('captcha') . mt_rand(1000, 9999); - // 生成验证码字符串 - $length = strlen($this->charset) - 1; - for ($i = 0; $i < $this->codelen; $i++) { - $this->code .= $this->charset[mt_rand(0, $length)]; - } - // 设置字体文件路径 - $this->font = __DIR__ . '/bin/font.ttf'; - // 缓存验证码字符串 - $this->app->cache->set($this->uniqid, $this->code, 360); - } - - /** - * 获取验证码值 - * @return string - */ - public function getCode() - { - return $this->code; - } - - /** - * 获取图片内容 - * @return string - */ - public function getData() - { - return "data:image/png;base64,{$this->createImage()}"; - } - - /** - * 获取验证码编号 - * @return string - */ - public function getUniqid() - { - return $this->uniqid; - } - - - /** - * 检查验证码是否正确 - * @param string $code 需要验证的值 - * @param string $uniqid 验证码编号 - * @return boolean - */ - public function check($code, $uniqid = null) - { - $_uni = is_string($uniqid) ? $uniqid : input('uniqid', '-'); - $_val = $this->app->cache->get($_uni); - $this->app->cache->delete($_uni); - return is_string($_val) && strtolower($_val) === strtolower($code); - } - - /** - * 输出图形验证码 - * @return string - */ - public function __toString() - { - return $this->getData(); - } - - /** - * 创建验证码图片 - * @return string - */ - private function createImage() - { - // 生成背景 - $this->img = imagecreatetruecolor($this->width, $this->height); - $color = imagecolorallocate($this->img, mt_rand(220, 255), mt_rand(220, 255), mt_rand(220, 255)); - imagefilledrectangle($this->img, 0, $this->height, $this->width, 0, $color); - // 生成线条 - for ($i = 0; $i < 6; $i++) { - $color = imagecolorallocate($this->img, mt_rand(0, 50), mt_rand(0, 50), mt_rand(0, 50)); - imageline($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height), $color); - } - // 生成雪花 - for ($i = 0; $i < 100; $i++) { - $color = imagecolorallocate($this->img, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255)); - imagestring($this->img, mt_rand(1, 5), mt_rand(0, $this->width), mt_rand(0, $this->height), '*', $color); - } - // 生成文字 - $_x = $this->width / $this->codelen; - for ($i = 0; $i < $this->codelen; $i++) { - $this->fontcolor = imagecolorallocate($this->img, mt_rand(0, 156), mt_rand(0, 156), mt_rand(0, 156)); - imagettftext($this->img, $this->fontsize, mt_rand(-30, 30), $_x * $i + mt_rand(1, 5), $this->height / 1.4, $this->fontcolor, $this->font, $this->code[$i]); - } - ob_start(); - imagepng($this->img); - $data = ob_get_contents(); - ob_end_clean(); - imagedestroy($this->img); - return base64_encode($data); - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/service/InstallService.php b/vendor/zoujingli/think-library/src/service/InstallService.php deleted file mode 100644 index 3814694d5..000000000 --- a/vendor/zoujingli/think-library/src/service/InstallService.php +++ /dev/null @@ -1,233 +0,0 @@ -version = $this->app->config->get('app.thinkadmin_ver'); - if (empty($this->version)) $this->version = 'v4'; - // 线上应用代码 - $this->uri = "https://{$this->version}.thinkadmin.top"; - // 当前应用根目录 - $this->path = strtr($this->app->getRootPath(), '\\', '/'); - } - - /** - * 获取当前版本 - * @return string - */ - public function getVersion() - { - return $this->version; - } - - /** - * 同步更新文件 - * @param array $file - * @return array - */ - public function fileSynchronization($file) - { - if (in_array($file['type'], ['add', 'mod'])) { - if ($this->downloadFile(encode($file['name']))) { - return [true, $file['type'], $file['name']]; - } else { - return [false, $file['type'], $file['name']]; - } - } elseif (in_array($file['type'], ['del'])) { - $real = $this->path . $file['name']; - if (is_file($real) && unlink($real)) { - $this->removeEmptyDirectory(dirname($real)); - return [true, $file['type'], $file['name']]; - } else { - return [false, $file['type'], $file['name']]; - } - } - } - - /** - * 下载更新文件内容 - * @param string $encode - * @return boolean|integer - */ - private function downloadFile($encode) - { - $result = json_decode(HttpExtend::get("{$this->uri}?s=admin/api.update/get&encode={$encode}"), true); - if (empty($result['code'])) return false; - $filename = $this->path . decode($encode); - file_exists(dirname($filename)) || mkdir(dirname($filename), 0755, true); - return file_put_contents($filename, base64_decode($result['data']['content'])); - } - - /** - * 清理空目录 - * @param string $path - */ - private function removeEmptyDirectory($path) - { - if (is_dir($path) && count(scandir($path)) === 2 && rmdir($path)) { - $this->removeEmptyDirectory(dirname($path)); - } - } - - /** - * 获取文件差异数据 - * @param array $rules 文件规则 - * @param array $ignore 忽略规则 - * @return array - */ - public function grenerateDifference($rules = [], $ignore = []) - { - list($this->rules, $this->ignore, $data) = [$rules, $ignore, []]; - $result = json_decode(HttpExtend::post("{$this->uri}?s=/admin/api.update/tree", [ - 'rules' => serialize($this->rules), 'ignore' => serialize($this->ignore), - ]), true); - if (!empty($result['code'])) { - $new = $this->getList($result['data']['rules'], $result['data']['ignore']); - foreach ($this->grenerateDifferenceContrast($result['data']['list'], $new['list']) as $file) { - if (in_array($file['type'], ['add', 'del', 'mod'])) foreach ($this->rules as $rule) { - if (stripos($file['name'], $rule) === 0) $data[] = $file; - } - } - } - return $data; - } - - /** - * 两二维数组对比 - * @param array $serve 线上文件列表信息 - * @param array $local 本地文件列表信息 - * @return array - */ - private function grenerateDifferenceContrast(array $serve = [], array $local = []) - { - // 数据扁平化 - list($_serve, $_local, $_new) = [[], [], []]; - foreach ($serve as $t) $_serve[$t['name']] = $t; - foreach ($local as $t) $_local[$t['name']] = $t; - unset($serve, $local); - // 线上数据差异计算 - foreach ($_serve as $t) if (isset($_local[$t['name']])) array_push($_new, [ - 'type' => $t['hash'] === $_local[$t['name']]['hash'] ? null : 'mod', 'name' => $t['name'], - ]); - else array_push($_new, ['type' => 'add', 'name' => $t['name']]); - // 本地数据增量计算 - foreach ($_local as $t) if (!isset($_serve[$t['name']])) array_push($_new, ['type' => 'del', 'name' => $t['name']]); - unset($_serve, $_local); - usort($_new, function ($a, $b) { - return $a['name'] !== $b['name'] ? ($a['name'] > $b['name'] ? 1 : -1) : 0; - }); - return $_new; - } - - /** - * 获取文件信息列表 - * @param array $rules 文件规则 - * @param array $ignore 忽略规则 - * @param array $data 扫描结果列表 - * @return array - */ - public function getList(array $rules, array $ignore = [], array $data = []) - { - // 扫描规则文件 - foreach ($rules as $key => $rule) { - $name = strtr(trim($rule, '\\/'), '\\', '/'); - $data = array_merge($data, $this->scanList("{$this->path}{$name}")); - } - // 清除忽略文件 - foreach ($data as $key => $item) foreach ($ignore as $ingore) { - if (stripos($item['name'], $ingore) === 0) unset($data[$key]); - } - return ['rules' => $rules, 'ignore' => $ignore, 'list' => $data]; - } - - /** - * 获取目录文件列表 - * @param string $path 待扫描的目录 - * @param array $data 扫描结果 - * @return array - */ - private function scanList($path, $data = []) - { - if (file_exists($path)) if (is_dir($path)) foreach (scandir($path) as $sub) { - if (strpos($sub, '.') !== 0) if (is_dir($temp = "{$path}/{$sub}")) { - $data = array_merge($data, $this->scanList($temp)); - } else { - array_push($data, $this->getInfo($temp)); - } - } else { - return [$this->getInfo($path)]; - } - return $data; - } - - /** - * 获取指定文件信息 - * @param string $filename - * @return array - */ - private function getInfo($filename) - { - return [ - 'name' => str_replace($this->path, '', $filename), - 'hash' => md5(preg_replace('/\s+/', '', file_get_contents($filename))), - ]; - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/service/MenuService.php b/vendor/zoujingli/think-library/src/service/MenuService.php deleted file mode 100644 index f67b431cc..000000000 --- a/vendor/zoujingli/think-library/src/service/MenuService.php +++ /dev/null @@ -1,98 +0,0 @@ -nodeService = NodeService::instance($this->app); - return $this; - } - - /** - * 获取可选菜单节点 - * @return array - * @throws \ReflectionException - */ - public function getList() - { - static $nodes = []; - if (count($nodes) > 0) return $nodes; - foreach ($this->nodeService->getMethods() as $node => $method) if ($method['ismenu']) { - $nodes[] = ['node' => $node, 'title' => $method['title']]; - } - return $nodes; - } - - /** - * 获取系统菜单树数据 - * @return array - * @throws \ReflectionException - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getTree() - { - $result = app()->db->name('SystemMenu')->where(['status' => '1'])->order('sort desc,id asc')->select(); - return self::buildData(DataExtend::arr2tree($result->toArray()), $this->nodeService->getMethods()); - } - - /** - * 后台主菜单权限过滤 - * @param array $menus 当前菜单列表 - * @param array $nodes 系统权限节点 - * @return array - * @throws \ReflectionException - */ - private function buildData($menus, $nodes) - { - foreach ($menus as $key => &$menu) { - if (!empty($menu['sub'])) { - $menu['sub'] = self::buildData($menu['sub'], $nodes); - } - if (!empty($menu['sub'])) $menu['url'] = '#'; - elseif ($menu['url'] === '#') unset($menus[$key]); - elseif (preg_match('|^https?://|i', $menu['url'])) continue; - else { - $node = join('/', array_slice(explode('/', preg_replace('/[\W]/', '/', $menu['url'])), 0, 3)); - $menu['url'] = url($menu['url']) . (empty($menu['params']) ? '' : "?{$menu['params']}"); - if (!AuthService::instance($this->app)->check($node)) unset($menus[$key]); - } - } - return $menus; - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/service/NodeService.php b/vendor/zoujingli/think-library/src/service/NodeService.php deleted file mode 100644 index d4da68302..000000000 --- a/vendor/zoujingli/think-library/src/service/NodeService.php +++ /dev/null @@ -1,139 +0,0 @@ -app->getNamespace(); - $middle = '\\' . self::nameTolower($this->app->request->controller()); - $suffix = ($type === 'controller') ? '' : ('\\' . $this->app->request->action()); - return strtr(substr($prefix, stripos($prefix, '\\') + 1) . $middle . $suffix, '\\', '/'); - } - - /** - * 检查并完整节点内容 - * @param string $node - * @return string - */ - public function fullnode($node) - { - if (empty($node)) return self::getCurrent(); - if (count($attrs = explode('/', $node)) === 1) { - return self::getCurrent('controller') . "/{$node}"; - } else { - $attrs[1] = self::nameTolower($attrs[1]); - return join('/', $attrs); - } - } - - /** - * 控制器方法扫描处理 - * @param boolean $force - * @return array - * @throws \ReflectionException - */ - public function getMethods($force = false) - { - static $data = []; - if (empty($force)) { - if (count($data) > 0) return $data; - $data = $this->app->cache->get('system_auth_node', []); - if (count($data) > 0) return $data; - } else { - $data = []; - } - $ignore = get_class_methods('\think\admin\Controller'); - foreach (self::scanDirectory(dirname($this->app->getAppPath())) as $file) { - if (preg_match("|/(\w+)/(\w+)/controller/(.+)\.php$|i", $file, $matches)) { - list(, $namespace, $application, $baseclass) = $matches; - $class = new \ReflectionClass(strtr("{$namespace}/{$application}/controller/{$baseclass}", '/', '\\')); - $prefix = strtr("{$application}/" . self::nameTolower($baseclass), '\\', '/'); - $data[$prefix] = self::parseComment($class->getDocComment(), $baseclass); - foreach ($class->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) { - if (in_array($method->getName(), $ignore)) continue; - $data["{$prefix}/{$method->getName()}"] = self::parseComment($method->getDocComment(), $method->getName()); - } - } - } - $this->app->cache->set('system_auth_node', $data); - return $data; - } - - /** - * 解析硬节点属性 - * @param string $comment - * @param string $default - * @return array - */ - private function parseComment($comment, $default = '') - { - $text = strtr($comment, "\n", ' '); - $title = preg_replace('/^\/\*\s*\*\s*\*\s*(.*?)\s*\*.*?$/', '$1', $text); - return [ - 'title' => $title ? $title : $default, - 'isauth' => intval(preg_match('/@auth\s*true/i', $text)), - 'ismenu' => intval(preg_match('/@menu\s*true/i', $text)), - 'islogin' => intval(preg_match('/@login\s*true/i', $text)), - ]; - } - - /** - * 获取所有PHP文件列表 - * @param string $path 扫描目录 - * @param array $data 额外数据 - * @param string $ext 有文件后缀 - * @return array - */ - private function scanDirectory($path, $data = [], $ext = 'php') - { - foreach (glob("{$path}*") as $item) { - if (is_dir($item)) { - $data = array_merge($data, self::scanDirectory("{$item}/")); - } elseif (is_file($item) && pathinfo($item, PATHINFO_EXTENSION) === $ext) { - $data[] = strtr($item, '\\', '/'); - } - } - return $data; - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/service/TokenService.php b/vendor/zoujingli/think-library/src/service/TokenService.php deleted file mode 100644 index 60c01f073..000000000 --- a/vendor/zoujingli/think-library/src/service/TokenService.php +++ /dev/null @@ -1,67 +0,0 @@ -app); - list($node, $cache) = [$service->getCurrent(), $this->app->session->get($token, [])]; - if (empty($cache['node']) || empty($cache['time']) || empty($cache['token'])) return false; - if ($cache['token'] !== $token || $cache['time'] + 600 < time() || $cache['node'] !== $node) return false; - return true; - } - - /** - * 清理表单CSRF信息 - * @param string $name - */ - public function clearFormToken($name = null) - { - $this->app->session->delete($name); - } - - /** - * 生成表单CSRF信息 - * @param null|string $node - * @return array - */ - public function buildFormToken($node = null) - { - list($token, $time) = [uniqid('csrf'), time()]; - foreach ($this->app->session->all() as $key => $item) { - if (stripos($key, 'csrf') === 0 && isset($item['time'])) { - if ($item['time'] + 600 < $time) self::clearFormToken($key); - } - } - $data = ['node' => NodeService::instance($this->app)->fullnode($node), 'token' => $token, 'time' => $time]; - $this->app->session->set($token, $data); - return $data; - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/service/bin/font.ttf b/vendor/zoujingli/think-library/src/service/bin/font.ttf deleted file mode 100644 index 54a14ed1c367db3c2680109c712e15e886b3937c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34852 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 c%R7_2IG>vddcb)xU-zgoC({L12w|r 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 = rtrim(app()->getRootPath(), '\\/'); - } - - /** - * 文件储存在本地 - * @param string $name 文件名称 - * @param string $content 文件内容 - * @param boolean $safe 安全模式 - * @return array|null - * @throws \think\Exception - */ - public function set($name, $content, $safe = false) - { - try { - $file = $this->path($name, $safe); - file_exists(dirname($file)) || mkdir(dirname($file), 0755, true); - if (file_put_contents($file, $content)) return $this->info($name, $safe); - } catch (\Exception $e) { - throw new \think\Exception("本地文件存储失败,{$e->getMessage()}"); - } - return null; - } - - /** - * 根据文件名读取文件内容 - * @param string $name 文件名称 - * @param boolean $safe 安全模式 - * @return string - */ - public function get($name, $safe = false) - { - if (!$this->has($name, $safe)) return ''; - return file_get_contents($this->path($name, $safe)); - } - - /** - * 删除存储的文件 - * @param string $name 文件名称 - * @param boolean $safe 安全模式 - * @return boolean - */ - public function del($name, $safe = false) - { - if ($this->has($name, $safe)) { - return @unlink($this->path($name, $safe)); - } else { - return false; - } - } - - /** - * 检查文件是否已经存在 - * @param string $name 文件名称 - * @param boolean $safe 安全模式 - * @return boolean - */ - public function has($name, $safe = false) - { - return file_exists($this->path($name, $safe)); - } - - /** - * 获取文件当前URL地址 - * @param string $name 文件名称 - * @param boolean $safe 安全模式 - * @return boolean|string|null - */ - public function url($name, $safe = false) - { - if ($safe) return null; - $root = rtrim(dirname(request()->basefile(true)), '\\/'); - return "{$root}/upload/{$name}"; - } - - /** - * 获取文件存储路径 - * @param string $name 文件名称 - * @param boolean $safe 安全模式 - * @return string - */ - public function path($name, $safe = false) - { - $path = $safe ? 'safefile' : 'public/upload'; - return str_replace('\\', '/', "{$this->prefix}/{$path}/{$name}"); - } - - /** - * 获取文件存储信息 - * @param string $name 文件名称 - * @param boolean $safe 安全模式 - * @return array|null - */ - public function info($name, $safe = false) - { - return $this->has($name, $safe) ? [ - 'file' => $this->path($name, $safe), 'url' => $this->url($name, $safe), - 'hash' => md5_file($this->path($name, $safe)), 'key' => "upload/{$name}", - ] : []; - } - - /** - * 获取文件上传地址 - * @return string - */ - public function upload() - { - return url('@')->build() . '?s=admin/upload/file'; - } - -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/storage/QiniuStorage.php b/vendor/zoujingli/think-library/src/storage/QiniuStorage.php deleted file mode 100644 index c72a212d9..000000000 --- a/vendor/zoujingli/think-library/src/storage/QiniuStorage.php +++ /dev/null @@ -1,227 +0,0 @@ -bucket = sysconf('storage.qiniu_bucket'); - $this->accessKey = sysconf('storage.qiniu_access_key'); - $this->secretKey = sysconf('storage.qiniu_secret_key'); - $this->domain = strtolower(sysconf('storage.qiniu_http_domain')); - // 计算前置链接 - $type = strtolower(sysconf('storage.qiniu_http_protocol')); - if ($type === 'auto') $this->prefix = "//{$this->domain}/"; - elseif ($type === 'http') $this->prefix = "http://{$this->domain}/"; - elseif ($type === 'https') $this->prefix = "https://{$this->domain}/"; - else throw new \think\Exception('未配置七牛云URL域名哦'); - } - - /** - * 上传文件内容 - * @param string $name 文件名称 - * @param string $content 文件内容 - * @param boolean $safe 安全模式 - * @return array - * @throws \think\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function set($name, $content, $safe = false) - { - $token = $this->buildUploadToken($name); - list($attrs, $frontier) = [[], uniqid()]; - foreach (['key' => $name, 'token' => $token, 'fileName' => $name] as $key => $value) { - $attrs[] = "--{$frontier}"; - $attrs[] = "Content-Disposition:form-data; name=\"{$key}\""; - $attrs[] = ""; - $attrs[] = $value; - } - $attrs[] = "--{$frontier}"; - $attrs[] = "Content-Disposition:form-data; name=\"file\"; filename=\"{$name}\""; - $attrs[] = ""; - $attrs[] = $content; - $attrs[] = "--{$frontier}--"; - return json_decode(HttpExtend::post($this->upload(), join("\r\n", $attrs), [ - 'headers' => ["Content-type:multipart/form-data;boundary={$frontier}"], - ]), true); - } - - - /** - * 根据文件名读取文件内容 - * @param string $name 文件名称 - * @param boolean $safe 安全模式 - * @return string - */ - public function get($name, $safe = false) - { - $time = time(); - $url = $this->url($name, $safe) . "?e={$time}"; - $token = "{$this->accessKey}:{$this->safeBase64(hash_hmac('sha1', $url, $this->secretKey, true))}"; - return file_get_contents("{$url}&token={$token}"); - } - - /** - * 删除存储的文件 - * @param string $name 文件名称 - * @param boolean $safe 安全模式 - * @return boolean|null - */ - public function del($name, $safe = false) - { - list($EncodedEntryURI, $AccessToken) = $this->getAccessToken($name, 'delete'); - $data = json_decode(HttpExtend::post("http://rs.qiniu.com/delete/{$EncodedEntryURI}", [], [ - 'headers' => ["Authorization:QBox {$AccessToken}"], - ]), true); - return empty($data['error']); - } - - /** - * 检查文件是否已经存在 - * @param string $name 文件名称 - * @param boolean $safe 安全模式 - * @return boolean - */ - public function has($name, $safe = false) - { - return is_array($this->info($name, $safe)); - } - - /** - * 获取文件当前URL地址 - * @param string $name 文件名称 - * @param boolean $safe 安全模式 - * @return string - */ - public function url($name, $safe = false) - { - return "{$this->prefix}/{$name}"; - } - - /** - * 获取文件存储路径 - * @param string $name 文件名称 - * @param boolean $safe 安全模式 - * @return string - */ - public function path($name, $safe = false) - { - return $this->url($name, $safe); - } - - /** - * 获取文件存储信息 - * @param string $name 文件名称 - * @param boolean $safe 安全模式 - * @return array - */ - public function info($name, $safe = false) - { - list($EncodedEntryURI, $AccessToken) = $this->getAccessToken($name); - $data = json_decode(HttpExtend::post("http://rs.qiniu.com/stat/{$EncodedEntryURI}", [], [ - 'headers' => ["Authorization:QBox {$AccessToken}"], - ]), true); - return isset($data['md5']) ? ['file' => $name, 'url' => $this->url($name, $safe), 'hash' => $data['md5'], 'key' => $name] : []; - } - - /** - * URL安全的Base64编码 - * @param string $content - * @return string - */ - private function safeBase64($content) - { - return str_replace(['+', '/'], ['-', '_'], base64_encode($content)); - } - - /** - * 获取对象管理凭证 - * @param string $name 文件名称 - * @param string $type 操作类型 - * @return array - */ - private function getAccessToken($name, $type = 'state') - { - $EncodedEntryURI = $this->safeBase64("{$this->bucket}:{$name}"); - return [$EncodedEntryURI, "{$this->accessKey}:{$this->safeBase64(hash_hmac('sha1', "/{$type}/{$EncodedEntryURI}\n", $this->secretKey, true))}"]; - } - - /** - * 获取文件上传地址 - * @return string - * @throws \think\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function upload() - { - $protocol = request()->isSsl() ? 'https' : 'http'; - switch (sysconf('storage.qiniu_region')) { - case '华东': - return "{$protocol}://up.qiniup.com"; - case '华北': - return "{$protocol}://up-z1.qiniup.com"; - case '华南': - return "{$protocol}://up-z2.qiniup.com"; - case '北美': - return "{$protocol}://up-na0.qiniup.com"; - case '东南亚': - return "{$protocol}://up-as0.qiniup.com"; - default: - throw new \think\Exception('未配置七牛云空间区域哦'); - } - } - - /** - * 获取文件上传令牌 - * @param string $name 文件名称 - * @param integer $expires 有效时间 - * @return string - */ - public function buildUploadToken($name = null, $expires = 3600) - { - $policy = $this->safeBase64(json_encode([ - "deadline" => time() + $expires, "scope" => is_null($name) ? $this->bucket : "{$this->bucket}:{$name}", - 'returnBody' => json_encode(['uploaded' => true, 'filename' => '$(key)', 'url' => "{$this->prefix}/$(key)"], JSON_UNESCAPED_UNICODE), - ])); - return "{$this->accessKey}:{$this->safeBase64(hash_hmac('sha1', $policy, $this->secretKey, true))}:{$policy}"; - } -} \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/storage/bin/mimes.php b/vendor/zoujingli/think-library/src/storage/bin/mimes.php deleted file mode 100644 index 0ed89ecd7..000000000 --- a/vendor/zoujingli/think-library/src/storage/bin/mimes.php +++ /dev/null @@ -1,1000 +0,0 @@ - 'application/andrew-inset', - 'aw' => 'application/applixware', - 'atom' => 'application/atom+xml', - 'atomcat' => 'application/atomcat+xml', - 'atomsvc' => 'application/atomsvc+xml', - 'ccxml' => 'application/ccxml+xml', - 'cdmia' => 'application/cdmi-capability', - 'cdmic' => 'application/cdmi-container', - 'cdmid' => 'application/cdmi-domain', - 'cdmio' => 'application/cdmi-object', - 'cdmiq' => 'application/cdmi-queue', - 'cu' => 'application/cu-seeme', - 'davmount' => 'application/davmount+xml', - 'dbk' => 'application/docbook+xml', - 'dssc' => 'application/dssc+der', - 'xdssc' => 'application/dssc+xml', - 'ecma' => 'application/ecmascript', - 'emma' => 'application/emma+xml', - 'epub' => 'application/epub+zip', - 'exi' => 'application/exi', - 'pfr' => 'application/font-tdpfr', - 'gml' => 'application/gml+xml', - 'gpx' => 'application/gpx+xml', - 'gxf' => 'application/gxf', - 'stk' => 'application/hyperstudio', - 'ink' => 'application/inkml+xml', - 'inkml' => 'application/inkml+xml', - 'ipfix' => 'application/ipfix', - 'jar' => 'application/java-archive', - 'ser' => 'application/java-serialized-object', - 'class' => 'application/java-vm', - 'js' => 'application/javascript', - 'json' => 'application/json', - 'jsonml' => 'application/jsonml+json', - 'lostxml' => 'application/lost+xml', - 'hqx' => 'application/mac-binhex40', - 'cpt' => 'application/mac-compactpro', - 'mads' => 'application/mads+xml', - 'mrc' => 'application/marc', - 'mrcx' => 'application/marcxml+xml', - 'ma' => 'application/mathematica', - 'nb' => 'application/mathematica', - 'mb' => 'application/mathematica', - 'mathml' => 'application/mathml+xml', - 'mbox' => 'application/mbox', - 'mscml' => 'application/mediaservercontrol+xml', - 'metalink' => 'application/metalink+xml', - 'meta4' => 'application/metalink4+xml', - 'mets' => 'application/mets+xml', - 'mods' => 'application/mods+xml', - 'm21' => 'application/mp21', - 'mp21' => 'application/mp21', - 'mp4s' => 'application/mp4', - 'doc' => 'application/msword', - 'dot' => 'application/msword', - 'mxf' => 'application/mxf', - 'bin' => 'application/octet-stream', - 'dms' => 'application/octet-stream', - 'lrf' => 'application/octet-stream', - 'mar' => 'application/octet-stream', - 'so' => 'application/octet-stream', - 'dist' => 'application/octet-stream', - 'distz' => 'application/octet-stream', - 'pkg' => 'application/octet-stream', - 'bpk' => 'application/octet-stream', - 'dump' => 'application/octet-stream', - 'elc' => 'application/octet-stream', - 'deploy' => 'application/octet-stream', - 'oda' => 'application/oda', - 'opf' => 'application/oebps-package+xml', - 'ogx' => 'application/ogg', - 'omdoc' => 'application/omdoc+xml', - 'onetoc' => 'application/onenote', - 'onetoc2' => 'application/onenote', - 'onetmp' => 'application/onenote', - 'onepkg' => 'application/onenote', - 'oxps' => 'application/oxps', - 'xer' => 'application/patch-ops-error+xml', - 'pdf' => 'application/pdf', - 'pgp' => 'application/pgp-encrypted', - 'asc' => 'application/pgp-signature', - 'sig' => 'application/pgp-signature', - 'prf' => 'application/pics-rules', - 'p10' => 'application/pkcs10', - 'p7m' => 'application/pkcs7-mime', - 'p7c' => 'application/pkcs7-mime', - 'p7s' => 'application/pkcs7-signature', - 'p8' => 'application/pkcs8', - 'ac' => 'application/pkix-attr-cert', - 'cer' => 'application/pkix-cert', - 'crl' => 'application/pkix-crl', - 'pkipath' => 'application/pkix-pkipath', - 'pki' => 'application/pkixcmp', - 'pls' => 'application/pls+xml', - 'ai' => 'application/postscript', - 'eps' => 'application/postscript', - 'ps' => 'application/postscript', - 'cww' => 'application/prs.cww', - 'pskcxml' => 'application/pskc+xml', - 'rdf' => 'application/rdf+xml', - 'rif' => 'application/reginfo+xml', - 'rnc' => 'application/relax-ng-compact-syntax', - 'rl' => 'application/resource-lists+xml', - 'rld' => 'application/resource-lists-diff+xml', - 'rs' => 'application/rls-services+xml', - 'gbr' => 'application/rpki-ghostbusters', - 'mft' => 'application/rpki-manifest', - 'roa' => 'application/rpki-roa', - 'rsd' => 'application/rsd+xml', - 'rss' => 'application/rss+xml', - 'rtf' => 'application/rtf', - 'sbml' => 'application/sbml+xml', - 'scq' => 'application/scvp-cv-request', - 'scs' => 'application/scvp-cv-response', - 'spq' => 'application/scvp-vp-request', - 'spp' => 'application/scvp-vp-response', - 'sdp' => 'application/sdp', - 'setpay' => 'application/set-payment-initiation', - 'setreg' => 'application/set-registration-initiation', - 'shf' => 'application/shf+xml', - 'smi' => 'application/smil+xml', - 'smil' => 'application/smil+xml', - 'rq' => 'application/sparql-query', - 'srx' => 'application/sparql-results+xml', - 'gram' => 'application/srgs', - 'grxml' => 'application/srgs+xml', - 'sru' => 'application/sru+xml', - 'ssdl' => 'application/ssdl+xml', - 'ssml' => 'application/ssml+xml', - 'tei' => 'application/tei+xml', - 'teicorpus' => 'application/tei+xml', - 'tfi' => 'application/thraud+xml', - 'tsd' => 'application/timestamped-data', - 'plb' => 'application/vnd.3gpp.pic-bw-large', - 'psb' => 'application/vnd.3gpp.pic-bw-small', - 'pvb' => 'application/vnd.3gpp.pic-bw-var', - 'tcap' => 'application/vnd.3gpp2.tcap', - 'pwn' => 'application/vnd.3m.post-it-notes', - 'aso' => 'application/vnd.accpac.simply.aso', - 'imp' => 'application/vnd.accpac.simply.imp', - 'acu' => 'application/vnd.acucobol', - 'atc' => 'application/vnd.acucorp', - 'acutc' => 'application/vnd.acucorp', - 'air' => 'application/vnd.adobe.air-application-installer-package+zip', - 'fcdt' => 'application/vnd.adobe.formscentral.fcdt', - 'fxp' => 'application/vnd.adobe.fxp', - 'fxpl' => 'application/vnd.adobe.fxp', - 'xdp' => 'application/vnd.adobe.xdp+xml', - 'xfdf' => 'application/vnd.adobe.xfdf', - 'ahead' => 'application/vnd.ahead.space', - 'azf' => 'application/vnd.airzip.filesecure.azf', - 'azs' => 'application/vnd.airzip.filesecure.azs', - 'azw' => 'application/vnd.amazon.ebook', - 'acc' => 'application/vnd.americandynamics.acc', - 'ami' => 'application/vnd.amiga.ami', - 'apk' => 'application/vnd.android.package-archive', - 'cii' => 'application/vnd.anser-web-certificate-issue-initiation', - 'fti' => 'application/vnd.anser-web-funds-transfer-initiation', - 'atx' => 'application/vnd.antix.game-component', - 'mpkg' => 'application/vnd.apple.installer+xml', - 'm3u8' => 'application/vnd.apple.mpegurl', - 'swi' => 'application/vnd.aristanetworks.swi', - 'iota' => 'application/vnd.astraea-software.iota', - 'aep' => 'application/vnd.audiograph', - 'mpm' => 'application/vnd.blueice.multipass', - 'bmi' => 'application/vnd.bmi', - 'rep' => 'application/vnd.businessobjects', - 'cdxml' => 'application/vnd.chemdraw+xml', - 'mmd' => 'application/vnd.chipnuts.karaoke-mmd', - 'cdy' => 'application/vnd.cinderella', - 'cla' => 'application/vnd.claymore', - 'rp9' => 'application/vnd.cloanto.rp9', - 'c4g' => 'application/vnd.clonk.c4group', - 'c4d' => 'application/vnd.clonk.c4group', - 'c4f' => 'application/vnd.clonk.c4group', - 'c4p' => 'application/vnd.clonk.c4group', - 'c4u' => 'application/vnd.clonk.c4group', - 'c11amc' => 'application/vnd.cluetrust.cartomobile-config', - 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg', - 'csp' => 'application/vnd.commonspace', - 'cdbcmsg' => 'application/vnd.contact.cmsg', - 'cmc' => 'application/vnd.cosmocaller', - 'clkx' => 'application/vnd.crick.clicker', - 'clkk' => 'application/vnd.crick.clicker.keyboard', - 'clkp' => 'application/vnd.crick.clicker.palette', - 'clkt' => 'application/vnd.crick.clicker.template', - 'clkw' => 'application/vnd.crick.clicker.wordbank', - 'wbs' => 'application/vnd.criticaltools.wbs+xml', - 'pml' => 'application/vnd.ctc-posml', - 'ppd' => 'application/vnd.cups-ppd', - 'car' => 'application/vnd.curl.car', - 'pcurl' => 'application/vnd.curl.pcurl', - 'dart' => 'application/vnd.dart', - 'rdz' => 'application/vnd.data-vision.rdz', - 'uvf' => 'application/vnd.dece.data', - 'uvvf' => 'application/vnd.dece.data', - 'uvd' => 'application/vnd.dece.data', - 'uvvd' => 'application/vnd.dece.data', - 'uvt' => 'application/vnd.dece.ttml+xml', - 'uvvt' => 'application/vnd.dece.ttml+xml', - 'uvx' => 'application/vnd.dece.unspecified', - 'uvvx' => 'application/vnd.dece.unspecified', - 'uvz' => 'application/vnd.dece.zip', - 'uvvz' => 'application/vnd.dece.zip', - 'fe_launch' => 'application/vnd.denovo.fcselayout-link', - 'dna' => 'application/vnd.dna', - 'mlp' => 'application/vnd.dolby.mlp', - 'dpg' => 'application/vnd.dpgraph', - 'dfac' => 'application/vnd.dreamfactory', - 'kpxx' => 'application/vnd.ds-keypoint', - 'ait' => 'application/vnd.dvb.ait', - 'svc' => 'application/vnd.dvb.service', - 'geo' => 'application/vnd.dynageo', - 'mag' => 'application/vnd.ecowin.chart', - 'nml' => 'application/vnd.enliven', - 'esf' => 'application/vnd.epson.esf', - 'msf' => 'application/vnd.epson.msf', - 'qam' => 'application/vnd.epson.quickanime', - 'slt' => 'application/vnd.epson.salt', - 'ssf' => 'application/vnd.epson.ssf', - 'es3' => 'application/vnd.eszigno3+xml', - 'et3' => 'application/vnd.eszigno3+xml', - 'ez2' => 'application/vnd.ezpix-album', - 'ez3' => 'application/vnd.ezpix-package', - 'fdf' => 'application/vnd.fdf', - 'mseed' => 'application/vnd.fdsn.mseed', - 'seed' => 'application/vnd.fdsn.seed', - 'dataless' => 'application/vnd.fdsn.seed', - 'gph' => 'application/vnd.flographit', - 'ftc' => 'application/vnd.fluxtime.clip', - 'fm' => 'application/vnd.framemaker', - 'frame' => 'application/vnd.framemaker', - 'maker' => 'application/vnd.framemaker', - 'book' => 'application/vnd.framemaker', - 'fnc' => 'application/vnd.frogans.fnc', - 'ltf' => 'application/vnd.frogans.ltf', - 'fsc' => 'application/vnd.fsc.weblaunch', - 'oas' => 'application/vnd.fujitsu.oasys', - 'oa2' => 'application/vnd.fujitsu.oasys2', - 'oa3' => 'application/vnd.fujitsu.oasys3', - 'fg5' => 'application/vnd.fujitsu.oasysgp', - 'bh2' => 'application/vnd.fujitsu.oasysprs', - 'ddd' => 'application/vnd.fujixerox.ddd', - 'xdw' => 'application/vnd.fujixerox.docuworks', - 'xbd' => 'application/vnd.fujixerox.docuworks.binder', - 'fzs' => 'application/vnd.fuzzysheet', - 'txd' => 'application/vnd.genomatix.tuxedo', - 'ggb' => 'application/vnd.geogebra.file', - 'ggt' => 'application/vnd.geogebra.tool', - 'gex' => 'application/vnd.geometry-explorer', - 'gre' => 'application/vnd.geometry-explorer', - 'gxt' => 'application/vnd.geonext', - 'g2w' => 'application/vnd.geoplan', - 'g3w' => 'application/vnd.geospace', - 'gmx' => 'application/vnd.gmx', - 'kml' => 'application/vnd.google-earth.kml+xml', - 'kmz' => 'application/vnd.google-earth.kmz', - 'gqf' => 'application/vnd.grafeq', - 'gqs' => 'application/vnd.grafeq', - 'gac' => 'application/vnd.groove-account', - 'ghf' => 'application/vnd.groove-help', - 'gim' => 'application/vnd.groove-identity-message', - 'grv' => 'application/vnd.groove-injector', - 'gtm' => 'application/vnd.groove-tool-message', - 'tpl' => 'application/vnd.groove-tool-template', - 'vcg' => 'application/vnd.groove-vcard', - 'hal' => 'application/vnd.hal+xml', - 'zmm' => 'application/vnd.handheld-entertainment+xml', - 'hbci' => 'application/vnd.hbci', - 'les' => 'application/vnd.hhe.lesson-player', - 'hpgl' => 'application/vnd.hp-hpgl', - 'hpid' => 'application/vnd.hp-hpid', - 'hps' => 'application/vnd.hp-hps', - 'jlt' => 'application/vnd.hp-jlyt', - 'pcl' => 'application/vnd.hp-pcl', - 'pclxl' => 'application/vnd.hp-pclxl', - 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data', - 'mpy' => 'application/vnd.ibm.minipay', - 'afp' => 'application/vnd.ibm.modcap', - 'listafp' => 'application/vnd.ibm.modcap', - 'list3820' => 'application/vnd.ibm.modcap', - 'irm' => 'application/vnd.ibm.rights-management', - 'sc' => 'application/vnd.ibm.secure-container', - 'icc' => 'application/vnd.iccprofile', - 'icm' => 'application/vnd.iccprofile', - 'igl' => 'application/vnd.igloader', - 'ivp' => 'application/vnd.immervision-ivp', - 'ivu' => 'application/vnd.immervision-ivu', - 'igm' => 'application/vnd.insors.igm', - 'xpw' => 'application/vnd.intercon.formnet', - 'xpx' => 'application/vnd.intercon.formnet', - 'i2g' => 'application/vnd.intergeo', - 'qbo' => 'application/vnd.intu.qbo', - 'qfx' => 'application/vnd.intu.qfx', - 'rcprofile' => 'application/vnd.ipunplugged.rcprofile', - 'irp' => 'application/vnd.irepository.package+xml', - 'xpr' => 'application/vnd.is-xpr', - 'fcs' => 'application/vnd.isac.fcs', - 'jam' => 'application/vnd.jam', - 'rms' => 'application/vnd.jcp.javame.midlet-rms', - 'jisp' => 'application/vnd.jisp', - 'joda' => 'application/vnd.joost.joda-archive', - 'ktz' => 'application/vnd.kahootz', - 'ktr' => 'application/vnd.kahootz', - 'karbon' => 'application/vnd.kde.karbon', - 'chrt' => 'application/vnd.kde.kchart', - 'kfo' => 'application/vnd.kde.kformula', - 'flw' => 'application/vnd.kde.kivio', - 'kon' => 'application/vnd.kde.kontour', - 'kpr' => 'application/vnd.kde.kpresenter', - 'kpt' => 'application/vnd.kde.kpresenter', - 'ksp' => 'application/vnd.kde.kspread', - 'kwd' => 'application/vnd.kde.kword', - 'kwt' => 'application/vnd.kde.kword', - 'htke' => 'application/vnd.kenameaapp', - 'kia' => 'application/vnd.kidspiration', - 'kne' => 'application/vnd.kinar', - 'knp' => 'application/vnd.kinar', - 'skp' => 'application/vnd.koan', - 'skd' => 'application/vnd.koan', - 'skt' => 'application/vnd.koan', - 'skm' => 'application/vnd.koan', - 'sse' => 'application/vnd.kodak-descriptor', - 'lasxml' => 'application/vnd.las.las+xml', - 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop', - 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml', - 123 => 'application/vnd.lotus-1-2-3', - 'apr' => 'application/vnd.lotus-approach', - 'pre' => 'application/vnd.lotus-freelance', - 'nsf' => 'application/vnd.lotus-notes', - 'org' => 'application/vnd.lotus-organizer', - 'scm' => 'application/vnd.lotus-screencam', - 'lwp' => 'application/vnd.lotus-wordpro', - 'portpkg' => 'application/vnd.macports.portpkg', - 'mcd' => 'application/vnd.mcd', - 'mc1' => 'application/vnd.medcalcdata', - 'cdkey' => 'application/vnd.mediastation.cdkey', - 'mwf' => 'application/vnd.mfer', - 'mfm' => 'application/vnd.mfmp', - 'flo' => 'application/vnd.micrografx.flo', - 'igx' => 'application/vnd.micrografx.igx', - 'mif' => 'application/vnd.mif', - 'daf' => 'application/vnd.mobius.daf', - 'dis' => 'application/vnd.mobius.dis', - 'mbk' => 'application/vnd.mobius.mbk', - 'mqy' => 'application/vnd.mobius.mqy', - 'msl' => 'application/vnd.mobius.msl', - 'plc' => 'application/vnd.mobius.plc', - 'txf' => 'application/vnd.mobius.txf', - 'mpn' => 'application/vnd.mophun.application', - 'mpc' => 'application/vnd.mophun.certificate', - 'xul' => 'application/vnd.mozilla.xul+xml', - 'cil' => 'application/vnd.ms-artgalry', - 'cab' => 'application/vnd.ms-cab-compressed', - 'xls' => 'application/vnd.ms-excel', - 'xlm' => 'application/vnd.ms-excel', - 'xla' => 'application/vnd.ms-excel', - 'xlc' => 'application/vnd.ms-excel', - 'xlt' => 'application/vnd.ms-excel', - 'xlw' => 'application/vnd.ms-excel', - 'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12', - 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12', - 'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12', - 'xltm' => 'application/vnd.ms-excel.template.macroenabled.12', - 'eot' => 'application/vnd.ms-fontobject', - 'chm' => 'application/vnd.ms-htmlhelp', - 'ims' => 'application/vnd.ms-ims', - 'lrm' => 'application/vnd.ms-lrm', - 'thmx' => 'application/vnd.ms-officetheme', - 'cat' => 'application/vnd.ms-pki.seccat', - 'stl' => 'application/vnd.ms-pki.stl', - 'ppt' => 'application/vnd.ms-powerpoint', - 'pps' => 'application/vnd.ms-powerpoint', - 'pot' => 'application/vnd.ms-powerpoint', - 'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12', - 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12', - 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12', - 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', - 'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12', - 'mpp' => 'application/vnd.ms-project', - 'mpt' => 'application/vnd.ms-project', - 'docm' => 'application/vnd.ms-word.document.macroenabled.12', - 'dotm' => 'application/vnd.ms-word.template.macroenabled.12', - 'wps' => 'application/vnd.ms-works', - 'wks' => 'application/vnd.ms-works', - 'wcm' => 'application/vnd.ms-works', - 'wdb' => 'application/vnd.ms-works', - 'wpl' => 'application/vnd.ms-wpl', - 'xps' => 'application/vnd.ms-xpsdocument', - 'mseq' => 'application/vnd.mseq', - 'mus' => 'application/vnd.musician', - 'msty' => 'application/vnd.muvee.style', - 'taglet' => 'application/vnd.mynfc', - 'nlu' => 'application/vnd.neurolanguage.nlu', - 'ntf' => 'application/vnd.nitf', - 'nitf' => 'application/vnd.nitf', - 'nnd' => 'application/vnd.noblenet-directory', - 'nns' => 'application/vnd.noblenet-sealer', - 'nnw' => 'application/vnd.noblenet-web', - 'ngdat' => 'application/vnd.nokia.n-gage.data', - 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install', - 'rpst' => 'application/vnd.nokia.radio-preset', - 'rpss' => 'application/vnd.nokia.radio-presets', - 'edm' => 'application/vnd.novadigm.edm', - 'edx' => 'application/vnd.novadigm.edx', - 'ext' => 'application/vnd.novadigm.ext', - 'odc' => 'application/vnd.oasis.opendocument.chart', - 'otc' => 'application/vnd.oasis.opendocument.chart-template', - 'odb' => 'application/vnd.oasis.opendocument.database', - 'odf' => 'application/vnd.oasis.opendocument.formula', - 'odft' => 'application/vnd.oasis.opendocument.formula-template', - 'odg' => 'application/vnd.oasis.opendocument.graphics', - 'otg' => 'application/vnd.oasis.opendocument.graphics-template', - 'odi' => 'application/vnd.oasis.opendocument.image', - 'oti' => 'application/vnd.oasis.opendocument.image-template', - 'odp' => 'application/vnd.oasis.opendocument.presentation', - 'otp' => 'application/vnd.oasis.opendocument.presentation-template', - 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', - 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', - 'odt' => 'application/vnd.oasis.opendocument.text', - 'odm' => 'application/vnd.oasis.opendocument.text-master', - 'ott' => 'application/vnd.oasis.opendocument.text-template', - 'oth' => 'application/vnd.oasis.opendocument.text-web', - 'xo' => 'application/vnd.olpc-sugar', - 'dd2' => 'application/vnd.oma.dd2+xml', - 'oxt' => 'application/vnd.openofficeorg.extension', - 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', - 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', - 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', - 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', - 'mgp' => 'application/vnd.osgeo.mapguide.package', - 'dp' => 'application/vnd.osgi.dp', - 'esa' => 'application/vnd.osgi.subsystem', - 'pdb' => 'application/vnd.palm', - 'pqa' => 'application/vnd.palm', - 'oprc' => 'application/vnd.palm', - 'paw' => 'application/vnd.pawaafile', - 'str' => 'application/vnd.pg.format', - 'ei6' => 'application/vnd.pg.osasli', - 'efif' => 'application/vnd.picsel', - 'wg' => 'application/vnd.pmi.widget', - 'plf' => 'application/vnd.pocketlearn', - 'pbd' => 'application/vnd.powerbuilder6', - 'box' => 'application/vnd.previewsystems.box', - 'mgz' => 'application/vnd.proteus.magazine', - 'qps' => 'application/vnd.publishare-delta-tree', - 'ptid' => 'application/vnd.pvi.ptid1', - 'qxd' => 'application/vnd.quark.quarkxpress', - 'qxt' => 'application/vnd.quark.quarkxpress', - 'qwd' => 'application/vnd.quark.quarkxpress', - 'qwt' => 'application/vnd.quark.quarkxpress', - 'qxl' => 'application/vnd.quark.quarkxpress', - 'qxb' => 'application/vnd.quark.quarkxpress', - 'bed' => 'application/vnd.realvnc.bed', - 'mxl' => 'application/vnd.recordare.musicxml', - 'musicxml' => 'application/vnd.recordare.musicxml+xml', - 'cryptonote' => 'application/vnd.rig.cryptonote', - 'cod' => 'application/vnd.rim.cod', - 'rm' => 'application/vnd.rn-realmedia', - 'rmvb' => 'application/vnd.rn-realmedia-vbr', - 'link66' => 'application/vnd.route66.link66+xml', - 'st' => 'application/vnd.sailingtracker.track', - 'see' => 'application/vnd.seemail', - 'sema' => 'application/vnd.sema', - 'semd' => 'application/vnd.semd', - 'semf' => 'application/vnd.semf', - 'ifm' => 'application/vnd.shana.informed.formdata', - 'itp' => 'application/vnd.shana.informed.formtemplate', - 'iif' => 'application/vnd.shana.informed.interchange', - 'ipk' => 'application/vnd.shana.informed.package', - 'twd' => 'application/vnd.simtech-mindmapper', - 'twds' => 'application/vnd.simtech-mindmapper', - 'mmf' => 'application/vnd.smaf', - 'teacher' => 'application/vnd.smart.teacher', - 'sdkm' => 'application/vnd.solent.sdkm+xml', - 'sdkd' => 'application/vnd.solent.sdkm+xml', - 'dxp' => 'application/vnd.spotfire.dxp', - 'sfs' => 'application/vnd.spotfire.sfs', - 'sdc' => 'application/vnd.stardivision.calc', - 'sda' => 'application/vnd.stardivision.draw', - 'sdd' => 'application/vnd.stardivision.impress', - 'smf' => 'application/vnd.stardivision.math', - 'sdw' => 'application/vnd.stardivision.writer', - 'vor' => 'application/vnd.stardivision.writer', - 'sgl' => 'application/vnd.stardivision.writer-global', - 'smzip' => 'application/vnd.stepmania.package', - 'sm' => 'application/vnd.stepmania.stepchart', - 'sxc' => 'application/vnd.sun.xml.calc', - 'stc' => 'application/vnd.sun.xml.calc.template', - 'sxd' => 'application/vnd.sun.xml.draw', - 'std' => 'application/vnd.sun.xml.draw.template', - 'sxi' => 'application/vnd.sun.xml.impress', - 'sti' => 'application/vnd.sun.xml.impress.template', - 'sxm' => 'application/vnd.sun.xml.math', - 'sxw' => 'application/vnd.sun.xml.writer', - 'sxg' => 'application/vnd.sun.xml.writer.global', - 'stw' => 'application/vnd.sun.xml.writer.template', - 'sus' => 'application/vnd.sus-calendar', - 'susp' => 'application/vnd.sus-calendar', - 'svd' => 'application/vnd.svd', - 'sis' => 'application/vnd.symbian.install', - 'sisx' => 'application/vnd.symbian.install', - 'xsm' => 'application/vnd.syncml+xml', - 'bdm' => 'application/vnd.syncml.dm+wbxml', - 'xdm' => 'application/vnd.syncml.dm+xml', - 'tao' => 'application/vnd.tao.intent-module-archive', - 'pcap' => 'application/vnd.tcpdump.pcap', - 'cap' => 'application/vnd.tcpdump.pcap', - 'dmp' => 'application/vnd.tcpdump.pcap', - 'tmo' => 'application/vnd.tmobile-livetv', - 'tpt' => 'application/vnd.trid.tpt', - 'mxs' => 'application/vnd.triscape.mxs', - 'tra' => 'application/vnd.trueapp', - 'ufd' => 'application/vnd.ufdl', - 'ufdl' => 'application/vnd.ufdl', - 'utz' => 'application/vnd.uiq.theme', - 'umj' => 'application/vnd.umajin', - 'unityweb' => 'application/vnd.unity', - 'uoml' => 'application/vnd.uoml+xml', - 'vcx' => 'application/vnd.vcx', - 'vsd' => 'application/vnd.visio', - 'vst' => 'application/vnd.visio', - 'vss' => 'application/vnd.visio', - 'vsw' => 'application/vnd.visio', - 'vis' => 'application/vnd.visionary', - 'vsf' => 'application/vnd.vsf', - 'wbxml' => 'application/vnd.wap.wbxml', - 'wmlc' => 'application/vnd.wap.wmlc', - 'wmlsc' => 'application/vnd.wap.wmlscriptc', - 'wtb' => 'application/vnd.webturbo', - 'nbp' => 'application/vnd.wolfram.player', - 'wpd' => 'application/vnd.wordperfect', - 'wqd' => 'application/vnd.wqd', - 'stf' => 'application/vnd.wt.stf', - 'xar' => 'application/vnd.xara', - 'xfdl' => 'application/vnd.xfdl', - 'hvd' => 'application/vnd.yamaha.hv-dic', - 'hvs' => 'application/vnd.yamaha.hv-script', - 'hvp' => 'application/vnd.yamaha.hv-voice', - 'osf' => 'application/vnd.yamaha.openscoreformat', - 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml', - 'saf' => 'application/vnd.yamaha.smaf-audio', - 'spf' => 'application/vnd.yamaha.smaf-phrase', - 'cmp' => 'application/vnd.yellowriver-custom-menu', - 'zir' => 'application/vnd.zul', - 'zirz' => 'application/vnd.zul', - 'zaz' => 'application/vnd.zzazz.deck+xml', - 'vxml' => 'application/voicexml+xml', - 'wgt' => 'application/widget', - 'hlp' => 'application/winhlp', - 'wsdl' => 'application/wsdl+xml', - 'wspolicy' => 'application/wspolicy+xml', - '7z' => 'application/x-7z-compressed', - 'abw' => 'application/x-abiword', - 'ace' => 'application/x-ace-compressed', - 'dmg' => 'application/x-apple-diskimage', - 'aab' => 'application/x-authorware-bin', - 'x32' => 'application/x-authorware-bin', - 'u32' => 'application/x-authorware-bin', - 'vox' => 'application/x-authorware-bin', - 'aam' => 'application/x-authorware-map', - 'aas' => 'application/x-authorware-seg', - 'bcpio' => 'application/x-bcpio', - 'torrent' => 'application/x-bittorrent', - 'blb' => 'application/x-blorb', - 'blorb' => 'application/x-blorb', - 'bz' => 'application/x-bzip', - 'bz2' => 'application/x-bzip2', - 'boz' => 'application/x-bzip2', - 'cbr' => 'application/x-cbr', - 'cba' => 'application/x-cbr', - 'cbt' => 'application/x-cbr', - 'cbz' => 'application/x-cbr', - 'cb7' => 'application/x-cbr', - 'vcd' => 'application/x-cdlink', - 'cfs' => 'application/x-cfs-compressed', - 'chat' => 'application/x-chat', - 'pgn' => 'application/x-chess-pgn', - 'nsc' => 'application/x-conference', - 'cpio' => 'application/x-cpio', - 'csh' => 'application/x-csh', - 'deb' => 'application/x-debian-package', - 'udeb' => 'application/x-debian-package', - 'dgc' => 'application/x-dgc-compressed', - 'dir' => 'application/x-director', - 'dcr' => 'application/x-director', - 'dxr' => 'application/x-director', - 'cst' => 'application/x-director', - 'cct' => 'application/x-director', - 'cxt' => 'application/x-director', - 'w3d' => 'application/x-director', - 'fgd' => 'application/x-director', - 'swa' => 'application/x-director', - 'wad' => 'application/x-doom', - 'ncx' => 'application/x-dtbncx+xml', - 'dtb' => 'application/x-dtbook+xml', - 'res' => 'application/x-dtbresource+xml', - 'dvi' => 'application/x-dvi', - 'evy' => 'application/x-envoy', - 'eva' => 'application/x-eva', - 'bdf' => 'application/x-font-bdf', - 'gsf' => 'application/x-font-ghostscript', - 'psf' => 'application/x-font-linux-psf', - 'pcf' => 'application/x-font-pcf', - 'snf' => 'application/x-font-snf', - 'pfa' => 'application/x-font-type1', - 'pfb' => 'application/x-font-type1', - 'pfm' => 'application/x-font-type1', - 'afm' => 'application/x-font-type1', - 'arc' => 'application/x-freearc', - 'spl' => 'application/x-futuresplash', - 'gca' => 'application/x-gca-compressed', - 'ulx' => 'application/x-glulx', - 'gnumeric' => 'application/x-gnumeric', - 'gramps' => 'application/x-gramps-xml', - 'gtar' => 'application/x-gtar', - 'hdf' => 'application/x-hdf', - 'install' => 'application/x-install-instructions', - 'iso' => 'application/x-iso9660-image', - 'jnlp' => 'application/x-java-jnlp-file', - 'latex' => 'application/x-latex', - 'lzh' => 'application/x-lzh-compressed', - 'lha' => 'application/x-lzh-compressed', - 'mie' => 'application/x-mie', - 'prc' => 'application/x-mobipocket-ebook', - 'mobi' => 'application/x-mobipocket-ebook', - 'application' => 'application/x-ms-application', - 'lnk' => 'application/x-ms-shortcut', - 'wmd' => 'application/x-ms-wmd', - 'wmz' => 'application/x-msmetafile', - 'xbap' => 'application/x-ms-xbap', - 'mdb' => 'application/x-msaccess', - 'obd' => 'application/x-msbinder', - 'crd' => 'application/x-mscardfile', - 'clp' => 'application/x-msclip', - 'exe' => 'application/x-msdownload', - 'dll' => 'application/x-msdownload', - 'com' => 'application/x-msdownload', - 'bat' => 'application/x-msdownload', - 'msi' => 'application/x-msdownload', - 'mvb' => 'application/x-msmediaview', - 'm13' => 'application/x-msmediaview', - 'm14' => 'application/x-msmediaview', - 'wmf' => 'application/x-msmetafile', - 'emf' => 'application/x-msmetafile', - 'emz' => 'application/x-msmetafile', - 'mny' => 'application/x-msmoney', - 'pub' => 'application/x-mspublisher', - 'scd' => 'application/x-msschedule', - 'trm' => 'application/x-msterminal', - 'wri' => 'application/x-mswrite', - 'nc' => 'application/x-netcdf', - 'cdf' => 'application/x-netcdf', - 'nzb' => 'application/x-nzb', - 'p12' => 'application/x-pkcs12', - 'pfx' => 'application/x-pkcs12', - 'p7b' => 'application/x-pkcs7-certificates', - 'spc' => 'application/x-pkcs7-certificates', - 'p7r' => 'application/x-pkcs7-certreqresp', - 'rar' => 'application/x-rar-compressed', - 'ris' => 'application/x-research-info-systems', - 'sh' => 'application/x-sh', - 'shar' => 'application/x-shar', - 'swf' => 'application/x-shockwave-flash', - 'xap' => 'application/x-silverlight-app', - 'sql' => 'application/x-sql', - 'sit' => 'application/x-stuffit', - 'sitx' => 'application/x-stuffitx', - 'srt' => 'application/x-subrip', - 'sv4cpio' => 'application/x-sv4cpio', - 'sv4crc' => 'application/x-sv4crc', - 't3' => 'application/x-t3vm-image', - 'gam' => 'application/x-tads', - 'tar' => 'application/x-tar', - 'tcl' => 'application/x-tcl', - 'tex' => 'application/x-tex', - 'tfm' => 'application/x-tex-tfm', - 'texinfo' => 'application/x-texinfo', - 'texi' => 'application/x-texinfo', - 'obj' => 'application/x-tgif', - 'ustar' => 'application/x-ustar', - 'src' => 'application/x-wais-source', - 'der' => 'application/x-x509-ca-cert', - 'crt' => 'application/x-x509-ca-cert', - 'fig' => 'application/x-xfig', - 'xlf' => 'application/x-xliff+xml', - 'xpi' => 'application/x-xpinstall', - 'xz' => 'application/x-xz', - 'z1' => 'application/x-zmachine', - 'z2' => 'application/x-zmachine', - 'z3' => 'application/x-zmachine', - 'z4' => 'application/x-zmachine', - 'z5' => 'application/x-zmachine', - 'z6' => 'application/x-zmachine', - 'z7' => 'application/x-zmachine', - 'z8' => 'application/x-zmachine', - 'xaml' => 'application/xaml+xml', - 'xdf' => 'application/xcap-diff+xml', - 'xenc' => 'application/xenc+xml', - 'xhtml' => 'application/xhtml+xml', - 'xht' => 'application/xhtml+xml', - 'xml' => 'application/xml', - 'xsl' => 'application/xml', - 'dtd' => 'application/xml-dtd', - 'xop' => 'application/xop+xml', - 'xpl' => 'application/xproc+xml', - 'xslt' => 'application/xslt+xml', - 'xspf' => 'application/xspf+xml', - 'mxml' => 'application/xv+xml', - 'xhvml' => 'application/xv+xml', - 'xvml' => 'application/xv+xml', - 'xvm' => 'application/xv+xml', - 'yang' => 'application/yang', - 'yin' => 'application/yin+xml', - 'zip' => 'application/zip', - 'adp' => 'audio/adpcm', - 'au' => 'audio/basic', - 'snd' => 'audio/basic', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'kar' => 'audio/midi', - 'rmi' => 'audio/midi', - 'm4a' => 'audio/mp4', - 'mp4a' => 'audio/mp4', - 'mpga' => 'audio/mpeg', - 'mp2' => 'audio/mpeg', - 'mp2a' => 'audio/mpeg', - 'mp3' => 'audio/mpeg', - 'm2a' => 'audio/mpeg', - 'm3a' => 'audio/mpeg', - 'oga' => 'audio/ogg', - 'ogg' => 'audio/ogg', - 'spx' => 'audio/ogg', - 's3m' => 'audio/s3m', - 'sil' => 'audio/silk', - 'uva' => 'audio/vnd.dece.audio', - 'uvva' => 'audio/vnd.dece.audio', - 'eol' => 'audio/vnd.digital-winds', - 'dra' => 'audio/vnd.dra', - 'dts' => 'audio/vnd.dts', - 'dtshd' => 'audio/vnd.dts.hd', - 'lvp' => 'audio/vnd.lucent.voice', - 'pya' => 'audio/vnd.ms-playready.media.pya', - 'ecelp4800' => 'audio/vnd.nuera.ecelp4800', - 'ecelp7470' => 'audio/vnd.nuera.ecelp7470', - 'ecelp9600' => 'audio/vnd.nuera.ecelp9600', - 'rip' => 'audio/vnd.rip', - 'weba' => 'audio/webm', - 'aac' => 'audio/x-aac', - 'aif' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'caf' => 'audio/x-caf', - 'flac' => 'audio/x-flac', - 'mka' => 'audio/x-matroska', - 'm3u' => 'audio/x-mpegurl', - 'wax' => 'audio/x-ms-wax', - 'wma' => 'audio/x-ms-wma', - 'ram' => 'audio/x-pn-realaudio', - 'ra' => 'audio/x-pn-realaudio', - 'rmp' => 'audio/x-pn-realaudio-plugin', - 'wav' => 'audio/x-wav', - 'xm' => 'audio/xm', - 'cdx' => 'chemical/x-cdx', - 'cif' => 'chemical/x-cif', - 'cmdf' => 'chemical/x-cmdf', - 'cml' => 'chemical/x-cml', - 'csml' => 'chemical/x-csml', - 'xyz' => 'chemical/x-xyz', - 'ttc' => 'font/collection', - 'otf' => 'font/otf', - 'ttf' => 'font/ttf', - 'woff' => 'font/woff', - 'woff2' => 'font/woff2', - 'bmp' => 'image/bmp', - 'cgm' => 'image/cgm', - 'g3' => 'image/g3fax', - 'gif' => 'image/gif', - 'ief' => 'image/ief', - 'jpeg' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'jpe' => 'image/jpeg', - 'ktx' => 'image/ktx', - 'png' => 'image/png', - 'btif' => 'image/prs.btif', - 'sgi' => 'image/sgi', - 'svg' => 'image/svg+xml', - 'svgz' => 'image/svg+xml', - 'tiff' => 'image/tiff', - 'tif' => 'image/tiff', - 'psd' => 'image/vnd.adobe.photoshop', - 'uvi' => 'image/vnd.dece.graphic', - 'uvvi' => 'image/vnd.dece.graphic', - 'uvg' => 'image/vnd.dece.graphic', - 'uvvg' => 'image/vnd.dece.graphic', - 'djvu' => 'image/vnd.djvu', - 'djv' => 'image/vnd.djvu', - 'sub' => 'text/vnd.dvb.subtitle', - 'dwg' => 'image/vnd.dwg', - 'dxf' => 'image/vnd.dxf', - 'fbs' => 'image/vnd.fastbidsheet', - 'fpx' => 'image/vnd.fpx', - 'fst' => 'image/vnd.fst', - 'mmr' => 'image/vnd.fujixerox.edmics-mmr', - 'rlc' => 'image/vnd.fujixerox.edmics-rlc', - 'mdi' => 'image/vnd.ms-modi', - 'wdp' => 'image/vnd.ms-photo', - 'npx' => 'image/vnd.net-fpx', - 'wbmp' => 'image/vnd.wap.wbmp', - 'xif' => 'image/vnd.xiff', - 'webp' => 'image/webp', - '3ds' => 'image/x-3ds', - 'ras' => 'image/x-cmu-raster', - 'cmx' => 'image/x-cmx', - 'fh' => 'image/x-freehand', - 'fhc' => 'image/x-freehand', - 'fh4' => 'image/x-freehand', - 'fh5' => 'image/x-freehand', - 'fh7' => 'image/x-freehand', - 'ico' => 'image/x-icon', - 'sid' => 'image/x-mrsid-image', - 'pcx' => 'image/x-pcx', - 'pic' => 'image/x-pict', - 'pct' => 'image/x-pict', - 'pnm' => 'image/x-portable-anymap', - 'pbm' => 'image/x-portable-bitmap', - 'pgm' => 'image/x-portable-graymap', - 'ppm' => 'image/x-portable-pixmap', - 'rgb' => 'image/x-rgb', - 'tga' => 'image/x-tga', - 'xbm' => 'image/x-xbitmap', - 'xpm' => 'image/x-xpixmap', - 'xwd' => 'image/x-xwindowdump', - 'eml' => 'message/rfc822', - 'mime' => 'message/rfc822', - 'igs' => 'model/iges', - 'iges' => 'model/iges', - 'msh' => 'model/mesh', - 'mesh' => 'model/mesh', - 'silo' => 'model/mesh', - 'dae' => 'model/vnd.collada+xml', - 'dwf' => 'model/vnd.dwf', - 'gdl' => 'model/vnd.gdl', - 'gtw' => 'model/vnd.gtw', - 'mts' => 'model/vnd.mts', - 'vtu' => 'model/vnd.vtu', - 'wrl' => 'model/vrml', - 'vrml' => 'model/vrml', - 'x3db' => 'model/x3d+binary', - 'x3dbz' => 'model/x3d+binary', - 'x3dv' => 'model/x3d+vrml', - 'x3dvz' => 'model/x3d+vrml', - 'x3d' => 'model/x3d+xml', - 'x3dz' => 'model/x3d+xml', - 'appcache' => 'text/cache-manifest', - 'ics' => 'text/calendar', - 'ifb' => 'text/calendar', - 'css' => 'text/css', - 'csv' => 'text/csv', - 'html' => 'text/html', - 'htm' => 'text/html', - 'n3' => 'text/n3', - 'txt' => 'text/plain', - 'text' => 'text/plain', - 'conf' => 'text/plain', - 'def' => 'text/plain', - 'list' => 'text/plain', - 'log' => 'text/plain', - 'in' => 'text/plain', - 'dsc' => 'text/prs.lines.tag', - 'rtx' => 'text/richtext', - 'sgml' => 'text/sgml', - 'sgm' => 'text/sgml', - 'tsv' => 'text/tab-separated-values', - 't' => 'text/troff', - 'tr' => 'text/troff', - 'roff' => 'text/troff', - 'man' => 'text/troff', - 'me' => 'text/troff', - 'ms' => 'text/troff', - 'ttl' => 'text/turtle', - 'uri' => 'text/uri-list', - 'uris' => 'text/uri-list', - 'urls' => 'text/uri-list', - 'vcard' => 'text/vcard', - 'curl' => 'text/vnd.curl', - 'dcurl' => 'text/vnd.curl.dcurl', - 'mcurl' => 'text/vnd.curl.mcurl', - 'scurl' => 'text/vnd.curl.scurl', - 'fly' => 'text/vnd.fly', - 'flx' => 'text/vnd.fmi.flexstor', - 'gv' => 'text/vnd.graphviz', - '3dml' => 'text/vnd.in3d.3dml', - 'spot' => 'text/vnd.in3d.spot', - 'jad' => 'text/vnd.sun.j2me.app-descriptor', - 'wml' => 'text/vnd.wap.wml', - 'wmls' => 'text/vnd.wap.wmlscript', - 's' => 'text/x-asm', - 'asm' => 'text/x-asm', - 'c' => 'text/x-c', - 'cc' => 'text/x-c', - 'cxx' => 'text/x-c', - 'cpp' => 'text/x-c', - 'h' => 'text/x-c', - 'hh' => 'text/x-c', - 'dic' => 'text/x-c', - 'f' => 'text/x-fortran', - 'for' => 'text/x-fortran', - 'f77' => 'text/x-fortran', - 'f90' => 'text/x-fortran', - 'java' => 'text/x-java-source', - 'nfo' => 'text/x-nfo', - 'opml' => 'text/x-opml', - 'p' => 'text/x-pascal', - 'pas' => 'text/x-pascal', - 'etx' => 'text/x-setext', - 'sfv' => 'text/x-sfv', - 'uu' => 'text/x-uuencode', - 'vcs' => 'text/x-vcalendar', - 'vcf' => 'text/x-vcard', - '3gp' => 'video/3gpp', - '3g2' => 'video/3gpp2', - 'h261' => 'video/h261', - 'h263' => 'video/h263', - 'h264' => 'video/h264', - 'jpgv' => 'video/jpeg', - 'jpm' => 'video/jpm', - 'jpgm' => 'video/jpm', - 'mj2' => 'video/mj2', - 'mjp2' => 'video/mj2', - 'mp4' => 'video/mp4', - 'mp4v' => 'video/mp4', - 'mpg4' => 'video/mp4', - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mpe' => 'video/mpeg', - 'm1v' => 'video/mpeg', - 'm2v' => 'video/mpeg', - 'ogv' => 'video/ogg', - 'qt' => 'video/quicktime', - 'mov' => 'video/quicktime', - 'uvh' => 'video/vnd.dece.hd', - 'uvvh' => 'video/vnd.dece.hd', - 'uvm' => 'video/vnd.dece.mobile', - 'uvvm' => 'video/vnd.dece.mobile', - 'uvp' => 'video/vnd.dece.pd', - 'uvvp' => 'video/vnd.dece.pd', - 'uvs' => 'video/vnd.dece.sd', - 'uvvs' => 'video/vnd.dece.sd', - 'uvv' => 'video/vnd.dece.video', - 'uvvv' => 'video/vnd.dece.video', - 'dvb' => 'video/vnd.dvb.file', - 'fvt' => 'video/vnd.fvt', - 'mxu' => 'video/vnd.mpegurl', - 'm4u' => 'video/vnd.mpegurl', - 'pyv' => 'video/vnd.ms-playready.media.pyv', - 'uvu' => 'video/vnd.uvvu.mp4', - 'uvvu' => 'video/vnd.uvvu.mp4', - 'viv' => 'video/vnd.vivo', - 'webm' => 'video/webm', - 'f4v' => 'video/x-f4v', - 'fli' => 'video/x-fli', - 'flv' => 'video/x-flv', - 'm4v' => 'video/x-m4v', - 'mkv' => 'video/x-matroska', - 'mk3d' => 'video/x-matroska', - 'mks' => 'video/x-matroska', - 'mng' => 'video/x-mng', - 'asf' => 'video/x-ms-asf', - 'asx' => 'video/x-ms-asf', - 'vob' => 'video/x-ms-vob', - 'wm' => 'video/x-ms-wm', - 'wmv' => 'video/x-ms-wmv', - 'wmx' => 'video/x-ms-wmx', - 'wvx' => 'video/x-ms-wvx', - 'avi' => 'video/x-msvideo', - 'movie' => 'video/x-sgi-movie', - 'smv' => 'video/x-smv', - 'ice' => 'x-conference/x-cooltalk', -]; \ No newline at end of file

    mz(m@x4-;7z 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⋙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 z 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

    ?h@p;pb8xISE-%YWCokn5|B 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 < zc^q^NKS7>;i9b%-k?lc!b|AAs>&hWJgSNK|*%fr1>_+B-`p+YKfX=&~WG~Qu>`h(` z+Lk_K1iFr;$m>DJ_6=lTaMxY&I+;?)Mp*J5On{rh+G2NuBGHM&={7JD?oEw zPp$;@zlvOPnQya{Tn4&VUrw$7&0#&c64cKsaxG}TtRvUMy-#p%k`18w&ybrzbN(i| z1vJh^aw}-RZzH$E(@$hww1eCQ8uM;)4`>_rk_SNh>of8oXwDCjM?ly77V;a=G4L&U z6m)DKBag#|C$cU-K_;MW4{|xzKvR^FiA+ zm>gpDq2w@d`<=WEH2&Mk0?>L3$x)#7jwZ)|)-{$a0=*U&lS1RUpA@=hdw>*Lb{r|x zW;~e&ZF@|XgVt3+R)c$uCKrOnvxr;)Iu7f}^`Pt02C@M(h77qG)X$sb7OOXsTS3Rh zHgY@YSlU7E0`<9@+yk12y<`)p|7P+4sQ=H%gH}I89tO?Bm*i2UCZN}d zAdhP-XkWA@+ra-lk=3Owc{-?lJF-1!PCAfhf#%_CG8;5+IZCT{BfEpzUrOeJ<~fh- z0UBFRvKMH(dXrbf0M6e&p!UUN31}N9 zkdr{$GMP++#vGHSpgyOPWuWbvPL_k_t%9rsjk$`P4cbR@$a$cC=93FS{VyVyfbO@K zlFLBjSx&A1-4E20E3LkYTnjq>*OBW%W7t4$w)&go7SMPa$*rI^+sIv@Wp|T%Kx5cT zHd(!yJOH{5e?}ezwK+r{1|2_NlE*>waDq(W2bEb@1ef#L3fjg_a&n2_1o}&aU z+l}lFI({xC`-7GpKn?*NV?)VdpzGdn@;1;l`F64Z)K4Kf0yO6%$s$lc#pF29{nB`{ z1T+s5$Vs4nCX;EgufjkRzoSaQ| z1ic1zB7Xup=6_0_1J_sbK91}Pn$K=zchKilmy)@l{g_Ag04>{->l!zhpIN zo@>Z?ps~#-YeDl?M=k`-+ahuqsQ=~U%b?GPUm;h3&cS+eC8+;ZgC4v_fR2r}khdGv>*49324rPp6qwf7&?*XfW~|-nG0%@NA?2EPj51Ud6ijRQevJ`ZjPbJGhW1CJ^g7#?@IUBSsbI5AYeykyD!ObnX z5VTJhkxM}9T}mzkH@B*RUehz=W~;wRZUObvNN%_K4ssW0y}QXhpkrw-xeqkv{bUnp zpEi>RKq6#QJ&!yHTJIt9h}B!j#OlG7TsJ`PdE1hwgZ@s` zjyy}w*v=+%L35r*_5zKwH+eOv|2|{{nzs~rJ@n!8jT^|mpyQ+;nGc$)!Q>FoF))-I z2Ab#LOUq+L1UgumVw4Roh%29xq_?&jkAiJ z4Z3fcLso;%#~N}TsGs>{E$Do#BNu`@_Q)lm>&8-Y8EF2OlPf^|)RQYg=g}&1J!qac zkefm0@|)xq(3~`qTS42njoc2p|JgzA0;Y5(0Uh<%fQVuxdOD`>&dmCHtWds zpgGwh3{_kjA}OE!Vd>t^x*=(XT8@*rqi4w1(} z`}YKyfO{X;oAU)UhTh~bQ2)cp+d;?n@5utI7m}ku>m5y&fR>#=PO|!BG7ah{CQCur zim7B7Xd9=K<)CFN$V$+4vWlE-^*LlUxN9sq57g&;av^BhMdT9D@vxL!2AYTEZffzJKm ziVz0QEnTECP+cm@EN}VFFnS8rxK|3^a!6WI4EVgscR$uOerI_TwCK zp4I1*wV>mwj$CN&u(%LsQq4YA81|s$tFV)Y5+B+xNAnJfhz!&Av}t5=Yf zplzulXM@HthpYvSzm8l6TGw)N1!&Cmix)TX83i5 z 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