From 0d759bb52b9c5d7c2f66b7a7acd2131ff6ee67e6 Mon Sep 17 00:00:00 2001 From: yanzai Date: Sat, 22 Jun 2024 17:17:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Laravel/.editorconfig | 18 + Laravel/.env.example | 52 + Laravel/.gitattributes | 10 + Laravel/.gitignore | 15 + Laravel/.styleci.yml | 14 + Laravel/README.md | 64 + Laravel/app/Console/Commands/MakeService.php | 59 + .../app/Console/Commands/Stubs/services.stub | 7 + Laravel/app/Console/Kernel.php | 34 + Laravel/app/Exceptions/Handler.php | 41 + .../API/Admin/BaseInfoController.php | 38 + .../API/Admin/ConfigController.php | 23 + .../Controllers/API/Admin/GroupController.php | 45 + .../Controllers/API/Admin/LoginController.php | 21 + .../Controllers/API/Admin/MenuController.php | 45 + .../Controllers/API/Admin/UserController.php | 49 + .../API/Admin/YeWu/HospitalController.php | 63 + .../API/Admin/YeWu/WebSiteController.php | 59 + .../Admin/YeWu/healthCalendarController.php | 47 + .../Http/Controllers/API/LogController.php | 22 + .../Http/Controllers/API/TokenController.php | 23 + .../Http/Controllers/API/UpLoadController.php | 30 + Laravel/app/Http/Controllers/Controller.php | 13 + .../app/Http/Controllers/TestController.php | 15 + Laravel/app/Http/Kernel.php | 70 + Laravel/app/Http/Middleware/Authenticate.php | 21 + Laravel/app/Http/Middleware/CheckSign.php | 35 + Laravel/app/Http/Middleware/CheckSignXMl.php | 21 + Laravel/app/Http/Middleware/CheckToken.php | 32 + .../app/Http/Middleware/EncryptCookies.php | 17 + Laravel/app/Http/Middleware/Log.php | 78 + .../PreventRequestsDuringMaintenance.php | 17 + .../Middleware/RedirectIfAuthenticated.php | 32 + Laravel/app/Http/Middleware/TrimStrings.php | 19 + Laravel/app/Http/Middleware/TrustHosts.php | 20 + Laravel/app/Http/Middleware/TrustProxies.php | 28 + .../app/Http/Middleware/VerifyCsrfToken.php | 17 + Laravel/app/Lib/HSM.php | 66 + Laravel/app/Lib/JWT.php | 132 + Laravel/app/Lib/UKEY.php | 97 + Laravel/app/Lib/XTSign.php | 107 + Laravel/app/Lib/Yz.php | 30 + Laravel/app/Models/User.php | 44 + Laravel/app/Providers/AppServiceProvider.php | 28 + Laravel/app/Providers/AuthServiceProvider.php | 30 + .../Providers/BroadcastServiceProvider.php | 21 + .../app/Providers/EventServiceProvider.php | 32 + .../app/Providers/RouteServiceProvider.php | 63 + Laravel/app/Services/Admin/GroupService.php | 72 + Laravel/app/Services/Admin/MenuService.php | 127 + Laravel/app/Services/Admin/UserService.php | 128 + .../Admin/YeWu/HealthCalendarService.php | 137 + Laravel/app/Services/ConfigService.php | 37 + Laravel/app/Services/LogService.php | 130 + Laravel/app/Services/Login/LoginService.php | 77 + Laravel/app/Services/TokenService.php | 43 + Laravel/artisan | 53 + Laravel/bootstrap/app.php | 55 + Laravel/bootstrap/cache/.gitignore | 2 + Laravel/composer.json | 65 + Laravel/composer.lock | 8427 +++++++++++++++++ Laravel/config/app.php | 249 + Laravel/config/auth.php | 111 + Laravel/config/broadcasting.php | 64 + Laravel/config/cache.php | 110 + Laravel/config/cors.php | 34 + Laravel/config/database.php | 147 + Laravel/config/filesystems.php | 73 + Laravel/config/hashing.php | 52 + Laravel/config/logging.php | 118 + Laravel/config/mail.php | 118 + Laravel/config/queue.php | 93 + Laravel/config/sanctum.php | 65 + Laravel/config/services.php | 33 + Laravel/config/session.php | 201 + Laravel/config/view.php | 36 + Laravel/database/.gitignore | 1 + Laravel/database/factories/UserFactory.php | 39 + .../2014_10_12_000000_create_users_table.php | 36 + ...12_100000_create_password_resets_table.php | 32 + ..._08_19_000000_create_failed_jobs_table.php | 36 + ...01_create_personal_access_tokens_table.php | 36 + Laravel/database/seeders/DatabaseSeeder.php | 18 + Laravel/package.json | 18 + Laravel/phpunit.xml | 31 + Laravel/public/.htaccess | 0 Laravel/public/favicon.ico | 0 Laravel/public/index.php | 55 + Laravel/public/nginx.htaccess | 8 + Laravel/public/report.pdf | Bin 0 -> 115311 bytes Laravel/public/robots.txt | 2 + Laravel/resources/css/app.css | 0 Laravel/resources/js/app.js | 1 + Laravel/resources/js/bootstrap.js | 28 + Laravel/resources/lang/en/auth.php | 20 + Laravel/resources/lang/en/pagination.php | 19 + Laravel/resources/lang/en/passwords.php | 22 + Laravel/resources/lang/en/validation.php | 163 + Laravel/resources/views/welcome.blade.php | 132 + Laravel/routes/api.php | 72 + Laravel/routes/channels.php | 18 + Laravel/routes/console.php | 19 + Laravel/routes/web.php | 28 + Laravel/server.php | 21 + Laravel/storage/app/.gitignore | 3 + Laravel/storage/framework/.gitignore | 9 + Laravel/storage/framework/cache/.gitignore | 3 + .../storage/framework/cache/data/.gitignore | 2 + Laravel/storage/framework/sessions/.gitignore | 2 + Laravel/storage/framework/testing/.gitignore | 2 + Laravel/storage/framework/views/.gitignore | 2 + Laravel/storage/logs/.gitignore | 2 + Laravel/tests/CreatesApplication.php | 22 + Laravel/tests/Feature/ExampleTest.php | 21 + Laravel/tests/TestCase.php | 10 + Laravel/tests/Unit/ExampleTest.php | 18 + Laravel/webpack.mix.js | 17 + admin/.env.development | 3 + admin/.env.production | 4 + admin/.eslintrc.cjs | 14 + admin/.gitignore | 28 + admin/.prettierrc.json | 8 + admin/.vscode/extensions.json | 8 + admin/README.md | 35 + admin/index.html | 13 + admin/package-lock.json | 3349 +++++++ admin/package.json | 32 + admin/public/favicon.ico | Bin 0 -> 4286 bytes admin/public/js/xtxsync.js | 984 ++ admin/src/App.vue | 90 + admin/src/api/api.js | 139 + admin/src/assets/backg_l.jpg | Bin 0 -> 159532 bytes admin/src/assets/base.css | 92 + admin/src/assets/loginBackg.png | Bin 0 -> 245943 bytes admin/src/assets/logo.png | Bin 0 -> 7050 bytes admin/src/assets/logo.svg | 1 + admin/src/assets/main.css | 35 + admin/src/assets/user.jpg | Bin 0 -> 36407 bytes admin/src/components/HelloWorld.vue | 44 + admin/src/components/IconList.vue | 66 + admin/src/components/TheWelcome.vue | 88 + admin/src/components/WelcomeItem.vue | 86 + admin/src/components/icons/IconCommunity.vue | 7 + .../components/icons/IconDocumentation.vue | 7 + admin/src/components/icons/IconEcosystem.vue | 7 + admin/src/components/icons/IconSupport.vue | 7 + admin/src/components/icons/IconTooling.vue | 19 + admin/src/main.js | 23 + admin/src/router/index.js | 137 + admin/src/stores/counter.js | 12 + admin/src/stores/index.js | 14 + admin/src/style/dark/css-vars.css | 15 + admin/src/tools/Tools.js | 3 + admin/src/tools/axios.js | 117 + admin/src/views/AboutView.vue | 15 + admin/src/views/HomeView.vue | 9 + admin/src/views/Index.vue | 330 + admin/src/views/Login.vue | 156 + admin/src/views/MedicalCenter/Dashboard.vue | 173 + .../views/OrganizationMngr/HospitalMngr.vue | 208 + admin/src/views/OrganizationMngr/WebSite.vue | 184 + admin/src/views/SystemMngr/Group/List.vue | 159 + admin/src/views/SystemMngr/Menu/List.vue | 173 + admin/src/views/SystemMngr/SystemConfig.vue | 129 + admin/src/views/SystemMngr/SystemLog.vue | 158 + admin/src/views/SystemMngr/User/ChangPwd.vue | 197 + admin/src/views/SystemMngr/User/List.vue | 173 + admin/vite.config.js | 33 + 168 files changed, 21273 insertions(+) create mode 100644 Laravel/.editorconfig create mode 100644 Laravel/.env.example create mode 100644 Laravel/.gitattributes create mode 100644 Laravel/.gitignore create mode 100644 Laravel/.styleci.yml create mode 100644 Laravel/README.md create mode 100644 Laravel/app/Console/Commands/MakeService.php create mode 100644 Laravel/app/Console/Commands/Stubs/services.stub create mode 100644 Laravel/app/Console/Kernel.php create mode 100644 Laravel/app/Exceptions/Handler.php create mode 100644 Laravel/app/Http/Controllers/API/Admin/BaseInfoController.php create mode 100644 Laravel/app/Http/Controllers/API/Admin/ConfigController.php create mode 100644 Laravel/app/Http/Controllers/API/Admin/GroupController.php create mode 100644 Laravel/app/Http/Controllers/API/Admin/LoginController.php create mode 100644 Laravel/app/Http/Controllers/API/Admin/MenuController.php create mode 100644 Laravel/app/Http/Controllers/API/Admin/UserController.php create mode 100644 Laravel/app/Http/Controllers/API/Admin/YeWu/HospitalController.php create mode 100644 Laravel/app/Http/Controllers/API/Admin/YeWu/WebSiteController.php create mode 100644 Laravel/app/Http/Controllers/API/Admin/YeWu/healthCalendarController.php create mode 100644 Laravel/app/Http/Controllers/API/LogController.php create mode 100644 Laravel/app/Http/Controllers/API/TokenController.php create mode 100644 Laravel/app/Http/Controllers/API/UpLoadController.php create mode 100644 Laravel/app/Http/Controllers/Controller.php create mode 100644 Laravel/app/Http/Controllers/TestController.php create mode 100644 Laravel/app/Http/Kernel.php create mode 100644 Laravel/app/Http/Middleware/Authenticate.php create mode 100644 Laravel/app/Http/Middleware/CheckSign.php create mode 100644 Laravel/app/Http/Middleware/CheckSignXMl.php create mode 100644 Laravel/app/Http/Middleware/CheckToken.php create mode 100644 Laravel/app/Http/Middleware/EncryptCookies.php create mode 100644 Laravel/app/Http/Middleware/Log.php create mode 100644 Laravel/app/Http/Middleware/PreventRequestsDuringMaintenance.php create mode 100644 Laravel/app/Http/Middleware/RedirectIfAuthenticated.php create mode 100644 Laravel/app/Http/Middleware/TrimStrings.php create mode 100644 Laravel/app/Http/Middleware/TrustHosts.php create mode 100644 Laravel/app/Http/Middleware/TrustProxies.php create mode 100644 Laravel/app/Http/Middleware/VerifyCsrfToken.php create mode 100644 Laravel/app/Lib/HSM.php create mode 100644 Laravel/app/Lib/JWT.php create mode 100644 Laravel/app/Lib/UKEY.php create mode 100644 Laravel/app/Lib/XTSign.php create mode 100644 Laravel/app/Lib/Yz.php create mode 100644 Laravel/app/Models/User.php create mode 100644 Laravel/app/Providers/AppServiceProvider.php create mode 100644 Laravel/app/Providers/AuthServiceProvider.php create mode 100644 Laravel/app/Providers/BroadcastServiceProvider.php create mode 100644 Laravel/app/Providers/EventServiceProvider.php create mode 100644 Laravel/app/Providers/RouteServiceProvider.php create mode 100644 Laravel/app/Services/Admin/GroupService.php create mode 100644 Laravel/app/Services/Admin/MenuService.php create mode 100644 Laravel/app/Services/Admin/UserService.php create mode 100644 Laravel/app/Services/Admin/YeWu/HealthCalendarService.php create mode 100644 Laravel/app/Services/ConfigService.php create mode 100644 Laravel/app/Services/LogService.php create mode 100644 Laravel/app/Services/Login/LoginService.php create mode 100644 Laravel/app/Services/TokenService.php create mode 100644 Laravel/artisan create mode 100644 Laravel/bootstrap/app.php create mode 100644 Laravel/bootstrap/cache/.gitignore create mode 100644 Laravel/composer.json create mode 100644 Laravel/composer.lock create mode 100644 Laravel/config/app.php create mode 100644 Laravel/config/auth.php create mode 100644 Laravel/config/broadcasting.php create mode 100644 Laravel/config/cache.php create mode 100644 Laravel/config/cors.php create mode 100644 Laravel/config/database.php create mode 100644 Laravel/config/filesystems.php create mode 100644 Laravel/config/hashing.php create mode 100644 Laravel/config/logging.php create mode 100644 Laravel/config/mail.php create mode 100644 Laravel/config/queue.php create mode 100644 Laravel/config/sanctum.php create mode 100644 Laravel/config/services.php create mode 100644 Laravel/config/session.php create mode 100644 Laravel/config/view.php create mode 100644 Laravel/database/.gitignore create mode 100644 Laravel/database/factories/UserFactory.php create mode 100644 Laravel/database/migrations/2014_10_12_000000_create_users_table.php create mode 100644 Laravel/database/migrations/2014_10_12_100000_create_password_resets_table.php create mode 100644 Laravel/database/migrations/2019_08_19_000000_create_failed_jobs_table.php create mode 100644 Laravel/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php create mode 100644 Laravel/database/seeders/DatabaseSeeder.php create mode 100644 Laravel/package.json create mode 100644 Laravel/phpunit.xml create mode 100644 Laravel/public/.htaccess create mode 100644 Laravel/public/favicon.ico create mode 100644 Laravel/public/index.php create mode 100644 Laravel/public/nginx.htaccess create mode 100644 Laravel/public/report.pdf create mode 100644 Laravel/public/robots.txt create mode 100644 Laravel/resources/css/app.css create mode 100644 Laravel/resources/js/app.js create mode 100644 Laravel/resources/js/bootstrap.js create mode 100644 Laravel/resources/lang/en/auth.php create mode 100644 Laravel/resources/lang/en/pagination.php create mode 100644 Laravel/resources/lang/en/passwords.php create mode 100644 Laravel/resources/lang/en/validation.php create mode 100644 Laravel/resources/views/welcome.blade.php create mode 100644 Laravel/routes/api.php create mode 100644 Laravel/routes/channels.php create mode 100644 Laravel/routes/console.php create mode 100644 Laravel/routes/web.php create mode 100644 Laravel/server.php create mode 100644 Laravel/storage/app/.gitignore create mode 100644 Laravel/storage/framework/.gitignore create mode 100644 Laravel/storage/framework/cache/.gitignore create mode 100644 Laravel/storage/framework/cache/data/.gitignore create mode 100644 Laravel/storage/framework/sessions/.gitignore create mode 100644 Laravel/storage/framework/testing/.gitignore create mode 100644 Laravel/storage/framework/views/.gitignore create mode 100644 Laravel/storage/logs/.gitignore create mode 100644 Laravel/tests/CreatesApplication.php create mode 100644 Laravel/tests/Feature/ExampleTest.php create mode 100644 Laravel/tests/TestCase.php create mode 100644 Laravel/tests/Unit/ExampleTest.php create mode 100644 Laravel/webpack.mix.js create mode 100644 admin/.env.development create mode 100644 admin/.env.production create mode 100644 admin/.eslintrc.cjs create mode 100644 admin/.gitignore create mode 100644 admin/.prettierrc.json create mode 100644 admin/.vscode/extensions.json create mode 100644 admin/README.md create mode 100644 admin/index.html create mode 100644 admin/package-lock.json create mode 100644 admin/package.json create mode 100644 admin/public/favicon.ico create mode 100644 admin/public/js/xtxsync.js create mode 100644 admin/src/App.vue create mode 100644 admin/src/api/api.js create mode 100644 admin/src/assets/backg_l.jpg create mode 100644 admin/src/assets/base.css create mode 100644 admin/src/assets/loginBackg.png create mode 100644 admin/src/assets/logo.png create mode 100644 admin/src/assets/logo.svg create mode 100644 admin/src/assets/main.css create mode 100644 admin/src/assets/user.jpg create mode 100644 admin/src/components/HelloWorld.vue create mode 100644 admin/src/components/IconList.vue create mode 100644 admin/src/components/TheWelcome.vue create mode 100644 admin/src/components/WelcomeItem.vue create mode 100644 admin/src/components/icons/IconCommunity.vue create mode 100644 admin/src/components/icons/IconDocumentation.vue create mode 100644 admin/src/components/icons/IconEcosystem.vue create mode 100644 admin/src/components/icons/IconSupport.vue create mode 100644 admin/src/components/icons/IconTooling.vue create mode 100644 admin/src/main.js create mode 100644 admin/src/router/index.js create mode 100644 admin/src/stores/counter.js create mode 100644 admin/src/stores/index.js create mode 100644 admin/src/style/dark/css-vars.css create mode 100644 admin/src/tools/Tools.js create mode 100644 admin/src/tools/axios.js create mode 100644 admin/src/views/AboutView.vue create mode 100644 admin/src/views/HomeView.vue create mode 100644 admin/src/views/Index.vue create mode 100644 admin/src/views/Login.vue create mode 100644 admin/src/views/MedicalCenter/Dashboard.vue create mode 100644 admin/src/views/OrganizationMngr/HospitalMngr.vue create mode 100644 admin/src/views/OrganizationMngr/WebSite.vue create mode 100644 admin/src/views/SystemMngr/Group/List.vue create mode 100644 admin/src/views/SystemMngr/Menu/List.vue create mode 100644 admin/src/views/SystemMngr/SystemConfig.vue create mode 100644 admin/src/views/SystemMngr/SystemLog.vue create mode 100644 admin/src/views/SystemMngr/User/ChangPwd.vue create mode 100644 admin/src/views/SystemMngr/User/List.vue create mode 100644 admin/vite.config.js diff --git a/Laravel/.editorconfig b/Laravel/.editorconfig new file mode 100644 index 0000000..1671c9b --- /dev/null +++ b/Laravel/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/Laravel/.env.example b/Laravel/.env.example new file mode 100644 index 0000000..b7becba --- /dev/null +++ b/Laravel/.env.example @@ -0,0 +1,52 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +LOG_CHANNEL=stack +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=laravel +DB_USERNAME=root +DB_PASSWORD= + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +FILESYSTEM_DRIVER=local +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +MEMCACHED_HOST=127.0.0.1 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=mailhog +MAIL_PORT=1025 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=null +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_APP_CLUSTER=mt1 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Laravel/.gitattributes b/Laravel/.gitattributes new file mode 100644 index 0000000..510d996 --- /dev/null +++ b/Laravel/.gitattributes @@ -0,0 +1,10 @@ +* text=auto + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +/.github export-ignore +CHANGELOG.md export-ignore diff --git a/Laravel/.gitignore b/Laravel/.gitignore new file mode 100644 index 0000000..eb003b0 --- /dev/null +++ b/Laravel/.gitignore @@ -0,0 +1,15 @@ +/node_modules +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.phpunit.result.cache +docker-compose.override.yml +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +/.idea +/.vscode diff --git a/Laravel/.styleci.yml b/Laravel/.styleci.yml new file mode 100644 index 0000000..877ea70 --- /dev/null +++ b/Laravel/.styleci.yml @@ -0,0 +1,14 @@ +php: + preset: laravel + version: 8 + disabled: + - no_unused_imports + finder: + not-name: + - index.php + - server.php +js: + finder: + not-name: + - webpack.mix.js +css: true diff --git a/Laravel/README.md b/Laravel/README.md new file mode 100644 index 0000000..1b6397c --- /dev/null +++ b/Laravel/README.md @@ -0,0 +1,64 @@ +

+ +

+Build Status +Total Downloads +Latest Stable Version +License +

+ +## About Laravel + +Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: + +- [Simple, fast routing engine](https://laravel.com/docs/routing). +- [Powerful dependency injection container](https://laravel.com/docs/container). +- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. +- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). +- Database agnostic [schema migrations](https://laravel.com/docs/migrations). +- [Robust background job processing](https://laravel.com/docs/queues). +- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). + +Laravel is accessible, powerful, and provides tools required for large, robust applications. + +## Learning Laravel + +Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. + +If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 1500 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. + +## Laravel Sponsors + +We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). + +### Premium Partners + +- **[Vehikl](https://vehikl.com/)** +- **[Tighten Co.](https://tighten.co)** +- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** +- **[64 Robots](https://64robots.com)** +- **[Cubet Techno Labs](https://cubettech.com)** +- **[Cyber-Duck](https://cyber-duck.co.uk)** +- **[Many](https://www.many.co.uk)** +- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** +- **[DevSquad](https://devsquad.com)** +- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** +- **[OP.GG](https://op.gg)** +- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** +- **[Lendio](https://lendio.com)** + +## Contributing + +Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). + +## Code of Conduct + +In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). + +## Security Vulnerabilities + +If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. + +## License + +The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Laravel/app/Console/Commands/MakeService.php b/Laravel/app/Console/Commands/MakeService.php new file mode 100644 index 0000000..893c916 --- /dev/null +++ b/Laravel/app/Console/Commands/MakeService.php @@ -0,0 +1,59 @@ +command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + * + * @return void + */ + protected function commands() + { + $this->load(__DIR__.'/Commands'); + MakeService::class; + + require base_path('routes/console.php'); + + } +} diff --git a/Laravel/app/Exceptions/Handler.php b/Laravel/app/Exceptions/Handler.php new file mode 100644 index 0000000..8e7fbd1 --- /dev/null +++ b/Laravel/app/Exceptions/Handler.php @@ -0,0 +1,41 @@ +> + */ + protected $dontReport = [ + // + ]; + + /** + * A list of the inputs that are never flashed for validation exceptions. + * + * @var array + */ + protected $dontFlash = [ + 'current_password', + 'password', + 'password_confirmation', + ]; + + /** + * Register the exception handling callbacks for the application. + * + * @return void + */ + public function register() + { + $this->reportable(function (Throwable $e) { + // + }); + } +} diff --git a/Laravel/app/Http/Controllers/API/Admin/BaseInfoController.php b/Laravel/app/Http/Controllers/API/Admin/BaseInfoController.php new file mode 100644 index 0000000..2dfd5bd --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/BaseInfoController.php @@ -0,0 +1,38 @@ +get('userid');//中间件产生的参数 + $group = $request->get('role');//中间件产生的参数 + $s=app()->make(MenuService::class); + // dd($s->GetBaseMenuList(['userid'=>$userid,'group'=>$group])); + return $s->GetBaseMenuList(['userid'=>$userid,'group'=>$group]); + + } + //获取自身基本信息 + public function GetBaseUserInfo(Request $request){ + $userid = $request->get('userid');//中间件产生的参数 + $group = $request->get('role');//中间件产生的参数 + $s=app()->make(UserService::class); + return $s->GetDetail(['id'=>$userid]); + + } + + //检查用户是否有某个目录的权限 + public function CheckMenuAuth(Request $request){ + $userid = $request->get('userid');//中间件产生的参数 + $group = $request->get('role');//中间件产生的参数 + $url= request('url'); + $s=app()->make(UserService::class); + return $s->CheckMenuAuth(['userid'=>$userid,'group'=>$group,'url'=>$url]); + } +} diff --git a/Laravel/app/Http/Controllers/API/Admin/ConfigController.php b/Laravel/app/Http/Controllers/API/Admin/ConfigController.php new file mode 100644 index 0000000..57ae4d1 --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/ConfigController.php @@ -0,0 +1,23 @@ +GetConfigInfo(['站点名称','站点图片']); + } + public function SaveConfig(){ + $name = request('name'); + $logo = request('logo'); + $configs = new ConfigService(); + return $configs->SaveConfig($name,$logo); + } +} diff --git a/Laravel/app/Http/Controllers/API/Admin/GroupController.php b/Laravel/app/Http/Controllers/API/Admin/GroupController.php new file mode 100644 index 0000000..d767f84 --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/GroupController.php @@ -0,0 +1,45 @@ +make(GroupService::class); + return $s->GetList(['type'=>$type,'page'=>$page,'pagesize'=>$pagesize]); + } + public function ChangeMenu(Request $request){ + $userid = $request->get('userid');//中间件产生的参数 + $group =request('groupId'); + $menuList =request('menuList'); + $s=app()->make(GroupService::class); + return $s->ChangeMenu(['groupid'=>$group,'menuList'=>$menuList]); + } + public function Save(){ + $groupInfo =request('groupInfo'); + $type =request('type'); + $s=app()->make(GroupService::class); + return $s->Save(['info'=>$groupInfo,'type'=>$type]); + + } + //管理员查询分组使用的菜单 + public function GetGroupMenuList(){ + $groupId =request('groupId'); + if($groupId){ + $group =$groupId; + $userid='search'; + $s=app()->make(MenuService::class); + // dd($s->GetBaseMenuList(['userid'=>$userid,'group'=>$group])); + return $s->GetBaseMenuList(['userid'=>$userid,'group'=>$group]); + } + + } +} diff --git a/Laravel/app/Http/Controllers/API/Admin/LoginController.php b/Laravel/app/Http/Controllers/API/Admin/LoginController.php new file mode 100644 index 0000000..ca7caec --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/LoginController.php @@ -0,0 +1,21 @@ +make(LoginService::class); + //$login= new LoginService(); + return Yz::echo($login->Login(['username'=>$username,'password'=>$password])); + } + +} diff --git a/Laravel/app/Http/Controllers/API/Admin/MenuController.php b/Laravel/app/Http/Controllers/API/Admin/MenuController.php new file mode 100644 index 0000000..a5419ca --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/MenuController.php @@ -0,0 +1,45 @@ +make(MenuService::class); + return $s->GetList(['type'=>$type,'page'=>$page,'pagesize'=>$pagesize]); + } + //获取可用的一级菜单 + public function GetFatherMenuList(){ + $s=app()->make(MenuService::class); + return $s->GetFatherMenuList(); + } + public function AddMenu(){ + $menuInfo =request('menuInfo'); + if($menuInfo['id']){ + if(!($menuInfo['name'] and $menuInfo['pid'] and $menuInfo['url'])){ + return Yz::echoError('请填写全部信息'); + } + }else{ + if(!($menuInfo['name'])){ + return Yz::echoError('请填写全部信息'); + } + } + $s=app()->make(MenuService::class); + return $s->AddMenu(['info'=>$menuInfo]); + } + public function EditMenu(){ + $menuInfo =request('menuInfo'); + $s=app()->make(MenuService::class); + return $s->EditMenu(['info'=>$menuInfo]); + } + +} diff --git a/Laravel/app/Http/Controllers/API/Admin/UserController.php b/Laravel/app/Http/Controllers/API/Admin/UserController.php new file mode 100644 index 0000000..d1bd529 --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/UserController.php @@ -0,0 +1,49 @@ +make(UserService::class); + return $s->GetInfoList(['page'=>$page,'pagesize'=>$pagesize]); + } + public function Save(){ + $userInfo =request('userInfo'); + $s=app()->make(UserService::class); + return $s->Save(['info'=>$userInfo]); + } + public function GetDetail(){ + $id =request('id'); + $s=app()->make(UserService::class); + return $s->GetDetail(['id'=>$id]); + } + public function ChangePwd(Request $request){ //admin修改密码 + $userid = $request->get('userid');//中间件产生的参数 + $oldpwd =request('oldpwd'); + $newpwd =request('newpwd'); + if($oldpwd and $newpwd){ + $s=app()->make(UserService::class); + return $s->ChangePwd(['id'=>$userid,'oldpwd'=>$oldpwd,'newpwd'=>$newpwd]); + }else{ + return \Yz::echoError("参数不完整"); + } + + } + + //修改自身信息 + public function ChangInfo(Request $request){ + $userid = $request->get('userid');//中间件产生的参数 + $headimg =request('headimg'); + $name =request('name'); + if(!isset($name)) return \Yz::echoError1('名称不可为空'); + $ser=new UserService(); + return $ser->ChangInfo(['userid'=>$userid,'name'=>$name,'headimg'=>$headimg]); + } +} diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/HospitalController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/HospitalController.php new file mode 100644 index 0000000..f3a7b69 --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/HospitalController.php @@ -0,0 +1,63 @@ +$Info['name'], + 'code'=>$Info['code'], + 'address'=>$Info['address'], + 'longitude'=>$Info['longitude'], + 'latitude'=>$Info['latitude'], + 'logo'=>$Info['logo'], + 'tel'=>$Info['tel'], +// 'frequency'=>$Info['frequency'], +// 'api_list'=>isset($Info['api_list'])? json_encode($Info['api_list']):null, + 'status'=>$Info['status'], + ]; + if(isset($Info['id']) and $Info['id']!=0){ + $ex=DB::table('hospital')->where(['id'=>$Info['id']])->update($data); + }else{ + $ex=DB::table('hospital')->insert($data); + } + if($ex){ + return \Yz::Return(true,"保存成功",[]); + }else{ + return \Yz::echoError1("保存失败"); + } + } + public function GetList() + { + $page = request('page'); + $pageSize = request('pageSize'); + $searchInfo = request('searchInfo'); + $list =DB::table('hospital')->where(['is_del'=>0]); + $count=$list->count(); + $list=$list + ->skip(($page-1)*$pageSize) // 跳过前9999条记录 + ->take($pageSize)->get(); + return \Yz::Return(true,"查询成功",['list'=>$list,'count'=>$count]); + } + //获取医院基本信息详情 + public function GetBaseInfoDetail() + { + $id = request('id'); + $info=DB::table('hospital') + ->select('id','name','code','address','longitude','latitude','logo','dev','tel','status') + ->where(['id'=>$id,'is_del'=>0])->first(); + if(!!$info){ + return \Yz::Return(true,'查询成功',$info); + }else{ + return \Yz::echoError1("查询失败"); + } + } + //获取 +} diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/WebSiteController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/WebSiteController.php new file mode 100644 index 0000000..1d3a012 --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/WebSiteController.php @@ -0,0 +1,59 @@ +$SiteInfo['site_name'], + 'hospital'=>isset($SiteInfo['hospital'])? json_encode($SiteInfo['hospital']):null, + 'appid'=>isset($SiteInfo['appid'])? json_encode($SiteInfo['appid']):null, + 'domain'=>isset($SiteInfo['domain'])? json_encode($SiteInfo['domain']):null, + 'status'=>$SiteInfo['status'], + ]; + if(isset($SiteInfo['id']) and $SiteInfo['id']!=0){ + $ex=DB::table('site_organization')->where(['id'=>$SiteInfo['id']])->update($data); + }else{ + $ex=DB::table('site_organization')->insert($data); + } + if($ex){ + return \Yz::Return(true,"保存成功",[]); + }else{ + return \Yz::echoError1("保存失败"); + } + + } + public function GetList() + { + $page = request('page'); + $pageSize = request('pageSize'); + $searchInfo = request('searchInfo'); + $list =DB::table('site_organization')->where(['is_del'=>0]); + $count=$list->count(); + $list=$list + ->skip(($page-1)*$pageSize) // 跳过前9999条记录 + ->take($pageSize)->get(); + return \Yz::Return(true,"查询成功",['list'=>$list,'count'=>$count]); + } + public function GetDetail() + { + $id = request('id'); + $info=DB::table('site_organization')->where(['id'=>$id,'is_del'=>0])->first(); + if(!!$info){ + $info->hospital= $info->hospital?implode(',',json_decode( $info->hospital)):''; + $info->appid=$info->appid?implode(',',json_decode( $info->appid)):''; + $info->domain= $info->domain?implode(',',json_decode( $info->domain)):''; + return \Yz::Return(true,'查询成功',$info); + }else{ + return \Yz::echoError1("查询失败"); + } + } +} diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/healthCalendarController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/healthCalendarController.php new file mode 100644 index 0000000..072f58b --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/healthCalendarController.php @@ -0,0 +1,47 @@ +get('userid');//中间件产生的参数 + $group = $request->get('role');//中间件产生的参数 + $page =request('page'); + $pageSize =request('pageSize'); + $searchInfo=request('searchInfo'); + $s=app()->make(HealthCalendarService::class); + return $s->getList(['group'=>$group,'userid'=>$userid,'page'=>$page,'pageSize'=>$pageSize,'searchInfo'=>$searchInfo]); + } + + //创建日历 + public function CreateCalendar(Request $request){ + $userid = $request->get('userid');//中间件产生的参数 + $group = $request->get('role');//中间件产生的参数 + $info= request('info'); + if($group<>1 and $group<>7) return \Yz::echoError('无此接口访问权限'); + + $s=app()->make(HealthCalendarService::class); + return $s->CreateCalendar(['info'=>$info,'group'=>$group,'userid'=>$userid]); + } + public function Del(Request $request){ + $userid = $request->get('userid');//中间件产生的参数 + $group = $request->get('role');//中间件产生的参数 + $list= request('list'); + $s=app()->make(HealthCalendarService::class); + return $s->Del(['list'=>$list,'group'=>$group,'userid'=>$userid]); + } + + //修改日历信息 + public function ChangeInfo(Request $request){ + $userid = $request->get('userid');//中间件产生的参数 + $group = $request->get('role');//中间件产生的参数 + $changeInfo= request('changeInfo'); + $s=app()->make(HealthCalendarService::class); + return $s->ChangeInfo(['changeInfo'=>$changeInfo,'group'=>$group,'userid'=>$userid]); + } +} diff --git a/Laravel/app/Http/Controllers/API/LogController.php b/Laravel/app/Http/Controllers/API/LogController.php new file mode 100644 index 0000000..01a99dd --- /dev/null +++ b/Laravel/app/Http/Controllers/API/LogController.php @@ -0,0 +1,22 @@ +GetList(['page'=>$page,'pagesize'=>$pagesize,'searchInfo'=>$searchInfo]); + } + public function GetLogTableName(){ + $s= new LogService(); + return $s->GetLogTableName(); + } +} diff --git a/Laravel/app/Http/Controllers/API/TokenController.php b/Laravel/app/Http/Controllers/API/TokenController.php new file mode 100644 index 0000000..ee709a1 --- /dev/null +++ b/Laravel/app/Http/Controllers/API/TokenController.php @@ -0,0 +1,23 @@ +header('Authorization');; + $service=app()->make(TokenService::class); + $s=$service->RefreshToken(['token'=>$token]); + +// // var_dump($m); + if(!$s['status']){ + $s['status']=false; + } + return $s; + } +} diff --git a/Laravel/app/Http/Controllers/API/UpLoadController.php b/Laravel/app/Http/Controllers/API/UpLoadController.php new file mode 100644 index 0000000..8c9bb1f --- /dev/null +++ b/Laravel/app/Http/Controllers/API/UpLoadController.php @@ -0,0 +1,30 @@ +isValid()) { +// $s=app()->make(HealthCheckupService::class); +// $save=$s->SaveFile(['file'=>$file]); + $date = date("Ymd"); + $save = $file->store('public/'.$date); + return \Yz::Return(true,'上传成功',Storage::url($save)); + + + + + }else{ + return \Yz::echoError1('获取文件失败'); + } + } +} diff --git a/Laravel/app/Http/Controllers/Controller.php b/Laravel/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..a0a2a8a --- /dev/null +++ b/Laravel/app/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ +count(); + + } + +} diff --git a/Laravel/app/Http/Kernel.php b/Laravel/app/Http/Kernel.php new file mode 100644 index 0000000..999ddf9 --- /dev/null +++ b/Laravel/app/Http/Kernel.php @@ -0,0 +1,70 @@ + + */ + protected $middleware = [ + // \App\Http\Middleware\TrustHosts::class, + \App\Http\Middleware\TrustProxies::class, + \Fruitcake\Cors\HandleCors::class, + \App\Http\Middleware\PreventRequestsDuringMaintenance::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + ]; + + /** + * The application's route middleware groups. + * + * @var array> + */ + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + 'throttle:api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array + */ + protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + 'checktoken' => \App\Http\Middleware\CheckToken::class, + 'log' => \App\Http\Middleware\Log::class, + 'check.sign' => \App\Http\Middleware\CheckSign::class, + ]; +} diff --git a/Laravel/app/Http/Middleware/Authenticate.php b/Laravel/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..704089a --- /dev/null +++ b/Laravel/app/Http/Middleware/Authenticate.php @@ -0,0 +1,21 @@ +expectsJson()) { + return route('login'); + } + } +} diff --git a/Laravel/app/Http/Middleware/CheckSign.php b/Laravel/app/Http/Middleware/CheckSign.php new file mode 100644 index 0000000..85d6eca --- /dev/null +++ b/Laravel/app/Http/Middleware/CheckSign.php @@ -0,0 +1,35 @@ +input('app_id'); + $time=$request->input('time'); //时间戳 + $nonce=$request->input('nonce'); + $sign=$request->input('sign'); + $timeDiff = abs(time() - $time); // 获取时间差的绝对值 + + if ($timeDiff >= 600) return \Yz::echoError1('时间异常'); + $cha_s=DB::table('outside_user')->where(['app_id'=>$app_id])->get(); + if(!count($cha_s)==1) return \Yz::echoError1('第三方用户不存在'); + $s_sign=strtoupper(md5($app_id.$time.$nonce.$cha_s[0]->app_secrect)); + if($sign<>$s_sign) return \Yz::echoError1('签名验证失败'); + + return $next($request); + } +} diff --git a/Laravel/app/Http/Middleware/CheckSignXMl.php b/Laravel/app/Http/Middleware/CheckSignXMl.php new file mode 100644 index 0000000..4375eba --- /dev/null +++ b/Laravel/app/Http/Middleware/CheckSignXMl.php @@ -0,0 +1,21 @@ +attributes->add($payload);//添加参数 + + return $next($request); + }else { + // return response()->json([$payload]); + return response($payload); + } + } +} diff --git a/Laravel/app/Http/Middleware/EncryptCookies.php b/Laravel/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..867695b --- /dev/null +++ b/Laravel/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/Laravel/app/Http/Middleware/Log.php b/Laravel/app/Http/Middleware/Log.php new file mode 100644 index 0000000..6e515d0 --- /dev/null +++ b/Laravel/app/Http/Middleware/Log.php @@ -0,0 +1,78 @@ +getContent(); + $data = json_decode($content, true); // 解码响应内容为关联数组 + + // 在关联数组中添加 code 字段 + // $data['code'] = 200; + $data['code'] = $response->getStatusCode(); + $modifiedContent = json_encode($data); // 编码修改后的关联数组为 JSON 字符串 + $response->setContent($modifiedContent); + if(env('REQUEST_LOG') and $response->getStatusCode()==200){ //如果返回状态为200进行log + + $ip=self::getTrustedProxiesIp(); //真实ip + $request_header=$request->header(); //请求头 + // dd($response); + $response_data = $response->getData(); //返回data,json格式 + $post_data=$request->post(); //post请求数据 + $get_data=$request->query(); //get请求 + $request_url=$request->getPathInfo();//访问的接口地址 + $log=app()->make(LogService::class); + $log->RequestLog([ + 'ip'=>$ip, + 'response_data'=>$response_data, + 'request_header'=>$request_header, + 'post_data'=>$post_data, + 'get_data'=>$get_data, + 'request_url'=>$request_url, + ],$insert_id); + } + + + return $response; + } + public static function getTrustedProxiesIp(){ //获取用户真实ip + \request()->setTrustedProxies(\request()->getClientIps(),Request::HEADER_X_FORWARDED_FOR); + return \request()->getClientIp(); + } + + public static function requestLog($request,$insert_id){ //记录请求时日志,不含返回信息 + if(env('REQUEST_LOG') ){ //如果返回状态为200进行log + $ip=self::getTrustedProxiesIp(); //真实ip + $request_header=$request->header(); //请求头 + $post_data=$request->post(); //post请求数据 + $get_data=$request->query(); //get请求 + $request_url=$request->getPathInfo();//访问的接口地址 + $log=app()->make(LogService::class); + return $log->RequestLog([ + 'ip'=>$ip, + 'request_header'=>$request_header, + 'post_data'=>$post_data, + 'get_data'=>$get_data, + 'request_url'=>$request_url, + ],$insert_id); + } + + } +} diff --git a/Laravel/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Laravel/app/Http/Middleware/PreventRequestsDuringMaintenance.php new file mode 100644 index 0000000..74cbd9a --- /dev/null +++ b/Laravel/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/Laravel/app/Http/Middleware/RedirectIfAuthenticated.php b/Laravel/app/Http/Middleware/RedirectIfAuthenticated.php new file mode 100644 index 0000000..a2813a0 --- /dev/null +++ b/Laravel/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,32 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/Laravel/app/Http/Middleware/TrimStrings.php b/Laravel/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..88cadca --- /dev/null +++ b/Laravel/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ + + */ + protected $except = [ + 'current_password', + 'password', + 'password_confirmation', + ]; +} diff --git a/Laravel/app/Http/Middleware/TrustHosts.php b/Laravel/app/Http/Middleware/TrustHosts.php new file mode 100644 index 0000000..7186414 --- /dev/null +++ b/Laravel/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ + + */ + public function hosts() + { + return [ + $this->allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/Laravel/app/Http/Middleware/TrustProxies.php b/Laravel/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..3391630 --- /dev/null +++ b/Laravel/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,28 @@ +|string|null + */ + protected $proxies; + + /** + * The headers that should be used to detect proxies. + * + * @var int + */ + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_AWS_ELB; +} diff --git a/Laravel/app/Http/Middleware/VerifyCsrfToken.php b/Laravel/app/Http/Middleware/VerifyCsrfToken.php new file mode 100644 index 0000000..9e86521 --- /dev/null +++ b/Laravel/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/Laravel/app/Lib/HSM.php b/Laravel/app/Lib/HSM.php new file mode 100644 index 0000000..713de38 --- /dev/null +++ b/Laravel/app/Lib/HSM.php @@ -0,0 +1,66 @@ +self::$keyIndex, + "encAlg"=>self::$encAlg, + "iv"=>self::$iv, + "plainData"=>$str + ]; + $data=json_encode($data); + $encryptStr=self::post($url,$data); + $r_data=json_decode($encryptStr, true); + // dd($r_data); + if($r_data['status']==0){ + return ['encrypt_str'=>$r_data['body']['cipherData'],'status'=>true]; + }else{ + return ['status'=>false]; + } + } + //解密 + public static function HsmDecrypt($str){ + $url= self::$baseurl."/api/hsm/sym/symDecryptInternalForKEK"; + $data=[ + "keyIndex"=>self::$keyIndex, + "encAlg"=>self::$encAlg, + "iv"=>self::$iv, + "cipherData"=>$str + ]; + $data=json_encode($data); + $encryptStr=self::post($url,$data); + $r_data=json_decode($encryptStr, true); + if($r_data['status']==0){ + return ['decrypt_str'=>hex2bin($r_data['body']['plain']),'status'=>true]; + }else{ + return ['status'=>false]; + } + } + public function post($url, $data_string) + { + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_POST, true); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($curl, CURLOPT_HTTPHEADER, [ + 'Content-Type: application/json; charset=utf-8', + 'Content-Length: ' . strlen($data_string) + ]); + curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); + $r = curl_exec($curl); + curl_close($curl); + return $r; + } +} diff --git a/Laravel/app/Lib/JWT.php b/Laravel/app/Lib/JWT.php new file mode 100644 index 0000000..ddcdc5d --- /dev/null +++ b/Laravel/app/Lib/JWT.php @@ -0,0 +1,132 @@ +date('Y-m-d H:i:s',time())) //判断Token是否过期 + { + $result['status']='OK'; + $result['tokentype']=$payload['tokentype']; + $result['role']=$payload['role']; + $result['userid']=$payload['userid']; + $result['meg']= 'Token验证通过'; + }else{ + $result['status']='Token_TimeOut'; + $result['meg']= 'Token已过期,请返回登录界面重新授权'; + $result['code']=10002; + } + + } + else{ + $result['status']='Toke_Error'; + $result['meg']= '签名异常,拒绝操作!'; + $result['code']=10001; + } + return $result; + } + + +//URL安全的字符串编码: + static function urlsafe_b64encode($string) { + $data = base64_encode($string); + $data = str_replace(array('+','/','='),array('-','_',''),$data); + return $data; + } + +//URL安全的字符串解码: + static function urlsafe_b64decode($string) { + $data = str_replace(array('-','_'),array('+','/'),$string); + $mod4 = strlen($data) % 4; + if ($mod4) { + $data .= substr('====', $mod4); + } + return base64_decode($data); + } + +} diff --git a/Laravel/app/Lib/UKEY.php b/Laravel/app/Lib/UKEY.php new file mode 100644 index 0000000..b1170ef --- /dev/null +++ b/Laravel/app/Lib/UKEY.php @@ -0,0 +1,97 @@ +self::$appName, + 'length'=>16 + ]; + $random=''; + $res=self::post(self::$url.'/api/common/genRandom',json_encode($c));//获取随机数 + if($res['status']==0){ + $random=$res['body']['random']; + $info['random']=$random; + $info['signData']=self::signData($random); + $info['serverCert']=self::GetServerCert(); + } + + return $info; + } + //数据签名 + public static function signData($oriData){ + $c=[ + 'appName'=>self::$appName, + 'oriData'=>$oriData + ]; + $sign=''; + $res=self::post(self::$url.'/api/pkcs1/signData',json_encode($c)); + if($res['status']==0){ + $sign=$res['body']['p1Sign']; + } + return $sign; + } + //获取服务器证书 + public static function GetServerCert(){ + $c=[ + 'appName'=>self::$appName, + ]; + $cert=''; + $res=self::post(self::$url.'/api/cert/getServerCertificate',json_encode($c)); + if($res['status']==0){ + $cert=$res['body']['base64Cert']; + } + return $cert; + } + //服务端验证客户端证书有效性,证书有效返回1,证书无效情况下:-1为不是所信任的根,-2为超过 + //有效期,-3为作废证书,-4已加入黑名单,-5证书未生效, 0 未知错误 + public static function CheckCert($cert){ + $c=[ + 'appName'=>self::$appName, + 'cert'=>$cert + ]; + $validRes=''; + $res=self::post(self::$url.'/api/cert/validateCert',json_encode($c)); + if($res['status']==0){ + $validRes=$res['body']['validRes']; + } + return $validRes; + } + //验证数据签名 返回数据签名验证结果,true 验证通过,false 验证失败 + public static function CheckSign($cert,$oriData,$sign){ + $c=[ + 'appName'=>self::$appName, + 'cert'=>$cert, + 'oriData'=>$oriData, + 'sign'=>$sign + ]; + $validRes=false; + $res=self::post(self::$url.'/api/pkcs1/verifySignData',json_encode($c)); + if($res['status']==0){ + $validRes=$res['body']['verifyRes']; + } + return $validRes; + } + + public function post($url, $data_string) + { + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_POST, true); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($curl, CURLOPT_HTTPHEADER, [ + 'Content-Type: application/json; charset=utf-8', + 'Content-Length: ' . strlen($data_string) + ]); + curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); + $r = curl_exec($curl); + curl_close($curl); + + return json_decode($r,true); + } +} diff --git a/Laravel/app/Lib/XTSign.php b/Laravel/app/Lib/XTSign.php new file mode 100644 index 0000000..0b207e4 --- /dev/null +++ b/Laravel/app/Lib/XTSign.php @@ -0,0 +1,107 @@ +self::BaseUrl."/coss/service/v1/addUser", //注册 + 'getAuthCode'=>self::BaseUrl."/coss/service/v1/getAuthCode", //产生激活码 + 'addSignJob'=>self::BaseUrl."/coss/service/v1/addSignJob", //添加签名任务 + 'verifySignData'=>self::BaseUrl."/coss/service/v1/verifySignData", //验签接口 3.4.9.3 + 'getCertInfo'=>self::BaseUrl."/coss/service/v1/getCertInfo", //解析证书信息 + ]; + + //系统签名接口调用 + public static function XTRequest($url,$data){ + if(!isset(self::ApiList[$url])) return \Yz::echoError1("接口不存在"); + $url= self::ApiList[$url]; + $baseData=[ + "version"=>"1.0", + "appId"=>self::Appid, + "signAlgo"=>"HMAC", + ]; + + $data=array_merge($baseData, $data); + + $sign=self::Sign($data); + $data= array_merge($data,['signature'=>$sign]); + // dd($data); + $data=json_encode($data); + $encryptStr=self::post($url,$data); + $r_data=json_decode($encryptStr, true); + if($r_data['status']==200){ + return \Yz::Return(true,$r_data['message'],$r_data['data']); + }else{ + return \Yz::echoError1($r_data['message']); + } + + + } + //产生激活码 +// public static function getAuthCode(){ +// $url= self::$baseUrl."/coss/service/v1/getAuthCode"; +// $data=[ +// "version"=>"1.0", +// "appId"=>self::$appid, +// "signAlgo"=>"HMAC", +// "userId"=>"915b164cd8e883f7fb289e3bcf34ac68d971c7e1058f18bcb24ad33ec7a201e1", +// ]; +// $sign=self::Sign($data); +// $data= array_merge($data,['signature'=>$sign]); +// // dd($data); +// $data=json_encode($data); +// $encryptStr=self::post($url,$data); +// $r_data=json_decode($encryptStr, true); +// +// return $r_data; +// } + public static function Sign($parameters){ + // 定义 M 集合内的参数值 +// $parameters = array( +// "key1" => "value1", +// "key2" => "value2", +// // ... +// ); + +// 按照参数名的 ASCII 码从小到大排序 + ksort($parameters); + +// 拼接参数为 URL 键值对字符串 + $stringA = ""; + foreach ($parameters as $key => $value) { + if ($value === "") { + // 参数值为空,进行相应的处理 + // 比如跳过该参数或者抛出异常 + continue; + } + $stringA .= $key . "=" . $value . "&"; + } + $stringA = rtrim($stringA, "&"); + +// HMAC 运算 + $secretKey =self::Key; + $signature = base64_encode(hash_hmac("sha256", $stringA, $secretKey, true)); + return $signature; + + } + + public function post($url, $data_string) + { + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_POST, true); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($curl, CURLOPT_HTTPHEADER, [ + 'Content-Type: application/json; charset=utf-8', + 'Content-Length: ' . strlen($data_string) + ]); + curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); + $r = curl_exec($curl); + curl_close($curl); + return $r; + } +} diff --git a/Laravel/app/Lib/Yz.php b/Laravel/app/Lib/Yz.php new file mode 100644 index 0000000..2bb8947 --- /dev/null +++ b/Laravel/app/Lib/Yz.php @@ -0,0 +1,30 @@ +json($result)->setEncodingOptions(JSON_UNESCAPED_UNICODE); + } + public static function echoError($msg){ + $result=array(); + $result['status']='no'; + $result['msg']=$msg; + return response()->json($result)->setEncodingOptions(JSON_UNESCAPED_UNICODE); + } + public static function echoError1($msg){ + $result=array(); + $result['status']=false; + $result['msg']=$msg; + return response()->json($result)->setEncodingOptions(JSON_UNESCAPED_UNICODE); + } + + public static function Return($status,$msg,$data=[]){ + $result=array(); + $result['status']=$status; + $result['msg']=$msg; + $result['data']=$data; + return $result; + } +} + diff --git a/Laravel/app/Models/User.php b/Laravel/app/Models/User.php new file mode 100644 index 0000000..8996368 --- /dev/null +++ b/Laravel/app/Models/User.php @@ -0,0 +1,44 @@ + + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var array + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'email_verified_at' => 'datetime', + ]; +} diff --git a/Laravel/app/Providers/AppServiceProvider.php b/Laravel/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..ee8ca5b --- /dev/null +++ b/Laravel/app/Providers/AppServiceProvider.php @@ -0,0 +1,28 @@ + + */ + protected $policies = [ + // 'App\Models\Model' => 'App\Policies\ModelPolicy', + ]; + + /** + * Register any authentication / authorization services. + * + * @return void + */ + public function boot() + { + $this->registerPolicies(); + + // + } +} diff --git a/Laravel/app/Providers/BroadcastServiceProvider.php b/Laravel/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..395c518 --- /dev/null +++ b/Laravel/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,21 @@ +> + */ + protected $listen = [ + Registered::class => [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + * + * @return void + */ + public function boot() + { + // + } +} diff --git a/Laravel/app/Providers/RouteServiceProvider.php b/Laravel/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..3bd3c81 --- /dev/null +++ b/Laravel/app/Providers/RouteServiceProvider.php @@ -0,0 +1,63 @@ +configureRateLimiting(); + + $this->routes(function () { + Route::prefix('api') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); + }); + } + + /** + * Configure the rate limiters for the application. + * + * @return void + */ + protected function configureRateLimiting() + { + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip()); + }); + } +} diff --git a/Laravel/app/Services/Admin/GroupService.php b/Laravel/app/Services/Admin/GroupService.php new file mode 100644 index 0000000..440e5d1 --- /dev/null +++ b/Laravel/app/Services/Admin/GroupService.php @@ -0,0 +1,72 @@ +where('group_id', '=', $arr['groupid'])->delete(); + foreach ($arr['menuList'] as $v){ + // dd($v); + $i=DB::table('group_menu')->insert([ + 'group_id' => $arr['groupid'], + 'menu_id' => $v['id'], + ]); + } + DB::commit(); // 手动提交事务 + $result['status']='ok'; + } catch (\Exception $e) { + DB::rollback(); // 发生异常时手动回滚事务 + $result['status']='no'; + $result['msg']='操作失败'; + } + return $result; + } + public function Save($arr){ + $result=array(); + if($arr['type']=='save'){ + $query=DB::table('group')->insert([ + 'group_name' => $arr['info']['name'], + 'status' => 1, + ]); + }else{ + $query=DB::table('group') + ->where('id', $arr['info']['id']) + ->update([ + 'pid' => $arr['info']['pid'], + 'name' => $arr['info']['name'], + 'url' => $arr['info']['url'], + 'icon' => $arr['info']['icon'] + ]); + } + if($query){ + $result['status']='ok'; + }else{ + $result['status']='no'; + $result['msg']='操作失败'; + } + return $result; + + } +} diff --git a/Laravel/app/Services/Admin/MenuService.php b/Laravel/app/Services/Admin/MenuService.php new file mode 100644 index 0000000..8810803 --- /dev/null +++ b/Laravel/app/Services/Admin/MenuService.php @@ -0,0 +1,127 @@ +group==$arr['group']){ + $menulist=DB::select("select b.id,b.pid,b.order,b.icon, b.name,b.url from group_menu as a left join menu as b on a.menu_id=b.id where a.group_id =? and b.status=1 and b.is_menu=1",[$arr['group']]); + + $result['list']=$menulist; + $result['status']='ok'; + + }else{ + $result['status']='no'; + $result['msg']='权限不匹配'; + } + } + + return $result; + } + + public function GetList($arr){ + $result=array(); + $sql=''; + if( $arr['type']=='enable'){ + $sql=" and status=1"; + } + $query_p = DB::select("select * from menu where pid is null".$sql); + $result['list'] = []; + $i=0; + foreach ($query_p as $item) { + $query = DB::select("select * from menu where pid = ? and status=1 ".$sql, [$item->id]); + $child_items = []; + $result['list'][$i] = [ + 'id' => $item->id, + 'pid' => $item->pid, + 'name' => $item->name, + 'url' => $item->url, + 'icon' => $item->icon, + 'created_at' => $item->created_at, + 'updated_at' => $item->updated_at, + 'is_menu'=>$item->is_menu, + 'children' => [] // 子级节点先为空数组,稍后再填充 + ]; + $j=0; + foreach ($query as $child) { + $child_items[$j] = [ + 'id' => $child->id, + 'pid' => $child->pid, + 'name' => $child->name, + 'url' => $child->url, + 'icon' => $child->icon, + 'created_at' => $child->created_at, + 'updated_at' => $child->updated_at, + 'is_menu'=>$child->is_menu + // 'children' => [] // 子级节点先为空数组,稍后再填充 + ]; + $result['list'][$i]['children'][$j]=$child_items[$j]; + $j++; + } + + $i++; + } + + return $result; + } + public function GetFatherMenuList(){ + $result=array(); + $list=DB::table('menu')->where(['status'=>1,'pid'=>null])->get(); + if(count($list)){ + $result['status']='ok'; + $result['msg']='获取成功'; + $result['list']=$list; + }else{ + $result['status']='no'; + $result['msg']='未找到有效一级菜单'; + } + return $result; + } + public function AddMenu($arr){ + $result=array(); + //dd($arr); + $i=DB::table('menu')->insert([ + 'pid' => $arr['info']['pid'], + 'name' => $arr['info']['name'], + 'url' => $arr['info']['url'], + 'status'=>1, + 'is_menu'=>$arr['info']['is_menu'] + ]); + if($i){ + $result['status']='ok'; + $result['msg']='插入成功'; + }else{ + $result['status']='no'; + $result['msg']='操作失败'; + } + return $result; + } + public function EditMenu($arr){ + $result=array(); + $U=DB::table('menu') + ->where('id', $arr['info']['id']) + ->update([ + 'pid' => $arr['info']['pid'], + 'name' => $arr['info']['name'], + 'url' => $arr['info']['url'], + 'icon' => $arr['info']['icon'], + 'is_menu'=>$arr['info']['is_menu'] + + ]); + if($U){ + $result['status']='ok'; + $result['msg']='更新成功'; + }else{ + $result['status']='no'; + $result['msg']='操作失败'; + } + return $result; + } +} diff --git a/Laravel/app/Services/Admin/UserService.php b/Laravel/app/Services/Admin/UserService.php new file mode 100644 index 0000000..520212c --- /dev/null +++ b/Laravel/app/Services/Admin/UserService.php @@ -0,0 +1,128 @@ +c; + return $result; + } + public function Save($arr){ + $result=[]; + if($arr['info']['id']){ + $query=DB::table('users')->where(['id'=>$arr['info']['id']])->update([ + 'group' => $arr['info']['groupId'], + 'cn_name' => $arr['info']['cname'], + 'username' => $arr['info']['uname'], + 'status'=>$arr['info']['status'], + ]); + if($query){ + $result['status']='ok'; + $result['msg']='操作成功'; + }else{ + $result['status']='no'; + $result['msg']='操作失败,没有记录被更新'; + } + }else{ + $hash = password_hash('111111', PASSWORD_DEFAULT); + $c=DB::table('users')->where(['username'=>$arr['info']['uname']])->get(); + if(count($c)){ + $result['status']='no'; + $result['msg']='用户名已存在'; + return $result; + } + DB::beginTransaction(); + try { + $id=DB::table('users')->insertGetId([ + 'group' => $arr['info']['groupId'], + 'cn_name' => $arr['info']['cname'], + 'username' => $arr['info']['uname'], + 'pwd' => $hash, + 'status'=>1 + ]); + + DB::commit(); // 手动提交事务 + if($id){ + $result['status']='ok'; + $result['msg']='操作成功'; + } + } catch (\Exception $e) { + DB::rollback(); // 发生异常时手动回滚事务 + $result['status']='no'; + $result['msg']='操作失败'; + } + + } + + return $result; + } + public function GetDetail($arr){ + $c=DB::table('users')->select(['id','cn_name','username','status','group','img'])->where(['id'=>$arr['id']])->whereIn('status',[0,1])->get(); + if(count($c)){ + $result['info']=$c; + $result['status']='ok'; + $result['msg']='成功'; + }else{ + $result['status']='no'; + $result['msg']='获取详情失败'; + } + return $result; + } + public function ChangePwd($arr){ + $result=array(); + $s=app()->make(LoginService::class); + $check=$s->CheckPwd(['userid'=>$arr['id'],'password'=>$arr['oldpwd']]); + if($check['status']){ + $hash = password_hash($arr['newpwd'], PASSWORD_DEFAULT); + $u=DB::table('users')->where(['id'=>$arr['id'],'status'=>1])->update(['pwd'=>$hash]); + if($u){ + $result['status']='ok'; + }else{ + $result['status']='no'; + $result['msg']='修改密码失败'; + } + }else{ + $result=$check; + } + return $result; + } + + //检查用户是否有某个目录的权限 + //参数['userid'=>$userid,'group'=>$group,'url'=>$url] + public function CheckMenuAuth($arr){ + $list=['index','dashboard']; + $q=DB::select("select * from users where id=? and `group` =?",[$arr['userid'],$arr['group']]); + if(count($q)==1){ + if(in_array($arr['url'],$list)){ + return \Yz::Return(true,'',[]); + } + $check=DB::select("select * from (select menu_id from group_menu where group_id=? ) as a inner JOIN (select id from menu where url = ? ) as b on a.menu_id=b.id +",[$arr['group'],$arr['url']]); + if(count($check)>0){ + return \Yz::Return(true,'',[]); + }else{ + return \Yz::echoError1('暂无权限'); + } + }else{ + return \Yz::echoError1('权限不匹配'); + } + } + + //修改自身信息 + public function ChangInfo($arr){ + $u=DB::table('users')->where(['id'=>$arr['userid']])->update([ + 'cn_name'=>$arr['name'], + 'img'=>$arr['headimg'], + ]); + if($u>0){ + return \Yz::Return(true,'操作成功',[]); + }else{ + return \Yz::echoError1('更新失败'); + } + } +} diff --git a/Laravel/app/Services/Admin/YeWu/HealthCalendarService.php b/Laravel/app/Services/Admin/YeWu/HealthCalendarService.php new file mode 100644 index 0000000..92e7731 --- /dev/null +++ b/Laravel/app/Services/Admin/YeWu/HealthCalendarService.php @@ -0,0 +1,137 @@ +$info,'group'=>$group,'userid'=>$userid] + + public function CreateCalendar($arr){ + + //如果是体检机构为自己创建日历判断权限,是否是为自己创建,否则拒绝 + if($arr['group']==7){ + $cha=DB::table('medical_institution')->where(['link_user_id'=>$arr['userid']])->get(); + if($cha[0]->id <> $arr['info']['orgId']){ + return \Yz::echoError1('无权限为此机构创建体检日历'); + } + } + $startDate = Carbon::parse($arr['info']['dateRange'][0]); + $endDate = Carbon::parse($arr['info']['dateRange'][1]); + $currentDate = $startDate; + $time=$arr['info']['timeRange'][0].'--'.$arr['info']['timeRange'][1]; + $j=0; + while ($currentDate->lte($endDate)) { + $day= $currentDate->format('Y-m-d') . "\n"; + $weekday=date('N',strtotime($day)); + if (in_array($weekday,$arr['info']['xingqi'] )) { //判断循环到的日期那天的星期是否在勾选的星期内,是则进行添加 + $i=DB::table('institutional_calendar')->insert([ + 'institution_id'=>$arr['info']['orgId'], + 'date'=>$day, + 'week'=>$weekday, + 'time'=>$time, + 'end_time'=>$day.' '.$arr['info']['endTime'], + 'count'=>$arr['info']['count'], + 'status'=>1 + ]); + $j++; + } + + $currentDate->addDay(); // 增加一天 + } + + return \Yz::Return(true,'成功创建'.$j.'天体检日历',[]); + } + //获取体检机构日历 + //参数['group'=>$group,'userid'=>$userid,'page'=>$page,'pageSize'=>$pageSize,'searchInfo'=>$searchInfo] + public function getList($arr){ + $sql=' where a.status in(0,1)'; + $canshu=array(); + + + + if($arr['searchInfo']['status']==99){ + $sql=' where a.status in(0,1)'; + } + if($arr['searchInfo']['status']==0){ + $sql=' where a.status in(0)'; + } + if($arr['searchInfo']['status']==1){ + $sql=' where a.status in(1)'; + } + + + if($arr['searchInfo']['dateRange']){ + + $sql=$sql . ' and a.date>=? and a.date<=? '; + array_push($canshu,$arr['searchInfo']['dateRange'][0],$arr['searchInfo']['dateRange'][1]); + } + if($arr['searchInfo']['xingqi']){ + $placeholders = rtrim(str_repeat('?,', count($arr['searchInfo']['xingqi'])), ','); + $sql=$sql . ' and a.week in('.$placeholders.') '; + foreach ($arr['searchInfo']['xingqi'] as $item){ + array_push($canshu,$item); + } + + } + + if($arr['group']==7){ + $cha=DB::table('medical_institution')->where(['link_user_id'=>$arr['userid']])->get(); + $sql=$sql .' and a.institution_id=?'; + array_push($canshu, $cha[0]->id); + }else{ + if($arr['searchInfo']['orgId']){ + + $sql=$sql .' and a.institution_id=?'; + array_push($canshu, $arr['searchInfo']['orgId']); + } + + } + array_push($canshu,($arr['page']-1)*$arr['pageSize'],$arr['pageSize']); + $query=DB::select("select a.*,b.org_name,c.usedcount from institutional_calendar as a left join medical_institution as b on a.institution_id=b.id LEFT JOIN (select calendar_id,count(*) as usedcount from appointment_record where status=1 group by calendar_id) as c on a.id=c.calendar_id ".$sql." order by a.date limit ?,?",$canshu); + $count=DB::select("select count(*) as c from institutional_calendar as a left join medical_institution as b on a.institution_id=b.id LEFT JOIN (select calendar_id,count(*) as usedcount from appointment_record where status=1 group by calendar_id) as c on a.id=c.calendar_id ".$sql,$canshu); + return \Yz::Return(true,'',['list'=>$query,'count'=>$count[0]->c]); + } + + //参数['list'=>$list,'group'=>$group,'userid'=>$userid] + public function Del($arr){ + $query = DB::table('institutional_calendar'); + if($arr['group']==7) { + $cha = DB::table('medical_institution')->select(['id'])->where(['link_user_id' => $arr['userid']])->get(); + $query->where('institution_id',$cha[0]->id); + } + $d=$query->whereIn('id',$arr['list'])->delete(); + if($d){ + return \Yz::Return(true,'',[]); + }else{ + return \Yz::Return(false,'删除失败',[]); + } + } + + + //参数['changeInfo'=>$changeInfo,'group'=>$group,'userid'=>$userid] + //修改日历信息 + public function ChangeInfo($arr){ + $u=0; + $query = DB::table('institutional_calendar'); + if($arr['group']==7) { + $cha = DB::table('medical_institution')->select(['id'])->where(['link_user_id' => $arr['userid']])->get(); + $query->where('institution_id',$cha[0]->id); + } + $query->whereIn('id',$arr['changeInfo']['list']); + if($arr['changeInfo']['type']=='status'){ + $u=$query->update(['status'=>$arr['changeInfo']['status']]); + } + if($arr['changeInfo']['type']=='count'){ + $u=$query->update(['count'=>$arr['changeInfo']['count']]); + } + if($u){ + return \Yz::Return(true,'成功更新'.$u.'条记录',[]); + }else{ + return \Yz::Return(false,'更新失败',[]); + } + } +} diff --git a/Laravel/app/Services/ConfigService.php b/Laravel/app/Services/ConfigService.php new file mode 100644 index 0000000..ced8996 --- /dev/null +++ b/Laravel/app/Services/ConfigService.php @@ -0,0 +1,37 @@ +select(['label','value'])->whereIn('label',$arr)->get(); + if(count($q)>0) { + $result = []; + foreach ($q as $k => $v) { + $result[$v->label] = $v->value; + } + return \Yz::Return(true, '查询成功', $result); + }else{ + return \Yz::Return(false, '查询失败'); + } + } + public function SaveConfig($name,$logo){ + $result=array(); + DB::beginTransaction(); + try { + $d= DB::table('configs')->where('label', '=', '站点名称')->update(['value'=>$name]); + $d= DB::table('configs')->where('label', '=', '站点图片')->update(['value'=>$logo]); + DB::commit(); // 手动提交事务 + return \Yz::Return(true, '操作成功'); + } catch (\Exception $e) { + DB::rollback(); // 发生异常时手动回滚事务 + return \Yz::Return(false, '操作失败'); + } + + + } +} diff --git a/Laravel/app/Services/LogService.php b/Laravel/app/Services/LogService.php new file mode 100644 index 0000000..eaa933b --- /dev/null +++ b/Laravel/app/Services/LogService.php @@ -0,0 +1,130 @@ +0){ + return DB::table($table_name)->where('id', $id)->update([ + 'response_data' => $response_data, + + ]); + }else{ + return DB::table($table_name)->insertGetId([ + 'request_ip' => $arr['ip'], + 'response_data' => $response_data, + 'header_data' => $header_data, + 'post_data' => $post_data, + 'get_data' => $get_data, + 'request_url' => $arr['request_url'], + 'create_time' => $formatted_date, + 'update_time' => $formatted_date + ]); + } + + + } + //获取日志表名称 + public function GetLogTableName(){ + $result=[]; + //获取日志表名称 + $tables = DB::select("SHOW TABLES LIKE '%" . 'zz_request_log_' . "%'"); + $tableNames = []; + + foreach($tables as $table) { + foreach($table as $tableName) { + $tableNames[] = $tableName; + } + } + $result['table_list']=$tableNames; + return \Yz::Return(true,'获取成功',$result); + } + + public function GetList($arr){ //获取日志列表 + $result=[]; + $table_name=$arr['searchInfo']['table_name']; + $page = $arr['page']; + $pagesize = $arr['pagesize']; + if(isset($table_name)){ + //获取接口列表 + $apilist=DB::table($table_name) + ->select('request_url') + ->groupBy('request_url') + ->get(); + $result['api_list']=$apilist; + + $list=DB::table($table_name); + if(isset($arr['searchInfo']['request_url'])) $list=$list->where('request_url',$arr['searchInfo']['request_url']); + if(isset($arr['searchInfo']['ziduan']) and isset($arr['searchInfo']['ziduan_value'])) $list=$list->where($arr['searchInfo']['ziduan'],'like','%'.$arr['searchInfo']['ziduan_value'].'%' ); + $count=$list->count(); + $list=$list->orderBy('id', 'desc')->skip(($page-1)*$pagesize)->take($pagesize)->get(); + + $result['list']=$list; + $result['count']=$count; + return \Yz::Return(true,'获取成功',$result); + }else{ + return \Yz::echoError1("请选择表名"); + } + + + } + + public static function CheckTableName(){ // 查看日志表是否存在,每月一个表,如果没有就创建 + $table_name='zz_request_log_' . date('ym'); + if(Schema::hasTable($table_name)){ + + }else{ + Schema::create($table_name, function (Blueprint $table) { + $table->id(); + $table->string('request_ip', 15); + $table->text('post_data'); + $table->text('get_data'); + $table->text('header_data'); + $table->text('response_data')->nullable(); + $table->string('request_url', 300); + $table->string('create_time', 30); + $table->string('update_time', 30); + $table->timestamps(); + }); + } + } + public static function JsonEncode($data){ //格式化数据,转json + $post_data =$data; + foreach ($post_data as $key => $post_datum) { + $str_len = mb_strlen(json_encode($post_datum, JSON_UNESCAPED_UNICODE)); + $str_size = $str_len / 1024; + if ($str_size > 10) { + if(is_array($post_data)){ + $post_data[$key]= 'Row size too large'; + }elseif(is_object($post_data)){ + $post_data->$key= 'Row size too large'; + }else{ + $post_data="data size too large"; + } + } + } + $post_data = json_encode($post_data, JSON_UNESCAPED_UNICODE); + $str_len = mb_strlen($post_data); + $str_size = $str_len / 1024; + if ($str_size > 40) $post_data = '{"data":"Row size too large"}'; + return $post_data; + } +} diff --git a/Laravel/app/Services/Login/LoginService.php b/Laravel/app/Services/Login/LoginService.php new file mode 100644 index 0000000..ca6922b --- /dev/null +++ b/Laravel/app/Services/Login/LoginService.php @@ -0,0 +1,77 @@ +select('id','pwd','group')->where([['username','=',$arr['username']],['status','=',1],['lock_to','<',$nowTime]])->get(); + if(count($query)==1){ + // $hash = password_hash($arr['password'], PASSWORD_DEFAULT); + // dd($query[0]->pwd); + $check=$this->CheckPwd(['userid'=>$query[0]->id,'password'=>$arr['password']]); + if($check['status']){ + $jwt= new JWT(); + $accessTimeout = $jwt -> GetGetSecretTimeOut(); + $refreshTimeout = $jwt -> GetRefreshTokenTimeOut(); + $access_token = $jwt->BuildJWT('yz','access',$query[0]->id,$query[0]->group,$accessTimeout); + $refresh_token = $jwt->BuildJWT('yz','refresh',$query[0]->id,'',$refreshTimeout); + if(!empty($arr['mian7'])){ + $mian7_token = $jwt->BuildJWT('yz','mian7',$query[0]->id,'',$jwt -> GetMian7TokenTimeOut()); + $result['mian7_token']=$mian7_token; + } + DB::table('users')->where(['id'=>$query[0]->id,'status'=>1])->update(['token'=>md5($refresh_token)]); + $result['token']=$access_token; + $result['refresh_token']=$refresh_token; + $result['status']='ok'; + }else{ + $result=$check; + } + + }else{ + $result['status']='no'; + $result['msg']='查询出错'; + } + }else{ + $result['status']='no'; + $result['msg']='缺少参数'; + } + return $result; + } + public function CheckPwd($arr){ + date_default_timezone_set('PRC'); + $nowTime=date('Y-m-d H:i:s',time()); + // 当前时间戳XXXX分 + $LockToTime=date('Y-m-d H:i:s', strtotime('+'.env('LOCK_TIME').'minute')); + + $query=DB::table('users')->select('pwd','times','lock_to')->where(['id'=>$arr['userid'],'status'=>1,['lock_to','<',$nowTime]])->get(); + if(count($query)==1){ + if (password_verify($arr['password'],$query[0]->pwd)) { + $u=DB::table('users')->where(['id'=>$arr['userid']])->update(['times'=>env('LOGOIN_CHECK_FAIL_TIMES')]); + return ['status'=>true,'msg'=>'ok']; + }else{ + $shengyuTimes=$query[0]->times; + if($shengyuTimes==0){ + $u=DB::table('users')->where(['id'=>$arr['userid']])->update(['times'=>env('LOGOIN_CHECK_FAIL_TIMES')]); + $shengyuTimes=env('LOGOIN_CHECK_FAIL_TIMES'); + } + //减少剩余失败次数 + $jian=DB::table('users')->where(['id'=>$arr['userid'],'status'=>1])->decrement('times',1); + if($shengyuTimes<=1 and $jian==1){ + $u=DB::table('users')->where(['id'=>$arr['userid']])->update(['lock_to'=>$LockToTime]); + } + return ['status'=>false,'msg'=>'密码不正确,剩余次数'.($shengyuTimes-1)]; + } + }else{ + return ['status'=>false,'msg'=>'用户不存在或因密码错误次数过多暂时被锁定,请稍后再试']; + } + + } +} diff --git a/Laravel/app/Services/TokenService.php b/Laravel/app/Services/TokenService.php new file mode 100644 index 0000000..148fb70 --- /dev/null +++ b/Laravel/app/Services/TokenService.php @@ -0,0 +1,43 @@ +where(['id'=>$cc['userid'],'type'=>1,'del'=>2,'token'=>md5($OldRefreshToken)])->update(['token'=>md5($refresh_token)]); + $result['token']=$access_token; + $result['refresh_token']=$refresh_token; + + if($u==1){ + $result['status']=true; + }else{ + $result['status']=false; + $result['msg']='刷新授权失败'; + } + // var_dump($result); + + }else{ + $result['status']=false; + $result['msg']='无效令牌'; + } + return $result; + } +} diff --git a/Laravel/artisan b/Laravel/artisan new file mode 100644 index 0000000..67a3329 --- /dev/null +++ b/Laravel/artisan @@ -0,0 +1,53 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/Laravel/bootstrap/app.php b/Laravel/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/Laravel/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/Laravel/bootstrap/cache/.gitignore b/Laravel/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Laravel/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Laravel/composer.json b/Laravel/composer.json new file mode 100644 index 0000000..003e598 --- /dev/null +++ b/Laravel/composer.json @@ -0,0 +1,65 @@ +{ + "name": "laravel/laravel", + "type": "project", + "description": "The Laravel Framework.", + "keywords": ["framework", "laravel"], + "license": "MIT", + "require": { + "php": "^7.3|^8.0", + "fruitcake/laravel-cors": "^2.0", + "guzzlehttp/guzzle": "^7.0.1", + "laravel/framework": "^8.75", + "laravel/sanctum": "^2.11", + "laravel/tinker": "^2.5" + }, + "require-dev": { + "facade/ignition": "^2.5", + "fakerphp/faker": "^1.9.1", + "laravel/sail": "^1.0.1", + "mockery/mockery": "^1.4.4", + "nunomaduro/collision": "^5.10", + "phpunit/phpunit": "^9.5.10" + }, + "autoload": { + "classmap": [ + "app/Lib" + ], + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-update-cmd": [ + "@php artisan vendor:publish --tag=laravel-assets --ansi --force" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ] + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true + }, + "minimum-stability": "dev", + "prefer-stable": true +} diff --git a/Laravel/composer.lock b/Laravel/composer.lock new file mode 100644 index 0000000..9788af3 --- /dev/null +++ b/Laravel/composer.lock @@ -0,0 +1,8427 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "c61ff82cbf0142a401a48a8161e1595a", + "packages": [ + { + "name": "asm89/stack-cors", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/asm89/stack-cors.git", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2|^8.0", + "symfony/http-foundation": "^4|^5|^6", + "symfony/http-kernel": "^4|^5|^6" + }, + "require-dev": { + "phpunit/phpunit": "^7|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" + }, + "time": "2022-01-18T09:12:03+00:00" + }, + { + "name": "brick/math", + "version": "0.9.3", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.9.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.9.3" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], + "time": "2021-08-15T20:50:18+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^3.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1" + }, + "time": "2021-08-13T13:06:58+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.8", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.8" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2023-06-16T13:40:37+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-02-28T11:07:21+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2023-08-10T19:36:49+00:00" + }, + { + "name": "egulias/email-validator", + "version": "2.1.25", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/lexer": "^1.0.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.10" + }, + "require-dev": { + "dominicsayers/isemail": "^3.0.7", + "phpunit/phpunit": "^4.8.36|^7.5.15", + "satooshi/php-coveralls": "^1.0.1" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2020-12-29T14:50:06+00:00" + }, + { + "name": "fruitcake/laravel-cors", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "asm89/stack-cors": "^2.0.1", + "illuminate/contracts": "^6|^7|^8|^9", + "illuminate/support": "^6|^7|^8|^9", + "php": ">=7.2" + }, + "require-dev": { + "laravel/framework": "^6|^7.24|^8", + "orchestra/testbench-dusk": "^4|^5|^6|^7", + "phpunit/phpunit": "^6|^7|^8|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + }, + "laravel": { + "providers": [ + "Fruitcake\\Cors\\CorsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "keywords": [ + "api", + "cors", + "crossdomain", + "laravel" + ], + "support": { + "issues": "https://github.com/fruitcake/laravel-cors/issues", + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "abandoned": true, + "time": "2022-02-23T14:25:13+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8", + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.28 || ^9.5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2022-07-30T15:56:11+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.7.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0", + "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "ext-curl": "*", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.7.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2023-05-21T14:04:53+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-08-03T15:11:55+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/8bd7c33a0734ae1c5d074360512beb716bef3f77", + "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.6.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2023-08-03T15:06:02+00:00" + }, + { + "name": "laravel/framework", + "version": "v8.83.27", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "e1afe088b4ca613fb96dc57e6d8dbcb8cc2c6b49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/e1afe088b4ca613fb96dc57e6d8dbcb8cc2c6b49", + "reference": "e1afe088b4ca613fb96dc57e6d8dbcb8cc2c6b49", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/inflector": "^1.4|^2.0", + "dragonmantank/cron-expression": "^3.0.2", + "egulias/email-validator": "^2.1.10", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "laravel/serializable-closure": "^1.0", + "league/commonmark": "^1.3|^2.0.2", + "league/flysystem": "^1.1", + "monolog/monolog": "^2.0", + "nesbot/carbon": "^2.53.1", + "opis/closure": "^3.6", + "php": "^7.3|^8.0", + "psr/container": "^1.0", + "psr/log": "^1.0|^2.0", + "psr/simple-cache": "^1.0", + "ramsey/uuid": "^4.2.2", + "swiftmailer/swiftmailer": "^6.3", + "symfony/console": "^5.4", + "symfony/error-handler": "^5.4", + "symfony/finder": "^5.4", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", + "symfony/mime": "^5.4", + "symfony/process": "^5.4", + "symfony/routing": "^5.4", + "symfony/var-dumper": "^5.4", + "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^1.6.1" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.198.1", + "doctrine/dbal": "^2.13.3|^3.1.4", + "filp/whoops": "^2.14.3", + "guzzlehttp/guzzle": "^6.5.5|^7.0.1", + "league/flysystem-cached-adapter": "^1.0", + "mockery/mockery": "^1.4.4", + "orchestra/testbench-core": "^6.27", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^8.5.19|^9.5.8", + "predis/predis": "^1.1.9", + "symfony/cache": "^5.4" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.198.1).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", + "ext-bcmath": "Required to use the multiple_of validation rule.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.5.5|^7.0.1).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", + "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", + "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "mockery/mockery": "Required to use mocking (^1.4.4).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^8.5.19|^9.5.8).", + "predis/predis": "Required to use the predis connector (^1.1.9).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.4).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^5.4).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2022-12-08T15:28:55+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v2.15.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "illuminate/console": "^6.9|^7.0|^8.0|^9.0", + "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", + "illuminate/database": "^6.9|^7.0|^8.0|^9.0", + "illuminate/support": "^6.9|^7.0|^8.0|^9.0", + "php": "^7.2|^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", + "phpunit/phpunit": "^8.0|^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sanctum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", + "keywords": [ + "auth", + "laravel", + "sanctum" + ], + "support": { + "issues": "https://github.com/laravel/sanctum/issues", + "source": "https://github.com/laravel/sanctum" + }, + "time": "2022-04-08T13:39:49+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2023-07-14T13:56:28+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.8.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "04a2d3bd0d650c0764f70bf49d1ee39393e4eb10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/04a2d3bd0d650c0764f70bf49d1ee39393e4eb10", + "reference": "04a2d3bd0d650c0764f70bf49d1ee39393e4eb10", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.10.4|^0.11.1", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.8.1" + }, + "time": "2023-02-15T16:40:09+00:00" + }, + { + "name": "league/commonmark", + "version": "2.3.9", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "c1e114f74e518daca2729ea8c4bf1167038fa4b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c1e114f74e518daca2729ea8c4bf1167038fa4b5", + "reference": "c1e114f74e518daca2729ea8c4bf1167038fa4b5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2023-02-15T14:07:24+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "1.1.10", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1", + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-fileinfo": "*", + "league/mime-type-detection": "^1.3", + "php": "^7.2.5 || ^8.0" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "phpspec/prophecy": "^1.11.1", + "phpunit/phpunit": "^8.5.8" + }, + "suggest": { + "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" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "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" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/1.1.10" + }, + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "other" + } + ], + "time": "2022-10-04T09:16:37+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.12.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "c7f2872fb273bf493811473dafc88d60ae829f48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/c7f2872fb273bf493811473dafc88d60ae829f48", + "reference": "c7f2872fb273bf493811473dafc88d60ae829f48", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.12.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2023-08-03T07:14:11+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.9.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.9.1" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2023-02-06T13:44:46+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.69.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "4308217830e4ca445583a37d1bf4aff4153fa81c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4308217830e4ca445583a37d1bf4aff4153fa81c", + "reference": "4308217830e4ca445583a37d1bf4aff4153fa81c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.1.4", + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2023-08-03T09:00:52+00:00" + }, + { + "name": "nette/schema", + "version": "v1.2.3", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", + "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", + "php": ">=7.1 <8.3" + }, + "require-dev": { + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.2.3" + }, + "time": "2022-10-13T01:24:26+00:00" + }, + { + "name": "nette/utils", + "version": "v3.2.10", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "a4175c62652f2300c8017fb7e640f9ccb11648d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/a4175c62652f2300c8017fb7e640f9ccb11648d2", + "reference": "a4175c62652f2300c8017fb7e640f9ccb11648d2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2 <8.4" + }, + "conflict": { + "nette/di": "<3.0.6" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "~2.0", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v3.2.10" + }, + "time": "2023-07-30T15:38:18+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.17.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "844c228bf2b34a25ea8fed58f7929d14cf0c068e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/844c228bf2b34a25ea8fed58f7929d14cf0c068e", + "reference": "844c228bf2b34a25ea8fed58f7929d14cf0c068e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.0" + }, + "time": "2023-08-13T14:53:08+00:00" + }, + { + "name": "opis/closure", + "version": "3.6.3", + "source": { + "type": "git", + "url": "https://github.com/opis/closure.git", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0" + }, + "require-dev": { + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.6.x-dev" + } + }, + "autoload": { + "files": [ + "functions.php" + ], + "psr-4": { + "Opis\\Closure\\": "src/" + } + }, + "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" + ], + "support": { + "issues": "https://github.com/opis/closure/issues", + "source": "https://github.com/opis/closure/tree/3.6.3" + }, + "time": "2022-01-27T09:35:39+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2023-02-25T19:38:58+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client/tree/master" + }, + "time": "2020-06-29T06:28:15+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + }, + "time": "2023-04-10T20:10:41+00:00" + }, + { + "name": "psr/http-message", + "version": "1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/1.1" + }, + "time": "2023-04-04T09:50:52+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "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" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "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" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.11.19", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "1724ceff278daeeac5a006744633bacbb2dc4706" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/1724ceff278daeeac5a006744633bacbb2dc4706", + "reference": "1724ceff278daeeac5a006744633bacbb2dc4706", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.11.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.11.19" + }, + "time": "2023-07-15T19:42:19+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/ad7475d1c9e70b190ecffc58f2d989416af339b4", + "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.4 || ^8.0", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.3.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-27T19:12:24+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.2.3", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "brick/math": "^0.8 || ^0.9", + "ext-json": "*", + "php": "^7.2 || ^8.0", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.2.3" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2021-09-25T23:10:38+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "egulias/email-validator": "^2.0|^3.1", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "symfony/phpunit-bridge": "^4.4|^5.4" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "support": { + "issues": "https://github.com/swiftmailer/swiftmailer/issues", + "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", + "type": "tidelift" + } + ], + "abandoned": "symfony/mailer", + "time": "2021-10-18T15:26:12+00:00" + }, + { + "name": "symfony/console", + "version": "v5.4.26", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/b504a3d266ad2bb632f196c0936ef2af5ff6e273", + "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-19T20:11:33+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v5.4.26", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", + "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v5.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-07T06:10:25+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v5.4.26", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "b26719213a39c9ba57520cbc5e52bfcc5e8d92f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/b26719213a39c9ba57520cbc5e52bfcc5e8d92f9", + "reference": "b26719213a39c9ba57520cbc5e52bfcc5e8d92f9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v5.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-16T16:48:57+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v5.4.26", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/5dcc00e03413f05c1e7900090927bb7247cb0aac", + "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<4.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-06T06:34:20+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.4.27", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v5.4.27" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-31T08:02:31+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v5.4.26", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "e7793151e99dc2ac1352ff3735d100fb3b3bfc08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e7793151e99dc2ac1352ff3735d100fb3b3bfc08", + "reference": "e7793151e99dc2ac1352ff3735d100fb3b3bfc08", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v5.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-21T11:30:15+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v5.4.27", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "9f5624816c0b8d92f85666ac7ed2825a18fcd899" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f5624816c0b8d92f85666ac7ed2825a18fcd899", + "reference": "9f5624816c0b8d92f85666ac7ed2825a18fcd899", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.4.21|^6.2.7", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v5.4.27" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-31T10:18:38+00:00" + }, + { + "name": "symfony/mime", + "version": "v5.4.26", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/2ea06dfeee20000a319d8407cea1d47533d5a9d2", + "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<4.4", + "symfony/serializer": "<5.4.26|>=6,<6.2.13|>=6.3,<6.3.2" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.4.26|~6.2.13|^6.3.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v5.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-27T06:29:31+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "927013f3aac555983a5059aada98e1907d842695" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", + "reference": "927013f3aac555983a5059aada98e1907d842695", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-iconv": "*" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", + "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/process", + "version": "v5.4.26", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "1a44dc377ec86a50fab40d066cd061e28a6b482f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/1a44dc377ec86a50fab40d066cd061e28a6b482f", + "reference": "1a44dc377ec86a50fab40d066cd061e28a6b482f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v5.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-12T15:44:31+00:00" + }, + { + "name": "symfony/routing", + "version": "v5.4.26", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "853fc7df96befc468692de0a48831b38f04d2cb2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/853fc7df96befc468692de0a48831b38f04d2cb2", + "reference": "853fc7df96befc468692de0a48831b38f04d2cb2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v5.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-24T13:28:37+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-30T19:17:29+00:00" + }, + { + "name": "symfony/string", + "version": "v5.4.26", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "1181fe9270e373537475e826873b5867b863883c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/1181fe9270e373537475e826873b5867b863883c", + "reference": "1181fe9270e373537475e826873b5867b863883c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-06-28T12:46:07+00:00" + }, + { + "name": "symfony/translation", + "version": "v5.4.24", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "de237e59c5833422342be67402d487fbf50334ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/de237e59c5833422342be67402d487fbf50334ff", + "reference": "de237e59c5833422342be67402d487fbf50334ff", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^2.3" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/console": "<5.3", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" + }, + "provide": { + "symfony/translation-implementation": "2.3" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v5.4.24" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-19T12:34:17+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-27T16:58:25+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v5.4.26", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "e706c99b4a6f4d9383b52b80dd8c74880501e314" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e706c99b4a6f4d9383b52b80dd8c74880501e314", + "reference": "e706c99b4a6f4d9383b52b80dd8c74880501e314", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/console": "<4.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v5.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-13T07:32:46+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.6", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" + }, + "time": "2023-01-03T09:29:04+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.4.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.0.2", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-filter": "*", + "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2021-12-12T23:22:04+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/1.6.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-01-24T18:55:24+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^11", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.30 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-12-30T00:15:36+00:00" + }, + { + "name": "facade/flare-client-php", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/facade/flare-client-php.git", + "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/flare-client-php/zipball/213fa2c69e120bca4c51ba3e82ed1834ef3f41b8", + "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "facade/ignition-contracts": "~1.0", + "illuminate/pipeline": "^5.5|^6.0|^7.0|^8.0", + "php": "^7.1|^8.0", + "symfony/http-foundation": "^3.3|^4.1|^5.0", + "symfony/mime": "^3.4|^4.0|^5.1", + "symfony/var-dumper": "^3.4|^4.0|^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "phpunit/phpunit": "^7.5", + "spatie/phpunit-snapshot-assertions": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Facade\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/facade/flare-client-php", + "keywords": [ + "exception", + "facade", + "flare", + "reporting" + ], + "support": { + "issues": "https://github.com/facade/flare-client-php/issues", + "source": "https://github.com/facade/flare-client-php/tree/1.10.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-08-09T11:23:57+00:00" + }, + { + "name": "facade/ignition", + "version": "2.17.7", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition.git", + "reference": "b4f5955825bb4b74cba0f94001761c46335c33e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition/zipball/b4f5955825bb4b74cba0f94001761c46335c33e9", + "reference": "b4f5955825bb4b74cba0f94001761c46335c33e9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "facade/flare-client-php": "^1.9.1", + "facade/ignition-contracts": "^1.0.2", + "illuminate/support": "^7.0|^8.0", + "monolog/monolog": "^2.0", + "php": "^7.2.5|^8.0", + "symfony/console": "^5.0", + "symfony/var-dumper": "^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "livewire/livewire": "^2.4", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^5.0|^6.0", + "psalm/plugin-laravel": "^1.2" + }, + "suggest": { + "laravel/telescope": "^3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Facade\\Ignition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Facade\\Ignition\\Facades\\Flare" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Facade\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://github.com/facade/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/facade/ignition/issues", + "source": "https://github.com/facade/ignition" + }, + "time": "2023-01-26T12:34:59+00:00" + }, + { + "name": "facade/ignition-contracts", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition-contracts.git", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^v2.15.8", + "phpunit/phpunit": "^9.3.11", + "vimeo/psalm": "^3.17.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Facade\\IgnitionContracts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://flareapp.io", + "role": "Developer" + } + ], + "description": "Solution contracts for Ignition", + "homepage": "https://github.com/facade/ignition-contracts", + "keywords": [ + "contracts", + "flare", + "ignition" + ], + "support": { + "issues": "https://github.com/facade/ignition-contracts/issues", + "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" + }, + "time": "2020-10-16T08:27:54+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.22.0", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "f85772abd508bd04e20bb4b1bbe260a68d0066d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/f85772abd508bd04e20bb4b1bbe260a68d0066d2", + "reference": "f85772abd508bd04e20bb4b1bbe260a68d0066d2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v1.21-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.22.0" + }, + "time": "2023-05-14T12:31:37+00:00" + }, + { + "name": "filp/whoops", + "version": "2.15.3", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.3" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-07-13T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.19.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "4f230634a3163f3442def6a4e6ffdb02b02e14d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/4f230634a3163f3442def6a4e6ffdb02b02e14d6", + "reference": "4f230634a3163f3442def6a4e6ffdb02b02e14d6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "illuminate/console": "^8.0|^9.0|^10.0", + "illuminate/contracts": "^8.0|^9.0|^10.0", + "illuminate/support": "^8.0|^9.0|^10.0", + "php": "^7.3|^8.0" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2023-01-31T13:37:57+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.6", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.10", + "psalm/plugin-phpunit": "^0.18.4", + "symplify/easy-coding-standard": "^11.5.0", + "vimeo/psalm": "^4.30" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2023-08-09T00:03:52+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2023-03-08T13:26:56+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v5.11.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "facade/ignition-contracts": "^1.0", + "filp/whoops": "^2.14.3", + "php": "^7.3 || ^8.0", + "symfony/console": "^5.0" + }, + "require-dev": { + "brianium/paratest": "^6.1", + "fideloper/proxy": "^4.4.1", + "fruitcake/laravel-cors": "^2.0.3", + "laravel/framework": "8.x-dev", + "nunomaduro/larastan": "^0.6.2", + "nunomaduro/mock-final-classes": "^1.0", + "orchestra/testbench": "^6.0", + "phpstan/phpstan": "^0.12.64", + "phpunit/phpunit": "^9.5.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2022-01-10T16:22:52+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.26", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.15", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-03-06T12:58:08+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.6.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a6d351645c3fe5a30f5e86be6577d946af65a328", + "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/instantiator": "^1.3.1 || ^2", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.5", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.2", + "sebastian/version": "^3.0.2" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.6-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.10" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2023-07-10T04:04:23+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-09-14T12:41:17+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-05-07T05:35:17+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:03:51+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-09-14T06:03:37+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bde739e7565280bda77be70044ac1047bc007e34" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", + "reference": "bde739e7565280bda77be70044ac1047bc007e34", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-02T09:26:13+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:07:39+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:13:03+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^7.3|^8.0" + }, + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/Laravel/config/app.php b/Laravel/config/app.php new file mode 100644 index 0000000..ef6ebfa --- /dev/null +++ b/Laravel/config/app.php @@ -0,0 +1,249 @@ + [ + 'WxAppid' => 'wx526430047d34c85c', //岚科公众号 + 'WxAppSecret' => '975b8a8b627b1bde71bbe49149134549', //岚科公众号 + +// 'WxAppid' => 'wx8f83ab76a99ba560',//测试 +// 'WxAppSecret' => 'eebc53a9e94f676bd680d3a09eb20303',//测试 + 'BaseServerUrl' =>'http://localhostcommon', + 'WxRedirectUrl'=>'https://www.yanzai.vip/common/laravel/public/wxGetCode', //微信授权登录,重定向地址 + + 'WxReturnCodeUrl_local'=>'http://192.168.31.106:5173/#/getWxCode/', //获取code后引导返回到前端的地址 开发 + 'WxReturnCodeUrl_server'=>'https://www.yanzai.vip/common/mH5/#/getWxCode/', //获取code后引导返回到前端的地址 生产 + + + ], + + /* + |-------------------------------------------------------------------------- + | Application Name + |-------------------------------------------------------------------------- + | + | This value is the name of your application. This value is used when the + | framework needs to place the application's name in a notification or + | any other location as required by the application or its packages. + | + */ + + 'name' => env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL', null), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => [ + + /* + * Laravel Framework Service Providers... + */ + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + + ], + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => [ + + 'App' => Illuminate\Support\Facades\App::class, + 'Arr' => Illuminate\Support\Arr::class, + 'Artisan' => Illuminate\Support\Facades\Artisan::class, + 'Auth' => Illuminate\Support\Facades\Auth::class, + 'Blade' => Illuminate\Support\Facades\Blade::class, + 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, + 'Bus' => Illuminate\Support\Facades\Bus::class, + 'Cache' => Illuminate\Support\Facades\Cache::class, + 'Config' => Illuminate\Support\Facades\Config::class, + 'Cookie' => Illuminate\Support\Facades\Cookie::class, + 'Crypt' => Illuminate\Support\Facades\Crypt::class, + 'Date' => Illuminate\Support\Facades\Date::class, + 'DB' => Illuminate\Support\Facades\DB::class, + 'Eloquent' => Illuminate\Database\Eloquent\Model::class, + 'Event' => Illuminate\Support\Facades\Event::class, + 'File' => Illuminate\Support\Facades\File::class, + 'Gate' => Illuminate\Support\Facades\Gate::class, + 'Hash' => Illuminate\Support\Facades\Hash::class, + 'Http' => Illuminate\Support\Facades\Http::class, + 'Js' => Illuminate\Support\Js::class, + 'Lang' => Illuminate\Support\Facades\Lang::class, + 'Log' => Illuminate\Support\Facades\Log::class, + 'Mail' => Illuminate\Support\Facades\Mail::class, + 'Notification' => Illuminate\Support\Facades\Notification::class, + 'Password' => Illuminate\Support\Facades\Password::class, + 'Queue' => Illuminate\Support\Facades\Queue::class, + 'RateLimiter' => Illuminate\Support\Facades\RateLimiter::class, + 'Redirect' => Illuminate\Support\Facades\Redirect::class, + // 'Redis' => Illuminate\Support\Facades\Redis::class, + 'Request' => Illuminate\Support\Facades\Request::class, + 'Response' => Illuminate\Support\Facades\Response::class, + 'Route' => Illuminate\Support\Facades\Route::class, + 'Schema' => Illuminate\Support\Facades\Schema::class, + 'Session' => Illuminate\Support\Facades\Session::class, + 'Storage' => Illuminate\Support\Facades\Storage::class, + 'Str' => Illuminate\Support\Str::class, + 'URL' => Illuminate\Support\Facades\URL::class, + 'Validator' => Illuminate\Support\Facades\Validator::class, + 'View' => Illuminate\Support\Facades\View::class, + + ], + +]; diff --git a/Laravel/config/auth.php b/Laravel/config/auth.php new file mode 100644 index 0000000..d8c6cee --- /dev/null +++ b/Laravel/config/auth.php @@ -0,0 +1,111 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expire time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_resets', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + +]; diff --git a/Laravel/config/broadcasting.php b/Laravel/config/broadcasting.php new file mode 100644 index 0000000..2d52982 --- /dev/null +++ b/Laravel/config/broadcasting.php @@ -0,0 +1,64 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'useTLS' => true, + ], + ], + + 'ably' => [ + 'driver' => 'ably', + 'key' => env('ABLY_KEY'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/Laravel/config/cache.php b/Laravel/config/cache.php new file mode 100644 index 0000000..8736c7a --- /dev/null +++ b/Laravel/config/cache.php @@ -0,0 +1,110 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + 'lock_connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + 'lock_connection' => 'default', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing a RAM based store such as APC or Memcached, there might + | be other applications utilizing the same cache. So, we'll specify a + | value to get prefixed to all our keys so we can avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), + +]; diff --git a/Laravel/config/cors.php b/Laravel/config/cors.php new file mode 100644 index 0000000..8a39e6d --- /dev/null +++ b/Laravel/config/cors.php @@ -0,0 +1,34 @@ + ['api/*', 'sanctum/csrf-cookie'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/Laravel/config/database.php b/Laravel/config/database.php new file mode 100644 index 0000000..b42d9b3 --- /dev/null +++ b/Laravel/config/database.php @@ -0,0 +1,147 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'schema' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/Laravel/config/filesystems.php b/Laravel/config/filesystems.php new file mode 100644 index 0000000..760ef97 --- /dev/null +++ b/Laravel/config/filesystems.php @@ -0,0 +1,73 @@ + env('FILESYSTEM_DRIVER', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been setup for each driver as an example of the required options. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/Laravel/config/hashing.php b/Laravel/config/hashing.php new file mode 100644 index 0000000..bcd3be4 --- /dev/null +++ b/Laravel/config/hashing.php @@ -0,0 +1,52 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 65536, + 'threads' => 1, + 'time' => 4, + ], + +]; diff --git a/Laravel/config/logging.php b/Laravel/config/logging.php new file mode 100644 index 0000000..880cd92 --- /dev/null +++ b/Laravel/config/logging.php @@ -0,0 +1,118 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['single'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => env('LOG_LEVEL', 'critical'), + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => SyslogUdpHandler::class, + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + ], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], + +]; diff --git a/Laravel/config/mail.php b/Laravel/config/mail.php new file mode 100644 index 0000000..f96c6c7 --- /dev/null +++ b/Laravel/config/mail.php @@ -0,0 +1,118 @@ + env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", + | "postmark", "log", "array", "failover" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'auth_mode' => null, + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + ], + + 'postmark' => [ + 'transport' => 'postmark', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/Laravel/config/queue.php b/Laravel/config/queue.php new file mode 100644 index 0000000..25ea5a8 --- /dev/null +++ b/Laravel/config/queue.php @@ -0,0 +1,93 @@ + env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/Laravel/config/sanctum.php b/Laravel/config/sanctum.php new file mode 100644 index 0000000..9281c92 --- /dev/null +++ b/Laravel/config/sanctum.php @@ -0,0 +1,65 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' + ))), + + /* + |-------------------------------------------------------------------------- + | Sanctum Guards + |-------------------------------------------------------------------------- + | + | This array contains the authentication guards that will be checked when + | Sanctum is trying to authenticate a request. If none of these guards + | are able to authenticate the request, Sanctum will use the bearer + | token that's present on an incoming request for authentication. + | + */ + + 'guard' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. If this value is null, personal access tokens do + | not expire. This won't tweak the lifetime of first-party sessions. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + ], + +]; diff --git a/Laravel/config/services.php b/Laravel/config/services.php new file mode 100644 index 0000000..2a1d616 --- /dev/null +++ b/Laravel/config/services.php @@ -0,0 +1,33 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + +]; diff --git a/Laravel/config/session.php b/Laravel/config/session.php new file mode 100644 index 0000000..ac0802b --- /dev/null +++ b/Laravel/config/session.php @@ -0,0 +1,201 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION', null), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE', null), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN', null), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', + +]; diff --git a/Laravel/config/view.php b/Laravel/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/Laravel/config/view.php @@ -0,0 +1,36 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/Laravel/database/.gitignore b/Laravel/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/Laravel/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/Laravel/database/factories/UserFactory.php b/Laravel/database/factories/UserFactory.php new file mode 100644 index 0000000..a3eb239 --- /dev/null +++ b/Laravel/database/factories/UserFactory.php @@ -0,0 +1,39 @@ + $this->faker->name(), + 'email' => $this->faker->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + * + * @return \Illuminate\Database\Eloquent\Factories\Factory + */ + public function unverified() + { + return $this->state(function (array $attributes) { + return [ + 'email_verified_at' => null, + ]; + }); + } +} diff --git a/Laravel/database/migrations/2014_10_12_000000_create_users_table.php b/Laravel/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..621a24e --- /dev/null +++ b/Laravel/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('users'); + } +} diff --git a/Laravel/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Laravel/database/migrations/2014_10_12_100000_create_password_resets_table.php new file mode 100644 index 0000000..0ee0a36 --- /dev/null +++ b/Laravel/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -0,0 +1,32 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('password_resets'); + } +} diff --git a/Laravel/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Laravel/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..6aa6d74 --- /dev/null +++ b/Laravel/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('failed_jobs'); + } +} diff --git a/Laravel/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Laravel/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 0000000..4315e16 --- /dev/null +++ b/Laravel/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,36 @@ +id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('personal_access_tokens'); + } +} diff --git a/Laravel/database/seeders/DatabaseSeeder.php b/Laravel/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..57b73b5 --- /dev/null +++ b/Laravel/database/seeders/DatabaseSeeder.php @@ -0,0 +1,18 @@ +create(); + } +} diff --git a/Laravel/package.json b/Laravel/package.json new file mode 100644 index 0000000..00c6506 --- /dev/null +++ b/Laravel/package.json @@ -0,0 +1,18 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "mix", + "watch": "mix watch", + "watch-poll": "mix watch -- --watch-options-poll=1000", + "hot": "mix watch --hot", + "prod": "npm run production", + "production": "mix --production" + }, + "devDependencies": { + "axios": "^0.21", + "laravel-mix": "^6.0.6", + "lodash": "^4.17.19", + "postcss": "^8.1.14" + } +} diff --git a/Laravel/phpunit.xml b/Laravel/phpunit.xml new file mode 100644 index 0000000..4ae4d97 --- /dev/null +++ b/Laravel/phpunit.xml @@ -0,0 +1,31 @@ + + + + + ./tests/Unit + + + ./tests/Feature + + + + + ./app + + + + + + + + + + + + + + diff --git a/Laravel/public/.htaccess b/Laravel/public/.htaccess new file mode 100644 index 0000000..e69de29 diff --git a/Laravel/public/favicon.ico b/Laravel/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/Laravel/public/index.php b/Laravel/public/index.php new file mode 100644 index 0000000..1d69f3a --- /dev/null +++ b/Laravel/public/index.php @@ -0,0 +1,55 @@ +make(Kernel::class); + +$response = $kernel->handle( + $request = Request::capture() +)->send(); + +$kernel->terminate($request, $response); diff --git a/Laravel/public/nginx.htaccess b/Laravel/public/nginx.htaccess new file mode 100644 index 0000000..743de63 --- /dev/null +++ b/Laravel/public/nginx.htaccess @@ -0,0 +1,8 @@ +location / { + # root html; + index index.php index.html index.htm; + + try_files $uri $uri/ /index.php$is_args$query_string; + + + } \ No newline at end of file diff --git a/Laravel/public/report.pdf b/Laravel/public/report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ef330bd3717a992414147facef6e174f7abcda68 GIT binary patch literal 115311 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 C%zKmo literal 0 HcmV?d00001 diff --git a/Laravel/public/robots.txt b/Laravel/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/Laravel/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/Laravel/resources/css/app.css b/Laravel/resources/css/app.css new file mode 100644 index 0000000..e69de29 diff --git a/Laravel/resources/js/app.js b/Laravel/resources/js/app.js new file mode 100644 index 0000000..40c55f6 --- /dev/null +++ b/Laravel/resources/js/app.js @@ -0,0 +1 @@ +require('./bootstrap'); diff --git a/Laravel/resources/js/bootstrap.js b/Laravel/resources/js/bootstrap.js new file mode 100644 index 0000000..6922577 --- /dev/null +++ b/Laravel/resources/js/bootstrap.js @@ -0,0 +1,28 @@ +window._ = require('lodash'); + +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +window.axios = require('axios'); + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo'; + +// window.Pusher = require('pusher-js'); + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: process.env.MIX_PUSHER_APP_KEY, +// cluster: process.env.MIX_PUSHER_APP_CLUSTER, +// forceTLS: true +// }); diff --git a/Laravel/resources/lang/en/auth.php b/Laravel/resources/lang/en/auth.php new file mode 100644 index 0000000..6598e2c --- /dev/null +++ b/Laravel/resources/lang/en/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/Laravel/resources/lang/en/pagination.php b/Laravel/resources/lang/en/pagination.php new file mode 100644 index 0000000..d481411 --- /dev/null +++ b/Laravel/resources/lang/en/pagination.php @@ -0,0 +1,19 @@ + '« Previous', + 'next' => 'Next »', + +]; diff --git a/Laravel/resources/lang/en/passwords.php b/Laravel/resources/lang/en/passwords.php new file mode 100644 index 0000000..2345a56 --- /dev/null +++ b/Laravel/resources/lang/en/passwords.php @@ -0,0 +1,22 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'throttled' => 'Please wait before retrying.', + 'token' => 'This password reset token is invalid.', + 'user' => "We can't find a user with that email address.", + +]; diff --git a/Laravel/resources/lang/en/validation.php b/Laravel/resources/lang/en/validation.php new file mode 100644 index 0000000..783003c --- /dev/null +++ b/Laravel/resources/lang/en/validation.php @@ -0,0 +1,163 @@ + 'The :attribute must be accepted.', + 'accepted_if' => 'The :attribute must be accepted when :other is :value.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute must only contain letters.', + 'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.', + 'alpha_num' => 'The :attribute must only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute is not a valid date.', + 'date_equals' => 'The :attribute must be a date equal to :date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'declined' => 'The :attribute must be declined.', + 'declined_if' => 'The :attribute must be declined when :other is :value.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'ends_with' => 'The :attribute must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'numeric' => 'The :attribute must be greater than :value.', + 'file' => 'The :attribute must be greater than :value kilobytes.', + 'string' => 'The :attribute must be greater than :value characters.', + 'array' => 'The :attribute must have more than :value items.', + ], + 'gte' => [ + 'numeric' => 'The :attribute must be greater than or equal to :value.', + 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', + 'string' => 'The :attribute must be greater than or equal to :value characters.', + 'array' => 'The :attribute must have :value items or more.', + ], + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'lt' => [ + 'numeric' => 'The :attribute must be less than :value.', + 'file' => 'The :attribute must be less than :value kilobytes.', + 'string' => 'The :attribute must be less than :value characters.', + 'array' => 'The :attribute must have less than :value items.', + ], + 'lte' => [ + 'numeric' => 'The :attribute must be less than or equal to :value.', + 'file' => 'The :attribute must be less than or equal to :value kilobytes.', + 'string' => 'The :attribute must be less than or equal to :value characters.', + 'array' => 'The :attribute must not have more than :value items.', + ], + 'mac_address' => 'The :attribute must be a valid MAC address.', + 'max' => [ + 'numeric' => 'The :attribute must not be greater than :max.', + 'file' => 'The :attribute must not be greater than :max kilobytes.', + 'string' => 'The :attribute must not be greater than :max characters.', + 'array' => 'The :attribute must not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'multiple_of' => 'The :attribute must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'password' => 'The password is incorrect.', + 'present' => 'The :attribute field must be present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'starts_with' => 'The :attribute must start with one of the following: :values.', + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute must be a valid URL.', + 'uuid' => 'The :attribute must be a valid UUID.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [], + +]; diff --git a/Laravel/resources/views/welcome.blade.php b/Laravel/resources/views/welcome.blade.php new file mode 100644 index 0000000..dd6a45d --- /dev/null +++ b/Laravel/resources/views/welcome.blade.php @@ -0,0 +1,132 @@ + + + + + + + Laravel + + + + + + + + + + +
+ @if (Route::has('login')) + + @endif + +
+
+ + + + + +
+ +
+
+
+ + +
+
+ Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end. +
+
+
+ +
+
+ + +
+ +
+
+ Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process. +
+
+
+ +
+
+ + +
+ +
+
+ Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials. +
+
+
+ +
+
+ +
Vibrant Ecosystem
+
+ +
+
+ Laravel's robust library of first-party tools and libraries, such as Forge, Vapor, Nova, and Envoyer help you take your projects to the next level. Pair them with powerful open source libraries like Cashier, Dusk, Echo, Horizon, Sanctum, Telescope, and more. +
+
+
+
+
+ +
+
+
+ + + + + + Shop + + + + + + + + Sponsor + +
+
+ +
+ Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) +
+
+
+
+ + diff --git a/Laravel/routes/api.php b/Laravel/routes/api.php new file mode 100644 index 0000000..aee7233 --- /dev/null +++ b/Laravel/routes/api.php @@ -0,0 +1,72 @@ +get('/user', function (Request $request) { + return $request->user(); +}); + + +Route::post('admin/login','App\Http\Controllers\API\Admin\LoginController@Login')->middleware('log'); //登录 +Route::post('/tokenRefresh','App\Http\Controllers\API\TokenController@TokenRefresh')->middleware('log'); //刷新token + +Route::group(['middleware'=>['checktoken','log'],'prefix'=>'v1'],function () { //路由分组 + Route::post('admin/getBaseMenuList','App\Http\Controllers\API\Admin\BaseInfoController@GetBaseMenuList'); //登录后获取admin后台用户对应菜单列表 + Route::post('admin/GetBaseUserInfo','App\Http\Controllers\API\Admin\BaseInfoController@GetBaseUserInfo'); //获取admin用户基本信息 + Route::post('admin/getMenuList','App\Http\Controllers\API\Admin\MenuController@GetList'); //admin后台所有菜单管理 + Route::post('admin/GetFatherMenuList','App\Http\Controllers\API\Admin\MenuController@GetFatherMenuList'); //admin后台获取一级菜单 + Route::post('admin/AddMenu','App\Http\Controllers\API\Admin\MenuController@AddMenu'); //admin后台添加菜单 + Route::post('admin/EditMenu','App\Http\Controllers\API\Admin\MenuController@EditMenu'); //admin后台修改菜单 + Route::post('admin/getUserList','App\Http\Controllers\API\Admin\UserController@GetInfoList'); //admin后台获取用户列表 + Route::post('admin/GetSystemUserDetail','App\Http\Controllers\API\Admin\UserController@GetDetail'); //admin后台获取用户详情 + Route::post('admin/adminChangePwd','App\Http\Controllers\API\Admin\UserController@ChangePwd'); //admin后台修改密码 + Route::post('admin/SaveSystemUserInfo','App\Http\Controllers\API\Admin\UserController@Save'); //admin后台保存用户信息 + Route::post('admin/getGroupList','App\Http\Controllers\API\Admin\GroupController@GetList'); //admin后台组列表 + Route::post('admin/GroupChangeMenu','App\Http\Controllers\API\Admin\GroupController@ChangeMenu'); //admin后台组列表 + Route::post('admin/GetGroupMenuList','App\Http\Controllers\API\Admin\GroupController@GetGroupMenuList'); //管理员查询分组使用的菜单 + Route::post('admin/SaveGroup','App\Http\Controllers\API\Admin\GroupController@Save'); //admin后台组列表 + Route::post('admin/CheckMenuAuth','App\Http\Controllers\API\Admin\BaseInfoController@CheckMenuAuth'); //admin后台检查用户菜单权限 + Route::post('UpFile','App\Http\Controllers\API\UpLoadController@UpFile'); //上传文件 + Route::post('admin/ChangInfo','App\Http\Controllers\API\Admin\UserController@ChangInfo'); //修改自身用户信息 + Route::post('admin/GetConfigInfo','App\Http\Controllers\API\Admin\ConfigController@GetConfigInfo'); //获取配置信息 + Route::post('admin/SaveConfigInfo','App\Http\Controllers\API\Admin\ConfigController@SaveConfig'); //保存配置信息 + Route::post('admin/SystemLogGetList','App\Http\Controllers\API\LogController@GetList');//admin后台获取日志列表 + Route::post('admin/GetLogTableName','App\Http\Controllers\API\LogController@GetLogTableName');//admin后台获取日志表名 + //--------------以上为系统基本接口 + Route::post('admin/GetHealthOrganizationEnableList','App\Http\Controllers\API\Admin\YeWu\HealthOrganizationController@GetEnableList'); //admin后台获取可用体检机构列表 + Route::post('admin/CreateCalendar','App\Http\Controllers\API\Admin\YeWu\healthCalendarController@CreateCalendar'); //admin后台创建日历 + Route::post('admin/CalendarGetList','App\Http\Controllers\API\Admin\YeWu\healthCalendarController@getList'); //admin后台获取日历列表 + Route::post('admin/CalendarListDel','App\Http\Controllers\API\Admin\YeWu\healthCalendarController@Del'); //admin后台删除日历 + Route::post('admin/CalendarChangeInfo','App\Http\Controllers\API\Admin\YeWu\healthCalendarController@ChangeInfo'); //admin后台更新日历 + + + Route::post('admin/WebSiteSave','App\Http\Controllers\API\Admin\YeWu\WebSiteController@Save'); + Route::post('admin/WebSiteGetList','App\Http\Controllers\API\Admin\YeWu\WebSiteController@GetList'); + Route::post('admin/WebSiteGetDetail','App\Http\Controllers\API\Admin\YeWu\WebSiteController@GetDetail'); + Route::post('admin/HospitalSave','App\Http\Controllers\API\Admin\YeWu\HospitalController@Save'); + Route::post('admin/HospitalGetList','App\Http\Controllers\API\Admin\YeWu\HospitalController@GetList'); + Route::post('admin/GetBaseInfoDetail','App\Http\Controllers\API\Admin\YeWu\HospitalController@GetBaseInfoDetail'); + + + + +}); + + + + + + + diff --git a/Laravel/routes/channels.php b/Laravel/routes/channels.php new file mode 100644 index 0000000..5d451e1 --- /dev/null +++ b/Laravel/routes/channels.php @@ -0,0 +1,18 @@ +id === (int) $id; +}); diff --git a/Laravel/routes/console.php b/Laravel/routes/console.php new file mode 100644 index 0000000..e05f4c9 --- /dev/null +++ b/Laravel/routes/console.php @@ -0,0 +1,19 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/Laravel/routes/web.php b/Laravel/routes/web.php new file mode 100644 index 0000000..08abe1d --- /dev/null +++ b/Laravel/routes/web.php @@ -0,0 +1,28 @@ + + */ + +$uri = urldecode( + parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) ?? '' +); + +// This file allows us to emulate Apache's "mod_rewrite" functionality from the +// built-in PHP web server. This provides a convenient way to test a Laravel +// application without having installed a "real" web server software here. +if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { + return false; +} + +require_once __DIR__.'/public/index.php'; diff --git a/Laravel/storage/app/.gitignore b/Laravel/storage/app/.gitignore new file mode 100644 index 0000000..8f4803c --- /dev/null +++ b/Laravel/storage/app/.gitignore @@ -0,0 +1,3 @@ +* +!public/ +!.gitignore diff --git a/Laravel/storage/framework/.gitignore b/Laravel/storage/framework/.gitignore new file mode 100644 index 0000000..05c4471 --- /dev/null +++ b/Laravel/storage/framework/.gitignore @@ -0,0 +1,9 @@ +compiled.php +config.php +down +events.scanned.php +maintenance.php +routes.php +routes.scanned.php +schedule-* +services.json diff --git a/Laravel/storage/framework/cache/.gitignore b/Laravel/storage/framework/cache/.gitignore new file mode 100644 index 0000000..01e4a6c --- /dev/null +++ b/Laravel/storage/framework/cache/.gitignore @@ -0,0 +1,3 @@ +* +!data/ +!.gitignore diff --git a/Laravel/storage/framework/cache/data/.gitignore b/Laravel/storage/framework/cache/data/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Laravel/storage/framework/cache/data/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Laravel/storage/framework/sessions/.gitignore b/Laravel/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Laravel/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Laravel/storage/framework/testing/.gitignore b/Laravel/storage/framework/testing/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Laravel/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Laravel/storage/framework/views/.gitignore b/Laravel/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Laravel/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Laravel/storage/logs/.gitignore b/Laravel/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Laravel/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Laravel/tests/CreatesApplication.php b/Laravel/tests/CreatesApplication.php new file mode 100644 index 0000000..547152f --- /dev/null +++ b/Laravel/tests/CreatesApplication.php @@ -0,0 +1,22 @@ +make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/Laravel/tests/Feature/ExampleTest.php b/Laravel/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..4ae02bc --- /dev/null +++ b/Laravel/tests/Feature/ExampleTest.php @@ -0,0 +1,21 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/Laravel/tests/TestCase.php b/Laravel/tests/TestCase.php new file mode 100644 index 0000000..2932d4a --- /dev/null +++ b/Laravel/tests/TestCase.php @@ -0,0 +1,10 @@ +assertTrue(true); + } +} diff --git a/Laravel/webpack.mix.js b/Laravel/webpack.mix.js new file mode 100644 index 0000000..2a22dc1 --- /dev/null +++ b/Laravel/webpack.mix.js @@ -0,0 +1,17 @@ +const mix = require('laravel-mix'); + +/* + |-------------------------------------------------------------------------- + | Mix Asset Management + |-------------------------------------------------------------------------- + | + | Mix provides a clean, fluent API for defining some Webpack build steps + | for your Laravel applications. By default, we are compiling the CSS + | file for the application as well as bundling up all the JS files. + | + */ + +mix.js('resources/js/app.js', 'public/js') + .postCss('resources/css/app.css', 'public/css', [ + // + ]); diff --git a/admin/.env.development b/admin/.env.development new file mode 100644 index 0000000..83bc6a6 --- /dev/null +++ b/admin/.env.development @@ -0,0 +1,3 @@ +ENV = 'development' +VITE_APP_API = '/api/' +VITE_APP_FILE = 'http://tijian-composite' \ No newline at end of file diff --git a/admin/.env.production b/admin/.env.production new file mode 100644 index 0000000..1a89d63 --- /dev/null +++ b/admin/.env.production @@ -0,0 +1,4 @@ +ENV = 'production' +VITE_APP_API = 'https://www.yanzai.vip/common/laravel/public/api/' +VITE_APP_FILE = 'https://www.yanzai.vip/common/laravel/public' + diff --git a/admin/.eslintrc.cjs b/admin/.eslintrc.cjs new file mode 100644 index 0000000..b64731a --- /dev/null +++ b/admin/.eslintrc.cjs @@ -0,0 +1,14 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution') + +module.exports = { + root: true, + 'extends': [ + 'plugin:vue/vue3-essential', + 'eslint:recommended', + '@vue/eslint-config-prettier/skip-formatting' + ], + parserOptions: { + ecmaVersion: 'latest' + } +} diff --git a/admin/.gitignore b/admin/.gitignore new file mode 100644 index 0000000..38adffa --- /dev/null +++ b/admin/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/admin/.prettierrc.json b/admin/.prettierrc.json new file mode 100644 index 0000000..66e2335 --- /dev/null +++ b/admin/.prettierrc.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/prettierrc", + "semi": false, + "tabWidth": 2, + "singleQuote": true, + "printWidth": 100, + "trailingComma": "none" +} \ No newline at end of file diff --git a/admin/.vscode/extensions.json b/admin/.vscode/extensions.json new file mode 100644 index 0000000..009a534 --- /dev/null +++ b/admin/.vscode/extensions.json @@ -0,0 +1,8 @@ +{ + "recommendations": [ + "Vue.volar", + "Vue.vscode-typescript-vue-plugin", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode" + ] +} diff --git a/admin/README.md b/admin/README.md new file mode 100644 index 0000000..eeed457 --- /dev/null +++ b/admin/README.md @@ -0,0 +1,35 @@ +# el-admin + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Compile and Minify for Production + +```sh +npm run build +``` + +### Lint with [ESLint](https://eslint.org/) + +```sh +npm run lint +``` diff --git a/admin/index.html b/admin/index.html new file mode 100644 index 0000000..3b0adf3 --- /dev/null +++ b/admin/index.html @@ -0,0 +1,13 @@ + + + + + + + 体检企业站管理 + + +
+ + + diff --git a/admin/package-lock.json b/admin/package-lock.json new file mode 100644 index 0000000..c2d3307 --- /dev/null +++ b/admin/package-lock.json @@ -0,0 +1,3349 @@ +{ + "name": "el-admin", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "el-admin", + "version": "0.0.0", + "dependencies": { + "@element-plus/icons-vue": "^2.1.0", + "@vueuse/core": "^10.4.1", + "axios": "^1.5.1", + "echarts": "^5.4.3", + "element-plus": "^2.3.14", + "pinia": "^2.1.6", + "qrcode": "^1.5.3", + "vue": "^3.3.4", + "vue-router": "^4.2.4" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.3.3", + "@vitejs/plugin-vue": "^4.3.4", + "@vue/eslint-config-prettier": "^8.0.0", + "eslint": "^8.49.0", + "eslint-plugin-vue": "^9.17.0", + "prettier": "^3.0.3", + "vite": "^4.4.9" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz", + "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.0.tgz", + "integrity": "sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", + "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.4.tgz", + "integrity": "sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.0.tgz", + "integrity": "sha512-EF3948ckf3f5uPgYbQ6GhyA56Dmv8yg0+ir+BroRjwdxyZJsekhZzawOecC2rOTPCz173t7ZcR1HHZu0dZgOCw==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.199", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", + "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.9", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.9.tgz", + "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", + "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz", + "integrity": "sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", + "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "dependencies": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", + "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "dependencies": { + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", + "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-ssr": "3.3.4", + "@vue/reactivity-transform": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", + "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", + "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" + }, + "node_modules/@vue/eslint-config-prettier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-8.0.0.tgz", + "integrity": "sha512-55dPqtC4PM/yBjhAr+yEw6+7KzzdkBuLmnhBrDfp4I48+wy+Giqqj9yUr5T2uD/BkBROjjmqnLZmXRdOx/VtQg==", + "dev": true, + "dependencies": { + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^5.0.0" + }, + "peerDependencies": { + "eslint": ">= 8.0.0", + "prettier": ">= 3.0.0" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", + "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "dependencies": { + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", + "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", + "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "dependencies": { + "@vue/reactivity": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", + "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "dependencies": { + "@vue/runtime-core": "3.3.4", + "@vue/shared": "3.3.4", + "csstype": "^3.1.1" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", + "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "dependencies": { + "@vue/compiler-ssr": "3.3.4", + "@vue/shared": "3.3.4" + }, + "peerDependencies": { + "vue": "3.3.4" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", + "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" + }, + "node_modules/@vueuse/core": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.4.1.tgz", + "integrity": "sha512-DkHIfMIoSIBjMgRRvdIvxsyboRZQmImofLyOHADqiVbQVilP8VVHDhBX2ZqoItOgu7dWa8oXiNnScOdPLhdEXg==", + "dependencies": { + "@types/web-bluetooth": "^0.0.17", + "@vueuse/metadata": "10.4.1", + "@vueuse/shared": "10.4.1", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.4.1.tgz", + "integrity": "sha512-2Sc8X+iVzeuMGHr6O2j4gv/zxvQGGOYETYXEc41h0iZXIRnRbJZGmY/QP8dvzqUelf8vg0p/yEA5VpCEu+WpZg==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.4.1.tgz", + "integrity": "sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg==", + "dependencies": { + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/echarts": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.3.tgz", + "integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.4.4" + } + }, + "node_modules/echarts/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "node_modules/element-plus": { + "version": "2.3.14", + "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.3.14.tgz", + "integrity": "sha512-9yvxUaU4jXf2ZNPdmIxoj/f8BG8CDcGM6oHa9JIqxLjQlfY4bpzR1E5CjNimnOX3rxO93w1TQ0jTVt0RSxh9kA==", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.0.6", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/element-plus/node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "node_modules/element-plus/node_modules/@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/element-plus/node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/element-plus/node_modules/@vueuse/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/element-plus/node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/element-plus/node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", + "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.50.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", + "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.13", + "semver": "^7.5.4", + "vue-eslint-parser": "^9.3.1", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "dev": true, + "dependencies": { + "flatted": "^3.2.7", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.22.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.4.tgz", + "integrity": "sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pinia": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.6.tgz", + "integrity": "sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/run-applescript/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/run-applescript/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/run-applescript/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-applescript/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vite": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", + "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", + "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-sfc": "3.3.4", + "@vue/runtime-dom": "3.3.4", + "@vue/server-renderer": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz", + "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zrender": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.4.tgz", + "integrity": "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zrender/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } +} diff --git a/admin/package.json b/admin/package.json new file mode 100644 index 0000000..a35e531 --- /dev/null +++ b/admin/package.json @@ -0,0 +1,32 @@ +{ + "name": "el-admin", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore", + "format": "prettier --write src/" + }, + "dependencies": { + "@element-plus/icons-vue": "^2.1.0", + "@vueuse/core": "^10.4.1", + "axios": "^1.5.1", + "echarts": "^5.4.3", + "element-plus": "^2.3.14", + "pinia": "^2.1.6", + "qrcode": "^1.5.3", + "vue": "^3.3.4", + "vue-router": "^4.2.4" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.3.3", + "@vitejs/plugin-vue": "^4.3.4", + "@vue/eslint-config-prettier": "^8.0.0", + "eslint": "^8.49.0", + "eslint-plugin-vue": "^9.17.0", + "prettier": "^3.0.3", + "vite": "^4.4.9" + } +} diff --git a/admin/public/favicon.ico b/admin/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/admin/public/js/xtxsync.js b/admin/public/js/xtxsync.js new file mode 100644 index 0000000..de4ab8b --- /dev/null +++ b/admin/public/js/xtxsync.js @@ -0,0 +1,984 @@ +/* + -------------------------------------------------------------- + * FileName:xtxsync.js + * This Javascript provides synchronous interfaces + * Support bjca client version 3.4.1 and later + * Author:BJCA-zys + * Date: 2021-05-06 + * + -------------------------------------------------------------- + */ + +(function() { +if (typeof xtxsync === 'undefined') { + xtxsync = {}; +} +})(); + +// initialize xtxsync hashMap object +(function() { + +function xtxsyncHashMap(){ + this.map = {}; +} + +xtxsyncHashMap.prototype = { + put : function(key , value){ + this.map[key] = value; + }, + + get : function(key){ + if(this.map.hasOwnProperty(key)){ + return this.map[key]; + } + return null; + }, + + remove : function(key){ + if(this.map.hasOwnProperty(key)){ + return delete this.map[key]; + } + return false; + }, + + removeAll : function(){ + this.map = {}; + }, + + keySet : function(){ + var _keys = []; + for(var i in this.map){ + _keys.push(i); + } + return _keys; + } +}; + +xtxsyncHashMap.prototype.constructor = xtxsyncHashMap; + +xtxsync.HashMap = xtxsyncHashMap; +})(); + +// initialize xtxsync util object +(function() { + +function initUtilObject(xtxsync) { + + var util = xtxsync.util = xtxsync.util || {}; + + util.checkBrowserISIE = function() { + return (!!window.ActiveXObject || 'ActiveXObject' in window) ? true : false; + } + + util.checkLocationIsHttps = function() { + return 'https:' == document.location.protocol ? true: false; + } + + util.evalFunction = function (func) { + if (typeof func === 'function') { + return func; + } else if (typeof func === 'string') { + cb = eval(func); + } else { + return null; + } + } + + util.consolelog = function(param) { + if (window.console == undefined || window.console.log == undefined) { + return; + } + console.log(param); + } + + util.isEmpty = function(param) { + if (!param) { + return true; + } + if (typeof param == 'string' && param == "") { + return true; + } + + return false; + } + + util.loadIECtl = function(clsid, ctlName, checkFunc) { + if (!util.checkBrowserISIE()) { + return null; + } + var ctl = document.getElementById(ctlName); + if (ctl) { + return ctl; + } + try { + var loadObjString = ''; + loadObjString += ''; + document.write(loadObjString); + if (checkFunc != null && checkFunc != "" && eval(ctlName + "." + checkFunc) == undefined) { + return null; + } + } catch (e) { + util.consolelog(e); + return null; + } + return document.getElementById(ctlName); + } + + util.getAutoExecFunctionString = function (func) { + var ret = "("; + ret += func.toString(); + ret += ")()"; + + return ret; + } + + util.attachIEEvent = function(ctlName, eventName, eventFunc) { + var ctl; + if (typeof ctlName === 'string') { + ctl = eval(ctlName); + } else { + ctl = ctlName; + } + eventName = eventName.toLowerCase(); + + var cb = util.evalFunction(eventFunc); + if (cb == null) { + return; + } + + if (ctl.attachEvent) { + ctl.attachEvent(eventName, cb); + } else { // IE11 not support attachEvent, and addEventListener do not work well, so addEvent ourself + var handler = document.createElement("script"); + handler.setAttribute("for", ctlName); + handler.setAttribute("event", eventName); + var eventScript = util.getAutoExecFunctionString(eventFunc); + handler.appendChild(document.createTextNode(eventScript)); + document.getElementsByTagName("head")[0].appendChild(handler); + } + } + + util.loadWebSocketCtl = function(wsUrl, wssUrl) { + if (xtxsync.wsObject) { + return xtxsync.wsObject; + } + var url; + if (util.checkLocationIsHttps()) { + url = "wss://" + wssUrl; + } else { + url = "ws://" + wsUrl; + } + + var wsObject = { + socket : undefined, + wsEventQueue : new xtxsync.HashMap(), + wsURL : url + }; + xtxsync.wsObject = wsObject; + xtxsync.wsObject.wsEventQueue.put("onusbkeychange", util.evalFunction(xtxsync.custom.defaultUsbkeyChange)); + + try { + wsObject.socket = new WebSocket(url); + } catch (e) { + util.consolelog(e); + return null; + } + + wsObject.socket.onopen = function(evt) { + xtxsync.util.consolelog("open websocket[" + url + "] ok..."); + xtxsync.util.consolelog("SOF_GetVersion:(" + xtxsync.SOF_GetVersion() + ")"); + } + wsObject.socket.onclose = function(evt) { + util.consolelog("websocket[" + url + "] closed, reopen it..."); + xtxsync.wsObject = undefined; + xtxsync.XTXAppWebSocket = xtxsync.util.loadWebSocketCtl(wsUrl, wssUrl); + }; + wsObject.socket.onmessage = function(evt) { + var eventCmd = false; + if (xtxsync.util.isEmpty(evt.data)) { + util.consolelog("onmessage evt.data is NULL or empty!!!"); + return; + } + try { + var res = JSON.parse(evt.data); + var cmdId = undefined; + if (res['call_cmd_id']) { + cmdId = res['call_cmd_id']; + } else { + util.consolelog("return JSON not include call_cmd_id!!!"); + return; + } + + var retVal = ""; + if (res['retVal']) { + retVal = res['retVal']; + } else if (res['retValue']) { + retVal = res['retValue']; + } + + var execFunc = xtxsync.wsObject.wsEventQueue.get(cmdId.toLowerCase()); + if (execFunc && typeof execFunc == 'function') { // event + execFunc(retVal); + } + } catch (e) { + return; + } + }; + wsObject.socket.onerror = function(evt) { + xtxsync.util.consolelog(evt.data); + }; + + return wsObject; + } + + util.attachWebSocketEvent = function(wsObject, eventName, eventFunc) { + if (wsObject == null) { + return; + } + wsObject.wsEventQueue.put(eventName.toLowerCase(), util.evalFunction(eventFunc)); + } + + util.createHttpRequest = function() { + if (window.XMLHttpRequest) { + return new XMLHttpRequest(); + } else { + return new ActiveXObject("Microsoft.XMLHTTP"); + } + } + + util.ajaxSyncall = function(clsid, methodName, outPramType, argsArray) { + var defaultErrRet; + if (outPramType == 'bool') { + defaultErrRet = false; + } else if (outPramType == 'number') { + defaultErrRet = -1; + } else { + defaultErrRet = ""; + } + try { + var xhr = xtxsync.util.createHttpRequest(); + var strUrl = "http://127.0.0.1:21051/synctl"; + if (util.checkLocationIsHttps()) { + strUrl = "https://127.0.0.1:21061/synctl"; + } + xhr.open("POST", strUrl, false); + xhr.setRequestHeader("Content-type","application/json"); + var sendArray = { + url:window.location.href, + clsid:clsid, + func:methodName, + param:argsArray + }; + var token = xtxsync.custom.getToken(); + if (token != "") { + sendArray.token = token; + } + + xhr.send(JSON.stringify(sendArray)); + if (xhr.status != 200) { + if (methodName == 'SOF_Login' || methodName == 'SOF_LoginEx') { + xtxsync.custom.setToken(""); + } + return defaultErrRet; + } + + var res = JSON.parse(xhr.responseText); + if (res.token) { + xtxsync.custom.setToken(res.token); + } + + var ret = defaultErrRet; + if (res.hasOwnProperty('retValue')) { + ret = res.retValue; + } else if (res.hasOwnProperty('retVal')) { + if (outPramType == "bool"){ + if (typeof(res.retVal) == 'string') { + ret = res.retVal == "true" ? true : false; + } else { + ret = res.retVal; + } + } else if (outPramType == "number"){ + if (typeof(res.retVal) == 'string') { + ret = Number(res.retVal); + } else { + ret = res.retVal; + } + } else{ + ret = res.retVal; + } + } + if (ret == undefined) { + ret = defaultErrRet; + } + if (((methodName == 'SOF_Login' || methodName == 'SOF_LoginEx') && !ret) || (methodName == 'SOF_Logout' && ret)) { + xtxsync.custom.setToken(""); + } + return ret; + } catch (e) { + return defaultErrRet; + } + } +} + +return initUtilObject(xtxsync); +})(); + +// initialize index page and other custom action +(function() { + +function initCustomActions(xtxsync) { + var custom = xtxsync.custom = xtxsync.custom || {}; + + custom.softCertListID = ""; + custom.hardCertListID = ""; + custom.allCertListID = ""; + custom.loginCertID = ""; + custom.logoutFunc = null; + custom.UsbkeyChangeFunc = null; + custom.loginToken = ""; + + custom.errorReportFunc = function(msg) { + alert(msg); + } + + custom.setAutoLogoutParameter = function(strCertID, logoutFunc) { + var custom = xtxsync.custom; + custom.loginCertID = strCertID; + custom.logoutFunc = logoutFunc; + } + + custom.clearDropList = function(dropListId) { + if (dropListId == "") { + return; + } + + var obj = document.getElementById(dropListId); + if (obj == undefined) { + obj = eval(dropListId); + } + if (obj == undefined) { + return; + } + + var i, n = obj.length; + for (i = 0; i < n; i++) { + obj.remove(0); + } + } + + custom.pushOneDropListBox = function(userListArray, strListID) + { + var obj = document.getElementById(strListID); + if (obj == undefined) { + obj = eval(strListID); + } + if (obj == undefined) { + return; + } + + for (var i = 0; i < userListArray.length; i++) { + var certObj = userListArray[i]; + var objItem = new Option(certObj.certName, certObj.certID); + obj.options.add(objItem); + } + return; + } + + custom.pushUserListToAllDroplist = function(strUserList) { + var custom = xtxsync.custom; + + custom.clearDropList(custom.softCertListID); + custom.clearDropList(custom.hardCertListID); + custom.clearDropList(custom.allCertListID); + + var allListArray = []; + while (true) { + var i = strUserList.indexOf("&&&"); + if (i <= 0 ) { + break; + } + var strOneUser = strUserList.substring(0, i); + var strName = strOneUser.substring(0, strOneUser.indexOf("||")); + var strCertID = strOneUser.substring(strOneUser.indexOf("||") + 2, strOneUser.length); + allListArray.push({certName:strName, certID:strCertID}); + + if (custom.hardCertListID != "") { + var devType = xtxsync.GetDeviceInfo(strCertID, 7); + if (devType == "HARD") { + custom.pushOneDropListBox([{certName:strName, certID:strCertID}], custom.hardCertListID); + } + } + + if (custom.softCertListID != "") { + var devType = xtxsync.GetDeviceInfo(strCertID, 7); + if (devType == "SOFT") { + custom.pushOneDropListBox([{certName:strName, certID:strCertID}], custom.softCertListID); + } + } + var len = strUserList.length; + strUserList = strUserList.substring(i + 3, len); + } + + if (custom.allCertListID != "") { + custom.pushOneDropListBox(allListArray, custom.allCertListID); + } + } + + custom.setUserCertList = function(certListId, certType) { + var custom = xtxsync.custom; + + if (certType == CERT_TYPE_ALL || certType == undefined) { + custom.allCertListID = certListId; + } + + if (certType == CERT_TYPE_HARD) { + custom.hardCertListID = certListId; + } + + if (certType == CERT_TYPE_SOFT) { + custom.softCertListID = certListId; + } + custom.pushUserListToAllDroplist(xtxsync.SOF_GetUserList()); + } + + custom.setOnUsbKeyChangeCallBack = function(callback) { + xtxsync.custom.UsbkeyChangeFunc = callback; + } + + custom.setErrorReportFunc = function(errFunc) { + xtxsync.custom.errorReportFunc = errFunc; + } + + custom.autoLogoutCallBack = function(strUserList) { + var custom = xtxsync.custom; + if (strUserList.indexOf(custom.loginCertID) <= 0) { + custom.logoutFunc(); + } + } + + custom.defaultUsbkeyChange = function() { + var custom = xtxsync.custom; + custom.pushUserListToAllDroplist(xtxsync.SOF_GetUserList()); + + if (typeof custom.UsbkeyChangeFunc == 'function') { + custom.UsbkeyChangeFunc(); + } + + if (custom.loginCertID != "" && typeof custom.logoutFunc == 'function') { + custom.autoLogoutCallBack(xtxsync.SOF_GetUserList()); + } + } + + custom.getToken = function() { + return custom.loginToken; + } + + custom.setToken = function(token) { + custom.loginToken = token; + } +} + +return initCustomActions(xtxsync); +})(); + +// initialize xtxappcom object +(function() { + +function initXTXAppCOM(xtxsync) { + var util = xtxsync.util; + var custom = xtxsync.custom; + + xtxsync.XTXAppCOM = util.loadIECtl(xtxsync.xtx_clsid, "XTXAppObj", "SOF_GetVersion()"); + if (xtxsync.XTXAppCOM == null) { + custom.errorReportFunc("加载XTXAppCOM控件失败,请确认已正确安装BJCA证书应用环境!"); + return false; + } + var XTXAppCOM = xtxsync.XTXAppCOM; + + util.attachIEEvent("XTXAppObj", "onUsbkeyChange", xtxsync.custom.defaultUsbkeyChange); + + // get key pic interface + var GetPicObj = util.loadIECtl(xtxsync.getpic_clsid, "GetPicObj", "Hash('0')"); + if (GetPicObj == null) { + //custom.errorReportFunc("加载GetKeyPic控件失败,请确认已正确安装GetKeyPic控件!"); + } else { + XTXAppCOM.GetPic = function(strCertID) { + return GetPicObj.GetPic(strCertID); + } + XTXAppCOM.Hash = function(inData) { + return GetPicObj.Hash(inData); + } + XTXAppCOM.ConvertPicFormat = function(inData, type) { + return GetPicObj.ConvertPicFormat(inData, type); + } + XTXAppCOM.ConvertGif2Jpg = function(inData) { + return GetPicObj.ConvertGif2Jpg(inData); + } + XTXAppCOM.GetPic1 = function(strCertID) { + return GetPicObj.GetPic1(strCertID); + } + XTXAppCOM.ConvertPicSize = function(strPicture, w, h) { + return GetPicObj.ConvertPicSize(strPicture, w, h); + } + } + + // xtxversion interface + var XTXVersionOBJ = util.loadIECtl(xtxsync.xtx_version_clsid, "XTXVersionOBJ", "GetEnvVersion()"); + if (XTXVersionOBJ == null) { + //custom.errorReportFunc("加载XTXVersion控件失败,请确认已正确安装证书应用环境!"); + } else { + XTXAppCOM.GetEnvVersion = function() { + return XTXVersionOBJ.GetEnvVersion(); + } + } + + return true; +} + +function initXTXAppWebSocket(xtxsync) { + xtxsync.XTXAppWebSocket = xtxsync.util.loadWebSocketCtl("127.0.0.1:21051/xtxapp/", "127.0.0.1:21061/xtxapp/"); + if (xtxsync.XTXAppWebSocket == null) { + custom.errorReportFunc("连接XTXAppCOM服务失败,请确认已正确安装BJCA证书应用环境!"); + return false; + } + + return true; +} + +function initXTXAppObject(xtxsync) { + var util = xtxsync.util; + xtxsync.xtx_clsid = "3F367B74-92D9-4C5E-AB93-234F8A91D5E6"; + xtxsync.getpic_clsid = "3BC3C868-95B5-47ED-8686-E0E3E94EF366"; + xtxsync.xtx_version_clsid = "574887FB-22A5-488B-A49C-2CF25F56BE68"; + var getImplmentFunction; + + if (util.checkBrowserISIE()) { // IE + if (!initXTXAppCOM(xtxsync)) { + return false; + } + getImplmentFunction = function(methodInfo) { + if (methodInfo.inParams == '') { // 0 input param + window[methodInfo.funcName] = new Function('return xtxsync.XTXAppCOM.' + methodInfo.funcName + '();'); + } else { + window[methodInfo.funcName] = new Function(methodInfo.inParams, + 'return xtxsync.XTXAppCOM.' + methodInfo.funcName + '(' + methodInfo.inParams + ');'); + } + } + } else { // other brower + if (!initXTXAppWebSocket(xtxsync)) { + return false; + } + getImplmentFunction = function(methodInfo) { + if (methodInfo.inParams == '') { // 0 input param + window[methodInfo.funcName] = new Function( + "return xtxsync.util.ajaxSyncall('" + + methodInfo.clsid + "', '" + methodInfo.funcName + "', '" + methodInfo.outParamType + "');"); + } else { + window[methodInfo.funcName] = new Function(methodInfo.inParams, + "return xtxsync.util.ajaxSyncall('" + methodInfo.clsid + "', '" + + methodInfo.funcName + "','" + methodInfo.outParamType + "', [" + methodInfo.inParams + "]);"); + } + } + } + + var export_functions = [ + {funcName:'SOF_SetSignMethod', inParams:'SignMethod', outParamType:'number', clsid:xtxsync.xtx_clsid, aliasName:'SetSignMethod'}, + {funcName:'SOF_GetSignMethod', inParams:'', outParamType:'number', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SetEncryptMethod', inParams:'EncryptMethod', outParamType:'number', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_GetEncryptMethod', inParams:'', outParamType:'number', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_GetUserList', inParams:'', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'GetUserList'}, + {funcName:'SOF_ExportUserCert', inParams:'CertID', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'GetSignCert'}, + {funcName:'SOF_Login', inParams:'CertID, PassWd', outParamType:'bool', clsid:xtxsync.xtx_clsid, aliasName:'VerifyUserPIN'}, + {funcName:'SOF_GetPinRetryCount', inParams:'CertID', outParamType:'number', clsid:xtxsync.xtx_clsid, aliasName:'GetUserPINRetryCount'}, + {funcName:'SOF_ChangePassWd', inParams:'CertID, oldPass, newPass', outParamType:'bool', clsid:xtxsync.xtx_clsid, aliasName:'ChangeUserPassword'}, + {funcName:'SOF_GetCertInfo', inParams:'Cert, type', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'GetCertBasicinfo'}, + {funcName:'SOF_GetCertInfoByOid', inParams:'Cert, Oid', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'GetExtCertInfoByOID'}, + {funcName:'SOF_SignData', inParams:'CertID, InData', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'SignedData'}, + {funcName:'SOF_VerifySignedData', inParams:'Cert, InData, SignValue', outParamType:'bool', clsid:xtxsync.xtx_clsid, aliasName:'VerifySignedData'}, + {funcName:'SOF_SignFile', inParams:'CertID, InFile', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'SOF_SignFile'}, + {funcName:'SOF_VerifySignedFile', inParams:'Cert, InFile, SignValue', outParamType:'bool', clsid:xtxsync.xtx_clsid, aliasName:'VerifySignFile'}, + {funcName:'SOF_EncryptData', inParams:'Cert, InData', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'EncodeP7Enveloped'}, + {funcName:'SOF_DecryptData', inParams:'CertID, InData', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'DecodeP7Enveloped'}, + {funcName:'SOF_EncryptFile', inParams:'Cert, InFile, OutFile', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_DecryptFile', inParams:'CertID, InFile, OutFile', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SignMessage', inParams:'dwFlag, CertID, InData', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_VerifySignedMessage', inParams:'MessageData, InData', outParamType:'bool', clsid:xtxsync.xtx_clsid, aliasName:'VerifyDatabyP7'}, + {funcName:'SOF_GetInfoFromSignedMessage', inParams:'SignedMessage, type', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SignDataXML', inParams:'CertID, InData', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_VerifySignedDataXML', inParams:'InData', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_GetXMLSignatureInfo', inParams:'XMLSignedData, type', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_GenRandom', inParams:'RandomLen', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'GenerateRandom'}, + {funcName:'SOF_PubKeyEncrypt', inParams:'Cert, InData', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'PubKeyEncrypt'}, + {funcName:'SOF_PriKeyDecrypt', inParams:'CertID, InData', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'PriKeyDecrypt'}, + {funcName:'SOF_SecertSegment', inParams:'Secert, m, n, k', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SecertRecovery', inParams:'Seg', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_GetLastError', inParams:'', outParamType:'number', clsid:xtxsync.xtx_clsid}, + {funcName:'GetDeviceCount', inParams:'', outParamType:'number', clsid:xtxsync.xtx_clsid}, + {funcName:'GetAllDeviceSN', inParams:'', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'GetDeviceSNByIndex', inParams:'iIndex', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'GetDeviceInfo', inParams:'sDeviceSN, iType', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'ChangeAdminPass', inParams:'sDeviceSN, sOldPass, sNewPass', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'UnlockUserPass', inParams:'sDeviceSN, sAdminPass, sNewUserPass', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'GenerateKeyPair', inParams:'sDeviceSN, sContainerName, iKeyType, bSign', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'ExportPubKey', inParams:'sDeviceSN, sContainerName, bSign', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'ImportSignCert', inParams:'sDeviceSN, sContainerName, sCert', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'ImportEncCert', inParams:'sDeviceSN, sContainerName, sCert, sPriKeyCipher', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'ReadFile', inParams:'sDeviceSN, sFileName', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'readFile'}, + {funcName:'WriteFile', inParams:'sDeviceSN, sFileName, sContent, bPrivate', outParamType:'bool', clsid:xtxsync.xtx_clsid, aliasName:'writeFile'}, + {funcName:'IsContainerExist', inParams:'sDeviceSN, sContainerName', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'DeleteContainer', inParams:'sDeviceSN, sContainerName', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'ExportPKCS10', inParams:'sDeviceSN, sContainerName, sDN, bSign', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'InitDevice', inParams:'sDeviceSN, sAdminPass', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'AddSignInfo', inParams:'sUserPass', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_GetVersion', inParams:'', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_ExportExChangeUserCert', inParams:'CertID', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'GetExchCert'}, + {funcName:'SOF_ValidateCert', inParams:'Cert', outParamType:'number', clsid:xtxsync.xtx_clsid, aliasName:'ValidateCert'}, + {funcName:'GetENVSN', inParams:'sDeviceSN', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SetENVSN', inParams:'sDeviceSN, sEnvsn', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'IsDeviceExist', inParams:'sDeviceSN', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'GetContainerCount', inParams:'sDeviceSN', outParamType:'number', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SymEncryptData', inParams:'sKey, indata', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'EncryptData'}, + {funcName:'SOF_SymDecryptData', inParams:'sKey, indata', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'DecryptData'}, + {funcName:'SOF_SymEncryptFile', inParams:'sKey, inFile, outFile', outParamType:'bool', clsid:xtxsync.xtx_clsid, aliasName:'EncryptFile'}, + {funcName:'SOF_SymDecryptFile', inParams:'sKey, inFile, outFile', outParamType:'bool', clsid:xtxsync.xtx_clsid, aliasName:'DecryptFile'}, + {funcName:'SOF_GetLastErrMsg', inParams:'', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_Base64Encode', inParams:'sIndata', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_Base64Decode', inParams:'sIndata', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_HashData', inParams:'hashAlg, sInData', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_HashFile', inParams:'hashAlg, inFile', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'UnlockUserPassEx', inParams:'sDeviceSN, sAdminPin, sNewUserPass', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'DeleteOldContainer', inParams:'sDeviceSN', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'WriteFileEx', inParams:'sDeviceSN, sFileName, sContent', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'ReadFileEx', inParams:'sDeviceSN, sFileName', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'WriteFileBase64', inParams:'sDeviceSN, sFileName, sContent', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'DeleteFile', inParams:'sDeviceSN, sFileName', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_EncryptDataEx', inParams:'Cert, InData', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'Base64EncodeFile', inParams:'sInFile', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_GetRetryCount', inParams:'CertID', outParamType:'number', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_GetAllContainerName', inParams:'sDeviceSN', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'CreateSoftDevice', inParams:'sDeviceSN, sLabel', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'DeleteSoftDevice', inParams:'sDeviceSN, sPasswd', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'EnableSoftDevice', inParams:'enable, sDeviceSN', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SoftDeviceBackup', inParams:'sDeviceSN, sPasswd', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SoftDeviceRestore', inParams:'sDeviceSN, sPasswd, sInFilePath', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_Logout', inParams:'CertID', outParamType:'bool', clsid:xtxsync.xtx_clsid, aliasName:'Logout'}, + {funcName:'SetUserConfig', inParams:'type, strConfig', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SignByteData', inParams:'CertID, byteLen', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_VerifySignedByteData', inParams:'Cert, byteLen, SignValue', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'OTP_GetChallengeCode', inParams:'sCertID', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'ImportEncCertEx', inParams:'sDeviceSN, sContainerName, sCert, sPriKeyCipher, ulSymAlg', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_GetCertEntity', inParams:'sCert', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'GetCertEntity'}, + {funcName:'SOF_HMAC', inParams:'hashid, key, indata', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SignDataByPriKey', inParams:'sPriKey, sCert, sInData', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'ImportKeyCertToSoftDevice', inParams:'sDeviceSN, sContainerName, sPriKey, sCert, bSign', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'InitDeviceEx', inParams:'sDeviceSN, sAdminPass, sUserPin, sKeyLabel, adminPinMaxRetry, userPinMaxRetry', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SelectFile', inParams:'', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SignHashData', inParams:'CertID, b64ashData, hashAlg', outParamType:'string', clsid:xtxsync.xtx_clsid, aliasName:'SignHashData'}, + {funcName:'SOF_VerifySignedHashData', inParams:'Cert, b64ashData, SignValue, hashAlg', outParamType:'bool', clsid:xtxsync.xtx_clsid, aliasName:'VerifySignedHashData'}, + {funcName:'CheckSoftDeviceEnv', inParams:'', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'ImportPfxToDevice', inParams:'sDeviceSN, sContainerName, bSign, strPfx, strPfxPass', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_HashDataEx', inParams:'hashAlg, sInData, sCert, sID', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_HashFileEx', inParams:'hashAlg, inFile, sCert, sID', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'GetDeviceCountEx', inParams:'type', outParamType:'number', clsid:xtxsync.xtx_clsid}, + {funcName:'GetAllDeviceSNEx', inParams:'type', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_UpdateCert', inParams:'CertID, type', outParamType:'number', clsid:xtxsync.xtx_clsid}, + {funcName:'OpenSpecifiedFolder', inParams:'backupFilePath', outParamType:'', clsid:xtxsync.xtx_clsid}, + {funcName:'OTP_GetChallengeCodeEx', inParams:'sCertID, szAccount, money', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'Base64DecodeFile', inParams:'sInData, sFilePath', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'EnumFilesInDevice', inParams:'sDeviceSN', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'OTP_Halt', inParams:'sCertID', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_TSGenREQ', inParams:'b64Hash, hashAlg, bReqCert, policyID, b64Nonce, b64Extension', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_TSCompareNonce', inParams:'b64TSReq, b64TSAResp', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_TSGenPDFSignature', inParams:'b64TSAResp, b64OriPDFSignature', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_TSVerifyPDFSignature', inParams:'b64TSPDFSignature', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_TSGetPDFSignatureInfo', inParams:'b64TSPDFSignature, iType', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'OTP_GetState', inParams:'sCertID, bCert', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'OTP_GetSyncCode', inParams:'sCertID, ChallengeCode', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_IsLogin', inParams:'CertID', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_LoginEx', inParams:'CertID, PassWd, updateFlag', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'EnumSupportDeviceList', inParams:'', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'ExportPfxFromDevice', inParams:'sDeviceSN, sContainerName, bSign, strPfxPass', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SignHashMessage', inParams:'CertID, InHashData, hashAlg', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'ExportPfxToFile', inParams:'sDeviceSN, sContainerName, bSign, strPfxPass', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SignAPK', inParams:'CertID, strOriSignature', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'YZT_GenerateKeyPair', inParams:'sDeviceSN, sContainerName, iKeyTypeRSA, iKeyTypeSM2', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'YZT_ExportPubKey', inParams:'sDeviceSN, sContainerName, bSign', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'YZT_ImportSignCert', inParams:'sDeviceSN, sContainerName, sRSACert, sSM2Cert', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'YZT_ImportEncCert', inParams:'sDeviceSN, sContainerName, sRSACert, sRSAPriKeyCipher, ulRSASymAlg, sSM2Cert, sSM2PriKeyCipher, ulSM2SymAlg', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_ListenUKey', inParams:'Parm', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_EnableLoginWindow', inParams:'Parm', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SignEnvelope', inParams:'CertID, Cert, InData', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_UnSignEnvelope', inParams:'CertID, InData', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'BIO_MAKExportPKCS10', inParams:'sDeviceSN, iKeyType, sDN', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'BIO_MAKImportSignEncCert', inParams:'sDeviceSN, sSignCert, sEncCert, sPriKeyCipher', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'BIO_IssueDAKCert', inParams:'sDeviceSN, iKeyType, sDN', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'BIO_InfoCollect', inParams:'', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'BIO_GetBioInfo', inParams:'sDeviceSN', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_GetLastLoginCertID', inParams:'', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_ReadESealData', inParams:'CertID, ulKeyIndex, ulKeyAlgId, ulFlags', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_ReadKFXESealData', inParams:'CertID, ulKeyIndex, ulKeyAlgId, ulFlags', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SymDecryptFileToData', inParams:'sKey, inFile', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SignMessageBase64', inParams:'dwFlag, CertID, InData', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_VerifySignedMessageBase64', inParams:'MessageData, InData', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_VerifySignedHashMessage', inParams:'MessageData, InHashData', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SignDataBase64', inParams:'CertID, InData', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_VerifySignedDataBase64', inParams:'Cert, InData, SignValue', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_HashDataExBase64', inParams:'hashAlg, sInData, sCert, sID', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_GetProductVersion', inParams:'', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_UpdateCertEx', inParams:'CertID, PassWd', outParamType:'number', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_GetLastSignDataCertID', inParams:'CertID', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'BIO_SetUserConfig', inParams:'CertID, type, strConfig', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'BIO_InvokeCommand', inParams:'CertID, bstrCommand', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_ImportSymmKey', inParams:'CertID, ulKeyIndex, InData, ulFlags', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_WriteESealData', inParams:'CertID, InData, ulFlags', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_EPS_Encrypt', inParams:'CertID, ulKeyIndex, ulKeyAlgId, IVData, DivCount, DivComponent, InData, ulFlags', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_EPS_Decrypt', inParams:'CertID, ulKeyIndex, ulKeyAlgId, IVData, DivCount, DivComponent, InData, ulFlags', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_EPS_Mac', inParams:'CertID, ulKeyIndex, ulKeyAlgId, IVData, DivCount, DivComponent, InData, ulFlags', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_PriKeyDecryptEx', inParams:'CertID, InData', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_EPS_ReadESealData', inParams:'CertID, ulKeyIndex, ulKeyAlgId, ulFlags', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_EPS_WriteESealData', inParams:'CertID, InData, ulFlags', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'EnumESeal', inParams:'sDeviceSN', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'GetPicture', inParams:'bstrConName', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SignEnvelopeFile', inParams:'CertID, Cert, InFile, OutFile', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_UnSignEnvelopeFile', inParams:'CertID, InFile, OutFile', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOFX_EncryptFile', inParams:'CertID, Cert, InFile, OutFile, ulFlags', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOFX_DecryptFile', inParams:'CertID, InFile, OutFile, ulFlags', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'GetPic', inParams:'bstrConName', outParamType:'string', clsid:xtxsync.getpic_clsid}, + {funcName:'Hash', inParams:'inData', outParamType:'string', clsid:xtxsync.getpic_clsid}, + {funcName:'ConvertPicFormat', inParams:'inData, type', outParamType:'string', clsid:xtxsync.getpic_clsid}, + {funcName:'ConvertGif2Jpg', inParams:'inData', outParamType:'string', clsid:xtxsync.getpic_clsid}, + {funcName:'GetPic1', inParams:'bstrConName', outParamType:'string', clsid:xtxsync.getpic_clsid}, + {funcName:'ConvertPicSize', inParams:'bstrPic, w, h', outParamType:'string', clsid:xtxsync.getpic_clsid}, + {funcName:'GetEnvVersion', inParams:'', outParamType:'string', clsid:xtxsync.xtx_version_clsid}, + {funcName:'InitDeviceWithParam', inParams:'sDeviceSN, sAppName, sAdminPass, sUserPin, sKeyLabel, adminPinMaxRetry, userPinMaxRetry, createFileRights', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SignDataEx', inParams:'CertID, InData,signFlag', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_VerifySignedDataEx', inParams:'Cert, InData, SignValue,signFlag', outParamType:'bool', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SymEncryptDataEx', inParams:'sKey,sIV,indata', outParamType:'string', clsid:xtxsync.xtx_clsid}, + {funcName:'SOF_SymDecryptDataEx', inParams:'sKey,sIV,indata', outParamType:'string', clsid:xtxsync.xtx_clsid} + ]; + + for (var i = 0; i < export_functions.length; i++) { + getImplmentFunction(export_functions[i]); + xtxsync[export_functions[i].funcName] = window[export_functions[i].funcName]; + if (export_functions[i].aliasName) { + window[export_functions[i].aliasName] = window[export_functions[i].funcName]; + xtxsync[export_functions[i].aliasName] = window[export_functions[i].funcName]; + } + + } + + return true; +} + +return initXTXAppObject(xtxsync); +})(); + +/////////////////////////////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////// EXPORT VAR AND FUNCTIONS /////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////////////// +// const var +var CERT_TYPE_HARD = 1; +var CERT_TYPE_SOFT = 2; +var CERT_TYPE_ALL = 3; + +// set auto logout parameters +function SetAutoLogoutParameter(strCertID, logoutFunc) { + xtxsync.custom.setAutoLogoutParameter(strCertID, logoutFunc); +} + +// set user cert list id +function SetUserCertList(strListID, certType) { + xtxsync.custom.setUserCertList(strListID, certType); +} + +// set custom usbkeychange callback +function SetOnUsbKeyChangeCallBack(callback) { + xtxsync.custom.setOnUsbKeyChangeCallBack(callback); +} + +// set custom alert function +function SetAlertFunction(custom_alert) { + xtxsync.custom.setErrorReportFunc(custom_alert); +} + +// get custom userlogin token +function GetLoginToken() { + return xtxsync.custom.getToken(); +} + +function SetLoginToken(tokenData) { + return xtxsync.custom.setToken(tokenData); +} + +function GetUserListByType(strType) { // strType is 'HARD' or 'SOFT' + var strUserList = xtxsync.SOF_GetUserList(); + var strReturn = ""; + while (true) { + var i = strUserList.indexOf("&&&"); + if (i <= 0 ) { + break; + } + var strOneUser = strUserList.substring(0, i); + var strName = strOneUser.substring(0, strOneUser.indexOf("||")); + var strCertID = strOneUser.substring(strOneUser.indexOf("||") + 2, strOneUser.length); + var devType = xtxsync.GetDeviceInfo(strCertID, 7); + if (devType == strType) { + strReturn += (strName + "||" + strCertID + "&&&"); + } + var len = strUserList.length; + strUserList = strUserList.substring(i + 3, len); + }; + + return strReturn; +} + +//get usbKey user list +function GetUserList_USBKey(cb, ctx) { + return GetUserListByType("HARD", cb, ctx); +} + +//get soft user list +function GetUserList_Soft() { + return GetUserListByType("SOFT", cb, ctx); +} + +//sign data with pkcs7 format +function SignByP7(strCertID, strInData, bDetach) { + return xtxsync.SOF_SignMessage(bDetach ? 1 : 0, strCertID, strInData); +} + +//get symmitric key length +//because xtx and secxv2 secx default symmitric alg is no equal +function GetSymKeyLength() { + return 24; +} + +//get device type return SOFT or HARD +function GetDeviceType(strCertID) { + return xtxsync.GetDeviceInfo(strCertID, 7); +} + +// calculate file's hash +function HashFile(strFilePath) { + return xtxsync.SOF_HashFile(2/*sha1*/, strFilePath); +} + +function ParseDateString(strDate) { + var strYear = strDate.substring(0, 4); + var strMonth = strDate.substring(4, 6); + var strDay = strDate.substring(6, 8); + var strHour = strDate.substring(8, 10); + var strMin = strDate.substring(10, 12); + var strSecond = strDate.substring(12, 14); + var RtnDate = new Date(); + RtnDate.setFullYear(Number(strYear), Number(strMonth) - 1, Number(strDay)); + RtnDate.setHours(Number(strHour)); + RtnDate.setMinutes(Number(strMin)); + RtnDate.setSeconds(Number(strSecond)); + return RtnDate; +} + +//Form login +function xtxLogin(formName, strCertID, strPin,strServerCert, strServerRan, strServerSignedData) { + var objForm = eval(formName); + if (objForm == null) { + return false; + } + if (strCertID == null || strCertID == "") { + xtxsync.custom.errorReportFunc("请输入证书密码!"); + return false; + } + if (strPin == null || strPin == "") { + xtxsync.custom.errorReportFunc("请输入证书密码!"); + return false; + } + + //Add a hidden item ... + if (objForm.UserSignedData == null) { + objForm.insertAdjacentHTML("BeforeEnd", ""); + } + if (objForm.UserCert == null) { + objForm.insertAdjacentHTML("BeforeEnd", ""); + } + if (objForm.CertID == null) { + objForm.insertAdjacentHTML("BeforeEnd", ""); + } + if (objForm.ContainerName == null) { + objForm.insertAdjacentHTML("BeforeEnd", ""); + } + if (objForm.LoginToken == null) { + objForm.insertAdjacentHTML("BeforeEnd", ""); + } + + var bRet = xtxsync.SOF_Login(strCertID, strPin); + if (!bRet) { + var retryCount = xtxsync.SOF_GetPinRetryCount(strCertID); + if (retryCount > 0) { + xtxsync.custom.errorReportFunc("校验证书密码失败!您还有" + retryCount + "次机会重试!"); + } else if (retryCount == 0) { + xtxsync.custom.errorReportFunc("您的证书密码已被锁死,请联系BJCA进行解锁!"); + } else { + xtxsync.custom.errorReportFunc("登录失败!"); + } + return false; + } + + var strClientCert = xtxsync.SOF_ExportUserCert(strCertID); + if (strClientCert == "") { + xtxsync.custom.errorReportFunc("导出用户证书失败!"); + return false; + } + + var strNotBefore = xtxsync.SOF_GetCertInfo(strClientCert, 11); + var strNotAfter = xtxsync.SOF_GetCertInfo(strClientCert, 12); + var notBeforeDate = ParseDateString(strNotBefore); + var days = parseInt((notBeforeDate.getTime() - new Date().getTime()) / (1000*60*60*24)); + if (days > 0) { + xtxsync.custom.errorReportFunc("您的证书尚未生效!距离生效日期还剩" + days + "天!"); + return false; + } + + var notAfterDate = ParseDateString(strNotAfter); + var milliseconds = notAfterDate.getTime() - new Date().getTime(); + if (milliseconds < 0) { + xtxsync.custom.errorReportFunc("您的证书已过期,请尽快到北京数字证书认证中心办理证书更新手续!"); + return false; + } + + days = parseInt(milliseconds / (1000*60*60*24)); + if (days > 0 && days <= 60) { + xtxsync.custom.errorReportFunc("您的证书还有" + days + "天过期\n请您尽快到北京数字证书认证中心办理证书更新手续!"); + } else if (days == 0) { // 证书有效期天数小于1天 + var hours = parseInt(milliseconds / (1000*60*60)); + if (hours > 0) { + xtxsync.custom.errorReportFunc("您的证书还有" + hours + "小时过期\n请您尽快到北京数字证书认证中心办理证书更新手续!"); + } + // 证书有效期小于1小时 + var minutes = parseInt(milliseconds / (1000*60)); + if (minutes > 1) { + xtxsync.custom.errorReportFunc("您的证书还有" + minutes + "分钟过期\n请您尽快到北京数字证书认证中心办理证书更新手续!"); + } else { + xtxsync.custom.errorReportFunc("您的证书已过期,请尽快到北京数字证书认证中心办理证书更新手续!"); + return false; + } + } + + bRet = xtxsync.SOF_VerifySignedData(strServerCert, strServerRan, strServerSignedData); + if (!bRet) { + xtxsync.custom.errorReportFunc("验证服务器端信息失败!"); + return false; + } + + var clientSignData = xtxsync.SOF_SignData(strCertID, strServerRan); + if (clientSignData == "") { + xtxsync.custom.errorReportFunc("客户端签名失败!"); + return false; + } + + objForm.CertID.value = strCertID; + objForm.ContainerName.value = strCertID; + objForm.UserCert.value = strClientCert; + objForm.UserSignedData.value = clientSignData; + objForm.LoginToken.value = xtxsync.custom.getToken(); + return true; +} diff --git a/admin/src/App.vue b/admin/src/App.vue new file mode 100644 index 0000000..c33cf4d --- /dev/null +++ b/admin/src/App.vue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/admin/src/api/api.js b/admin/src/api/api.js new file mode 100644 index 0000000..70df43f --- /dev/null +++ b/admin/src/api/api.js @@ -0,0 +1,139 @@ +import axios from "@/tools/axios.js"; +//登录 +export const Login = (data) => { + return axios({url:import.meta.env.VITE_APP_API+'admin/login',data:data}) +} +//admin后台获取当前用户菜单 +export const GetAdminBaseMenuList = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/getBaseMenuList',data:data}) +} +//Token刷新 +export const TokenRefresh = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'tokenRefresh',data:data}) +} +//获取admin后台用户list +export const getAdminUserList = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/getUserList',data:data}) +} +//admin后台获取所有菜单列表 +export const GetAdminMenuList = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/getMenuList',data:data}) +} +//admin后台获取一级菜单 +export const GetFatherMenuList = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetFatherMenuList',data:data}) +} +//admin后台添加菜单 +export const AddMenu = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/AddMenu',data:data}) +} +//admin后台编辑菜单 +export const EditMenu = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/EditMenu',data:data}) +} +//admin后台组列表 +export const getGroupList = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/getGroupList',data:data}) +} +//admin后台修改组菜单 +export const GroupChangeMenu = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GroupChangeMenu',data:data}) +} +//admin后台添加组 +export const SaveGroup = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/SaveGroup',data:data}) +} +//admin后台保存用户信息 +export const SaveSystemUserInfo = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/SaveSystemUserInfo',data:data}) +} +//admin后台获取用户详细信息 +export const GetSystemUserDetail = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetSystemUserDetail',data:data}) +} +//admin后台修改密码 +export const adminChangePwd = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/adminChangePwd',data:data}) +} +//admin后台获取登录用户基本信息 +export const GetBaseAdminUserInfo = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetBaseUserInfo',data:data}) +} +//admin后台管理员查询分组使用的菜单 +export const AdminGetGroupMenuList = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetGroupMenuList',data:data}) +} + +//admin后台创建体检日历 +export const CreateCalendar = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CreateCalendar',data:data}) +} +//admin后台获取日历列表 +export const CalendarGetList = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CalendarGetList',data:data}) +} +//admin后台删除日历列表 +export const CalendarDel = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CalendarListDel',data:data}) +} +//admin后台更新日历 +export const CalendarChangeInfo = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CalendarChangeInfo',data:data}) +} +//admin后台更新日历 +export const CheckMenuAuth = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CheckMenuAuth',data:data}) +} +//上传图片 +// export const UpFile = (data={}) => { +// return axios({url:import.meta.env.VITE_APP_API+'v1/UpFile',data:data}) +// } +export const UpFileUrl= () => { + return import.meta.env.VITE_APP_API+'v1/UpFile' +} + +//admin后台修改自身用户信息 +export const ChangInfo = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ChangInfo',data:data}) +} +//获取站点后台配置信息 +export const GetConfigInfo = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetConfigInfo',data:data}) +} +//保存后台配置信息 +export const SaveConfigInfo = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/SaveConfigInfo',data:data}) +} +//获取日志列表 +export const SystemLogGetList = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/SystemLogGetList',data:data}) +} +//获取日志表名 +export const GetLogTableName = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetLogTableName',data:data}) +} + +//保存站点机构信息 +export const WebSiteSave = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/WebSiteSave',data:data}) +} +//获取站点机构列表 +export const WebSiteGetList = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/WebSiteGetList',data:data}) +} +//获取站点机构详情 +export const WebSiteGetDetail = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/WebSiteGetDetail',data:data}) +} +//保存医院信息 +export const HospitalSave = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/HospitalSave',data:data}) +} +//获取医院列表 +export const HospitalGetList = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/HospitalGetList',data:data}) +} +//获取医院基本信息 +export const GetBaseInfoDetail = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetBaseInfoDetail',data:data}) +} \ No newline at end of file diff --git a/admin/src/assets/backg_l.jpg b/admin/src/assets/backg_l.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a86cc85bbdb7c82921fa51f76bda3f2cf7bb3f91 GIT binary patch literal 159532 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 z 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 g^pTF#c^yk?tm#g`iu{OWEAA@>k#c|2XKoF#rGn literal 0 HcmV?d00001 diff --git a/admin/src/assets/base.css b/admin/src/assets/base.css new file mode 100644 index 0000000..f748cd4 --- /dev/null +++ b/admin/src/assets/base.css @@ -0,0 +1,92 @@ +/* color palette from */ +:root { + --vt-c-white: #ffffff; + --vt-c-white-soft: #f8f8f8; + --vt-c-white-mute: #f2f2f2; + + --vt-c-black: #181818; + --vt-c-black-soft: #222222; + --vt-c-black-mute: #282828; + + --vt-c-indigo: #2c3e50; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); + --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.66); + --vt-c-text-dark-1: var(--vt-c-white); + --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); + --vt-c-border-light1: #eee; + --vt-c-border-dark1: #656565; +} + +/* semantic color variables for this project */ +:root { + /* --color-background: var(--vt-c-white); */ + --color-background-soft: var(--vt-c-white-soft); + --color-background-mute: var(--vt-c-white-mute); + + --color-border: var(--vt-c-divider-light-2); + --color-border-hover: var(--vt-c-divider-light-1); + + --color-heading: var(--vt-c-text-light-1); + --color-text: var(--vt-c-text-light-1); + + --section-gap: 160px; + + --color-border1:var(--vt-c-border-light1); +} + +@media (prefers-color-scheme:dark) { + :root { + --color-background: var(--vt-c-black); + --color-background-soft: var(--vt-c-black-soft); + --color-background-mute: var(--vt-c-black-mute); + + --color-border: var(--vt-c-divider-dark-2); + --color-border-hover: var(--vt-c-divider-dark-1); + + --color-heading: var(--vt-c-text-dark-1); + --color-text: var(--vt-c-text-dark-2); + + --color-border1:var(--vt-c-border-dark1); + } +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + font-weight: normal; +} + +body { + min-height: 100vh; + color: var(--color-text); + background: var(--color-background); + transition: + color 0.5s, + background-color 0.5s; + line-height: 1.6; + font-family: + Inter, + -apple-system, + BlinkMacSystemFont, + 'Segoe UI', + Roboto, + Oxygen, + Ubuntu, + Cantarell, + 'Fira Sans', + 'Droid Sans', + 'Helvetica Neue', + sans-serif; + font-size: 15px; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/admin/src/assets/loginBackg.png b/admin/src/assets/loginBackg.png new file mode 100644 index 0000000000000000000000000000000000000000..cc56c09237476aa45b3a5f0ff293773f1c080cfc GIT binary patch literal 245943 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 v! diff --git a/admin/src/assets/main.css b/admin/src/assets/main.css new file mode 100644 index 0000000..a208cea --- /dev/null +++ b/admin/src/assets/main.css @@ -0,0 +1,35 @@ +@import './base.css'; + +#app { + /* max-width: 1280px; */ + margin: 0 auto; + /* padding: 2rem; */ + + font-weight: normal; +} + +a, +.green { + text-decoration: none; + color: hsla(160, 100%, 37%, 1); + transition: 0.4s; +} + +@media (hover: hover) { + a:hover { + background-color: hsla(160, 100%, 37%, 0.2); + } +} +/* +@media (min-width: 1024px) { + body { + display: flex; + place-items: center; + } + + #app { + display: grid; + grid-template-columns: 1fr 1fr; + padding: 0 2rem; + } +} */ diff --git a/admin/src/assets/user.jpg b/admin/src/assets/user.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a994e90685776bb4558e0fb6792539c1c134cad3 GIT binary patch literal 36407 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 +defineProps({ + msg: { + type: String, + required: true + } +}) + + + + + diff --git a/admin/src/components/IconList.vue b/admin/src/components/IconList.vue new file mode 100644 index 0000000..291d417 --- /dev/null +++ b/admin/src/components/IconList.vue @@ -0,0 +1,66 @@ + + + + + \ No newline at end of file diff --git a/admin/src/components/TheWelcome.vue b/admin/src/components/TheWelcome.vue new file mode 100644 index 0000000..dab9536 --- /dev/null +++ b/admin/src/components/TheWelcome.vue @@ -0,0 +1,88 @@ + + + diff --git a/admin/src/components/WelcomeItem.vue b/admin/src/components/WelcomeItem.vue new file mode 100644 index 0000000..ac366d0 --- /dev/null +++ b/admin/src/components/WelcomeItem.vue @@ -0,0 +1,86 @@ + + + diff --git a/admin/src/components/icons/IconCommunity.vue b/admin/src/components/icons/IconCommunity.vue new file mode 100644 index 0000000..2dc8b05 --- /dev/null +++ b/admin/src/components/icons/IconCommunity.vue @@ -0,0 +1,7 @@ + diff --git a/admin/src/components/icons/IconDocumentation.vue b/admin/src/components/icons/IconDocumentation.vue new file mode 100644 index 0000000..6d4791c --- /dev/null +++ b/admin/src/components/icons/IconDocumentation.vue @@ -0,0 +1,7 @@ + diff --git a/admin/src/components/icons/IconEcosystem.vue b/admin/src/components/icons/IconEcosystem.vue new file mode 100644 index 0000000..c3a4f07 --- /dev/null +++ b/admin/src/components/icons/IconEcosystem.vue @@ -0,0 +1,7 @@ + diff --git a/admin/src/components/icons/IconSupport.vue b/admin/src/components/icons/IconSupport.vue new file mode 100644 index 0000000..7452834 --- /dev/null +++ b/admin/src/components/icons/IconSupport.vue @@ -0,0 +1,7 @@ + diff --git a/admin/src/components/icons/IconTooling.vue b/admin/src/components/icons/IconTooling.vue new file mode 100644 index 0000000..660598d --- /dev/null +++ b/admin/src/components/icons/IconTooling.vue @@ -0,0 +1,19 @@ + + diff --git a/admin/src/main.js b/admin/src/main.js new file mode 100644 index 0000000..e98a880 --- /dev/null +++ b/admin/src/main.js @@ -0,0 +1,23 @@ +import { createApp } from 'vue' +import { createPinia } from 'pinia' +import ElementPlus from 'element-plus' +import 'element-plus/dist/index.css' +import 'element-plus/theme-chalk/dark/css-vars.css' +import './assets/main.css' +import './style/dark/css-vars.css' +import * as ElementPlusIconsVue from '@element-plus/icons-vue' +import App from './App.vue' +import router from './router' +import zhCn from 'element-plus/dist/locale/zh-cn.mjs' + + +const app = createApp(App) +for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component) +} +app.use(ElementPlus, { + locale: zhCn, +}) +app.use(createPinia()) +app.use(router) +app.mount('#app') diff --git a/admin/src/router/index.js b/admin/src/router/index.js new file mode 100644 index 0000000..7607b92 --- /dev/null +++ b/admin/src/router/index.js @@ -0,0 +1,137 @@ +import { + createRouter, + createWebHashHistory +} from 'vue-router' + + + +import Login from '../views/Login.vue' +import Index from '../views/Index.vue' +import MenuList from '../views/SystemMngr/Menu/List.vue' +import AdminGroupList from '../views/SystemMngr/Group/List.vue' +import AdminUserList from '../views/SystemMngr/User/List.vue' +import AdminChangPwd from '../views/SystemMngr/User/ChangPwd.vue' +import Dashboard from '../views/MedicalCenter/Dashboard.vue' + + +const router = createRouter({ + history: createWebHashHistory(import.meta.env.BASE_URL), + routes: [{ + path: '/', + name: 'Login1', + component: Login, + meta: { + requiresAuth: false + } + }, + { + path: '/login', + name: 'Login', + component: Login, + meta: { + requiresAuth: false + } + }, { + path: '/index', + name: 'Index', + component: Index, + children: [{ + path: '/dashboard', + name: 'Dashboard', + component: Dashboard, + meta: { + title: '数据面板' + } + }, { + path: '/menuList', + name: 'menuList', + component: MenuList, + meta: { + title: '菜单管理' + } + }, { + path: '/groupMngr', + name: 'AdminGroupList', + component: AdminGroupList, + meta: { + title: '组管理' + } + }, { + path: '/adminUserList', + name: 'AdminUserList', + component: AdminUserList, + meta: { + title: '系统用户管理' + } + }, { + path: '/adminChangPwd', + name: 'AdminChangPwd', + component: AdminChangPwd, + meta: { + title: '用户中心' + } + },{ + path: '/systemMngr/systemConfig', + name: 'SystemMngrSystemConfig', + component: () => import('../views/SystemMngr/SystemConfig.vue'), + meta: { + title: '系统参数设置' + } + },{ + path: '/systemMngr/systemLog', + name: 'SystemMngrsystemLog', + component: () => import('../views/SystemMngr/SystemLog.vue'), + meta: { + title: '系统日志' + } + },{ + path: '/organizationMngr/website', + name: 'OrganizationWebSite', + component: () => import('../views/OrganizationMngr/WebSite.vue'), + meta: { + title: '站点机构' + } + },{ + path: '/organizationMngr/hospital', + name: 'OrganizationHospital', + component: () => import('../views/OrganizationMngr/HospitalMngr.vue'), + meta: { + title: '医院管理' + } + }] + }, + + ] +}) + + +import { + CheckMenuAuth +} from "@/api/api.js"; +import { + ElMessage +} from 'element-plus' + + +router.beforeEach((to, from, next) => { + console.log(to.meta.requiresAuth) + const url = to.path + if (to.meta.requiresAuth == false) { + next() + } else { + const NewUrl = url.substring(1) + CheckMenuAuth({ + url: NewUrl + }).then(res => { + if (res.status) { + next(); + } else { + ElMessage.error(res.msg) + next('/'); + } + }) + } +}) + + +export default router \ No newline at end of file diff --git a/admin/src/stores/counter.js b/admin/src/stores/counter.js new file mode 100644 index 0000000..b6757ba --- /dev/null +++ b/admin/src/stores/counter.js @@ -0,0 +1,12 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' + +export const useCounterStore = defineStore('counter', () => { + const count = ref(0) + const doubleCount = computed(() => count.value * 2) + function increment() { + count.value++ + } + + return { count, doubleCount, increment } +}) diff --git a/admin/src/stores/index.js b/admin/src/stores/index.js new file mode 100644 index 0000000..eac9e1a --- /dev/null +++ b/admin/src/stores/index.js @@ -0,0 +1,14 @@ +import { ref } from 'vue' +import { defineStore } from 'pinia' + +export const usePinia = defineStore('usePinia', () => { +//主题 + const theme=ref('light') + const themeChange=(v)=>{ + theme.value=v + } + + + + return { theme,themeChange} +}) diff --git a/admin/src/style/dark/css-vars.css b/admin/src/style/dark/css-vars.css new file mode 100644 index 0000000..1958f18 --- /dev/null +++ b/admin/src/style/dark/css-vars.css @@ -0,0 +1,15 @@ +html { + /* 自定义深色背景颜色 */ + + --color-background:#f5f7f9; + --color-background2:#fff; + --color-table-th-background:#f4f4f4; +} +html.dark { + /* 自定义深色背景颜色 */ + --color-border1: #2b2b2b; + --color-text:#cfd3dc; + --color-background:#181818; + --color-background2:#1d1d1d; + --color-table-th-background:#363636; +} \ No newline at end of file diff --git a/admin/src/tools/Tools.js b/admin/src/tools/Tools.js new file mode 100644 index 0000000..c55dc5e --- /dev/null +++ b/admin/src/tools/Tools.js @@ -0,0 +1,3 @@ +export function ToUrl(url){ + window.location.href=url +} \ No newline at end of file diff --git a/admin/src/tools/axios.js b/admin/src/tools/axios.js new file mode 100644 index 0000000..0483366 --- /dev/null +++ b/admin/src/tools/axios.js @@ -0,0 +1,117 @@ +import axios from 'axios' + + + + +//请求拦截器 +axios.interceptors.request.use( + config => { + config.headers.Authorization = 'Bearer ' + sessionStorage.getItem("token") + config.method = 'POST' + return config + }, + err => { + return Promise.reject(error) + } +) +//响应拦截器 +axios.interceptors.response.use( + async response => { + const res = response.data + console.log(response) + if (res.code !== 200) { + if (res.code == 10001) { //token验证出错 + window.location.href = "./#/login" + } + if (res.code == 10002) { //token验证超时 + //console.log(response.config); + var ss = '' + await TokenRefresh().then(async data => { + // // 使用最外层请求的返回值 + // //console.log(data) + if (data == false) { + window.location.href = "./#/login" + } + if (data == true) { + // console.log("刷新成功"); + ss = await axios(response.config) + // console.log("再次支持上此操作"); + + } + }).catch(error => { + console.log(error); + }); + //await TT(); + return ss + //console.log('我是后面的'); + + } + if (res.code == 10003) { //无访问此接口权限 + ElMessageBox.confirm( + '无权限', + '通知', { + confirmButtonText: 'OK', + cancelButtonText: 'Cancel', + type: 'warning', + showCancelButton: false, + showClose: false, + } + ) + .then(() => { + // window.location.href = "/#/login" + }) + .catch(() => { + + }) + return false + } + return Promise.reject(res.msg || 'Error').catch(err => { + console.log(err) + }) + + } else { //成功返回数据 + + return res + + + } + }, + error => { + return Promise.reject(error) + } +) +const instance = axios.create({ + // 其他配置项 + // ... + // 禁用请求拦截器 + interceptors: false +}); + +function TokenRefresh() { + + console.log("执行:TokenRefresh") + return new Promise((resolve, reject) => { + instance({ + method: 'post', + url: import.meta.env.VITE_APP_API + 'tokenRefresh', + headers: { + Authorization: 'Bearer ' + sessionStorage.getItem("refreshToken") + }, + data: {} + }).then(function(res) { + // console.log('获取到新token'); + if (res.data.status) { + sessionStorage.setItem('token', res.data.token); + sessionStorage.setItem('refreshToken', res.data.refresh_token); + + resolve(true); + } else { + + resolve(false); + } + }); + }) + +} + +export default axios \ No newline at end of file diff --git a/admin/src/views/AboutView.vue b/admin/src/views/AboutView.vue new file mode 100644 index 0000000..756ad2a --- /dev/null +++ b/admin/src/views/AboutView.vue @@ -0,0 +1,15 @@ + + + diff --git a/admin/src/views/HomeView.vue b/admin/src/views/HomeView.vue new file mode 100644 index 0000000..6bb706f --- /dev/null +++ b/admin/src/views/HomeView.vue @@ -0,0 +1,9 @@ + + + diff --git a/admin/src/views/Index.vue b/admin/src/views/Index.vue new file mode 100644 index 0000000..5c2bedf --- /dev/null +++ b/admin/src/views/Index.vue @@ -0,0 +1,330 @@ + + + + + + \ No newline at end of file diff --git a/admin/src/views/Login.vue b/admin/src/views/Login.vue new file mode 100644 index 0000000..b905173 --- /dev/null +++ b/admin/src/views/Login.vue @@ -0,0 +1,156 @@ + + + + + \ No newline at end of file diff --git a/admin/src/views/MedicalCenter/Dashboard.vue b/admin/src/views/MedicalCenter/Dashboard.vue new file mode 100644 index 0000000..b47e6bb --- /dev/null +++ b/admin/src/views/MedicalCenter/Dashboard.vue @@ -0,0 +1,173 @@ + + + + + \ No newline at end of file diff --git a/admin/src/views/OrganizationMngr/HospitalMngr.vue b/admin/src/views/OrganizationMngr/HospitalMngr.vue new file mode 100644 index 0000000..f2b1263 --- /dev/null +++ b/admin/src/views/OrganizationMngr/HospitalMngr.vue @@ -0,0 +1,208 @@ + + + + + \ No newline at end of file diff --git a/admin/src/views/OrganizationMngr/WebSite.vue b/admin/src/views/OrganizationMngr/WebSite.vue new file mode 100644 index 0000000..4a331e3 --- /dev/null +++ b/admin/src/views/OrganizationMngr/WebSite.vue @@ -0,0 +1,184 @@ + + + + + \ No newline at end of file diff --git a/admin/src/views/SystemMngr/Group/List.vue b/admin/src/views/SystemMngr/Group/List.vue new file mode 100644 index 0000000..e6d446a --- /dev/null +++ b/admin/src/views/SystemMngr/Group/List.vue @@ -0,0 +1,159 @@ + + + + + \ No newline at end of file diff --git a/admin/src/views/SystemMngr/Menu/List.vue b/admin/src/views/SystemMngr/Menu/List.vue new file mode 100644 index 0000000..55753d6 --- /dev/null +++ b/admin/src/views/SystemMngr/Menu/List.vue @@ -0,0 +1,173 @@ + + + + + \ No newline at end of file diff --git a/admin/src/views/SystemMngr/SystemConfig.vue b/admin/src/views/SystemMngr/SystemConfig.vue new file mode 100644 index 0000000..3a861b1 --- /dev/null +++ b/admin/src/views/SystemMngr/SystemConfig.vue @@ -0,0 +1,129 @@ + + + + + + \ No newline at end of file diff --git a/admin/src/views/SystemMngr/SystemLog.vue b/admin/src/views/SystemMngr/SystemLog.vue new file mode 100644 index 0000000..5672993 --- /dev/null +++ b/admin/src/views/SystemMngr/SystemLog.vue @@ -0,0 +1,158 @@ + + + + + \ No newline at end of file diff --git a/admin/src/views/SystemMngr/User/ChangPwd.vue b/admin/src/views/SystemMngr/User/ChangPwd.vue new file mode 100644 index 0000000..c8f069f --- /dev/null +++ b/admin/src/views/SystemMngr/User/ChangPwd.vue @@ -0,0 +1,197 @@ + + + + + + + \ No newline at end of file diff --git a/admin/src/views/SystemMngr/User/List.vue b/admin/src/views/SystemMngr/User/List.vue new file mode 100644 index 0000000..85eef22 --- /dev/null +++ b/admin/src/views/SystemMngr/User/List.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/admin/vite.config.js b/admin/vite.config.js new file mode 100644 index 0000000..0439e10 --- /dev/null +++ b/admin/vite.config.js @@ -0,0 +1,33 @@ +import { + fileURLToPath, + URL +} from 'node:url' + +import { + defineConfig +} from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + base: "./", + plugins: [ + vue(), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + }, + server: { + host: "0.0.0.0", + port: 5174, + proxy: { + '/api': { + target: 'http://tijian-composite/api', // 实际的API服务器地址 + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, '') // 如果API地址有前缀,可以进行转写 + } + } + } +}) \ No newline at end of file

MR!a49dG)T?;`n3OtHIHOx$E&cFBVYT_` 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 lfTv(WX zP{C5j--aHLZESMXz3RzWB4`JmIXeGRLFA&mN?}{ZloVm{$CSV!VT)EHB*+K%T|Yd7 z4xL2?8AOec2EM~E&+T^OVAH-b(&Q(1k7l(Fc_*L}+EwTOZ%Q_IZugkyDbR2lSMmPK z8AW(KIYHG^n}ywJZe=s0ns?2@2+z|lS4Df;6x{?_4yN{mfBl$x0?9b$6^CWd=yVt= z3NoK~|D=_~wB(d;`v}%m(t4OF{W-;0SSmHD4)#nHuSul+dc=c2$a~3tX0aAS|9G$C zhbg?0f5Wbz7837li$}FC+xBI=vTUJ4E%ciRrZKHR^EOpVF9!nejs0j{vZF?3;_I<* z{R%uY_a|rie;;mq&y|?AGBz|UnsNC`3k-cHl}!kH0HCfwE)mjiI&f1Y{@8ip{|PH1;mTOl{~c=C*>A*3S3C7I_!S?jKF+pyLrKgT4P6?peE!pWs~ml{nbeNK z7Ybw(i1S&TBA#Te2Fs&+uYToynoU18s*3)>SA^64TLxo3GQD`j1tCyNtc_U_@f7l+ z3JwNd^1KOpQ~albfEgu~MjxNshv=&QaygkX2Oc#Jy}@pr#21%Nt{NE)0#s6Y!Ip_) z;ES5$fT1WKSzpa}R(sOm|2K5N zeq4+vS_|#IG^;Uy7&n_#GPGjzl`e=x1~XqfnGX~3zqV*;vi%o{ZMihPB23%RMm05V zJnSM+_`KDHGXa0U1G0epduRt;W{RLHB{IN#hxXzFo|B-i4=jW=JAU3M zd7jrnMXO5ZiYSAt-X%Vo7gv($>`dbSU6x($Q{=`xGZy)#F+ROw`OQV-j_?2}SR6bF zPfbq{TD+=Ain1I#aHn|NDoC_dRyV=@uv5KHmsBKpdkgo3&I8(7rXoqTV_N4>#ro}M z8Euz5?Ecb`UcyYFr}-|3UkjY`7DjwzUPhJK31@hJ>-7LqVg6S^-^aiYddfu;f`{Mg zXyp&}`8oo1RrffEUQHQsZXJ`!TKfpp*L!!9$4xG%C%uK?Zw2`hVPXqWc=1T!z(#ar z31X;0c17QKC}QY*E#+IOUHJ0+YXcqo?tqEUIT`nSEUPS?HIl2?4pRmgi3YQ`E=~!l zv{=gRYuy+gDr(${vlrB#Z0Vwj*&gJ4>w7CG7t{g3BRI+wJu`>bkf`+|ZrJ ztCn{ftQp3D`lx9CoE@6rNt*1y$|1eIv(xL)o_w+so9{M~#@DxMuU9(z^)Bu!5w$bD zxcF1wVkh+NTx0=qOTUrFK-IrJ2pRpl!SA9|HA5KbF{n0&z0Fx6pr-Lqh`H{m3%e%T z+El6j`@3y%i5V@AGIOyOtJ}lkB78KXkL!)W4{epDgBg4je0Efr7qRS_3_pIp)?7=& zN2VV%pa)6=0p&Ly{Ai9PL@&mBN^k86ERG|4^ZGpP!aK7&!|;Ld23w;CQgg@UqiJ!w zwz@Q74Bu4m&?|AYJ%czp)&+d{y8FF4Et?t{t@Fn&Iv`+Q@_fUk!(|V<FHslh*rKjdAY&9=fDRWPn|Kgs=2fuy1RK37eVLW90bVH?*oryCg~|3$ql9}JCtJw znsOc#ce>vQJIMY}?V|jzf#gEw=e?U~oZA@tu0E+Nl3{kcx34&pQ><^nbMv|t$(oxi z*a`nypmbiM;qByTPNPBvhai`Li9)DEYrltyaf8`HEoXyutkQy6|La6zRE#$31 z$S_QjVOos=O{?FZ>i2h}#F50G8n@IKk9_lHKkO;(0@{~$OqHx!-A@YxSNyu>wmBUN%4Q1l&cH06-Tcnqa+c!}bv=N(k=lMb-*dWy zDK=^ndQ7m@d?*-)9I~x7*$6RP||xyRbE7A%`r-^df0kj9xmvgSt$dk&91R#5BqLAh22=vU~BP*sX5z_OTS% z{A0<6wl4`pB`E#-#vJcv-qdc=w#=xq)D#qV~-LX=YqHKCSL8*~SSw0+?FJ5Dxx7#KMUrfAIyrPEF zsBI;QQUDPe5ik$PPWIRnQfUoM7a+MNv)v=mNBT+2(mqOQTZSuC*xUIhhUkSmT{3v1 zZ@8`cfs#@%i$B%-tSmC{711(QY^J`mApqg%!lyTkt&rNyL@#le13R#}4<4tn`Cre` z`#+M(HB86R`)_@6VpG28RzgC#KI4XA19J{}*QXk|_ES%)PFF?zqyELka~wow9y0$Q zfJ1y^sFs>zjagr@?4F~;O?A!C=vTeVBPoSC(7JAj^L%Q6e@>G_laoM?!@SfL2%7IAg*ubA$~l56Qferc<7*{unLiBHYgzFm)Qf zLIvUp{xMYG9mK2-=870Y{RciHSfop$?Vm1MbfEBRX)vYD=_<$b1Xgw_P)sb2j5^_` zna~oD2_+POvcFK|owJu`q25p{_}=YsH;P52a{8E8SP&}8+gJ8Uy^ZlGjSrRC{}bIL zB#xB{Z>MY2-sAQ!mC`tKIvhanC;cU}2||z3-y+4?=M$bnpva~^pF{dc+dXHi?#gE- zb%aIdsYkco?U7AuS7xmm2U1`U(k|7EURU(_|6+d`V z_PNrJboz6$DjK_$eW!7z`W48n8*|uu0`0xlaf?#}XKa6~Nw1S&9H=#qT^>4i6x)%t z9#D_V26Iv#QUV{%Zz1$~>&CGMu0@q!9qg7j=c6zQ*SM9Y#=Ktb)ZJG*9eLy-_tZO& z@H!P&&Pma-@#Aw5&l-@~{8}xOM*QhP-g=yRY}TtOB$5-?BW`iV{a8GkK#c{cN>I>M zCQan!rdE*CzU1^&FR3g~e$e-c0c~WzH#Di5cTfKROPw$cIaooqv;_C{G3=|I?sjZ{ zZYk%k6Z71U3jT@@ZdhD9KDiZphGYOn{S6fe0@aX@R$lSEZETt-d#JemdKnMvq@q`u+T%$7p>oa) zKPkJv+=(;g{;(%e?fYaGm_ptZ>>xQ@-|ewSzPwM%D)}o<5%S6ixVA)XrT&^bq#tyx z+ng%&FxXNt{L{NvalxzC36E-qOEs3uDY+Z;=>PoxN;^sCN;7iy%IgVfdWRV!bH#?j zo~rHcGe}i#@b)4iXRZiW^2kZmi;Oi?{iz2jYZ8Ip@ojEDcZl|gAh8b%Y|`9946|OuJqqtlCrE+BD6>y_R2L}cf7N+k zkdf(5xgTgDW6@vg9^+^e$7ClldQ|DnTN)&v4pLJ?H9vb~$aPRar$InQoH*=9hTjR& zuU|>3(`uZHR3V}0i!ow>w`c-vTf3c;L;P9lbR=*&V4bPm>VcJuqn)6P!Drb+U8_Gu z$@P-wjU$(}y6J#;M)wT?`#c55a-@KJp_joeu$&ZCwD@_Bd8$>x;xOtBiho+_+Ml!s zyXj(0E*@HlKYw_Ik&^Khu4RZu-9|=kyr{5?Ahn=_^cQtFmfBWz;mCW?RoJ)J8#VOP z&e{2w%;Tt#|KK*^~#F`27mkxweAdfrXkFQXiyLPFTt-xqv7<#EOu2W4hd1{ zZ;fnB;$w6Eydfv>DcbrYZ?!&^-v_lW%BhFaKc_J!fQ#^NS&_do3sxUCu$>{yp*)Uc z%wf?SL_haMx1u>=1`t=nX+&76E{ym66FD-~zv8bcNY%=6f{S}#A0D7QD5L5R-m%eu zPON2Pgn@|=>Wb+`g`LW6p#jL25i_Lm>UPiVCBzp!%(Z!JCAZA*2#wDB+(Ft!h1>8Q z#Qycj|1K8V2>*pX)&~(|{mB@2!T-Xi?y*)bHmj2)%IgNBhxkj;AKJZ!DqnEJaJiYNskg6E-@i{NC<5b?Hl$bBv;+2J zPmi6>m0^+rFYoH~7HuUI;vTw3?C{CVh;DJ^sI{aEp5H|~3jcgJNIrRzI|eH2_1(J)7-c!A^X;FkQp0y1z9|$e_LG-hFo7O`AG< zh~|Mk@bq7wmZ9#@@?m)RWG4%z;sKTbF^bJO?Z$*JRhazgq0wib>y2a3;@_DGcp1!Z zn$@7PbFVlz?rPSi>!05{R;gIJQ z?4*>xxievB5$UG1fJ1f*0+uz>*@Wni$kGO%(<-TB9Lq)Qvaq*Id-`2gOdpcO4pv!b z(Q%I%y^Nf!9_2*RYKl}LiL6~3HD24RJF7HIUR7nnoj!axxc#3l?PbrMWga3P%h~s=HI_ z8{rzJ_mzil+%gc;>#^GqwTOr*!n9Kb9phk)%dGVpTgTzdnoGojg~XIP_QE8O3m@w!Pv35j~parMSu{ z1Yhu3Q;o|hdgbO21XcKvxh;z;2=xzl^5L9?48UkZNp(97G@j7M>*kF?jOg6*rio*H z0%am4w{JPYq)6Ozzi+L3%k4_0W}XCg+r6t(?CpI3N));RYStsi0v`)Je*m!G1YLrw zmx4PT%Z7MMJQPUmw!4})!8q@`=SV+sbT|ZNFiF@K6k#OW0H7pF7MDe+;Xt^5Fh(Go z1(>^z3vVWz;DDIqFtR=)4#{4`a{qsLjHQL_tG_<)?@&@yu$u&ea~aeGF}MTx-W zy1t;P?}^<+_KLcW2)s(S!S!6|jcVSOc9jInoc|*tE4%5nr;@0E-_e_7Zx5h`+Vgs> zym=UII)0DWV%k^X<@{v7k$A;l`G=rb3pXNoZ}+p&J-(axV#E)mh!0Vg_LCIIp&q(1 zjY~2L%x7Ug^&%K$qCWDl(OgfzCk6gF|NPoq(seiH9l-tnh=BWC>Hz7!h+r>Ts>9yH zo86`i*8wl8M4CTw55l$=_+c#IG1sQ*_vDF-h21ae=!EmD({eeCEyrIdCc-wW?&es2 z!G|P>TT6h}iE$ZWW7uXI&3hE>|Jr*++K`WOjYjgP*zr z;-py5$)w^0p3wV~Eh((Ew;BD>r}VXFafTjQ9FM^qqud<oS)_YU(8t#|mUc^Bw=lM+lQo%*dr)h|2Lr%xMf6CLr2ZtON#rb>aj zlT7sCF;xet5d*6mwtH&i)_N9xVcVqmsQ$FzZo|$4Y@=#b%IyZM-G7alt3<9aDE5cwxt z@ymVb^(E-6!ui_uYs}ZN`b$_BPcNdhFBtrU=)&hVn%vtuiJoT&;)K~mu26$=2?@;C zW+}~psKhz1a!U`-U^*QKwge3v{4qmaUMPKG1iegWa}`l_3K zC<5JifA%6$4sJJSeYwo`(V9Ra(t{<5WxD6Aq07auDocOCVS4z?L+|EHhOZ-3?lwXr z(R!X}kekZp(;%pppsQ?s0a=>=OhAJ9gO!r@$X_2IaUiMZDgTtpGuUjIF!;h*!X`m% z0KdQ_8v&o%%(em80)d4JMwz#_yU@Ih6q)~M+mAd=x{^b9AdTw2*(;AUdgT6O!I%M+ zHnZGAV^!`^GJIZo8y~$CVR4zjJ0sb~t;f!zazf>|P~F?<8BpYbo2-*Q{lz}JELFN6V(Km(#+>igZ4Q)7A}#<)<^;tHYv$Rrh1ihXC0e=F*FOi4 zADO#wsa)G_<}N-Ti6>&meoQa#@3OB#CHo->uvmbt?q^gdg`(^-oetFCchLJ>|-W%JaG^s{VVJ<34=GJN{AuX|& z?tOz)Hl!IQf9FzE6dgs2erwKOBzhQPMNT|t<*G3@)^AyO3q(1Rxbp8-b=$L<%Q78W z@=>!1PeTC42T4^S6qm=gIubOaKYAl~l&@L~ZmMXejaIx~D?8s{uuZJ^=g5%M8+ATa z#4u3%k-52PP^*VTw~_1qZhF`(dM%Cpya`c=4)sDfeGq?eVF8p zU{0c!D1l0sLl|bLe6hwne0abGx8Y+LD<1^noGmP&nNY;W_=z30kBI>7tKH%^p6o4) zyA|$~;6EooU=BGvF8GBT(|Wf@7FJfMQbw{zK$HWxdcL|8BlTTY{2y-*V?Evq-dgFP zSD!;7p}32U@cnsI(%)W>ARxpk=TVm&in_GTh?%S*%Wx-tOqk3f2L)Sbc^D=p~JD zc)7f+BR<1foI&ioU= zm}hru6*mu$f8x~2j;RPihZFyCS*qFVfECOf{e$V3{HK=SnMJ@FIZD`6R`X>%+-BFXy7TW~ncH>bCi~Sd(gX9AABxX7 z;RT+(V|(JVnsUA@%dF%lA$i5!%=ez3%@0_&1b94v0i;nywq%8LPe~fg69t%YsJaEP z%5HcF3gnDp>gH3=)m*`ODMKV0;rywyI(4cmSi)cVieHcPtcpJ^A#(ysJ2%*6U(~*O z!S)eGYfv5oeIn7c#h3y~=dzT2aqO-i|J)<8PuAa*F^!2f0LwqW-4PJqszVR=91p?!|M8B(pV(P8>s#4vN0}TEyW@~8kkTl(ZHZFE z!ELfPq#O=51zF;{3FN%9&jKk6k;IPxHP#W35oka+G3Zvvb zCTwucad4#oZo*CHzSK1S7${3GpkS99>yt zszr!=I~@wVJK<3F#9jG)4&e>@`Viz!+vReB4_Ex6xz$E6NT@H!g`zE}9=Q^9WbE_G zHeKq-y9yxb0&vwH%hBy}xp|cF5!3v!IV`N&Mjj;g9TW@ zd6KXK#lSmp z_s)G^I9Kf&em&A=JqXZd%sR-1`8GR0AdQxI+fe0?JbY4nkd_YgiM?~ukLQ(8mSnu~ zGr63nmyqto^iFv8iHWKrTZQ?Z@*e}62Agf%G(Pytd#zP#{$7VAO-k>LR*(C8noQI8 z_aM+p|0OK!@au}eQLPL}+C6?*nOfYshdN;x`}}dJ5cYoNzZ)52oMLlYULHpW&f9B|iR2RRuQ)^j_?pbgL71i)s8W_e`sy_Gs?vd~D_^jE0N?JhYYW3dwSv z;dK63%zKz($%wjh{tWZcafc>^fanYd$hnx%78jzlSNTNt#P7RX*|VmM3h0t=mywdU zsy%If-^=BQHz8lQd7YEWXZFq9sfVfhlzn6{Gz#x|nYHV2y0-<%`kvxX474?ZhOX|q zuy!}fmToE{X>(ov){=@gKl%qm)M@=pn}rW1-AK9ZIo?m#zL9iBvhh|+DD0SiVA zH-eaNH*FffDKR}jZ1MV(o{?ca439(;>vMk+p5`w^1K$hS&TP$8hYt3-kNIv|p9RhC zdDkS=#rZ|6F*sWFj{VCO$N#yOQth3=#rzk0zdq?hMV+gnt5jiAn}^ow(0zc0om#Iz z*&=tGtN;kq>3e$U|5+Xc#l}{Nh&#Dahg(As?26moQTPkfc~;Q*??;uai9H4|4$yza zGGY4{!9`r7+%LXrFKg&(Kg6ps%$^uJvCMq9IKI72U1Y}Tzk7Iel!=8MtNphry=n~T zyBB~aP3h;-9LnTpNU=X%`BbE~FPu4&Hluun4nW47!dqtQV3$V|ay|cFJ2ZPq_K`EU z&z|=G-3>zsZoKL5k80?n+* zM;8*=E$7+_U%!n^@7Ym{#J^>#iUCBjYY5axAb{M6Nxelp{zT1yRo(hlcWzyR3pojkXLT7DB>6t;}pXh&&qDi$-*kprwzv zr)5#M=(k2gIc~d^t)_&|I$EEMx|*@6+zu?(?|5S6xd$XouUa;_p>E8C0EJ($5@_*8 z+leKtE+gO@SoCA|dHI8TBjTwIt(7^Kza_B}+`RIjoC1CAcPpaVd7JlX>O2M+!JL5= z7vWweTBb?OOUg3%(jt~{P+haIEkxs5AA_8=K6Vr|^d@ALmMLn)W3&y2@AebeduVrZr8w&?0+{7cYDS1f?Jq^ z=hH^jbAo8@nN99bztqyLJnZ^KD+XHNK*U}bm0)Cn<)6JO=P{p(?j%? zLxp?WE^*QlC3Ol6ZACqj3NKq8^md)o$*6doTw|JT#6Da#zBO7g)$(eEKg{{Z;P8B6 z9l`v}_)MCjl+DHmGSi@%+PK*inbsYO%#BtKYiFPJYciX+u$WX#d_L9Ngw>m|QhRH6 zwHY(*jUI$&8r#t$<3sFPR(fv!sTZdUAR5D%?k zJb^lF{l9jj0=nR9tr{ZX>LJ3!k}rs%IuF5`wy9pG*IzJ}DOl1p51UAZc$#{??5l zNI77R=MP-VZkbM=U?SGPcX(0Z>mIM;Z9YkI(V4|eFujrKfMe5V-0=c}`TuBe9{dSl z%oC<28o)|(O0|Z+keBdIAN!Ns5b~<*CDA|=8sit~f-m@h)~Y&uZ@otc(xY0)TVoY# z?7d0OBYT`2S|fWU2{1AA)9pABp1Kv9(fp<>(fVzdSG905yrxlpN#wKoN^>|2vj4j;>v z@(KTaBfNjO=mx$R=L?1{b{2Hf0yGge78_ z>-(^==V;IMQ0pdNJ^_pIrL@*%$B+Lb={g*t{{MewNhm^gS(TZ2I5fx}mF(1WUGvn@zoPB4WJIU|;`TqWcd)@o}em$Sh$MZ3YGU~LLJkPQpWamjztB|# z>rc3g!oy1MvaQui-xsZ4e(Sq~JxCzBZ#HHFtmK!nKU|=l!A@Ms?6s>`KRgIC)3up#OKME{|+JCUdaknb)#ZG)k*G`B`eXN zad=234sXEDVnt7MH8*sy`Gj%pwb|htY8APma^f&aKleydnA8`hZBfFDlfPy0c|ozp z_{3}SM>2#ybybYVPL@NJtN#|_gJPg})E0{s|9E9cs)_L>XqBpfS1kdZ@zocyTlYO^H->|n7-gZ8 z3>ACBvJHwao9JWL{&SD;F@%ni+IqMz#*6-hMRg+H2G6HqqP+~g&H;;{(8BxLOe(4E zEh+-{Ko8%qH>wl|_@-0)_XPYn5e#eawp+3SwKf^I0tUnb)%MXlQJ2)oOe)_xqbs48 z8}uG(N_&e|k=q_f-%MNE|1P5}b!98^cJ3N*)hVAbnFaLl-&WLBRi;B9>@$3N{y3%Ea_EN{{IQ5IZ+*W=_5 zMq_YBpAVC?RCqe*DFRX2>cQ-*hn?~KfCdPKjTWU{7NOOWRiq6oB$Uw5MN@nSKS>Tf z2`SDf7>r#?CRy^9D7CNumYf%Cpz8%E*FE)Ym^ptDo5_@SY<(>eJT=Ylf9?3WgWxgq zyjFDeiyyB;?Dn0wdnDcu3`y8olLYBIJJ#(0!l zd+YJ!&6PK8<_t7pkRd5VcmSyc3Mh_(*qCCr-P+k<3Ri-bRW5-pn+`fb>eM{jQ*CF(UFtFyiOiC*{~ zKVT!!@Rm?!O${|yXFW=rr>B7Fv0g8BN6Wd0+04YbxKtkWdu()<3J*Hv5^TzkHS;;n z$xIfn%Hji|#=X3XKi36h{$0Rxapwm3;tc)A=x}iE(qTTk)-rxeQo)tupOE3=K|8^E zfH~fv@oGIVHWvWGjlV+U&la#^{QOXcXg`q_I8gb+)GqZ>4tqfx_Dd@i?NEHMDl+Xn zIyGdfeQsa224y3DSU9eA`8;B;L&aVrJZE~=IVh_NH08U$G6D_jO4?z=3np3C5kKDQ z@xPgStkgOpew6o$CEN3ISD=VL580TXj*^+H!E#kFJKBwBiG5e7Fr*n!$4K5ZQj;W8 zS;X;%nkKF?3@_0Hx^2#=?*=A;aD(MnO z(4XTOsEHDMF6dbl|8Ij3J|Ir#us#n!u%7U$z4hEcVb6-v*e!sEh1;I2L4Kg1T-nvo z*eW;Vd$@1-w%?b!J?}3)D#4zmr@7EeSi?pB&wCRTs{JrWb6ydYyh4Hs?uX`;;k9y7 zTFspq2WN(bBwHh7H^4`y{L=-9S!;O@;!&;RPEGPk51 z^R6lP?3`|}9ACzl^Wqty_~+MjgkBb~2Cst80*HeCK1OMOfEwy-zX{f7!2ed4UuT}# zvR32B-OAc8@72LyQ^%i2IyT#AB=g>7F{JM}z#X*?l1-s^BP^(bY^rNL| zdib|IV5pWmy|${`@|`UbyAZx&9fXIPuf5ECQD+s2B39My33la`qa|Hs`74dINBW8; z=@9tOsJKBs}JLP3ip z1!oJw-N}f?QTS1Uml=PyZl$br>dw7~{bv+WMrqa`Y-X+@+>CB&D#!Qa%^N?tD6oK7DmFD!%smO;BDix zmiyR8rBoGc{&Ed=Ft_fKZOh5CN*{MqvL#m;=Y1MxHi>B)Pj{A>?(-fhi!koiEh8#@ za|+`;M44Z(lNo0+uKR41%b_fK+~4L(PAq81T8zO5-(sOy{lJ7VRJ7 zX0mJ+n%*D4qKeT#B&Y=sGB&La=m&Xi_9=6q0&LCg)83<_KW7SHYT#N<7XPFomK(o* z7zUk_Jj$zO6I%JUt*sbi>IZ(6CxC&bN><1uo{5^)W_} z#!EY|_g|ENq_%FAWuC$MqeHqHqKt@TUGF|WT*to^eRZ1j0P7~Z+xm>j4o{Or3nFfT zJdQ#JzqsHp&dhe^JMsEEuI@}CF&n?|1b|4$-ew+z@Iq`)0#RG4ugL3k#-${uc7 zpug5ugF|84Ap$^Q0-H9R)Q2`!Doz3re`zERX7I?SZN>E`)m!w!W&#b9jL@2=`1t`A z#IJUGj>QND+GH`ju5<4zFA|~z%KbW*tuo+wo*ju-r3R_-cxhfpoEbAT(@?;=m45vZ zVky>B@lOmvUlWkd(&%w96e7%46e&l@R~TILY2v;tRqFxJ%R8P7(YF<;->kuE zL>i{s5!!^j+C?h;SN+iw$19Cpqnx21v3nZlOb+I3Alxv432U5FPip}j<_B$X zr*?R%d5bo-^O*r~7*p2P4*MP=_65$MufrCCEK3)qh| zSnv0q5qtI_!X^`9hWCTS5$hRJQ@;9264onUPQ&Gt3-f!o+_rjnQ=G3!JSMI{B5?q!9fSYcQqJus%`)D| zvQ2e;*9!7B^AZ?4e5Ps{tdH_icHkCO4XEy|R{PEJR(fOXezoCc^GrMSC(iC&K*Khp zP({qGj3(>O6$A;707`ra0a-*XuT;*YnSC4$*4og+|G@wCn><~hq1YZHT(-Mdo0&Fd zhkl_+*u8~I&uvYd?}Q8Hf{yMtrgEIeUkal<2}4JQ>CjKH9;KuaZW{wzgG?$uPypd+ zBY$nx$_ks>M!_Om;9Y$cepE9R6Ua-UiSb4rQ&%O>RRp?$FaCbjwNCVF%PU7=+&DBj z(d|dVypLE#V#4!PDMi3Le05gvEQiviu%DJP=KB3E23W%{#vc$D;>k0v0=|3$`{U@Y z=+JAs|6Rfn%b6e0pU|~QoUc>Eztn4I(AIHo`l?;esX&fEpn;i++W9$XSJ_+;r~3sZ}Y@1 zF7x^{h2)>5hF$m6CRK*`R>wtnnfj&jYlxBSVp=kt?7WK;+R}@zAZNYFmAx%ugozdF zF-p|uog%#ayh9faqxkGNEm(m46~5p>w(>{_$#NoZQcalIjapJS>*JmuNeC^rTbS_Y z($ZCsSd2!D_jT`_<%6Q*f1S%=;xq;0zBIG3WbT(p?A?2#F~e(LddQ5or#Zc80_us# zEm|QoXigp8Tm{Q$2sYy;)mPa=n+vq~mHaJ- zBGSkvJjtzc-j$yH(%k9EbUN7AuLz>EKQB z-AFixdiBZ=CDXS*L1Gfspbp;)BLKElDTh}3WNekhSL?D*EpQKyowsUwF@#XnVyNX% z8;7-Q=u)uWRc}ihyiDMXT}HL1RdlqAb@}WpcK9YEP824;-@o9hOab7&$zC)BU(dK; zhpQ{hg`(CRyB3j~(+g=i_wm2e0CdUZ3^aHQ-s$$VME(d%Gsa)&2_Ml`o9>Uxn+ied zh0kAPYyxp1453kt=v=6{eQI;((`j2iOvVNtE94y%4KTd9TiDGmr(n`y-JIDZ}G-Id)&&V6mf<`vwHk`nlpNw`UsSLrBh&EYF4=WibcW%IPzty4sJb4&MV zzMb01+f17s`nN9->F1%HDgODvo82UT($nX_@p_g(` zvLzDbkzz&yJu0>?={TNy^Z?7|@59F$+*;{9x#`?4ZXd+2@G&XKVO&@8W53fUJ)9jKc-ffwg;+ zD}x_QYO9{(b@0Ehis6HvxEsWIy~7|gao;36!UudmL-!vemO5SJ_1+48dA_C8P1T~_ z{p}u4bKK--Hxs19-(?V%(YEU&3f3~DuuLW+6H zN*Gk2kz7OWDQ~Xt&4(+0r%K1Xw*C@Y z;SI5(R)?}UXb)^}>nVhX9Qfk~uNh&Gwf6^$FH{HGiR~l3K?$8v{ zs~l>$nByV*-wGRKZ82wdtJa8sd{)T>Y!D<$+yae(4BytGKt$@n6!Bj zF_p4#>qx2E+81XgVP9705f`fe+}^x}2p;GttPZ@~6LLw5Sz%_m>!Qf3Af5ZxVJdt)b(<<}0wPFW+j>vVknK>{}>&tm#1 znNt?YipM)mD(1=B)81&Xk5yZ!QtP};lvmZX{T`DVRkrYl|GBf!qJ8dwwTqw9Nr2um71ii)H!j?bo9a+r18j@uA6CuHT-5Ivu)?+UdR;J`3#e8e!czg=hd}) zGsdGvU5h<5$vjBoS>YjD$#&HgLcvpjVQrE19P*&YK+TB{%c6Z*=_STrH2OOkbB77h zdZ~>87Nm<$MnEAu4n_`3jYb_-5{%fY1A4~I21}56Dyu<54*g zy~c{I_-FB0z}gR6RB=1>M-q_CF;8?Neut_l|8vA|dapA!p`)MKs-+4xOb7U^-VT*l zeG@v&#KtSN+7#=P8pt?z7rS%^8?GE8^*Wc7f2{`{EU-RsasCW2;*}N1fqk#lJe8eB zr__1BMXmXDx(ni|i1V5{Td=vbMAx>5<@_HO>}kq1GuiXs1t_?pufxoK`T?%oldd01&%r*C& z4e76=*vb|6mlSBh;jr84Z-s&o8aplrgw#=F*C?EF**W)8N3sTS>v-TYwd)IGcGYv9c_#Mun$B$T$zjWy?J#>WS#b~yh$6gcStzPTcSWZlMk z+#s9;7Lvge7Ka#iIb#E3tQQ=waN8f-pyxLahJ&WfyCh?YY zE`C2E%--amtIcb*&gmd9IJpdX-Uvuo-IaN(iO!mUh;^fb+?az)N2v`cn=VgvWYmh zV=YndstdxcO&rA#j}F!XtJTM;i0(haO$zgTMfBw(q%U^fqvA&&PGxE*S27+)8cW~r z?zocb7)V!C>{Yv4FHwo+joDDw%qp&Yw-ayaxybIN6VBU4c`t?-($0yX#LxY9eSW?` z?JKFyfAs0c#gy?q*Yx{>Ju$Cl$qkhr*mDwk=LD)W94Ksij>DlVYC&JY)i*I`{xm+8 zP|D_|aj=6$3ZOiII=O#=A;10)fT0*+oDr+QGH4Zy;&E-Zn^I2%$L=RMk~Maks_dk2 z>LdG!6GOtsUtOOYUOcj%9rVZ9n+Vai%L2n_>lJ|F-f8XJ;`~kgYAhCi1~2`h88z5g z-qn%dO`JR`^Oqw4p7s}iPBSu^i}&I4>B|$Nl8P+|d5F`qt;ce4IC$15`o>%lebmvj z8)W3J7P;s}p48MJERoB@fB#+K_kb#^41XECx^dP;xBjl42WsavueSoQooe6sZSxHD zxhMIon{x7rnFyyQpLdzSYBHIqF8y&I)*2`4(A55iT>SeD)+VokT02I;R@>eiGD??y z&>=z7&JxpS_ft2qPPyzr0B;D@724uQ%Q;5_aRSI=N7j-m?0stap#+|EhDk9`P?V4Y;coAJkd^JMyq=+Q_tBdJsL^ReJvb;~Eej z@x#L=gjaL8lnuk&s@c^AIA#usf8@*IJ%cxBlsFLk_xj z?N5)UMl~DnKZR->B%nyj8(P=NsKG&nofH#NyIa!2^j^DmDe0{<39Kq!RBIXH#2rFA z!J&Pw>r&;gAwO{qmS)yW{Q>9SVxRbFXi0!Q*q z3&N&oFkS)>%FTQIJ0U;tB&M6dne6dAF8*`y?0`E5JeH)wo4Y~9eDb-CFN;OJ0u{x+ z)LGp~exCcxQO%O%Khw=D=J-YTW3|;L)W!o}H~z`j44o^RZQ?qYG2}y*byiEDY{qh2 zh&Vl*GXe@<5EMf(b?aK4zJlWK-%SVnj2yqi4kQ<~#L{uUcNbj5)n1xqVt^s@*xcdO zfER#05&Vf2r==A+5rsGK6q8V!pV?%= z`dq|SiLh&j_x%zF_JIM^L=)(Jtlffxf3w|^Iulu@7F)F(qMB3_>MH4Mw()3)bwP&4 zBd;(*)vNjMQ0?&J05fswwk7QYX=!Q!6sOnBFoRqDJHMB(qIGy@-!tmiU5A1O_LLBU zew|-G~3qi;$m_ zF}YsY32^?HZ{UO+5&PFKphYR}*?6$Cpu`;U8l4@e)l!vnzh)Q$x^Jf;j7wu|_<+Jnap{0FAde1MyTgeuA*jUB=1o|P1 z;#tf0{>%0_Lu_mW;=29cc5B~DIQSh*rru!9$H5X&>fp$vYSlCohiyVvUVhK`Q?wr7 zH#iNibWP^}t86bJC8u=r_$PKDvv`EAh;_`brg&hMBNpl9s*BI_|;v4AdS}XMdPL-L}U4cyj6&dyr^9qf^Q(vCKGb0cLhugTS9X8e$ zUf)R4$h$C}f+gwLLvW6{GJo7?-Kz-F10Dz~@!M0n)R}2z3&PX&3`=cvT7c3-?FhPD zR%+0KgRdNEbA%o)Aq-+Ezp<;qKp8oZ|7U(FJF2A^(o z9Y93aS7z_w*Ba8MJ`@guI2^?G6UMF)iBA52u(b$3lIoX3RdPiABJc88?-0kiR8Gu0p2!PKZj)^ zhJK4A5bnXU(GIR-LCw=;2Q-lA$ZeoS)K^o0x&JIo->`6NAURv5dmd49;@#A_hTqXOuv#N!mp1*rv|JV+o<1w3^QEUk0|}RY#8^D@E4&c? zGr9{4OK}k87)7rTUiHhaB_h{!TVz{scUs)?>q(!#`C=zJVG1x)0;%CjUDsqnLBDQO zPL^!Ex-85M_Uw7wx3$W&_&p)_5%_%(_%@n^SPnP^_V`>&ieVxoM{IbIkihE5G6b-<`(v0RdGL~an<|kNbpRG85-#}J&j&)+Z0d-jB_Aj>ryfC`&zf6CjchGk7aO4 zX5$FxtBwB5rnXiLUeFu>=^zXmZCJA%lV|BkB zq?Zy)vLirDd1tp0J*fP&+K>^SvlraL)DV@wF8qh>vERq0itPZL!Gby%WJbLrt7s#* zW!}6kUQ@=pWfb+1xuvK-e7DynM^g~Cra@T;r~VMAkXb7xX$p>IX6bC1GQ%^ow<&CX zSqlQU8Q!FXjqO?G3?Xm^;{0t2g(~#g!nCVuvn=KJ$@fPX&Aopm_|x$&2vl(1=TY0o z)@;L9^c|{spB?aY9)Gg%5ju}H!D|@;;7B9jVr`!jGYQ02pTWIe_c=$BZ#!ObK9Nz; zp&Ut`KC-=f^ZY00NM*BxFXW#r#3JT@h?S%!!r89M7XP25D4klofFs*1WXMsG@ z&9Qe)B=Yj{X9JAT8d!D*-XP~I_z|8EIa^X?(CC~-Z4k%7bQ@vO8rOHP7;4>??gNr! zvirNf7FVVLxIp;t>7Kv5ZB4W6d??eM7o-M@iireJ*l9XK{rI9}7I8J{up2e)YCu0ui!;R_{l3Skt)8kQl4;2by#i0X|^?C!4 zYvUJkI)HHiAF2M=9d`emkADsJ$s&ISzwx6ZvoABj0|Hn#?7MAW$tmk=IF+|P+S-XB z{cNn2D1NsGFd4p2 z6ky6uEe;y89?M%RGuHxM=LcAqL=Pg+qNdfYhPoR>LvIgKdQgAflhAcvaj2ca1Gkqy zVSj&n?$DwaF=jio0})TpHW3r_HB7tl<;=H(@V|!_G{M)3K^Ki5-Juu~FlmIabBM|~ z)hHJ(&E$yhy4_vRn2XM_gVHTC3+g6MY6I32)aG1~Igi-lHQ!=wlG7gC;x;*8eo%eI<0W&8ls#sB^QI2xcV+>^`B??2e&z$2Dk0d7CI zx}Cut{OJ#eCZ{HN5_p;NE=Ow3Tg2}G`%*rSbank?@b4bm@xmElV1_!&HK#A2q35Tm ztJ;+$PG}_ZEJ>6d`>1;yMipk4_fc;)l`&Gvw_fH#kn8tMtT-kOIdysIL@cd@Fmb|*b2+b^!J4(2GDP@^?S01WfSTMzf@IRb;lW0y8MP{>tZSQZiVmJ6o%8rp0gbw|%e3$c;5{EL zkdSWkh=V=0c|&ERO#U;Z-;9(Q{T1)1F+)GHx#*>eT&p~OI=tgVFK8c2`R6{)5uRiJ ze(8~60;=TjVabAS(W@7ADgjEL?d$Ko+++Vjio1rMQI7|sUAcZ-962b@vPmIhe%ZXv z{3h8p=3JUC+7zkH^}{ohoSd(-5X5UYAv)urIy?>H_H8iNOuwWqi2Ug)2DA1a_j+c?(Db$g>AWZ=xg}{h<%1@o zqe}-Zg#gJA*!x(g`oazAwT+H5MTJ3e>k+rbc^fFIKBEb8UFN|Iv*00~&VT5gZ!fn# zgOD8k;emMzew+edqh;T-_^K7;cIzkrIGIN)J#YVNBk>1N!$&}xIGSnw@uvrOaymkq zQg47#x4#Jb4zzdexw#W(9IxX0*(=Gxgh7gz*U%U4ZH3orMSCJQjELp? zC$vV$!T#3gr;STN9?;sFb=+?mr|^RT4&RnV8VBgKUhFrK1A}N@ynVc)l(?QCwb~Wn zNB`dyAI>8nPS!hkcT2a6QLqQz^i?{Cf#!6@QLTn>b0MoOnj)*QJ1{=Wi=0*eyXtf9 zuH`H9+DEcasA*nX2-i!83j*1Pv|&yxyz>#2`^eVBtwX@?j7CKnI-Wash;2(i4C!q< zqaNz!#|8QDLMglZXcQQOCJpTyA8_E z38Ukj3N*I|^#1x5_?z5>pH|$X(3!Xvh77{LhH1gE;bIncCO{^q-zCmQ?1W_=v#o{F z^(ubwbGuaJRQLF;Jg|t&4G@mN-e&{5B*x{rfA@8Me)$FpRuTN+0FEBr?*&{vLx zJcSZm?=Np%yfkpo?`vR3G?2n_^5r#lr~M(;1%-5TVk`p+5tEZO7z{k@k|z2&4&yYbXfAg z98^WRJzS?=Fw&|pVkvg33?#{aauIIq`VnP=kQa!z@*bp^rQ!BvYEg-RdC}PXkspV_ z-j$hz@b!ATgTY&xBY?nLbMaBxZ%$v0)1O~((|{%WlpkZ} z1Mt~^!BXfhbuE z$#tgE0ajtbK_&#JF$igFN)`sf!vD}1U~&8>)qP%rm+KPlK}lu`dx*H1AF zf=1aqX%kq*$=b4lf~+%Dyxz=qDW)5tZ`k6$?qo$5=uoq3Zn(IKU*Og2y^5G!3yoko z`c@`1pDLmqElvCy;j6d5WrIzvd?7Ed&r*DMIny35Q_-oqXSz7J@veE#pyA1SeZ#r{ zNk&~J4OdAMWY{@VDcko`p_8IVcJ$wdG#*FGHZNg!Gaezf_C5)(_h1Mhl2sot0i-0 z5#@dLGD9b0b2E0eF;KXMbcI9zXP3uYMqN8?pJZdqr?@kiizO7}|(N!Ncp>;B%my&@zES1W5GYFdrAb zM~ylC=-$zdVL^-$?E9}(HvYhs~$&8pYX}GaI=}ukotyOCFA`s_XnVVScuz83n`^I*B6qXM>hZh zq3WNQ>-;>do5=5drZz~o;zGCdEmZcam$0l5xj1;_rp%@57?hbu;o~}bqQZNyz3vf)=;sQ)ZKo!<^;1U51dd)DH1WEwp!jM*M9k+LWW z!QZTw{xpH+BAjk58dBn*k2F&63xBD7czGc+Xu)A=WO};#rrHwok`JqDHoC~P!oQ{% z-5bbzmITT58)1hFaOCuT+cjMa)yji%Ea)u?<-(o!QPy5W#^$PLd$#`!e^!ah*A(uI z12`1%-|Gq)78CrVMf(fi>lBq$tGR%YKbBpSGUv6>3*P~TEevds$nYJWcWwDw13H(I z+1X|4M^p`X8g)H`>1iY@ifBa58l~Jc!*7aoa@>}vsg|{^du%3O8ap7ju)UvvJtup? z5sMuC>9-~Ly!5e7{Nw z%H|IuKtm;wH^tK7pPRpTe_Pbm0aY50RVHrTOVh!MWa6rtN8)zw1A4^Jd?;il7hU77v2@teT=#1KgvoU+|7(h2hVKxd8ZY{zT79lt`j@*3m+KYU1|5 zw7k9wFKKY^*F)B=xwIfsdb-_}`V=EAm$jAlq`=$*WX9y68>c}0z-zCqxr|o0y^Z*D zOO3NdGAYy7680vQ9l*o^U%%tDnINZ{zisFn3yR3S5cSxA;0EtV?(v&35Pm8^LF|Oo zjl^{{f@rwwpwi-gqi=hTG52A0{@&Kv`+?Iu4I=KK%cOg%0{w?Sd`#M)5^yg*;xf!JDZ8sR}V?b z=Ku2t*2zKqydP~bIr7UXHr}b@VBb`1ObI@mgJ<#cDEm05a%_`!`_&|fRidIcLm;6r zbW5-mJy)BeaLPSj-}&){3g*V5S_x|JovP+#GbVw<%9?m44r;9)iw3MRMQSadeP8Rb z00-|a#FNLZ)%|c^^@1r<>^rPubf`K%&&De(g(aA%+gSBEscX=#`o53nJ?m==PxoFjLItWV~GY>NO)=N)EeHcn5Z z`wHn*OQ=Gt*6c7ZSHe2M7r23kNk^ImB<Q9%~K()tS@eRiLMTA0lt{bxT6Q+w9!5Sr9@)Y+~@fW)dB3Wghx% zN7IcOLwd-B{lnkDfZU5Zjv5}VeVks%imbTZw2#>g&T9z1fdh&BbB*+}%cy4tC1Sp? z$G1jH5bpDzN&3w3@w3D+kuZ(Ehu5k`8OLLL%N6QjKC9cRjor@l>q7kDw@Wv=5N>4{ zzPZD|nwDcngGnflfag==Pv>10328m}x0HduK4l_iMr-fe^{*!h4{Q$X=Pii7A#wK+ zsodgt*>89*_s}>k)E3`W{4lNSL+H=S%DM$7aIB8YFfAqHmsH)4YaKaab*iuHZ+$9> zVQ%bn%}F1~nG}eCHu}b2*}jkea6hqJhFoo_b|5r@zKX}K3&p{Q_Dy@i1GUkG zW6E9$N%4`hyYfwEHdZ|RA*&Z0)Krzkyc*tzWEU)!jga0>t%7E`O1z~aD#So&RRV#qJdi$%o>Po=Ao1Y+Qk^;t}`eS-j!;~WzDVl7J&t-HSk zXx+m09;}8s&)0g%7;mhS9}U?ohzKl-~zn`b_ z7!x6=_a$JwW(4~(RGyAc+ zdn@&e$ehKkKT#s(fz^&0fc3`w%dCW$g`R+xNl_TScj(XB?5TkX_Uirj?bU;_rO8`CUsqsfX~NteoxR2I z?^{iiu~TBS$*ddC%H*j$oKuX4gPuAT(a&>#zo3%>sqLOoo9D@p{ zDXnZP>pNxR_H3L;gv~AFD_EKQNla=iZ1woP`9YZK4pq;fNK0Ew*i|58h_yHEY(6$3P-ixU!%hQZrmVh-;UmZV$dQ z5efM;Oo5#Z8!bZI&LSgM2ewx2_I|b?0XgHZrypmg=K!J1MTDU_{@1avmAJ!B`$X_h zrZ4k%LXz$=kr>)1P}e6%(*G(A{TiOnmqLndfUQI`I~S&}yeHWiD~Sv~t7Rd5>2F*9 zt^ANwYYCVIfVz&@Y?iUGh@Btus0o7f{oX56DTDeaS#-xQZ2-zz+6-&vapEcj0!k9E z3#YoSqj*5bF)R!lctMsHV;v+6Lwkns_WXR{A0ty(jdD9t$5#gmyId&$h4|>QndXD| zcP0i}ijP_9gfxqo5swG9^q|L5BV-eD_Vw0OBaM@oedPM5#h`cweE!>V3%VS}2IS>M z&?R!%KI9#u*OvTX#~K6OIRA-sEq;7vudGYYWo_AM0HIdgo9W1hwVTQq$?pBe=MA_g zsxV-Da#H{SUC=YB8OCkwjpyT}hX_9#(y>o}zDsxTAhU&z)SyOMKgr^E57b25{~7s$N4gU{$uiEP$?4i?1Fce*yPtsUQ}=YP}Q z*%A<9<`RGJK5;gq0G=y@QCgjZEWU?BCW#;K zSD$zA>yl656@ z?r~J?c+B>vPV3Pz3J@`*7?-rZD&SOk%gtg+fECoZusZU^XKj5^afE}o&!z*hFKd+K z@%CbFfs5suyR}0M{FnH1sI`6m0Yo1uhS}>QW8&IfY*&RQ2Rl8gO6n4R_32RM8Yc#M z^+L57`1!jlpb*y;cU}D5W$<}B)}_mxSQR?#hC>AtEe7Zh%7=MfciCHu+Y-i}1GqsC zT=flN$tpJ^m*it=aF7DnV7gIscXmeiVk@`)f^mx{gKpZV2p8k=S*%e&X4Uix6O+8h z0fdaTTC?VcH2h3mt$A?gx|3Qr33p)!;|Xanz{|H!~xiOMhM>L!;V z`mSWhqOLLm;9)%`#PHN{vnRQv?I%<)eVvEbCE@U;x04!;vc&|bW$x?({i;qORK-8x z02RNV@Mvh^{%;AM5f!!a{|_#2yJKF$-ed^cKm zX-%9RYV4(KqSn+`5{k7ien7u3T12aq!1_?X&gr;Fv@qF^3%9ay-{-zQSK^S`#PetA z;CSK$J5QPw+57!!jVN^HRqK0BW}Uw)r+;&jgc!V1ZpwZ0+v;I=En%$@)b#f=JsnX? zFmYThyEhH^l01&pCxxn8;-BD}B-b-hb%7}*pzCDe7_p(Ml-A;|ahL`aH+DFEO;e3q zIil)l+rJE)Z+Vlh(nR&-2D`>N%ZA-x(&!TY>mtf2Wg*c zW(_GH3Hi^h25b=)I<|KT5eQ9v4k&{Tay#CaN|giO9j0`Y_P9tEoq7aV-q=H(aGt~KwuH0N*_|sj7cd=V4zJ)ZcCq!YLGsykdbfN&p=NPg z?>&4|ePT019E^EhBDz0(6L&OTp9xh-8GF4B5s=F*S8(XgRy!+FqUr_zo!C!~R0j7l z=QY$Nj*30Z@|l@8cJ5k8@+NG4GhSLDrO1v~|<%RAi+ zJwoJ|6$K0j15`yP<=fL`8J>xo@Whe6cGbq_yDF|dj^h8KVa7M_P9O3qy?#Ye@ntER zd56oVB~BBH^8mxbmZr{02}l-hSbxldMY-R z7UyMQ8^N`MJSd6`-rPLe1~4AHEc)ht%jt&Zvn@CjH}|mu(lNf;`byZuFQ;m{NnTu< zWf^#Rz@m<|=Y000P) z0g)EzQjzW$BS(Wsi8OReZ~_NTjNT~Z{P%h>Ekxd zfIl2Z6+)pT<09GL@26-43b==*mxL%m>CYzIYP_l;;gwKz(4Tap#pR!J6~c$QER1*I z{I6JQ0b)V9>&6-tcT z8qwBVGG|qL0`3!&sSTHn2^^rYuj>VTfEEHJnz~#WRIjBWrpegm-(Q3C)}2w zaCNgrd0`UkAZl}p#{CT#jB`DP(E463ttaq9+RaRkfZ6%xDG~NhsNFIb;en?IXbk*x*qC2Xp>7OmT|cGygi|I;PlT zUGqz4$(t?3WKesSA$bwjXlvmSadX$gva-(ODhrGU~bJ)~!twpO&3!}-g-grvaOEzv>x{nTZbZrd~}0d1`7l?A@iU2Y@Q{z_rT@n}`UoEr z`55Yv)n8=}VE}=OHB{A4uTRRTsOw9z{eG{zXNN>L`PU1=Azyn*NXoNWcRfyA24zOZ zlx7JONNZi&F|X*|WjmcNo1d{VzY$O(lj$)&q0j-U(|O6cs^@hLP;P10+_m{^;whZC z%k|4Xsn-xRqr zI#6tFjp+22SKu;FArWcU3EOKx`627JPET!@GA+)6;l3+75GyN@E!QBn5T~mg{sqE~ z7zueww9qhgp=qcW^l53Hx%O(Wk4pA%_9tET%9agx2$xai(kMSI30*qdhva56F5-CX zX-jbwnbd{6+b8=RHAp4?z$-~MvpduiRC1|e0(f1s9bpkKKdhdP5MQY))8J;!;dySavAoqgI613 z^*OD>&hc|mxJtmpoLu2fyk?31Vd&r&Pn~LDz3}p>h@B>y_X*&uN>Yae?HNZY^ymw1 zP!$6_iXANXG8Yiw6*#Y$(Lj>}?K_FYJX!k9Di2kQE&Em1y*6(+SO|p{fFUo($UY&N zn>x#eCd$|DcHE9Y-#_m1t6|Ucd^1WEK>3|7K|2y;TbBd_1R7sS;S#T#FJ7TT@8`0x zS$f{HTM57gF-*_z4Norhxw%_d0cN?;;rgp8>MFOZdSiNHx-(skE7`p=XZc2?EeFG% z%Q-tT@GO0MDE&ow=vhua{b4w3Mq1{h1xIm;$+S=2Q0^b8SyQM~E2@W~p-La|)^%IF z-O9FvP9Hd`^@KS;atnr$-|msK^wBlSWh1mf0O^6uktq9imAW`ldkjVjg1X0?)hO+>Z=^lY?(uLsR-k1l^yi=_dDV}bv zIMp`nG^4lA1XpEj*tn(XTL>V0>4f8qtYX#Yl$1o_x@ib2(n_mu^b-*fm^IMo=fA&S^)tEyl5 zJU5*Lr7jjSugCi*b^e&}mnixAGO)6E<#aAYm@6&!*Bpn8JGLp-IBJVU{QmW4BF{F>@7Tg!?vAD%pD|DR zak2N4EFF1$kY>gtIz9^7-!FeRy_aoyY->Q1E9r}Bn_z( zc2y5xb*snc2pI6NcM3joPQ;NY?;Z(U_OS>*s1u2uiPr}%)Myd_<*aR84K{?Gt9*^^68T7T%1H7oX*?>>-SFuSK^0pwhEKly&pGD5r|C2$rZd z90z?n;&BJOnNE*IWtM+w!y0lbX0NacA+Y=LUKBXRiW|$YHzE3qi|5R-QBYXzd*b~ww;YXdg#AU=+Yxe z$`9J$%W)kOS%6-?xpMt9A!vmKWiYR~eic2M3(tQmCve2<{#c}O)XX&nhC85Z8d@}| zpS2iH=Y|xjN`eKI&_qiOM^w30T<_a{f$1JA$AV863pdz-sL-ECuSPW{&_|IUjR&^F zjhkPjYBl6(TE0}`!@pOnDx&XLf{c?3YYsaowtcf4z~3W*H%jpjTuRZSJSSO6xbNXZ z*~kVUtqy)v+F;ZvWH-{9lqAnF&w%CqheT6mzJyED}is>7>47d#AiXUhAhZHl| ziwWr2vFIaLVcle9c0eC=No;J3Oqx-+2V+sfCS3nM%ICu*Y%P4A_{D&URB*dDgVBt8 z=%`*2zj47!(T`Kvn__^~5t(itNe{uzgQuAF*VA18&;vg>e8ZYYyw3?jz6$l|{!ymC ziHfAkP}0RfS3ISlwr+Fp2BqsB_|8!qFZoxLhT!WCE2ZeMLp^dg1#OQ1ny3xFRK;gd z?$H=+$Y28h+6rKPuPAv8&&zQnBERT*M9R6f%(ZW8!TZgRo==}^CC*wsto~w=V9=+X z8CftIXY?)i+OAue*U68+ir%n)mN2Ad1lanT?pUTt{KyyHn`FVd_AnbAu&J~Re<@N% zNB+Vqp-3jq!ogWq|Epg(il(B#qxoHO`dDGSbIhkCU~SWY#B;Z&!LBsSkfd#4w45bW zx3J-X^t|(#Z-*aw=qUb3L~vx`40qvKNovy%KXu9V9nvI)2lC#mMII@9#OKPtLf94l zL-RnxwD6yi`&)VsN!an)(Pp+p4DMpZKpvhakC&Z&6cnyln#OV>->E^L{mNZ47}JJN z+xn!uZji0F)bmd`Fzc^aceim>N0*m(St@XgWSpGoY;1AI{O7Y6XSHU=^&IWrgO6ei zbR3(Xj&enSl^1bJ%=+uL#{TJg9+>kp}@y+{@qf~QnHLH{$&09WMF0I zND26U9N+epoPry$#0H4wsVR$$*RYz$Fl%>pBIJcT=Sb;mVl?>r()wGSBvZ9c7ib7n z;4Ig5)@dQxiemEBc@q;(WCJGm8TTfB>sO~z`r?(N9q3w)!WLC zHA}SmP2Rj~hK!m4_1D|l=xC;Iw$eH?k*AIaE`JdKndv~rQve8Y(3e9rT_vVDH7>51 z;#6}h@L-)<&VThrh|>}k6AM4CF@(+E-vg?IdZ5q9#XMjL>clXgK)3rKMrR}Fw37(; z*#t_ufOSo9|MRk+ zSGWc}rZhH46-(-yCVhl`-JfVGsU2pas_%^ftnvRsLzTEM`KD?3*MFz3U`MnU%9!d3&&K6ySx?WA5`*z)`fd>`YhBL%I= z{wLB-)RG-2fg^-f86EmK$6>99(>b&|dYyCH-aDU>el$jq=N&sL*8jP)OpMU;oZov+ ziq+!Yz!Ir82RgE_j43QM+4|cU(xZ-eZ&4e5K&0Mb>=OocrSyzFVGV^M^Uxb1Mp*Le- zyVKX(9xnw*6b`<7ffxr5vaV0Oe9qT5)hJJm#siI`<1^7wj1N^jm=go$i`DxlH@ZJv zgrMa@00VEp+yhlITY!lQCZ)Q@>~|&bDhyZNM`*J85uc{cBykqf(B+j+H*W=pbu~I| z@-5Ppv~FOTNjfW-F39dj`jScUX*cYd$|CW7wM$&!`<1vqM3b8_lRnLjt^>HSol?I}nI(UsH{7ZAd;AXB&WnFaqIc8m_aRX5Yn=VRBtApG z490+p{+rl)XhCjj77t@P-ly|pn zR9^@8M-LNqz$8*h9YBU6bdj$X$1h|%Q53Tc>8?vfR@0o1y^(;wYF>-yZWoTxsfnsEXh<6t5sk+Z;Vv18d?WHLrorsdI35$NF)9xxC2i_ z`0#g|XwDUlVw8_h4i(8-5TIKe?{R27_(w*_hXMPBrW{K5Qqy5CP9C8Ru^-DQ^a{*2 zOwR&88++40_#T@P^fcJAzsTO}Q0)1aQM*-U{cBa^*QCzXis7!}T@Gm(>;Hwb7?vpS zh2i2)dO>zEUB;*n5(jmhY4Rvm)NXVv_3k1V)FFS07NSRkFE-ZocoB#XOE{r{DcKok z%H6rAjv|djP4}dee^?^l^B+gd;aGD|vwmXAU1OY}$7_FGrS4gsd({sRQU>PPW7U#* zdZA=6BAwm`DE_>06Y%bE>7EC2Q&51CBn+{0FQ9V+%A`i(s}*rHjSJl9#dIYUd)e&I z8GG3{;32uBR1k+h=i~_)SV*um-mtfm0J3{Sz5+(R>?_5FR09>I@a_>hdxVz~5RUx3}UB6TBr} zFm5wk>;co(h)}w+2r7I0p~Y#$?2SlXLMXd^;>wPY*)REqC#-+huA=yit;ZK74I=N~ zWi_=R!zfp*d}oM!|CR1ybj_hAl>zK8+q9T3+Uk&)Dx9A9Ge&C<&2)7y+E-w!MT4MP zqW$h2d_zi$Z&(VdXK{_`N9DfH`~)Q^L(sl>iiHoZiZQEso< zA%2+&5w+{oDd6XDb=IH*vp5LLtB~e{QDnwj-qj!Z&2K@O-AlLR)0IJt9*xZKv;7dM z3+l;yk;NX4%;^hasme_(Iy1;pp*LWpLKvF zNLDlTW3TF^X1IJ~YAel2pLgL;O(zm_{yY=oL!-%99==2mJ^(3q`Vn?P-%nEGp_XP- z2=eWR@zlxuy)`c?QzwzRj(kOR7t9cEOD}={=AirN6P28f$3j0LXTsu7)sGgurT8v4 zkzkY5thb&s3dk)?cAev_oH6?mFg`8I)etV3!(7h5^B^=kZN$04@U2Zuj(O}yU z{>Sc4hE-`$ z4;&Q7MhRMdwY7oC%o3E6%l%dPHWnv#h z&v%62T%w!wlj)fZl@j|si(D*&*6q&E$QuVuHbDtw=iLp+&JMfFgi@IIT&k7!f__ue31?iF{OH7r|v@0Kh0dZv5DBY+8% z3$~y@N6GDG%fI#~ldeK^X$4?2m3pDaKvvxCSD_^l>U8t6@eD&=JS;dpJBWfSAm$UF zNaRUw(J$8ml-}c<|-|&7uy&@hU%Hk|JKz3vR8ZGtei^d zE!vwspX>!C;-;DpfDj!>;EMlM#$EXvWH3)q0bO`A)sq8cx7x_+ZgIFG7ff`c3er_HB)6Yg; zchYfx<**sfpjl}d$$7VnmURMH%&bbDA{}Goa{tlbX)3Ss;MVF5A3=W}V~w>5ZED88 zyy1J1f3f7tq2a>((-tqq@3Qu;YNtWgE40-Uf-Z*!@ohfGpSqWfHt_G587xhEH3`Z; z*ZnlbTEDNr3`5-2qd@Y0l3<%DLfd+&?fY)D)YyObpmzH2b0oVW*^8V{2#SFD7)37bmhjSXnVB8GA~eEJW~3e5g_ zKXHXezRScGmoD7urItLv0&bK%&#pupz1G)7#tn3nT?Xj#$75YDbkqH$>3<7l8}v7M zfqeq!dSt)(;jd`#bXsqf!pxd4ZmT9%zkg{6dPgB5>Ye>;+WE+eanjG-?xSEEWd~&^ z8=+%4%le?LLU*~PX(~*qPqY|4(4qwlFDuc%D?U06!})piY8bOI?fTM2pIXv&aLK>o zXf)tH5sE)4EUb*P7Vr@y!Amu$BMUyDVx> zSR-i;){Ei590t$*c?s33?j9sEW_zl8hraAZq`!gfs zzCs*2=n~$>VAAI!F~44K23R~XnQvwlh=SNj%c(3l^Be^F$2S&8sOqp~Ig%cQp(9=0 z;Vf2&D3V*`5077}k&8?#%9Oo+EaM>K^Jp+fq>Yu+j8faewH#c+3+{v(v`OkJ;#UB5 zwzjSo>9rg>S|TqYmDYWK2Qvu@3Mg7|?*K)TS_gLfe(X&shiJ^~O!4=h_B|!T1pkaj z2S_8;d+-n%UrF8yVsh^E~US}(u0 zzGun5Sd6FCp2}ujq-!~mj3hBT@4}-hY#FI|+s9MGqw#e#9iy4BJ{Nfph|m67b1#a& z`9xB$UzDR|8vihIM#$vusiGbsS@@QYy}CpC;@ce(N^3?WmYAiE`?E!Yqx{pxJ&B+-y>e_A1`vt+AwuSkI7vIXNS=6)m%vX|t-H zD@wC3%miO4n+rM9RK^&;-p!tiuT{^T_Go?3_^V}+ZdubxsR$KosXe~uScLq=lilQS z%Mho-D(LH9G;X-7lC#^!@eEE(-;*E4XMVsVk4!5jhl}xAMtD-LW!2?P^xlEZaY|nB z@-90l1jaJ3S)hA8^T+qEp6m*=xV|AT5S-IK78>ycWtq!o&9RGY3$7}|YcUD(x=IXi zJbI^yg1SoOORnuXQIR!CWus((M)#-x3k&8^<^DpDHBbB-G*u%`eDTW|!EF9fJSkUm z_^nbaW#^3^)pvUlj~nub>>D+2WKk*@xVTMa3sTLS2Us(Tk5X})wd@!Es^~v^;`z#t zf&h^a4_(eWM3{Ij^O!L-tNmFM<-yUu_|iBP< zk}3jG9YA{cvk>U(0JV=@xBc9@F!21D9fPRTslW8jr}6k>=CP44I~F?hc;=Hn#jrzjMaij85MmyZWiTk3Cb174X&D7O`4*Brb*zQ)su`Su^Wp7GYs84~UraUlQ zxgT|R?hE1_6OSs!E%JN(?u2qdXudU;G22`>DHx>kb;8j6r7XM8JW2GFGQ>Sj08f1I zsyw9GJm_3f?OpDDbUwuoVi<)n9$D?=;*o!jPQz)H`-@kP*C$vNa%D+@@aN;_$`%=< z93;VIPkHMip|EAfJqVVQ|KdRTr;T%XE7ZE$XI=WO|Hsq5qi%!AyCkD8Xs^QtJpP9y z!mj7q{jbsMu}5(&XhKmn5>WU%E(u5%7^iU0Ez3MQzG~>M9QV#W^>Ld-62I&j-r5^M znSs$&vXm_W<~;lGalCxqvGlj?pJUGt_%HpFQg@n%9ihs-f5ZuIYq;(*z~}F&JdB~u z&F@0isZL(Usczc?iv`i|ju2nIZ|QleCgQd|+y{$L=F5KHR*<0fnmuSM1yMmO<&J_4 znfO1@i~2?2)4P^NEuH;oMP5Q&(!rHK;9-jhfBQ4v&m9n4LQL6&k=#K8;Safd|Miq+ zVpa*}-aNSatRQ^EEpArz1v0uD#W!Hj(FIUk{>7CBi$2*!4!Vo*N%GdsWnI^J@maNB z;J+a8YFCHTitdX1&dQwbO2P@k-YT`nbk=nAqqwu4h!17O^br594*T%+r~j6FesrB{ zdAs`HG#J}FIf8dt#2Dn*T<@zMt|U=4nj+d|w|K8&`;_CEi>e-&a!{!V!K#9_t)lx^ zG+u+5H(>2v7(d_QWgJ;05-ybTB{ zO6!8=gNY$ zwlg|HSn*eRg1`8ax_1xiUBp~LA zyOa`^TkVGl&R>C{DS9O;W`YRs@~SQ&KU+SS$G=98RH|G1?4st`U%us zcDKe4(B4PLlttd#Zkys{JdYhsk6KV}V%*F5R@iW@0nuIgfJ}iYmQUE?X3WFL(xfTS zro?zhk6{V$_8fowg1i6oUnj7O$+ zT)JdM=n-P%lND`~7u#m}5m5O}wr`IQVK^Km#mR0{lQag|X1mK&{xD@7BiS=ojP&mC3vIGk&=e=v-C z3uZNd55E76IMv>0$c@gw*yH*;fe`OFF}A<3EuFiUBALG5RbgPz$t~}#ch#Zw3f22$j$Mu0?(L|3K4C!}gh;DE1Am_$ zEe~_h`L3kDI%>;Z1z9xsviLN(soph9YK>g83RL?vdYM&Vnryo0V4O=uU?M?oH(Eu@ zaB+fC145AJ`SPB6Cb$IfM)Kd1D-$c`b)|f)2FV5XE zK>+9ur~yCUJ>*^R;3r1sHy_HrV-^=@JmOnc{z1}>r_1bR#K8D9>?@op{r&O@h$+*3 zM8k44_yg9(uk2S=PR5o6qAG9sU?tdN)Od_?A0tvZTPLi#Ms#qy&XM7tkuO%NlAx4Y zX?6em&2MOSn&nu*k+okAvs&^C-Tj7F<5dJiJ4WdhU;77*c(`Z>eRMk=u?NCwx0Iig z&3v~pH13M38--|{P6)9(j%>rzdWb!Ks`0oLnsrJ(;WLtMtfG9Zo)l|cpS?N(k-9om zb5;poHuo-ZScKG|5oJ)hc3ta@mltRJw!E6VsKr>A;_n5Uy~})2`EY8s_BPW>Kf_NzYXHgI5N5nju`p_*1^Z2K$NL8(p(_G0zEhB=s$FSdVAq~)6?2Owv*SW=ES$l zuScw{NqYX1F-ofSw|(I4qB1;4Gm&T&qCTxjPak~e*lnpy;d`S2kqy6eqU4 zY6+U%z{8>*6yYvDpyNHx=m$vKJ(N22Bam`|8*Dp4A^4>*39il5!BNNk#vO~bdh$+d zZm)&(AmXUT*zW7R-mr03ca&KKsO3qELblv9klpOk6A{VAet%hru2JG8;+#t} z9L`nwU%{Eqx|nBb`K9*43`IN29?Zs-8D-=hrW8i)%UQ+X_-scWG^`@1(WfIuKCyU) z%$sISl9M^r6?{QK0rCE>sk;lO%u>Z5-ZeHH%D2drWLxav3fMfYEZ=QSc?qpNVp`e> zl9*iA8O87Bsrw3WrrW0jy&993dRb`G#qlV-hsu9}I`@K174goU9MxVDuOvPm)gpgsB5*d- zaZigi<8R~A^Ig7!pXFB=MDa|^9cR|@m+JC&29w$}>^68>Zc_)()TZl2r&&=zaAHjB zH|IITDsI3<9{(|y-F^kPINOeRtml^w%!qeKcf{I_Km5tQ4A8L>mpq^#bIe~lVDC1U zDYV_x$r}v#qKBZ-Kza)6V212iNJ$52_uW^zl94GQrB6-y`09e4jsLFDHKrK?oH8kxj8v3-jQVP&qq9p&5g>%@ihNE6IKB#f{f=0amBSF0Bb9S5l zUG?dgvpT_zWO0J?N9@1h2E@8Ft5p+6%9(LxsE*yYC$hSv#1P9n{Q^3@S!2e`v2 z0{PqOTOal?)t-Jj2Y9;Mcn#;W0Nf)$TsH$=Wwi8}+dV0bIchT%Mjz-{NnO9peEhC& z552w@PT~#P>#RsHipAShEMC?S>}K|B7*PzZjCg=7V$kqsw*H(UN6vn?gKn^blYO&~ zTl1|PT`FGhAkMTE0yyJNy0DpLvO~rw-q3Kk*u;ReZEzjOh|qeWCu&z>c`$vTs&LP} zCBl}wsjs7jIC=c^59Oraf1UqlET;}!gj1mb#EDHBvwz8cDOpuVt;SsY$8f8)wGfX~ z1=2yMPI5aUzz*4k4eh~NBC;R46&8Iw8^VZ-`Rf=EzE*+ig%t36NE) zYapFNHF7}5eQhrGK716j(YhG1>Z+eZRxVJ(1^=r_)d61D@t3h(#Mb=7sr*}ia)L6Z zC$9+f&$UGTWmE-ZV*i-qra5{w)+PV>v9+HaPj*KM$X4q-xVYuj@#l3RD}0n+sr4W$ zMfF)6^p3?JpU{{#JYYGr`|{E&n>C3eyQZY6;$8*+@1ltygn9}il?Vjdt-zfBsX=B$)B~)%9B%Wv7Kwi~L1BFi=B=03U!m)q2!5*F<3gP`XPv51qHef@MO7ki16e)+o3~0jk)(tNe_Ots9S9*y zev6@&jgIy|bV7&C7ddbi4Tn*Kt~A(^;^C&2mlx7gxEhk{3x&mkL@Ps?fJA^vYza`* z1!;DhAq`Q)n7(~zO)zLGWJ1mJ8(h^gSEx$T-PAYbg!xjp|x zV%ji%t=w8XD0y%zr(qDp64-&dtFraATiI{->)Wz0^<=Z{OMOW^YRTi4c*29Sw?_sjL+w4wgAPmOhEB)R9^lCoARj z{H?kEDS82oQb`>8d<}3rSCdHhtP^Wy!a|6`zn^stw5TpmfS*cT<=X10AA(%e|8Brr+0sFTr83U9{_gd@-QtG+u6iBJ&` z#bTGEN#Nx%0d8kMGL2n(?>(ImH4JFN!p2zQPUgTZe0rIWp|^6#r*u2tF~ zg371+!=+}_Rrf>Hr@1QB3fkX_F0BT>08k?Ax+7dBDvl=?@5#P&W!$Odc3Z@dm-w7k z=Ht$XAT%`u_92h&{rL3LV(lsrAmP5_3w~Wb>CzSFF;nh?kpfkag=+EqagV4RUK6@L z9$PmWrP6h}xAe+hY#F4FyDWXdGWH+q+~~deCIAbvu#yyS=yQu8^g@JORlF>vK1f_A>@0VOS?tVB_NxQH!J3M0DJi-V3=lh7>5TL&BixqSC z^Ucg0GH+E0XkCB(8!o7Y5EO^I1<%zT#vdjG9p_17zpZhQNDcd%l@&b}{MhoN^Y7K} z!{QxT_!|oca?r!6`&wcKxNA6N?a7k?YR7o88ktXu4+I!vjGG*B-`kokwq+sL)ob=vuKLY>_j6!O ztAjm(gJjiw0nd}YCPB?Xw;?ImJ8+`biE>>G_rQuG)(Q+y{<^N#L+mv5dq%Df)D9HbIHIb7WP$KWqNk5qz0iLFeg(qeG;afwm?D z+=M4~l(HXwXNp%D?M_<1m#jv$$CMWJX;rCIE6 zSp#0=4tBYP-vd|I+#r0&Q9{i*K&m;6C|~rY)~1;ZB?L0UYV#_gC7B6NLl~;`AFok9w4_ zA1@xrwu##{>IJx^;Jy;A68s}RKv=dgF*^$^8w)n3$?&H@ayL+i&cQo72V%y^C)7l(b=Ki^`spYg%8*)8dfPY?eqs$LmI=*{EeJ09c+l-iUo zahf6x<&s_b+xTzC??OuZ@~nia`$Wk!@YtBSlSEb%obOID)8F9i5T8(n4C?-xaI!o z!@nwjQ?SZW(kV+8=ZET1er|J3o31{=VPuBdNu?AI&|Jz?g!F!e#jYbPit0qe$m~}5 z!55>EMsGJ*>xZX)>eT<29;YF zneKPwD&I2F{>A2&9N29Ow$k^3b5mzz*jDBI&a8?3a4|l zxO<%GM>x0mWcc+&&D)=il!dnb1N}yBpC*b~j+lB-Nzx|e2IDicYpo+t?9LRq&L2N2 z3FsfrH&o{a_A{NI^K$vrM9eIKh5ma8>*Daj1owuT`vmr@=OC;&I@_U9A3@03|Bh~Z z@ZakNb@+5N7NA-NO=$3YIFtv@OLaUav={;y=JSXPzuENp{(qx2E{iQ0t3)!4v~ubz zvW+pI{IQ^fJ~|jKefT79d8hT*;#wLc$=BSG%e}6i@VQsB=$Uh9{a`+ejTn^;Mj^n;x>I%_FAIp zPhxO~@%S87?vmQ{^B#4jHuB{j3Y1>nX{)iDxtj1YvIq^0{oOp1sfpr<8@4w8Lm@0hf49DurcRVx>G7ldoRJok^sV08h3Q{hlC<~UsT;85UKr(8 z-*=;Gt=2gmy90@~bD8YN3i)VmxYLs(t8xDb-K>^kd>r6(9J{|pfjvJz$dZQyLW);q zB21|m$iSmy(*g1A?HUboV}GCItC)xzKDe@($P##&YWS`grM?YYFMKtzXz^}?OJ3_} zp+sQ2ffeJ;q1+3kvQnU4pL*KlfQ)|oyoez+)0C#7RzG`I)%-`Pi=)R=^}jkVxJ$g_ z8T}}UA*X#)pGdDd&^3divt~gn36mT+X%?KdrMo92gdZt}XPWd=UnVlXgz4eD&fV(F z8GXb3Zt&rh{rEnXVo~ysLQEE}2oOyhech#G+j^&nDL*&kbjN?-H3Z0Oh@2bV!h@H; z>RiX!lnpRs)5s?cf1Ct80X_8>d3R!*4z%-i$7t4iOeL5dY}c}nuY&*fcsrgjlyy6V z0^COYI~n>HRT>t#7gX$H9z zlJ*Kmx|eSVXq}*_t(HO$9Pcp1?+EeRV}!>6mcMbjCj4x#if9jq=t~%x1t%n{;&jQI zc;6dpZNp9}`EU~@?{PZ6Q>V{2bH3c1AOBNbG=DttxXBDJbEBaW*M z8a1QNcBuH|gr@XLv=_Ckj2!BNR&MgH^aBm{9YFZ3cRqB;D9FSD4la4$-fe_iOZhBB z=KI?4&1ardy~K-TkypF8_8S#+K1R6H^)~j3B`!?;raI#u3sFOrZjb$)(IufD{1u(k zgW}PB=2L@aS+zSe1+K{Id|Mf+P{;$SY}CFRe@vVYc<0g`Y2&s5yZ9gr79vSF*BC;l zCqeG*Ajl^dVgmXGx3?BPi}xB~g zN^xyooCDTXilOhJ>%LMPxGZ@D6V=(YfY&wZSyS0?@!7Pv=(kV*PUgrm&#Sy3rLe{K#ExpUKFm?%8Xw;2Rs~ z%11|ONQc)LkQ;**!tNh3-#E+!_BJN_Sqh?&f_&AUH9x5Qi_u^j{H7mKGPa=q_XF=R zydOq^W)hXW4f#VHI0X4odgHr9JFECVdp}Bu8O`)AFlB>7)$OK9%cuIzfi33b?Crf~ zER~wMa{5q8N{ZklU{2DpiM3!Zk$;1kBx+HhZ+C*`oAI9S#!^+Hwk#4_z^9POw&0Q zepk%U&O5pl?`E%+fpL$a|H z&#?JHeR;kV{c6N+9meTMs>GOlPa(+VEM?b)?XTS{twcx6DO>&r+NoVHbCJ~|m=pie zU5Bc9o2JY5PpkeJ89jpB`l`Lh1ZA!&7Mni3Fdw#Akm$X#hFI~+|3YHP2o@}Y=gcY; z?$OWrcUz^WEYSz2(4Pq!1hAK%YNAw_=_hNcy}GnLnHmsws<{yeyZK&+)ZfUl?OQZu zvIlVMN?sge2e}*i?}$P*rFLZ+8taa$!dV$fNa7g-<$|t=hUG#PV zy*^})FLX6~Ptp{HR^OKmk9A*-?S|k?9GZ7vA6pt@lW@^Ld<08F-79zwb!$qzTTUYP zrf^YMKj31UEaK6&4#w^xEaoKF@16o`tfd_nf+E7b9EuS0kLLaE!tfW42MnEr?RIQ9dz9%d`XhB@EiQp?!#n&8ENcH6JEX=0*6bAiEirKwM7#pVbk_ z3-X83^XV*AqsNzbx2vrycfu$He-k~bm}vZ*Blf=5BMeG5LJP^R>5fb9qHd(yKi+P= zm$l@H+yuVHC1S|~T*RTZ`H5Kr=kbE$R`%2O{1XnR5k(JH*`V>C0Bam_vs)cpPtooz zTH1$`o3)}M@8~8rO#V9j=Yq)lXr!9C*coge_VMzdJIeR>Vj&&+V0x1AY5iS)miWL` z5rDkJ45=-k`#uQT=;N;;;?KWip{$1zaBs`}!CP3#t%LjGC85uOMtm-|@O!W147KQ2 zz|)U^rXld@+-6WcVtBN@KGaSz;vpKBsJSOvy`wDNvZ!pt#oMM9cpix4;(tDI6*ucZ z`QIH_`L|bfpPujb!}@=xV;eSb3L-N^)&AwIN>IYy;zDrkXldJ06A^0@EYa-yjyi{E z?8vlW6-#E7 z_r{q1;=P}iqe0EXW_HIFE0`xx&n9A->R8HPnxqYndD2@A&4B4EIC%m>RJQHh6o)qy zz;)uMw$%D79-`z5KI=Ua+AK#$BEt=MyIhE#-q;4Y44& zpO_pcZa#GL%FZy^klb^f6e!kQT54jjnjC9ruB~^U;*p>~oorb5{i+Ztj*x;?s4(2(_PMZm#@8`bWANcjSt)6yVLA9 zy+hk?5*hie4F5ltzQd8t_j_B5s$Er7QB^H1MNwj_wpJCbO^nvA6>0=YC^c%gwZ*8~ zn<_CP_TIIN#NH%Egv5CB`M$ru;JKgk+|RkM`&`$#4ys=WD_4lkb{8oW#DBb1&J$Pj z{`hPLWM1Wm85N1Lt`+*XZ* zb{LJZLE}MrJrT_=9d-H#<@`-PjyiDfbdwfxW(B|doAN9h7A26c6UQXu(S`Pw*MX&y2D!zh@pgK8#iraRDJ!BDJ*HibwM z=8R0^%y5@iGA`4BbEAGxZ9$?&SId?m^mercE#pa#9;q6)NW1@M%}^@If`c42%_~!@?)SjAmq`1Ts1pI)wX;|m zqfGfpIM>;vZrbfZKxfYjat-x;9F4`>*|TwbIbs5jMqjCe8hkmJ=f9GqO+4f%%Gs}E42fr zA`iUrO?A|@k(*f>4?lyd>lhg={)}zIXT9LtLwFC7+k{{8Df%or)x@d zm6>-+N~aE|yWQY$xMZ$G-33m#+ZT6@JOlN0TvvbE)~^N-J! zJ@dsj@hTZbABKQMqDMXMquOhJu9AP;@mDaKb9Ik~`Gomh)|Ggl%8rgS`8d8;^64{Y zI9>nE>7QfJFC)}b7?>@lra|es6i>UrF^XKj;gMKP=iIE7H(4u_D4sL&)3N(UuW8s# zI6oN{P{}p}1`&l$V#VTJdGd-&~u=F)~GAWZ($34{&40>WMU zvB4#cyTUYFCh2|NY1A(6Vu{2KX@viJ)^e64lDGBSwYjiu=0W*%$T+UI(1$Er6}dvg8H=#Lw=g!Z{PcgpR|c)3EN=;8(-ufB zb?kr4w@J^R9P4bSVvc%hXepP!uIz&TE|Gv!<|7t=;}QZA4KXIc^jy6^uVW$AWtn$h z4w4TuBuF2|v1M8*;5pl2N1C?{1w6{oELq+TEse#VF`P-a2+E-x=1px< z*Mv~Je}T#-fz>3G;v2IsIHgp3Qpcmupaufab-(V*fo069^G_6pUNAT5BW&ss_^vyY zm#m$W&ujlqtz%fJ_y_x1la2S*X^}CdiYaiV&%N!j%$WdWR;gVaywC}}@mg|4_fOD@AK68-A(CnDG_zT$@0BV8 zFJ1?9Np5;ALh)|r`~kf11tt0$2ADy=5iP99L>nzf$PX@S0i&dpP*_eila>}4#g zuurJCgT~Z9r{xf3=#w=nkOsCGf~i=4Io9}Qo6AMm4>0-Z3s7gQ&aL1K%tck>PbiPrB|G04RrSZV_cQkuOkx$p4n-*0pE6^)W5I*zLh z^Sh-NuX>m{ZrQvlmUDT1eD$_pITOEYdG1hawzCAhTyP%y;k?eQM)x3*Bn0 z3z#7MrTlZOmW-MYc-YI2Smfb{;u$NHT!e6&B#5FW_PU9PbR6I_e2bL(viD9AK-o{? zufun={ni=U0$~-^ygjf7otOYWb72?85CdpZxR3Qi$(BL^s@{O`$>dNfGdBE(GniWqpg>R0f$vJ%UaST>bOGpH~vaL0rv2jUn1Rm*yKSp zkEEW<$Ba-1E@lOWQCx^o(u@9;w_XA=*L@y1nL`ynK2*024&+Khj3T|VWR7?NJ8<(52o(L+OO5!m0(^C|ffZC>@20MG)EV>XKO>EfIL z=Dqz^;A~WlpTwQems3wXjo*Ed`Rpqsv2_!5TeLukK|O^0GSKs4>{MZ?>?Hc$UEi7E zz@0@|f0dNyFmfG(mO|+~M}=coyPE3&u7~mDxY59`^LI7`q3VnMhaUkQpV`bA`cA}uy`d0H zm_X?K+#>f#tjfl|c)s!ECdTdXuie8RlqYwkaUz;dt>P6n0P z5h9sw{7w8tTOkxnB88}B822utO&2L}o9!yd0nez2bFeZ^OV<&dcF3j61Kb(?J$hr| z5qK{}CQHzdY_+`7_mX#yG9PgR?N^F4K8zw0vo^41{Za)g3g%CGD^#mqy3^$H9to|@ z+~n8!a?e~FCxLb%lbEgVmgJ9Hbz$#bx zhb4QjmVct01jB!d4#l4wcj64#zL1AVN8k2DYC{vZlFJ-oydY#6O3SFm37(uo)e|c@sfAE z(}%k>0T``4sO!bVwigkq^2S}XWoqk^!oZsWUP8RPt6Z@`fxUjKAfppe)AZ)?dpsj3 z#0ZfVl^ZReNy!{6F3ENj(^~F6^Vf-qJx)#@gW?Qm`c~}!^ae-;-_#f<-1GstS=GCl z8iSrdTr9@cUx)+I3cKHAyFCuBy4>fG!wBx?6GY*g=f7{G!&Vtbno_I`ImqgqPU1zf z@8E`oIo)skV4l>v!j=kTUET6d4dXALq=h#J&{CE-11ZUky{$%yMQw616!eca{A6eu z>i6OH!{NdFr!taK5oGb^FLDlP7S`T>h?>70V54LRe|n>QCkBy1%)HS4g#?TDadnne zTVBMHq>1_%Pps?%UgPK6b(h;r%K-9&vU2ASoDTp)2gkIe#^Xk+%(OjdM`bQ2>p z6?47ftzSI_q3vqoKN~aD(sOh`S3$K7J7^1%Q7D`9^nt*RW#|!8{JKgNN_Wmh8=7?- ziIu!dH#I)f<9+0uC{Wizjd}mZMiSCGbqD{{!1=#VD>{wiG2tXLNorS{C}6iqrUQt})C)Hf|U*||9{=8>Uv8J8SNzv^8 zk?<8Ocv(WT54+S_6Pws}A*Ktq0#ce5ZY-ElMo|^Vt0bG_6#tE8dp%=rJuOCli`v|h z4`*;45lniVYBMp?^}{oT6v}xAbA0D`bc_>c;uV=vLnxFf1C9B$xLC>)_FjvT-nlF8bqAW$ZP9i);F|B|B@I*d}!&R`B z@Q?^725_X``I_mxL0>Nv{Q=0f%#~Ph@35%vDJr>hit5!Uf0NUpjVp(-1ZZ# z;j8Tref&&vLN1UehkH+`$f&2L8@yeFUAO2Um{?)l)`JsCYyWLBE`A0i>?5ea9{bGL zo8LF^B&FpjKNJuQcmiy1K5t_wXstx)A|9a%IIV%Ax!DXIsj3tB6~onQ!V!fQ1N2{@ zw5T8n@`pTof6I9f#xb|gqrfLRiv;~b1rZdhA8F<_*>0uj^#p%k_r2F}fBPiqSMOD@ zKm2CBrJ}EK*($k5>&W>ZaDJhzS(f9cGIBJFDBS@7HQvVH?Z*LDel}yXa@nCNXs5ZF zey&eIRh(Kg?r5r#tU&t!)5Rc931wfgW3Q|ZFP# zvv#f>A)fZytse?lEG`WDe#`w=n#dO9U7tn*5lw#_$jooXp$EKys@I=N5PFT}^47>e z{3OOISJn^5pkX!$OV&%q?*IQcl3423*PCY0nd}goF}PTh6>u4jo)pCzUI$Hl27kqV zCa1Iacs=?h64mIxuT#g{CtDq*G4*E4_HQ48TBKmXwHVH7FklGr{2QAk5)6@ul}Wn;K{^|?||Qj*NLy+ z_uR?~+PQKYwM1|&H}wG)*l7&C_1I|x3FE49d%R{jUBiLj+lWSff7 z02?uN*_-C{J?;&!(|V}3fIsNOJm4t!kA+ZMwaZjY+yvp49;S<9zfBxET;piakgit> z(QN@5ZclE#z)tF8)QLp%PJllGlt$t>L#I37T_Zu*CiJZa>RLjtU;Z#W6p-?53%%M@ zZ1#lw#|8aH>9!y@KfQxaZjMVC)K7|r0sNHV#;MgkvQ;b+rUP&)gb>dB?cKx!$qmu1 z#*u6T|EnxTB}6fCS|PXkO4UIPPD%_i)CTyZ+N@I3Qq|W=ESJpk(L=GUpWr=iP-0hR z+@a^Xy=pzpe@hYjJ6ki$wI?w1(2?T{t6o%jA0$yk+L#=bL1LH~cjI#B>TlinA%(!) zd0@I9@Ush%J8+NPMl4(f$EEOjInkD#Hj{Sb@YkGxL>008EtH0CG4#8t6eS=mn9rHB z$o5az2Ql+DOJ6=(Vpo22M9CjI5Nf=>92MU=sfTH_a0Rh0@Gi1dDmIQL6DKX<+#5emF9-ZQCffk}>=wqp=W{w>nlQgGd_<42pRWUvK)}TV3BCG{a6S%H5t$ zbCM~Z)>bs!iS?#^S4s(pT6+BWEx zBEgDcofc7p#vF#IRqc%o+WmRoZPKj^PV;DT9}2oC0o~bh@lDrnAfv?3d*bv-akn!4 z;vfYw9uz!AB`B;)q3U*Z_0R^V(I1a)p3aJ)a^|%AfZ|5^LYuZN8re>>U|J zlWoEX3VN#k!&6b{DJv&&yrN%8-ArR#FybPBas&f2jk?Mhg(_t7Xd_M?fU17AzGtEGAdQUr&CY!HXmMMh) zT?sX(#nR^;$F_k7Q{=Ly_UFyEbTLu2_d#Z-Nb7o(jrI4u!E+z3w6ZcWAe>|1{0u>57dyn>J3%W4gnJ%chtpT?} zq$E*NxdYr@hSl$?*z%3JUrFB`>z6|qD~x{WKB6ChKS>UR(lbzjf~X3vyUjR$68Tx- zerCGBghn(66{!@+Y@A=BR9p#S-#CSLFcM0#@1tE%@1;;WuAo554Szfote)~;1zXPJ7Y=&^iZ{(Fm z2l4;%XbVxv!V?OBES|jKkh?9ROt}-xlx_&%f^xtgWYG(`%Gz z^4%5NkrOzS_r8UC@Kokf=wV#)5yl;qtfu$oquExvtyk>k6xq8n>I5|kU6Q}*6NwU`+!*+(Z}t{C>V7|0JNZa^xeRM? zFC&Avo#B&^^||_O*$b-xD7{EC&y|379h|dDz%SpSpYny+i`W<0Kby;VgE{Di8I_eJ zemtoRU8R0{#9jKhHFW)51j8%9jk|ohpScDlM5GKUj@)GNFwCtDz%qnB?pejx}0ii-ZOc=?RM19l0H!yRxRhN82 zDeJwm7e&D74P+>=t1EHg%as0=OYlfj!3%67WfhmzRzEKG-xcnVrea2Dw=+b4-SgdZ zY>jQJ5UL~}1sZoY+uFF-K{y@$Lxw0z)4MUO>#zqNI<&aZs>P+hoq_0$cd&Lp=P)df z#{}9Ozgq{lt%ivdQlm?ve)X=E9t_>^AvbX&@v!2?wG$>BN<6OqFok5Q;Mbpg)ULm< zCwj7h|K6f(N;b)km>`^9ZO7vC+Sy9Z!YHgvP|WkK#!ezC zZo0eF;}7DYXY4QV!q$qgXXXUJ(A(0!8gK_B+6TY1A8u4FkOrB%3}v`5g#wb$H>v+G zE_0=_D9Xmll{HS?`ornVuZ#VFp3X4rGDZb=@q>eU==;Lu9My1go(c69NtO#aYR4mi z{MJB}J$m|z4<(`xES9NSz2i_+8}kUlf%KCvpfr5%rwHO(VNoJU@&xIc)lI<}8TaSS=JG$g zYlMl^9a~%b!vSOt7j#+`z;b2o1@=&Tf4Bw40DlY9vKrN7Z0p0~3)|^6zq&<(iXU_T z1#;FnSP5xl2-oUIc{s~xjyr8ZQm!IucIKA+J+1kgFwPjj24_jjvCqyC8o7OJ3Ph)u zlb0g^_Z0a*s4sp{Jb~MFb<*NcSa_l2u#dht>KJ3S&`sTM%WB4r7hIg_6IVfQ@_zjy zci-T?3;6YUarBod1TsCp<8Jn|Z7PvTY$x$8nj0B2-2q;IH2nOrpm+JB#}`FDTill% zWZzk4)-m7)WY!fV`PatgJH4l;rO+^;pvmoct!;Mn=whqCUlo!JD3Z47?3;~SbzK=J zs~{)ISp@>60f6_sH_T4OM~9NKqptnB)EraznBHAUHmO;YHK?=?vk0r;=dqmD>OlPI z{A*;d*VHwYk&8mcXEq(9ETNcb+u?y_JEgtA3(7pt2N0ilZvOyeb2X; z=kH%$aqDsa&SXVnw;8&^PJ0xmslP6gxXDu5Bro39pS<{U6{tCJcX1qgY^0ANZA400 zj+$kCnimfr_8`e8Iaw-fT&IdaF~T#M8XNhkH5aSm+sP4oZ; zORlZP>L-!gM|-%>*gig;a{y2W23in(H1oMQ4U zZ?ejn3NHU70^+qmGc+#thMc(N;?KXX5)M?Sa502DxJWcscYaB!KhN{eC2!hJ5&zwG zfw!3IcV9uTT(6UD=h+Ts{Kpr6^39>ym;`FydNW@`^yAv;9}gduhb(wyLraRV^SQP$ z@{X==Oq!CqHo7FBE>Aw)T3Uk=b`6Q29O+*1L6kQ2yRXbppv zFaJJ|z%Un?y0zv#--}8NXT-*f1c6kD(B{0`8Q5Sjw{wGF+`TWNMwnqXx!cRLBTLlO z=92|Xh}}~iJm#qgYbNn{kxYj4`SB7P%_Aje4b8M+*gfGfd{@NbGum@AWsz3#u61e4 z4Z?MhrA!JM4p7FKxXiR3un!x1B9I>Hwg!4HqoqfPN*>i)C$*|ztpzx*?)ixpV%nkJ zQ!F@pDb)&#)*E9j~x zLt@tglP>8Qb1JOkGu}^sf+h)GyZcSIR=R(tovdwQ6@hs7vU z7B{)YSK$>}^4t?;;{PDyr8d>YAP4!gF2|rYAI|&ckNLgPzqV%oJy~1w=bxRuF@LKi zn=#Z#)#f~+1a!DI^~+;a0;`ZVvZP=&ICId2BkR=PZj%xW z--*;DoE*#4=3U)C_xOUoO3QTR!g=zE#+b>1c;MFTo!2z=@AwQidF)O7?|Jzq?z#s% zXk8%Vg*!3~WD2&<6uvD@sQE6+MPb>GP%+5*Dzky?8F}sEiLR&hAARFfbk)7=3&uXK zv#g&l4WgOYoMDa9pbI0e8ukQZm-4m#N~HE`40@A=UiP2N_N)N$1@zFaW;?W^8ARGo ze*X1=jM0LaqFtGaViQB2FT85LEArMPlzWT= zhMAiA+)hRLlSRAgT>K_R{I}rqv<etstAZP`&db)aPAMm|DLB%&vhFe%p z^su~edd?PccmG=sV>N1bB&AfYsetnQUV5?KByzimBUWjmlLAQ}3F20O!f&2^)FQz= zugux3$^!g`dh=O%(2GXN=#Ur4r%s0GXksmNqL-=po%=5jyjPv!5h9&fyL;WcFP&?I zy$kxU%}sC$SP9&*ZEiV2Gb}bag9St%NfYYy21XC;H+be*ga3S}_k{HM{I2Oh9JY;! zdYTm<${x-u!}dElu*9+1OzX>WSKiB$4U01VW*H$NLm&znx2lb749J!$%9Ays|}v70w?8T&J4c}bg2V-SgH<~CTYiO(J_ z|3`cQGjy#P>YjX8t_`&PYw zaC}GPX%ngP=mO2seq=9#RV_%g4nYSj@+7v^V%1h-Ttl4!&Tswi;&`#mzIqrYDAu3Y zJH5Z06?}4y0t5PrKR%wdJd>e|Uoa2Rb-|!ZYn-L&6_O%eqhC)sHd#~}WPopQq!(#% z#CtiD?l!(__NedKa1+^wc{a>jK%*uQ0R@7s&56z& zmPq>UD2`|nc=xi7)9R)sj`!vM{K`pwT93qNVLZ`ZzAGWvBz(;3Ra!dFSeJPFcP`88 zLLG~B2BXWf@)JpjKSGAyesDm&FcM#IU zIH0dw8ZBLp(PW*iSY&map$6sd>$s*^LFMevF?12TdO>^<%; z{o^7UJ54rsAsyrxN{4`XP3X;@SQf>vGEO($wBTeGp1NZXL-4{vzF?yg)7OOL!F8^WqLY3>1tZUFwJ1JvPd#X%)!uj|aWCa=QML7NK--+DB8GJaB zW5#5Ce2iCAHH6dG08(Au)&_Qa5B-3h^;nj5o2!eAN^_(p{#?@m^{V=;Qz!CWb%Teo z3>!us39K%=MmYK*CA8>=3v7s!!GDU^c`Ay`QhH9O5XIqzXT$^E*NHYS@?M)O9D zs?5Xg68HN^*m7AuYBu`ZT4xflMldmRgg}zeZI7MV#~S1G&@D$sQ7`%-@1D*m*l2*7 zlK{4efEU}1A0`PMqdB{lxZRsNM{ZYDXB0>G=-l^`GoK0Y-)bgl-b%p)M(*K8nZ2Nt z0hmth?7+>WxInL^gb3`|_R>eG)3N9W3y63kJ8%G^CS_FVeyzm(4k%P@lVsXMYF z9iUsEPxhXo86LyXpzQiF-bw~7S3@kxZpEK4TJM>C@FWxV7Me1jbfTV||Kh!e~u zK9(N#6_#G7$4Y5n6WtxP+Doy=ITq@=#<3upN?pK9r_~Ti^G6Yu{>M-Patufn>k%?Nv#!LfM1Nc zJ7#oy_sO!mQT+T@iY*BWb&yNm>1iMNICCg{H~}7Csd+h(RyQ~c>a2ebi}Nr;(joyE zqMQqR^&?Q?J2cYTvo~*AVXF{{H-R&#{Cl+BxV{h`o+iWpd4J;As1T~=D2yzJ2_?HDN1{pG%n|7y}GX)V1-6#gh%}Wz#u`uW0K{It4W;n+1mmrdxT;u`UCOw8ta zi%r$9;Y4e6lHcJI&^=@~ZBzT4-*PE7BFDl)ebzN(xBPAsJool?$Ws-!09!YxgxdMv zzZIC%UU{WnHI9cUz9v_S%O4lV@6yn$1yjAO&Qe0(FsLT%RSYF!_%%lb^SZ9zN2+#u zyRliJ4tl5;7l^L=3Ss_4L?eR?ikFB681Z!eWFpX}|){+7Oo`?8_W^$ie2FrAE!-n+3C~p6^6f*WdaopRY7#Jx2B0GG5Np zutNjgfe?}_@0=Yioa%C1ZXjcO3#bl$W>!uRq3{h#U2Zd8N_yuyWVh*U#f!$wn98;U zU5|S-bVQ!7))G;EycL<#c;Me<-UMPkbCZLLDL-9%wlwz>;cgTaX9?Q-dZ>|A);imh z4nm*(Gh?ZQOeC-Fe*7(qImlmZx;dEv5V||Vv@qD42}ay$0-=#{!BV_)*G2?0p;HH1 z!bZ`U{ACi8Sx}&RcGI@52OoJvPzL&0%k1X(X~Su9CEX%Vnf+?LGoa2eV|fq9^zf;3 zKOJDin$X8-so~cO5OtDFM2K-Ie%^wvi-934&uZ^DW0Yb}jWfkR!1 zF}E?dTH;W+pm!0XuYX|+ItirhwN&bHfN_8_;gxC+`-AZ^*Co2@=X0vzQ^U;I+?<VrOS~MP4G9s%u_NAqH#+Gwf6Do7rTQMrk(!i^Vl98^q_N$2F)ThfTX~k2VHUhiepyl z{S)kYlb_&bou$KT-}?2Jq8Vc!)T>6t z^W~MuT3SfQ z%RA!t`aBkqv>&r2>zd1ZES-BB zwtOta7K->;`d+ zLvNh|(>Y1Dn-%x28uaL>FI+?Z-nHITf-lD?wfG;-kJcIbRPR-1#PF$b@S-7vR86o~Zs8&_hbY5z3U z)w4Ez1dLo~wK5GHE>qCVoSi_>ZVNj48*6@*Y;510*`zx(4AtB5-fx$u%RsfMKy3yY zH)BNH-yHt7m67ORPCUB zKv_nMCn5B!WTmXioRR=?!ee}DT=p<7vK+p2=5W(UNNyeZCp9y3FW`Y?bfCapLNFGq z1fAuPYt_bUYq`s}ForarEJcBLm1{3Dfh8U4)qP|$yPpaRJ{$*wxwniAiC=wRZ<&Ph4{cIE zjNWwhK#~}ImEBifS26V?d7glL!@>^8vue6bF&f|;!fZ)2HqRUPW!Go@SV9Sc{)#zu z__pxi%SF(Q1tXS=HaVyp3*I#zWA&JvNy14*FWivr=EARK%G|>X$(_t%@Wp^m#J9x^ z>MH>ed(v#avM;zbafd8EnvaJ`vHMq0sBuCj^cp*~D2kGc`#3(@@aa-|5I7_VFeVtL z2>Q+bC)(OmupfBvZ`JiLsVqA?5&C3@=*EqrZN#Ufl$W12-L*{87UgKV`?Fz+Bt}SvEjy)$W()HzW zk>2$r-IA8G@)x}uRR+N;a>h$s$K;*uQMZ0Qtol>%P9(q_Wa}@fZ&v7kxZWKVjq5s` zILQPXMh$BBlMY6JL_gh_)x-T83o#M;y9RGee1RV}Pa8Cf->@g2XPj{D2VSJ;xbsIa zl|L<8NPj>K#c%Mgs^&S9dC8oALg|v(F@j_CsI9;Iya#+Jl6=Vx3Jl%0k7O9YFhqwV zpM(|JZXVSv!RnMSG+#l2P-m9PTaAr{l)Bvrs_S(!W5TyRGRti{WQXyYh<2{2lGd7^ zG&bTDZL>M6yH(Tazma^%@URCN=u@bRZi))%8A`D93$Wp(Kj|GN;acEwOSjwXNh=NS zJ<9ZZ>0@-US1u~1mOY&fZ{kS8Xub8Mwxg}*=5xGgJ~Ljo=(h-|BsOT`A8(___j%So zdWhiaOexQh?TYoGF6V%{t;R7VozU><0i>xAyH__P-vLTd1eNrD^(3W8eFKE!q#Ma% zGsx5$P1vDozNH9OfxAYcA7cLAkKdPB^-!jb!JmJhJS0L~`~%miVej~%_rWKZhHbk}>JSCvyUF48*cAK${?XskHP9D*8+>&NE!I%b} zld&$Jzyz;$6_Ej48QSl*;Mq6$kYM(Pcv(%59(iZ6o-LimWbKY)v!UZp8!~C2^ZCHBcYeKmBf(n)X5PH;p1(gEvvjCRPnlyn$^sO5aW&H1I<{|Jd~ z#27#KxoRuxxnF}V1noA8vaW52?8_ejeLLzkaADs6Y$l)eqpQEGf;LhBv%ihr%`>bF zO6rF!77D-zBOZcc=cT0LQww{rULWo)l#ioiy%3TFpyA2TXr?Fba`A=D71lHQtgD({ z-n_HU^5-Z2+A>M`zd?pJ4HKUKHth4oK0i!fSiEy5U`Xhcy*5G2F{Y2zo`I?#g7_pp-uu;h!rr|<_#56_lU(=>{>%}>d%8|j74c$Oyzj=D zu@!M!`Q+B4FPMls1;lj})HQDum%pdb9XuBsTk9!AFv?=SL@pWBi!vi#qe>Qn<%%24 zML!EWFKwuKFeVR;F7>1H*=B#0Ev!oOE9oEV+f;5F%2)` z_a}kI7kd?#3-nnp#-DOgTK|D>2krrBnlqfWy5S9#@6&e{AF&|bphjIix-7t+^a&;zU0xJ29e^8-8GT7PtgXHZbR>yigUL z9O3+`rnTWIg;7-KQ;Pirk-O#Q7GZOD0(2fUw6%ZlZvVhs@mth8R;-$zZXt4cp)j)U zU;E+{zZZKSC_OG_vgaGmKVrOXM*0nPvUD$v6okX1Ku-8;YU%V_ij7z93}59wWRFBQ zKJ?X%k(IV$)PTR-DKCn6HMVu#Y??d9jRpO1_v_Wtpe3*a_}%xo9n#8Wj>Z6g{tcJLKzzQ`-%i{9F z)8;I7$jJ^B!#2%bjY6}j6Hkoe`H&lFFIosLq8h+#Z{*~Y!CPP{manige=qA+d{6?CbuL;7RC<-taK$scGHdU&-*f;zz7G|vqhc;o>Yjr|3ogz~doU;{5`zyWmN zswzO>+7Rt=hF<4Yg5nwXwE^or=&@YO(gx6khLR;54zQu+E$%F7(GJM}R4D3GonC!@@?Hn512@_13~ z(+eL$@{^N@tPcpyt;2fX@q_1+2I@;vK8J5XOnWHdVt?wpN_vwUa3+^LBcL2lF6fk#o*58uR;J-E83YZI$Op$@Ct!;cq>@u zbsPBJ0@D_NYaSANUyHqg42M-!fh3|cZG z%1nHQH{?#690I@JI8`Dp=8q)#mc;Xv5UKZMW_VBVp|J>T?JbKGNq4yrE!}(>#bdv- z5owPK858E@iz`OGgu`db-`-1c%R(5PbR70hC2dSXC=Z9TpaEXsTbmfukC@(fd{xm$ zAj{@<^J8vW-147Bl~&}b%f~nLb43CSnsyto%b-iKK3&xsYt)_m6>W^m&=^;GO&AC6 zC-r>lwB`bh>+x9*!vr+f9!Ji49@KR8odZE&76qC&rG)-?FfJL@}l$-S_WHDXJLYsH!(-BLH#+cZIrwP_64ddjhz zNLrvK!?5w#jEm?Q819lE4B)!bJine?>)Tx85Xf?CKA;UDDzMFvv~V#fuKi)dl>&3^ z2I~1R(yQTGou}j1EE4kd-@N!mmj`p-K-$qcVVTNSs$!T@nEEI&BlP%uE#VF5M}R~A z$2lOmW}2)3qDUJI^0YpSuBp%JUuKGmX&qd%VIMSpS$>P3P_p?ByKvptXMvO>Jb$Vh zIlU|lo#j$evi{yR0!JOYCWh-D=WTDjSEg}c6m)%BT?!f;NcAZbcTKZcFII9e$V=MA=XR8j>6(I9wQQX&D5k3Uk4~ecN;ouKKC^?2v=XVKV-Ou*6Rg=2f5~5 zVing!+8RxHk(2=t<7VZp^o?yTAN~ysuV*db1@r@wPHHUm+S(t!mh`rVqg6MQ)lFRQ z6EckJGvo^H;tr6a{>tALcDV8|GmaS6CoO^5iAu~4606M*8v&ixp#5CH)3m%_FB;Yb za@BHdHj4%lPJ7o_8f?%VSDeqhAE!@hV?Sf=j$`AL(oRm$tdQx;r-E-!(3}hM?jX|6 zY$VF-m4EtMxhX})Ya2ScA-7K=L3_DFk68jlzmK^77u?sRHHr)SupaEd^vbrK-A{jB zs{;Kd2YMdo4NFhd#-NS{kL0LJdE=V4(%N7uSo?wN6FSOZ|5xNUwM~HYfe8`k|7E6Y zQVFninv?t}+Q3WOG`03w^WE7cYnc~q`nKQ1My66M?e5I6=MB~H4VAG@xni#WmxIU; zu2z8(PEB%AJNTh_iHW$y>zCAMqL zar|EMmkZD2(?Jp;lM&LOn?5}(UA+5^*#G@R=h_L=#vnLz))^x}{5z_+`ERexxcwo; z;nlmZZ@2kPT!oMwPbMf^KpJCy0oPw=s>9x6SgmQf4KIeG!Sk1^vUYZ!LO%y&pJQjt zj@Y~4QKz5S8fSiiZJ(uaRu`?5c^0HlVWS4sW_WP3^c1=R4#db;ZePw|C)Qn?YFqK@Y1HH)bHlyD;cA1(&}FU9%2zy zKLDPg-2)@?JdErqzAZ1wFz4-wC@qd>1YQA?j|5TP2nUWD{?J~MOAIftwQirDTwnAW z(;F<)f>E3US)DN93oCx(9LIx{&^Nue-;ogWDRdTg99!LX7e`Nmy1duw1J4a65bR<#?6uQJ0at( zkNgTuBrU3C^H<7j)aajMd*8@8rD0Tvb1>47dd41l*%M0Gw2?SZq*VT<6Pn>@QSA%j z3|gV@IrYkghQFT;JA?mgA6CSQHhsUL3-z&m7CDJ^L4eAsE`+~_EVj0mUtZXKLz@%s zd@`WdY>NA$g`7~u25CG~?1}_Xf^z-F28`)h;e%wzE8-`KllC!rVq*1!`WSZ00TXa% z$@TW|o$vIUxn9#TEA^{*cb69y)gtHI3v+Lo6my^Z_avgEY{N5{Lg+Kroz8~>NNW-s z`U(u)fI#&tAZb{@nM~)Wx9&q`p-*kKcjwQ{MjR8IrH6AxME#uKNH>Rw`GLx59ZEj~ zAVm3vf~g(SBM|1ac)Kv`V%$IF4X^AwhO`3;RGGa@Z<8TI1ziNpneP^oHIi~sh8Y2$ z&kD4}+R9WOa%W?dDnU#Op{W|S(3?;EDK|YWwg%angoVB>4VF>!MA<7mvxT!sc^a7cf1Pb_MmK@EJw@zo`Q}d&1W9xF#kP6B{E)Nrzr*cU?PN+MEy<}L(oL`m$_9rXF z)_Pa!%~0phY97k6jLa&LeC{kh_DtzY>J~5ZUKlYceC=jNIbGI82IWl&a^Xvw-UkX> z!lbp=3l_~JE4x<#&Lsqo+jCEQ){T&gJk&F;zNrY+!-;`68V_H+JwLvULRjy}H;c7^ zpM%UuLqg0}KMO?8&9CoCF?-w*{Un<^l*q4$>$uP_yy0;g{vveLlpSmU%v1+Kt z&eI|PbmE~c;g7*`C@2)xPTUnH+0&v40mh+p3oi2iT=a(1Opdy82iH;O=3afoMC-c$ zP$2+fGQjRjlQV_1#hg+>v9!3D7y@8rgubg1=3rqZR}5l&>d9eE$@S+~l1;A)#;G$k1P4xve>C6S9~wSD~zP5MLXnruX@6cV6oE9`7QDyi4SdAm;JOtI`yP2+2I-iUCsam7p4wRZu(LepwD9J@4UrXst>@84b*Sz zq&Z7ZDOza@JG&W=%D0f!*z&!C!)!RwKIJcv0?K0~3_h7ou$6e5*2 z$ZrIIABK0jgo53@27t$dfD~R4J#wGlq4F^+3WNBD7L1CD0#cHs?J;*N!iCQoUndG1 zI}E;Ds29JE53ZGWUuo=uW zZl8Vm^8KYOBJ+q#13Q#R{^2jbAV^1%l!+szQ*GK_5A|m=4-UT zdWow~-3HH}ObFj=@)_34&~Q9|cY#X_yY#)k-VVb;K7Hwle@hI0@#yWG8zuZdj;_NI z>i_@SBP%0&R6Z&@6=y4wvMP#nMo7atlFqm@G9x5~oKaax$UO6XI3vl*UiUV#ojdF9 zIOF&J{{De`-)lXe&&T8Wcs`%_kL;a>y^?zx#-#HfX{qiYP>qNNN9m;q+;Qle%YPQa z-QC>&bMN-JR+zh((W54Z*ni^J78++ZTXnd@OD1|}h9$;u(ttFi_vwQx)$Q7-?Hv^$ z)vPk+CPnJ92k5wAR(3+}naZ7J{#&o;3p&X^hoH{%Si~0=N2fEH626ZeDGHGrx=~`J;wHK zm`v5JH9fhtsOD1TzHa(PRlV;M{rjail-mnZss!W9u^Bk2>vL4{w<56JY+A>0_Hix